{"version":3,"file":"static/js/4943.22444942.js","mappings":"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","sources":["../node_modules/polybooljs/index.js","../node_modules/polybooljs/lib/build-log.js","../node_modules/polybooljs/lib/epsilon.js","../node_modules/polybooljs/lib/geojson.js","../node_modules/polybooljs/lib/intersecter.js","../node_modules/polybooljs/lib/linked-list.js","../node_modules/polybooljs/lib/segment-chainer.js","../node_modules/polybooljs/lib/segment-selector.js","../node_modules/postcss/lib/at-rule.js","../node_modules/postcss/lib/comment.js","../node_modules/postcss/lib/container.js","../node_modules/postcss/lib/css-syntax-error.js","../node_modules/postcss/lib/declaration.js","../node_modules/postcss/lib/document.js","../node_modules/postcss/lib/fromJSON.js","../node_modules/postcss/lib/input.js","../node_modules/postcss/lib/lazy-result.js","../node_modules/postcss/lib/list.js","../node_modules/postcss/lib/map-generator.js","../node_modules/postcss/lib/no-work-result.js","../node_modules/postcss/lib/node.js","../node_modules/postcss/lib/parse.js","../node_modules/postcss/lib/parser.js","../node_modules/postcss/lib/postcss.js","../node_modules/postcss/lib/previous-map.js","../node_modules/postcss/lib/processor.js","../node_modules/postcss/lib/result.js","../node_modules/postcss/lib/root.js","../node_modules/postcss/lib/rule.js","../node_modules/postcss/lib/stringifier.js","../node_modules/postcss/lib/stringify.js","../node_modules/postcss/lib/symbols.js","../node_modules/postcss/lib/tokenize.js","../node_modules/postcss/lib/warn-once.js","../node_modules/postcss/lib/warning.js","../node_modules/promise/lib/core.js","../node_modules/promise/lib/es6-extensions.js","../node_modules/promise/lib/rejection-tracking.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/query-string/index.js"],"sourcesContent":["/*\n * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc\n * @license MIT\n * @preserve Project Home: https://github.com/voidqk/polybooljs\n */\n\nvar BuildLog = require('./lib/build-log');\nvar Epsilon = require('./lib/epsilon');\nvar Intersecter = require('./lib/intersecter');\nvar SegmentChainer = require('./lib/segment-chainer');\nvar SegmentSelector = require('./lib/segment-selector');\nvar GeoJSON = require('./lib/geojson');\n\nvar buildLog = false;\nvar epsilon = Epsilon();\n\nvar PolyBool;\nPolyBool = {\n\t// getter/setter for buildLog\n\tbuildLog: function(bl){\n\t\tif (bl === true)\n\t\t\tbuildLog = BuildLog();\n\t\telse if (bl === false)\n\t\t\tbuildLog = false;\n\t\treturn buildLog === false ? false : buildLog.list;\n\t},\n\t// getter/setter for epsilon\n\tepsilon: function(v){\n\t\treturn epsilon.epsilon(v);\n\t},\n\n\t// core API\n\tsegments: function(poly){\n\t\tvar i = Intersecter(true, epsilon, buildLog);\n\t\tpoly.regions.forEach(i.addRegion);\n\t\treturn {\n\t\t\tsegments: i.calculate(poly.inverted),\n\t\t\tinverted: poly.inverted\n\t\t};\n\t},\n\tcombine: function(segments1, segments2){\n\t\tvar i3 = Intersecter(false, epsilon, buildLog);\n\t\treturn {\n\t\t\tcombined: i3.calculate(\n\t\t\t\tsegments1.segments, segments1.inverted,\n\t\t\t\tsegments2.segments, segments2.inverted\n\t\t\t),\n\t\t\tinverted1: segments1.inverted,\n\t\t\tinverted2: segments2.inverted\n\t\t};\n\t},\n\tselectUnion: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.union(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 || combined.inverted2\n\t\t}\n\t},\n\tselectIntersect: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.intersect(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 && combined.inverted2\n\t\t}\n\t},\n\tselectDifference: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.difference(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 && !combined.inverted2\n\t\t}\n\t},\n\tselectDifferenceRev: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.differenceRev(combined.combined, buildLog),\n\t\t\tinverted: !combined.inverted1 && combined.inverted2\n\t\t}\n\t},\n\tselectXor: function(combined){\n\t\treturn {\n\t\t\tsegments: SegmentSelector.xor(combined.combined, buildLog),\n\t\t\tinverted: combined.inverted1 !== combined.inverted2\n\t\t}\n\t},\n\tpolygon: function(segments){\n\t\treturn {\n\t\t\tregions: SegmentChainer(segments.segments, epsilon, buildLog),\n\t\t\tinverted: segments.inverted\n\t\t};\n\t},\n\n\t// GeoJSON converters\n\tpolygonFromGeoJSON: function(geojson){\n\t\treturn GeoJSON.toPolygon(PolyBool, geojson);\n\t},\n\tpolygonToGeoJSON: function(poly){\n\t\treturn GeoJSON.fromPolygon(PolyBool, epsilon, poly);\n\t},\n\n\t// helper functions for common operations\n\tunion: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectUnion);\n\t},\n\tintersect: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectIntersect);\n\t},\n\tdifference: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectDifference);\n\t},\n\tdifferenceRev: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectDifferenceRev);\n\t},\n\txor: function(poly1, poly2){\n\t\treturn operate(poly1, poly2, PolyBool.selectXor);\n\t}\n};\n\nfunction operate(poly1, poly2, selector){\n\tvar seg1 = PolyBool.segments(poly1);\n\tvar seg2 = PolyBool.segments(poly2);\n\tvar comb = PolyBool.combine(seg1, seg2);\n\tvar seg3 = selector(comb);\n\treturn PolyBool.polygon(seg3);\n}\n\nif (typeof window === 'object')\n\twindow.PolyBool = PolyBool;\n\nmodule.exports = PolyBool;\n","// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// used strictly for logging the processing of the algorithm... only useful if you intend on\n// looking under the covers (for pretty UI's or debugging)\n//\n\nfunction BuildLog(){\n\tvar my;\n\tvar nextSegmentId = 0;\n\tvar curVert = false;\n\n\tfunction push(type, data){\n\t\tmy.list.push({\n\t\t\ttype: type,\n\t\t\tdata: data ? JSON.parse(JSON.stringify(data)) : void 0\n\t\t});\n\t\treturn my;\n\t}\n\n\tmy = {\n\t\tlist: [],\n\t\tsegmentId: function(){\n\t\t\treturn nextSegmentId++;\n\t\t},\n\t\tcheckIntersection: function(seg1, seg2){\n\t\t\treturn push('check', { seg1: seg1, seg2: seg2 });\n\t\t},\n\t\tsegmentChop: function(seg, end){\n\t\t\tpush('div_seg', { seg: seg, pt: end });\n\t\t\treturn push('chop', { seg: seg, pt: end });\n\t\t},\n\t\tstatusRemove: function(seg){\n\t\t\treturn push('pop_seg', { seg: seg });\n\t\t},\n\t\tsegmentUpdate: function(seg){\n\t\t\treturn push('seg_update', { seg: seg });\n\t\t},\n\t\tsegmentNew: function(seg, primary){\n\t\t\treturn push('new_seg', { seg: seg, primary: primary });\n\t\t},\n\t\tsegmentRemove: function(seg){\n\t\t\treturn push('rem_seg', { seg: seg });\n\t\t},\n\t\ttempStatus: function(seg, above, below){\n\t\t\treturn push('temp_status', { seg: seg, above: above, below: below });\n\t\t},\n\t\trewind: function(seg){\n\t\t\treturn push('rewind', { seg: seg });\n\t\t},\n\t\tstatus: function(seg, above, below){\n\t\t\treturn push('status', { seg: seg, above: above, below: below });\n\t\t},\n\t\tvert: function(x){\n\t\t\tif (x === curVert)\n\t\t\t\treturn my;\n\t\t\tcurVert = x;\n\t\t\treturn push('vert', { x: x });\n\t\t},\n\t\tlog: function(data){\n\t\t\tif (typeof data !== 'string')\n\t\t\t\tdata = JSON.stringify(data, false, ' ');\n\t\t\treturn push('log', { txt: data });\n\t\t},\n\t\treset: function(){\n\t\t\treturn push('reset');\n\t\t},\n\t\tselected: function(segs){\n\t\t\treturn push('selected', { segs: segs });\n\t\t},\n\t\tchainStart: function(seg){\n\t\t\treturn push('chain_start', { seg: seg });\n\t\t},\n\t\tchainRemoveHead: function(index, pt){\n\t\t\treturn push('chain_rem_head', { index: index, pt: pt });\n\t\t},\n\t\tchainRemoveTail: function(index, pt){\n\t\t\treturn push('chain_rem_tail', { index: index, pt: pt });\n\t\t},\n\t\tchainNew: function(pt1, pt2){\n\t\t\treturn push('chain_new', { pt1: pt1, pt2: pt2 });\n\t\t},\n\t\tchainMatch: function(index){\n\t\t\treturn push('chain_match', { index: index });\n\t\t},\n\t\tchainClose: function(index){\n\t\t\treturn push('chain_close', { index: index });\n\t\t},\n\t\tchainAddHead: function(index, pt){\n\t\t\treturn push('chain_add_head', { index: index, pt: pt });\n\t\t},\n\t\tchainAddTail: function(index, pt){\n\t\t\treturn push('chain_add_tail', { index: index, pt: pt, });\n\t\t},\n\t\tchainConnect: function(index1, index2){\n\t\t\treturn push('chain_con', { index1: index1, index2: index2 });\n\t\t},\n\t\tchainReverse: function(index){\n\t\t\treturn push('chain_rev', { index: index });\n\t\t},\n\t\tchainJoin: function(index1, index2){\n\t\t\treturn push('chain_join', { index1: index1, index2: index2 });\n\t\t},\n\t\tdone: function(){\n\t\t\treturn push('done');\n\t\t}\n\t};\n\treturn my;\n}\n\nmodule.exports = BuildLog;\n","// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// provides the raw computation functions that takes epsilon into account\n//\n// zero is defined to be between (-epsilon, epsilon) exclusive\n//\n\nfunction Epsilon(eps){\n\tif (typeof eps !== 'number')\n\t\teps = 0.0000000001; // sane default? sure why not\n\tvar my = {\n\t\tepsilon: function(v){\n\t\t\tif (typeof v === 'number')\n\t\t\t\teps = v;\n\t\t\treturn eps;\n\t\t},\n\t\tpointAboveOrOnLine: function(pt, left, right){\n\t\t\tvar Ax = left[0];\n\t\t\tvar Ay = left[1];\n\t\t\tvar Bx = right[0];\n\t\t\tvar By = right[1];\n\t\t\tvar Cx = pt[0];\n\t\t\tvar Cy = pt[1];\n\t\t\treturn (Bx - Ax) * (Cy - Ay) - (By - Ay) * (Cx - Ax) >= -eps;\n\t\t},\n\t\tpointBetween: function(p, left, right){\n\t\t\t// p must be collinear with left->right\n\t\t\t// returns false if p == left, p == right, or left == right\n\t\t\tvar d_py_ly = p[1] - left[1];\n\t\t\tvar d_rx_lx = right[0] - left[0];\n\t\t\tvar d_px_lx = p[0] - left[0];\n\t\t\tvar d_ry_ly = right[1] - left[1];\n\n\t\t\tvar dot = d_px_lx * d_rx_lx + d_py_ly * d_ry_ly;\n\t\t\t// if `dot` is 0, then `p` == `left` or `left` == `right` (reject)\n\t\t\t// if `dot` is less than 0, then `p` is to the left of `left` (reject)\n\t\t\tif (dot < eps)\n\t\t\t\treturn false;\n\n\t\t\tvar sqlen = d_rx_lx * d_rx_lx + d_ry_ly * d_ry_ly;\n\t\t\t// if `dot` > `sqlen`, then `p` is to the right of `right` (reject)\n\t\t\t// therefore, if `dot - sqlen` is greater than 0, then `p` is to the right of `right` (reject)\n\t\t\tif (dot - sqlen > -eps)\n\t\t\t\treturn false;\n\n\t\t\treturn true;\n\t\t},\n\t\tpointsSameX: function(p1, p2){\n\t\t\treturn Math.abs(p1[0] - p2[0]) < eps;\n\t\t},\n\t\tpointsSameY: function(p1, p2){\n\t\t\treturn Math.abs(p1[1] - p2[1]) < eps;\n\t\t},\n\t\tpointsSame: function(p1, p2){\n\t\t\treturn my.pointsSameX(p1, p2) && my.pointsSameY(p1, p2);\n\t\t},\n\t\tpointsCompare: function(p1, p2){\n\t\t\t// returns -1 if p1 is smaller, 1 if p2 is smaller, 0 if equal\n\t\t\tif (my.pointsSameX(p1, p2))\n\t\t\t\treturn my.pointsSameY(p1, p2) ? 0 : (p1[1] < p2[1] ? -1 : 1);\n\t\t\treturn p1[0] < p2[0] ? -1 : 1;\n\t\t},\n\t\tpointsCollinear: function(pt1, pt2, pt3){\n\t\t\t// does pt1->pt2->pt3 make a straight line?\n\t\t\t// essentially this is just checking to see if the slope(pt1->pt2) === slope(pt2->pt3)\n\t\t\t// if slopes are equal, then they must be collinear, because they share pt2\n\t\t\tvar dx1 = pt1[0] - pt2[0];\n\t\t\tvar dy1 = pt1[1] - pt2[1];\n\t\t\tvar dx2 = pt2[0] - pt3[0];\n\t\t\tvar dy2 = pt2[1] - pt3[1];\n\t\t\treturn Math.abs(dx1 * dy2 - dx2 * dy1) < eps;\n\t\t},\n\t\tlinesIntersect: function(a0, a1, b0, b1){\n\t\t\t// returns false if the lines are coincident (e.g., parallel or on top of each other)\n\t\t\t//\n\t\t\t// returns an object if the lines intersect:\n\t\t\t// {\n\t\t\t// pt: [x, y], where the intersection point is at\n\t\t\t// alongA: where intersection point is along A,\n\t\t\t// alongB: where intersection point is along B\n\t\t\t// }\n\t\t\t//\n\t\t\t// alongA and alongB will each be one of: -2, -1, 0, 1, 2\n\t\t\t//\n\t\t\t// with the following meaning:\n\t\t\t//\n\t\t\t// -2 intersection point is before segment's first point\n\t\t\t// -1 intersection point is directly on segment's first point\n\t\t\t// 0 intersection point is between segment's first and second points (exclusive)\n\t\t\t// 1 intersection point is directly on segment's second point\n\t\t\t// 2 intersection point is after segment's second point\n\t\t\tvar adx = a1[0] - a0[0];\n\t\t\tvar ady = a1[1] - a0[1];\n\t\t\tvar bdx = b1[0] - b0[0];\n\t\t\tvar bdy = b1[1] - b0[1];\n\n\t\t\tvar axb = adx * bdy - ady * bdx;\n\t\t\tif (Math.abs(axb) < eps)\n\t\t\t\treturn false; // lines are coincident\n\n\t\t\tvar dx = a0[0] - b0[0];\n\t\t\tvar dy = a0[1] - b0[1];\n\n\t\t\tvar A = (bdx * dy - bdy * dx) / axb;\n\t\t\tvar B = (adx * dy - ady * dx) / axb;\n\n\t\t\tvar ret = {\n\t\t\t\talongA: 0,\n\t\t\t\talongB: 0,\n\t\t\t\tpt: [\n\t\t\t\t\ta0[0] + A * adx,\n\t\t\t\t\ta0[1] + A * ady\n\t\t\t\t]\n\t\t\t};\n\n\t\t\t// categorize where intersection point is along A and B\n\n\t\t\tif (A <= -eps)\n\t\t\t\tret.alongA = -2;\n\t\t\telse if (A < eps)\n\t\t\t\tret.alongA = -1;\n\t\t\telse if (A - 1 <= -eps)\n\t\t\t\tret.alongA = 0;\n\t\t\telse if (A - 1 < eps)\n\t\t\t\tret.alongA = 1;\n\t\t\telse\n\t\t\t\tret.alongA = 2;\n\n\t\t\tif (B <= -eps)\n\t\t\t\tret.alongB = -2;\n\t\t\telse if (B < eps)\n\t\t\t\tret.alongB = -1;\n\t\t\telse if (B - 1 <= -eps)\n\t\t\t\tret.alongB = 0;\n\t\t\telse if (B - 1 < eps)\n\t\t\t\tret.alongB = 1;\n\t\t\telse\n\t\t\t\tret.alongB = 2;\n\n\t\t\treturn ret;\n\t\t},\n\t\tpointInsideRegion: function(pt, region){\n\t\t\tvar x = pt[0];\n\t\t\tvar y = pt[1];\n\t\t\tvar last_x = region[region.length - 1][0];\n\t\t\tvar last_y = region[region.length - 1][1];\n\t\t\tvar inside = false;\n\t\t\tfor (var i = 0; i < region.length; i++){\n\t\t\t\tvar curr_x = region[i][0];\n\t\t\t\tvar curr_y = region[i][1];\n\n\t\t\t\t// if y is between curr_y and last_y, and\n\t\t\t\t// x is to the right of the boundary created by the line\n\t\t\t\tif ((curr_y - y > eps) != (last_y - y > eps) &&\n\t\t\t\t\t(last_x - curr_x) * (y - curr_y) / (last_y - curr_y) + curr_x - x > eps)\n\t\t\t\t\tinside = !inside\n\n\t\t\t\tlast_x = curr_x;\n\t\t\t\tlast_y = curr_y;\n\t\t\t}\n\t\t\treturn inside;\n\t\t}\n\t};\n\treturn my;\n}\n\nmodule.exports = Epsilon;\n","// (c) Copyright 2017, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// convert between PolyBool polygon format and GeoJSON formats (Polygon and MultiPolygon)\n//\n\nvar GeoJSON = {\n\t// convert a GeoJSON object to a PolyBool polygon\n\ttoPolygon: function(PolyBool, geojson){\n\n\t\t// converts list of LineString's to segments\n\t\tfunction GeoPoly(coords){\n\t\t\t// check for empty coords\n\t\t\tif (coords.length <= 0)\n\t\t\t\treturn PolyBool.segments({ inverted: false, regions: [] });\n\n\t\t\t// convert LineString to segments\n\t\t\tfunction LineString(ls){\n\t\t\t\t// remove tail which should be the same as head\n\t\t\t\tvar reg = ls.slice(0, ls.length - 1);\n\t\t\t\treturn PolyBool.segments({ inverted: false, regions: [reg] });\n\t\t\t}\n\n\t\t\t// the first LineString is considered the outside\n\t\t\tvar out = LineString(coords[0]);\n\n\t\t\t// the rest of the LineStrings are considered interior holes, so subtract them from the\n\t\t\t// current result\n\t\t\tfor (var i = 1; i < coords.length; i++)\n\t\t\t\tout = PolyBool.selectDifference(PolyBool.combine(out, LineString(coords[i])));\n\n\t\t\treturn out;\n\t\t}\n\n\t\tif (geojson.type === 'Polygon'){\n\t\t\t// single polygon, so just convert it and we're done\n\t\t\treturn PolyBool.polygon(GeoPoly(geojson.coordinates));\n\t\t}\n\t\telse if (geojson.type === 'MultiPolygon'){\n\t\t\t// multiple polygons, so union all the polygons together\n\t\t\tvar out = PolyBool.segments({ inverted: false, regions: [] });\n\t\t\tfor (var i = 0; i < geojson.coordinates.length; i++)\n\t\t\t\tout = PolyBool.selectUnion(PolyBool.combine(out, GeoPoly(geojson.coordinates[i])));\n\t\t\treturn PolyBool.polygon(out);\n\t\t}\n\t\tthrow new Error('PolyBool: Cannot convert GeoJSON object to PolyBool polygon');\n\t},\n\n\t// convert a PolyBool polygon to a GeoJSON object\n\tfromPolygon: function(PolyBool, eps, poly){\n\t\t// make sure out polygon is clean\n\t\tpoly = PolyBool.polygon(PolyBool.segments(poly));\n\n\t\t// test if r1 is inside r2\n\t\tfunction regionInsideRegion(r1, r2){\n\t\t\t// we're guaranteed no lines intersect (because the polygon is clean), but a vertex\n\t\t\t// could be on the edge -- so we just average pt[0] and pt[1] to produce a point on the\n\t\t\t// edge of the first line, which cannot be on an edge\n\t\t\treturn eps.pointInsideRegion([\n\t\t\t\t(r1[0][0] + r1[1][0]) * 0.5,\n\t\t\t\t(r1[0][1] + r1[1][1]) * 0.5\n\t\t\t], r2);\n\t\t}\n\n\t\t// calculate inside heirarchy\n\t\t//\n\t\t// _____________________ _______ roots -> A -> F\n\t\t// | A | | F | | |\n\t\t// | _______ _______ | | ___ | +-- B +-- G\n\t\t// | | B | | C | | | | | | | |\n\t\t// | | ___ | | ___ | | | | | | | +-- D\n\t\t// | | | D | | | | E | | | | | G | | |\n\t\t// | | |___| | | |___| | | | | | | +-- C\n\t\t// | |_______| |_______| | | |___| | |\n\t\t// |_____________________| |_______| +-- E\n\n\t\tfunction newNode(region){\n\t\t\treturn {\n\t\t\t\tregion: region,\n\t\t\t\tchildren: []\n\t\t\t};\n\t\t}\n\n\t\tvar roots = newNode(null);\n\n\t\tfunction addChild(root, region){\n\t\t\t// first check if we're inside any children\n\t\t\tfor (var i = 0; i < root.children.length; i++){\n\t\t\t\tvar child = root.children[i];\n\t\t\t\tif (regionInsideRegion(region, child.region)){\n\t\t\t\t\t// we are, so insert inside them instead\n\t\t\t\t\taddChild(child, region);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// not inside any children, so check to see if any children are inside us\n\t\t\tvar node = newNode(region);\n\t\t\tfor (var i = 0; i < root.children.length; i++){\n\t\t\t\tvar child = root.children[i];\n\t\t\t\tif (regionInsideRegion(child.region, region)){\n\t\t\t\t\t// oops... move the child beneath us, and remove them from root\n\t\t\t\t\tnode.children.push(child);\n\t\t\t\t\troot.children.splice(i, 1);\n\t\t\t\t\ti--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// now we can add ourselves\n\t\t\troot.children.push(node);\n\t\t}\n\n\t\t// add all regions to the root\n\t\tfor (var i = 0; i < poly.regions.length; i++){\n\t\t\tvar region = poly.regions[i];\n\t\t\tif (region.length < 3) // regions must have at least 3 points (sanity check)\n\t\t\t\tcontinue;\n\t\t\taddChild(roots, region);\n\t\t}\n\n\t\t// with our heirarchy, we can distinguish between exterior borders, and interior holes\n\t\t// the root nodes are exterior, children are interior, children's children are exterior,\n\t\t// children's children's children are interior, etc\n\n\t\t// while we're at it, exteriors are counter-clockwise, and interiors are clockwise\n\n\t\tfunction forceWinding(region, clockwise){\n\t\t\t// first, see if we're clockwise or counter-clockwise\n\t\t\t// https://en.wikipedia.org/wiki/Shoelace_formula\n\t\t\tvar winding = 0;\n\t\t\tvar last_x = region[region.length - 1][0];\n\t\t\tvar last_y = region[region.length - 1][1];\n\t\t\tvar copy = [];\n\t\t\tfor (var i = 0; i < region.length; i++){\n\t\t\t\tvar curr_x = region[i][0];\n\t\t\t\tvar curr_y = region[i][1];\n\t\t\t\tcopy.push([curr_x, curr_y]); // create a copy while we're at it\n\t\t\t\twinding += curr_y * last_x - curr_x * last_y;\n\t\t\t\tlast_x = curr_x;\n\t\t\t\tlast_y = curr_y;\n\t\t\t}\n\t\t\t// this assumes Cartesian coordinates (Y is positive going up)\n\t\t\tvar isclockwise = winding < 0;\n\t\t\tif (isclockwise !== clockwise)\n\t\t\t\tcopy.reverse();\n\t\t\t// while we're here, the last point must be the first point...\n\t\t\tcopy.push([copy[0][0], copy[0][1]]);\n\t\t\treturn copy;\n\t\t}\n\n\t\tvar geopolys = [];\n\n\t\tfunction addExterior(node){\n\t\t\tvar poly = [forceWinding(node.region, false)];\n\t\t\tgeopolys.push(poly);\n\t\t\t// children of exteriors are interior\n\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\tpoly.push(getInterior(node.children[i]));\n\t\t}\n\n\t\tfunction getInterior(node){\n\t\t\t// children of interiors are exterior\n\t\t\tfor (var i = 0; i < node.children.length; i++)\n\t\t\t\taddExterior(node.children[i]);\n\t\t\t// return the clockwise interior\n\t\t\treturn forceWinding(node.region, true);\n\t\t}\n\n\t\t// root nodes are exterior\n\t\tfor (var i = 0; i < roots.children.length; i++)\n\t\t\taddExterior(roots.children[i]);\n\n\t\t// lastly, construct the approrpriate GeoJSON object\n\n\t\tif (geopolys.length <= 0) // empty GeoJSON Polygon\n\t\t\treturn { type: 'Polygon', coordinates: [] };\n\t\tif (geopolys.length == 1) // use a GeoJSON Polygon\n\t\t\treturn { type: 'Polygon', coordinates: geopolys[0] };\n\t\treturn { // otherwise, use a GeoJSON MultiPolygon\n\t\t\ttype: 'MultiPolygon',\n\t\t\tcoordinates: geopolys\n\t\t};\n\t}\n};\n\nmodule.exports = GeoJSON;\n","// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// this is the core work-horse\n//\n\nvar LinkedList = require('./linked-list');\n\nfunction Intersecter(selfIntersection, eps, buildLog){\n\t// selfIntersection is true/false depending on the phase of the overall algorithm\n\n\t//\n\t// segment creation\n\t//\n\n\tfunction segmentNew(start, end){\n\t\treturn {\n\t\t\tid: buildLog ? buildLog.segmentId() : -1,\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\tmyFill: {\n\t\t\t\tabove: null, // is there fill above us?\n\t\t\t\tbelow: null // is there fill below us?\n\t\t\t},\n\t\t\totherFill: null\n\t\t};\n\t}\n\n\tfunction segmentCopy(start, end, seg){\n\t\treturn {\n\t\t\tid: buildLog ? buildLog.segmentId() : -1,\n\t\t\tstart: start,\n\t\t\tend: end,\n\t\t\tmyFill: {\n\t\t\t\tabove: seg.myFill.above,\n\t\t\t\tbelow: seg.myFill.below\n\t\t\t},\n\t\t\totherFill: null\n\t\t};\n\t}\n\n\t//\n\t// event logic\n\t//\n\n\tvar event_root = LinkedList.create();\n\n\tfunction eventCompare(p1_isStart, p1_1, p1_2, p2_isStart, p2_1, p2_2){\n\t\t// compare the selected points first\n\t\tvar comp = eps.pointsCompare(p1_1, p2_1);\n\t\tif (comp !== 0)\n\t\t\treturn comp;\n\t\t// the selected points are the same\n\n\t\tif (eps.pointsSame(p1_2, p2_2)) // if the non-selected points are the same too...\n\t\t\treturn 0; // then the segments are equal\n\n\t\tif (p1_isStart !== p2_isStart) // if one is a start and the other isn't...\n\t\t\treturn p1_isStart ? 1 : -1; // favor the one that isn't the start\n\n\t\t// otherwise, we'll have to calculate which one is below the other manually\n\t\treturn eps.pointAboveOrOnLine(p1_2,\n\t\t\tp2_isStart ? p2_1 : p2_2, // order matters\n\t\t\tp2_isStart ? p2_2 : p2_1\n\t\t) ? 1 : -1;\n\t}\n\n\tfunction eventAdd(ev, other_pt){\n\t\tevent_root.insertBefore(ev, function(here){\n\t\t\t// should ev be inserted before here?\n\t\t\tvar comp = eventCompare(\n\t\t\t\tev .isStart, ev .pt, other_pt,\n\t\t\t\there.isStart, here.pt, here.other.pt\n\t\t\t);\n\t\t\treturn comp < 0;\n\t\t});\n\t}\n\n\tfunction eventAddSegmentStart(seg, primary){\n\t\tvar ev_start = LinkedList.node({\n\t\t\tisStart: true,\n\t\t\tpt: seg.start,\n\t\t\tseg: seg,\n\t\t\tprimary: primary,\n\t\t\tother: null,\n\t\t\tstatus: null\n\t\t});\n\t\teventAdd(ev_start, seg.end);\n\t\treturn ev_start;\n\t}\n\n\tfunction eventAddSegmentEnd(ev_start, seg, primary){\n\t\tvar ev_end = LinkedList.node({\n\t\t\tisStart: false,\n\t\t\tpt: seg.end,\n\t\t\tseg: seg,\n\t\t\tprimary: primary,\n\t\t\tother: ev_start,\n\t\t\tstatus: null\n\t\t});\n\t\tev_start.other = ev_end;\n\t\teventAdd(ev_end, ev_start.pt);\n\t}\n\n\tfunction eventAddSegment(seg, primary){\n\t\tvar ev_start = eventAddSegmentStart(seg, primary);\n\t\teventAddSegmentEnd(ev_start, seg, primary);\n\t\treturn ev_start;\n\t}\n\n\tfunction eventUpdateEnd(ev, end){\n\t\t// slides an end backwards\n\t\t// (start)------------(end) to:\n\t\t// (start)---(end)\n\n\t\tif (buildLog)\n\t\t\tbuildLog.segmentChop(ev.seg, end);\n\n\t\tev.other.remove();\n\t\tev.seg.end = end;\n\t\tev.other.pt = end;\n\t\teventAdd(ev.other, ev.pt);\n\t}\n\n\tfunction eventDivide(ev, pt){\n\t\tvar ns = segmentCopy(pt, ev.seg.end, ev.seg);\n\t\teventUpdateEnd(ev, pt);\n\t\treturn eventAddSegment(ns, ev.primary);\n\t}\n\n\tfunction calculate(primaryPolyInverted, secondaryPolyInverted){\n\t\t// if selfIntersection is true then there is no secondary polygon, so that isn't used\n\n\t\t//\n\t\t// status logic\n\t\t//\n\n\t\tvar status_root = LinkedList.create();\n\n\t\tfunction statusCompare(ev1, ev2){\n\t\t\tvar a1 = ev1.seg.start;\n\t\t\tvar a2 = ev1.seg.end;\n\t\t\tvar b1 = ev2.seg.start;\n\t\t\tvar b2 = ev2.seg.end;\n\n\t\t\tif (eps.pointsCollinear(a1, b1, b2)){\n\t\t\t\tif (eps.pointsCollinear(a2, b1, b2))\n\t\t\t\t\treturn 1;//eventCompare(true, a1, a2, true, b1, b2);\n\t\t\t\treturn eps.pointAboveOrOnLine(a2, b1, b2) ? 1 : -1;\n\t\t\t}\n\t\t\treturn eps.pointAboveOrOnLine(a1, b1, b2) ? 1 : -1;\n\t\t}\n\n\t\tfunction statusFindSurrounding(ev){\n\t\t\treturn status_root.findTransition(function(here){\n\t\t\t\tvar comp = statusCompare(ev, here.ev);\n\t\t\t\treturn comp > 0;\n\t\t\t});\n\t\t}\n\n\t\tfunction checkIntersection(ev1, ev2){\n\t\t\t// returns the segment equal to ev1, or false if nothing equal\n\n\t\t\tvar seg1 = ev1.seg;\n\t\t\tvar seg2 = ev2.seg;\n\t\t\tvar a1 = seg1.start;\n\t\t\tvar a2 = seg1.end;\n\t\t\tvar b1 = seg2.start;\n\t\t\tvar b2 = seg2.end;\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.checkIntersection(seg1, seg2);\n\n\t\t\tvar i = eps.linesIntersect(a1, a2, b1, b2);\n\n\t\t\tif (i === false){\n\t\t\t\t// segments are parallel or coincident\n\n\t\t\t\t// if points aren't collinear, then the segments are parallel, so no intersections\n\t\t\t\tif (!eps.pointsCollinear(a1, a2, b1))\n\t\t\t\t\treturn false;\n\t\t\t\t// otherwise, segments are on top of each other somehow (aka coincident)\n\n\t\t\t\tif (eps.pointsSame(a1, b2) || eps.pointsSame(a2, b1))\n\t\t\t\t\treturn false; // segments touch at endpoints... no intersection\n\n\t\t\t\tvar a1_equ_b1 = eps.pointsSame(a1, b1);\n\t\t\t\tvar a2_equ_b2 = eps.pointsSame(a2, b2);\n\n\t\t\t\tif (a1_equ_b1 && a2_equ_b2)\n\t\t\t\t\treturn ev2; // segments are exactly equal\n\n\t\t\t\tvar a1_between = !a1_equ_b1 && eps.pointBetween(a1, b1, b2);\n\t\t\t\tvar a2_between = !a2_equ_b2 && eps.pointBetween(a2, b1, b2);\n\n\t\t\t\t// handy for debugging:\n\t\t\t\t// buildLog.log({\n\t\t\t\t//\ta1_equ_b1: a1_equ_b1,\n\t\t\t\t//\ta2_equ_b2: a2_equ_b2,\n\t\t\t\t//\ta1_between: a1_between,\n\t\t\t\t//\ta2_between: a2_between\n\t\t\t\t// });\n\n\t\t\t\tif (a1_equ_b1){\n\t\t\t\t\tif (a2_between){\n\t\t\t\t\t\t// (a1)---(a2)\n\t\t\t\t\t\t// (b1)----------(b2)\n\t\t\t\t\t\teventDivide(ev2, a2);\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t// (a1)----------(a2)\n\t\t\t\t\t\t// (b1)---(b2)\n\t\t\t\t\t\teventDivide(ev1, b2);\n\t\t\t\t\t}\n\t\t\t\t\treturn ev2;\n\t\t\t\t}\n\t\t\t\telse if (a1_between){\n\t\t\t\t\tif (!a2_equ_b2){\n\t\t\t\t\t\t// make a2 equal to b2\n\t\t\t\t\t\tif (a2_between){\n\t\t\t\t\t\t\t// (a1)---(a2)\n\t\t\t\t\t\t\t// (b1)-----------------(b2)\n\t\t\t\t\t\t\teventDivide(ev2, a2);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{\n\t\t\t\t\t\t\t// (a1)----------(a2)\n\t\t\t\t\t\t\t// (b1)----------(b2)\n\t\t\t\t\t\t\teventDivide(ev1, b2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// (a1)---(a2)\n\t\t\t\t\t// (b1)----------(b2)\n\t\t\t\t\teventDivide(ev2, a1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\t// otherwise, lines intersect at i.pt, which may or may not be between the endpoints\n\n\t\t\t\t// is A divided between its endpoints? (exclusive)\n\t\t\t\tif (i.alongA === 0){\n\t\t\t\t\tif (i.alongB === -1) // yes, at exactly b1\n\t\t\t\t\t\teventDivide(ev1, b1);\n\t\t\t\t\telse if (i.alongB === 0) // yes, somewhere between B's endpoints\n\t\t\t\t\t\teventDivide(ev1, i.pt);\n\t\t\t\t\telse if (i.alongB === 1) // yes, at exactly b2\n\t\t\t\t\t\teventDivide(ev1, b2);\n\t\t\t\t}\n\n\t\t\t\t// is B divided between its endpoints? (exclusive)\n\t\t\t\tif (i.alongB === 0){\n\t\t\t\t\tif (i.alongA === -1) // yes, at exactly a1\n\t\t\t\t\t\teventDivide(ev2, a1);\n\t\t\t\t\telse if (i.alongA === 0) // yes, somewhere between A's endpoints (exclusive)\n\t\t\t\t\t\teventDivide(ev2, i.pt);\n\t\t\t\t\telse if (i.alongA === 1) // yes, at exactly a2\n\t\t\t\t\t\teventDivide(ev2, a2);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\n\t\t//\n\t\t// main event loop\n\t\t//\n\t\tvar segments = [];\n\t\twhile (!event_root.isEmpty()){\n\t\t\tvar ev = event_root.getHead();\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.vert(ev.pt[0]);\n\n\t\t\tif (ev.isStart){\n\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.segmentNew(ev.seg, ev.primary);\n\n\t\t\t\tvar surrounding = statusFindSurrounding(ev);\n\t\t\t\tvar above = surrounding.before ? surrounding.before.ev : null;\n\t\t\t\tvar below = surrounding.after ? surrounding.after.ev : null;\n\n\t\t\t\tif (buildLog){\n\t\t\t\t\tbuildLog.tempStatus(\n\t\t\t\t\t\tev.seg,\n\t\t\t\t\t\tabove ? above.seg : false,\n\t\t\t\t\t\tbelow ? below.seg : false\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tfunction checkBothIntersections(){\n\t\t\t\t\tif (above){\n\t\t\t\t\t\tvar eve = checkIntersection(ev, above);\n\t\t\t\t\t\tif (eve)\n\t\t\t\t\t\t\treturn eve;\n\t\t\t\t\t}\n\t\t\t\t\tif (below)\n\t\t\t\t\t\treturn checkIntersection(ev, below);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tvar eve = checkBothIntersections();\n\t\t\t\tif (eve){\n\t\t\t\t\t// ev and eve are equal\n\t\t\t\t\t// we'll keep eve and throw away ev\n\n\t\t\t\t\t// merge ev.seg's fill information into eve.seg\n\n\t\t\t\t\tif (selfIntersection){\n\t\t\t\t\t\tvar toggle; // are we a toggling edge?\n\t\t\t\t\t\tif (ev.seg.myFill.below === null)\n\t\t\t\t\t\t\ttoggle = true;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\ttoggle = ev.seg.myFill.above !== ev.seg.myFill.below;\n\n\t\t\t\t\t\t// merge two segments that belong to the same polygon\n\t\t\t\t\t\t// think of this as sandwiching two segments together, where `eve.seg` is\n\t\t\t\t\t\t// the bottom -- this will cause the above fill flag to toggle\n\t\t\t\t\t\tif (toggle)\n\t\t\t\t\t\t\teve.seg.myFill.above = !eve.seg.myFill.above;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t// merge two segments that belong to different polygons\n\t\t\t\t\t\t// each segment has distinct knowledge, so no special logic is needed\n\t\t\t\t\t\t// note that this can only happen once per segment in this phase, because we\n\t\t\t\t\t\t// are guaranteed that all self-intersections are gone\n\t\t\t\t\t\teve.seg.otherFill = ev.seg.myFill;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.segmentUpdate(eve.seg);\n\n\t\t\t\t\tev.other.remove();\n\t\t\t\t\tev.remove();\n\t\t\t\t}\n\n\t\t\t\tif (event_root.getHead() !== ev){\n\t\t\t\t\t// something was inserted before us in the event queue, so loop back around and\n\t\t\t\t\t// process it before continuing\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.rewind(ev.seg);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t//\n\t\t\t\t// calculate fill flags\n\t\t\t\t//\n\t\t\t\tif (selfIntersection){\n\t\t\t\t\tvar toggle; // are we a toggling edge?\n\t\t\t\t\tif (ev.seg.myFill.below === null) // if we are a new segment...\n\t\t\t\t\t\ttoggle = true; // then we toggle\n\t\t\t\t\telse // we are a segment that has previous knowledge from a division\n\t\t\t\t\t\ttoggle = ev.seg.myFill.above !== ev.seg.myFill.below; // calculate toggle\n\n\t\t\t\t\t// next, calculate whether we are filled below us\n\t\t\t\t\tif (!below){ // if nothing is below us...\n\t\t\t\t\t\t// we are filled below us if the polygon is inverted\n\t\t\t\t\t\tev.seg.myFill.below = primaryPolyInverted;\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\t// otherwise, we know the answer -- it's the same if whatever is below\n\t\t\t\t\t\t// us is filled above it\n\t\t\t\t\t\tev.seg.myFill.below = below.seg.myFill.above;\n\t\t\t\t\t}\n\n\t\t\t\t\t// since now we know if we're filled below us, we can calculate whether\n\t\t\t\t\t// we're filled above us by applying toggle to whatever is below us\n\t\t\t\t\tif (toggle)\n\t\t\t\t\t\tev.seg.myFill.above = !ev.seg.myFill.below;\n\t\t\t\t\telse\n\t\t\t\t\t\tev.seg.myFill.above = ev.seg.myFill.below;\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// now we fill in any missing transition information, since we are all-knowing\n\t\t\t\t\t// at this point\n\n\t\t\t\t\tif (ev.seg.otherFill === null){\n\t\t\t\t\t\t// if we don't have other information, then we need to figure out if we're\n\t\t\t\t\t\t// inside the other polygon\n\t\t\t\t\t\tvar inside;\n\t\t\t\t\t\tif (!below){\n\t\t\t\t\t\t\t// if nothing is below us, then we're inside if the other polygon is\n\t\t\t\t\t\t\t// inverted\n\t\t\t\t\t\t\tinside =\n\t\t\t\t\t\t\t\tev.primary ? secondaryPolyInverted : primaryPolyInverted;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse{ // otherwise, something is below us\n\t\t\t\t\t\t\t// so copy the below segment's other polygon's above\n\t\t\t\t\t\t\tif (ev.primary === below.primary)\n\t\t\t\t\t\t\t\tinside = below.seg.otherFill.above;\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tinside = below.seg.myFill.above;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tev.seg.otherFill = {\n\t\t\t\t\t\t\tabove: inside,\n\t\t\t\t\t\t\tbelow: inside\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (buildLog){\n\t\t\t\t\tbuildLog.status(\n\t\t\t\t\t\tev.seg,\n\t\t\t\t\t\tabove ? above.seg : false,\n\t\t\t\t\t\tbelow ? below.seg : false\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// insert the status and remember it for later removal\n\t\t\t\tev.other.status = surrounding.insert(LinkedList.node({ ev: ev }));\n\t\t\t}\n\t\t\telse{\n\t\t\t\tvar st = ev.status;\n\n\t\t\t\tif (st === null){\n\t\t\t\t\tthrow new Error('PolyBool: Zero-length segment detected; your epsilon is ' +\n\t\t\t\t\t\t'probably too small or too large');\n\t\t\t\t}\n\n\t\t\t\t// removing the status will create two new adjacent edges, so we'll need to check\n\t\t\t\t// for those\n\t\t\t\tif (status_root.exists(st.prev) && status_root.exists(st.next))\n\t\t\t\t\tcheckIntersection(st.prev.ev, st.next.ev);\n\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.statusRemove(st.ev.seg);\n\n\t\t\t\t// remove the status\n\t\t\t\tst.remove();\n\n\t\t\t\t// if we've reached this point, we've calculated everything there is to know, so\n\t\t\t\t// save the segment for reporting\n\t\t\t\tif (!ev.primary){\n\t\t\t\t\t// make sure `seg.myFill` actually points to the primary polygon though\n\t\t\t\t\tvar s = ev.seg.myFill;\n\t\t\t\t\tev.seg.myFill = ev.seg.otherFill;\n\t\t\t\t\tev.seg.otherFill = s;\n\t\t\t\t}\n\t\t\t\tsegments.push(ev.seg);\n\t\t\t}\n\n\t\t\t// remove the event and continue\n\t\t\tevent_root.getHead().remove();\n\t\t}\n\n\t\tif (buildLog)\n\t\t\tbuildLog.done();\n\n\t\treturn segments;\n\t}\n\n\t// return the appropriate API depending on what we're doing\n\tif (!selfIntersection){\n\t\t// performing combination of polygons, so only deal with already-processed segments\n\t\treturn {\n\t\t\tcalculate: function(segments1, inverted1, segments2, inverted2){\n\t\t\t\t// segmentsX come from the self-intersection API, or this API\n\t\t\t\t// invertedX is whether we treat that list of segments as an inverted polygon or not\n\t\t\t\t// returns segments that can be used for further operations\n\t\t\t\tsegments1.forEach(function(seg){\n\t\t\t\t\teventAddSegment(segmentCopy(seg.start, seg.end, seg), true);\n\t\t\t\t});\n\t\t\t\tsegments2.forEach(function(seg){\n\t\t\t\t\teventAddSegment(segmentCopy(seg.start, seg.end, seg), false);\n\t\t\t\t});\n\t\t\t\treturn calculate(inverted1, inverted2);\n\t\t\t}\n\t\t};\n\t}\n\n\t// otherwise, performing self-intersection, so deal with regions\n\treturn {\n\t\taddRegion: function(region){\n\t\t\t// regions are a list of points:\n\t\t\t// [ [0, 0], [100, 0], [50, 100] ]\n\t\t\t// you can add multiple regions before running calculate\n\t\t\tvar pt1;\n\t\t\tvar pt2 = region[region.length - 1];\n\t\t\tfor (var i = 0; i < region.length; i++){\n\t\t\t\tpt1 = pt2;\n\t\t\t\tpt2 = region[i];\n\n\t\t\t\tvar forward = eps.pointsCompare(pt1, pt2);\n\t\t\t\tif (forward === 0) // points are equal, so we have a zero-length segment\n\t\t\t\t\tcontinue; // just skip it\n\n\t\t\t\teventAddSegment(\n\t\t\t\t\tsegmentNew(\n\t\t\t\t\t\tforward < 0 ? pt1 : pt2,\n\t\t\t\t\t\tforward < 0 ? pt2 : pt1\n\t\t\t\t\t),\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\tcalculate: function(inverted){\n\t\t\t// is the polygon inverted?\n\t\t\t// returns segments\n\t\t\treturn calculate(inverted, false);\n\t\t}\n\t};\n}\n\nmodule.exports = Intersecter;\n","// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// simple linked list implementation that allows you to traverse down nodes and save positions\n//\n\nvar LinkedList = {\n\tcreate: function(){\n\t\tvar my = {\n\t\t\troot: { root: true, next: null },\n\t\t\texists: function(node){\n\t\t\t\tif (node === null || node === my.root)\n\t\t\t\t\treturn false;\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\tisEmpty: function(){\n\t\t\t\treturn my.root.next === null;\n\t\t\t},\n\t\t\tgetHead: function(){\n\t\t\t\treturn my.root.next;\n\t\t\t},\n\t\t\tinsertBefore: function(node, check){\n\t\t\t\tvar last = my.root;\n\t\t\t\tvar here = my.root.next;\n\t\t\t\twhile (here !== null){\n\t\t\t\t\tif (check(here)){\n\t\t\t\t\t\tnode.prev = here.prev;\n\t\t\t\t\t\tnode.next = here;\n\t\t\t\t\t\there.prev.next = node;\n\t\t\t\t\t\there.prev = node;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlast = here;\n\t\t\t\t\there = here.next;\n\t\t\t\t}\n\t\t\t\tlast.next = node;\n\t\t\t\tnode.prev = last;\n\t\t\t\tnode.next = null;\n\t\t\t},\n\t\t\tfindTransition: function(check){\n\t\t\t\tvar prev = my.root;\n\t\t\t\tvar here = my.root.next;\n\t\t\t\twhile (here !== null){\n\t\t\t\t\tif (check(here))\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tprev = here;\n\t\t\t\t\there = here.next;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tbefore: prev === my.root ? null : prev,\n\t\t\t\t\tafter: here,\n\t\t\t\t\tinsert: function(node){\n\t\t\t\t\t\tnode.prev = prev;\n\t\t\t\t\t\tnode.next = here;\n\t\t\t\t\t\tprev.next = node;\n\t\t\t\t\t\tif (here !== null)\n\t\t\t\t\t\t\there.prev = node;\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t\treturn my;\n\t},\n\tnode: function(data){\n\t\tdata.prev = null;\n\t\tdata.next = null;\n\t\tdata.remove = function(){\n\t\t\tdata.prev.next = data.next;\n\t\t\tif (data.next)\n\t\t\t\tdata.next.prev = data.prev;\n\t\t\tdata.prev = null;\n\t\t\tdata.next = null;\n\t\t};\n\t\treturn data;\n\t}\n};\n\nmodule.exports = LinkedList;\n","// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// converts a list of segments into a list of regions, while also removing unnecessary verticies\n//\n\nfunction SegmentChainer(segments, eps, buildLog){\n\tvar chains = [];\n\tvar regions = [];\n\n\tsegments.forEach(function(seg){\n\t\tvar pt1 = seg.start;\n\t\tvar pt2 = seg.end;\n\t\tif (eps.pointsSame(pt1, pt2)){\n\t\t\tconsole.warn('PolyBool: Warning: Zero-length segment detected; your epsilon is ' +\n\t\t\t\t'probably too small or too large');\n\t\t\treturn;\n\t\t}\n\n\t\tif (buildLog)\n\t\t\tbuildLog.chainStart(seg);\n\n\t\t// search for two chains that this segment matches\n\t\tvar first_match = {\n\t\t\tindex: 0,\n\t\t\tmatches_head: false,\n\t\t\tmatches_pt1: false\n\t\t};\n\t\tvar second_match = {\n\t\t\tindex: 0,\n\t\t\tmatches_head: false,\n\t\t\tmatches_pt1: false\n\t\t};\n\t\tvar next_match = first_match;\n\t\tfunction setMatch(index, matches_head, matches_pt1){\n\t\t\t// return true if we've matched twice\n\t\t\tnext_match.index = index;\n\t\t\tnext_match.matches_head = matches_head;\n\t\t\tnext_match.matches_pt1 = matches_pt1;\n\t\t\tif (next_match === first_match){\n\t\t\t\tnext_match = second_match;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tnext_match = null;\n\t\t\treturn true; // we've matched twice, we're done here\n\t\t}\n\t\tfor (var i = 0; i < chains.length; i++){\n\t\t\tvar chain = chains[i];\n\t\t\tvar head = chain[0];\n\t\t\tvar head2 = chain[1];\n\t\t\tvar tail = chain[chain.length - 1];\n\t\t\tvar tail2 = chain[chain.length - 2];\n\t\t\tif (eps.pointsSame(head, pt1)){\n\t\t\t\tif (setMatch(i, true, true))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (eps.pointsSame(head, pt2)){\n\t\t\t\tif (setMatch(i, true, false))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (eps.pointsSame(tail, pt1)){\n\t\t\t\tif (setMatch(i, false, true))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (eps.pointsSame(tail, pt2)){\n\t\t\t\tif (setMatch(i, false, false))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (next_match === first_match){\n\t\t\t// we didn't match anything, so create a new chain\n\t\t\tchains.push([ pt1, pt2 ]);\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainNew(pt1, pt2);\n\t\t\treturn;\n\t\t}\n\n\t\tif (next_match === second_match){\n\t\t\t// we matched a single chain\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainMatch(first_match.index);\n\n\t\t\t// add the other point to the apporpriate end, and check to see if we've closed the\n\t\t\t// chain into a loop\n\n\t\t\tvar index = first_match.index;\n\t\t\tvar pt = first_match.matches_pt1 ? pt2 : pt1; // if we matched pt1, then we add pt2, etc\n\t\t\tvar addToHead = first_match.matches_head; // if we matched at head, then add to the head\n\n\t\t\tvar chain = chains[index];\n\t\t\tvar grow = addToHead ? chain[0] : chain[chain.length - 1];\n\t\t\tvar grow2 = addToHead ? chain[1] : chain[chain.length - 2];\n\t\t\tvar oppo = addToHead ? chain[chain.length - 1] : chain[0];\n\t\t\tvar oppo2 = addToHead ? chain[chain.length - 2] : chain[1];\n\n\t\t\tif (eps.pointsCollinear(grow2, grow, pt)){\n\t\t\t\t// grow isn't needed because it's directly between grow2 and pt:\n\t\t\t\t// grow2 ---grow---> pt\n\t\t\t\tif (addToHead){\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.chainRemoveHead(first_match.index, pt);\n\t\t\t\t\tchain.shift();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\tbuildLog.chainRemoveTail(first_match.index, pt);\n\t\t\t\t\tchain.pop();\n\t\t\t\t}\n\t\t\t\tgrow = grow2; // old grow is gone... new grow is what grow2 was\n\t\t\t}\n\n\t\t\tif (eps.pointsSame(oppo, pt)){\n\t\t\t\t// we're closing the loop, so remove chain from chains\n\t\t\t\tchains.splice(index, 1);\n\n\t\t\t\tif (eps.pointsCollinear(oppo2, oppo, grow)){\n\t\t\t\t\t// oppo isn't needed because it's directly between oppo2 and grow:\n\t\t\t\t\t// oppo2 ---oppo--->grow\n\t\t\t\t\tif (addToHead){\n\t\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\t\tbuildLog.chainRemoveTail(first_match.index, grow);\n\t\t\t\t\t\tchain.pop();\n\t\t\t\t\t}\n\t\t\t\t\telse{\n\t\t\t\t\t\tif (buildLog)\n\t\t\t\t\t\t\tbuildLog.chainRemoveHead(first_match.index, grow);\n\t\t\t\t\t\tchain.shift();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainClose(first_match.index);\n\n\t\t\t\t// we have a closed chain!\n\t\t\t\tregions.push(chain);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// not closing a loop, so just add it to the apporpriate side\n\t\t\tif (addToHead){\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainAddHead(first_match.index, pt);\n\t\t\t\tchain.unshift(pt);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainAddTail(first_match.index, pt);\n\t\t\t\tchain.push(pt);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// otherwise, we matched two chains, so we need to combine those chains together\n\n\t\tfunction reverseChain(index){\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainReverse(index);\n\t\t\tchains[index].reverse(); // gee, that's easy\n\t\t}\n\n\t\tfunction appendChain(index1, index2){\n\t\t\t// index1 gets index2 appended to it, and index2 is removed\n\t\t\tvar chain1 = chains[index1];\n\t\t\tvar chain2 = chains[index2];\n\t\t\tvar tail = chain1[chain1.length - 1];\n\t\t\tvar tail2 = chain1[chain1.length - 2];\n\t\t\tvar head = chain2[0];\n\t\t\tvar head2 = chain2[1];\n\n\t\t\tif (eps.pointsCollinear(tail2, tail, head)){\n\t\t\t\t// tail isn't needed because it's directly between tail2 and head\n\t\t\t\t// tail2 ---tail---> head\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainRemoveTail(index1, tail);\n\t\t\t\tchain1.pop();\n\t\t\t\ttail = tail2; // old tail is gone... new tail is what tail2 was\n\t\t\t}\n\n\t\t\tif (eps.pointsCollinear(tail, head, head2)){\n\t\t\t\t// head isn't needed because it's directly between tail and head2\n\t\t\t\t// tail ---head---> head2\n\t\t\t\tif (buildLog)\n\t\t\t\t\tbuildLog.chainRemoveHead(index2, head);\n\t\t\t\tchain2.shift();\n\t\t\t}\n\n\t\t\tif (buildLog)\n\t\t\t\tbuildLog.chainJoin(index1, index2);\n\t\t\tchains[index1] = chain1.concat(chain2);\n\t\t\tchains.splice(index2, 1);\n\t\t}\n\n\t\tvar F = first_match.index;\n\t\tvar S = second_match.index;\n\n\t\tif (buildLog)\n\t\t\tbuildLog.chainConnect(F, S);\n\n\t\tvar reverseF = chains[F].length < chains[S].length; // reverse the shorter chain, if needed\n\t\tif (first_match.matches_head){\n\t\t\tif (second_match.matches_head){\n\t\t\t\tif (reverseF){\n\t\t\t\t\t// <<<< F <<<< --- >>>> S >>>>\n\t\t\t\t\treverseChain(F);\n\t\t\t\t\t// >>>> F >>>> --- >>>> S >>>>\n\t\t\t\t\tappendChain(F, S);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// <<<< F <<<< --- >>>> S >>>>\n\t\t\t\t\treverseChain(S);\n\t\t\t\t\t// <<<< F <<<< --- <<<< S <<<< logically same as:\n\t\t\t\t\t// >>>> S >>>> --- >>>> F >>>>\n\t\t\t\t\tappendChain(S, F);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse{\n\t\t\t\t// <<<< F <<<< --- <<<< S <<<< logically same as:\n\t\t\t\t// >>>> S >>>> --- >>>> F >>>>\n\t\t\t\tappendChain(S, F);\n\t\t\t}\n\t\t}\n\t\telse{\n\t\t\tif (second_match.matches_head){\n\t\t\t\t// >>>> F >>>> --- >>>> S >>>>\n\t\t\t\tappendChain(F, S);\n\t\t\t}\n\t\t\telse{\n\t\t\t\tif (reverseF){\n\t\t\t\t\t// >>>> F >>>> --- <<<< S <<<<\n\t\t\t\t\treverseChain(F);\n\t\t\t\t\t// <<<< F <<<< --- <<<< S <<<< logically same as:\n\t\t\t\t\t// >>>> S >>>> --- >>>> F >>>>\n\t\t\t\t\tappendChain(S, F);\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\t// >>>> F >>>> --- <<<< S <<<<\n\t\t\t\t\treverseChain(S);\n\t\t\t\t\t// >>>> F >>>> --- >>>> S >>>>\n\t\t\t\t\tappendChain(F, S);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\n\treturn regions;\n}\n\nmodule.exports = SegmentChainer;\n","// (c) Copyright 2016, Sean Connelly (@voidqk), http://syntheti.cc\n// MIT License\n// Project Home: https://github.com/voidqk/polybooljs\n\n//\n// filter a list of segments based on boolean operations\n//\n\nfunction select(segments, selection, buildLog){\n\tvar result = [];\n\tsegments.forEach(function(seg){\n\t\tvar index =\n\t\t\t(seg.myFill.above ? 8 : 0) +\n\t\t\t(seg.myFill.below ? 4 : 0) +\n\t\t\t((seg.otherFill && seg.otherFill.above) ? 2 : 0) +\n\t\t\t((seg.otherFill && seg.otherFill.below) ? 1 : 0);\n\t\tif (selection[index] !== 0){\n\t\t\t// copy the segment to the results, while also calculating the fill status\n\t\t\tresult.push({\n\t\t\t\tid: buildLog ? buildLog.segmentId() : -1,\n\t\t\t\tstart: seg.start,\n\t\t\t\tend: seg.end,\n\t\t\t\tmyFill: {\n\t\t\t\t\tabove: selection[index] === 1, // 1 if filled above\n\t\t\t\t\tbelow: selection[index] === 2 // 2 if filled below\n\t\t\t\t},\n\t\t\t\totherFill: null\n\t\t\t});\n\t\t}\n\t});\n\n\tif (buildLog)\n\t\tbuildLog.selected(result);\n\n\treturn result;\n}\n\nvar SegmentSelector = {\n\tunion: function(segments, buildLog){ // primary | secondary\n\t\t// above1 below1 above2 below2 Keep? Value\n\t\t// 0 0 0 0 => no 0\n\t\t// 0 0 0 1 => yes filled below 2\n\t\t// 0 0 1 0 => yes filled above 1\n\t\t// 0 0 1 1 => no 0\n\t\t// 0 1 0 0 => yes filled below 2\n\t\t// 0 1 0 1 => yes filled below 2\n\t\t// 0 1 1 0 => no 0\n\t\t// 0 1 1 1 => no 0\n\t\t// 1 0 0 0 => yes filled above 1\n\t\t// 1 0 0 1 => no 0\n\t\t// 1 0 1 0 => yes filled above 1\n\t\t// 1 0 1 1 => no 0\n\t\t// 1 1 0 0 => no 0\n\t\t// 1 1 0 1 => no 0\n\t\t// 1 1 1 0 => no 0\n\t\t// 1 1 1 1 => no 0\n\t\treturn select(segments, [\n\t\t\t0, 2, 1, 0,\n\t\t\t2, 2, 0, 0,\n\t\t\t1, 0, 1, 0,\n\t\t\t0, 0, 0, 0\n\t\t], buildLog);\n\t},\n\tintersect: function(segments, buildLog){ // primary & secondary\n\t\t// above1 below1 above2 below2 Keep? Value\n\t\t// 0 0 0 0 => no 0\n\t\t// 0 0 0 1 => no 0\n\t\t// 0 0 1 0 => no 0\n\t\t// 0 0 1 1 => no 0\n\t\t// 0 1 0 0 => no 0\n\t\t// 0 1 0 1 => yes filled below 2\n\t\t// 0 1 1 0 => no 0\n\t\t// 0 1 1 1 => yes filled below 2\n\t\t// 1 0 0 0 => no 0\n\t\t// 1 0 0 1 => no 0\n\t\t// 1 0 1 0 => yes filled above 1\n\t\t// 1 0 1 1 => yes filled above 1\n\t\t// 1 1 0 0 => no 0\n\t\t// 1 1 0 1 => yes filled below 2\n\t\t// 1 1 1 0 => yes filled above 1\n\t\t// 1 1 1 1 => no 0\n\t\treturn select(segments, [\n\t\t\t0, 0, 0, 0,\n\t\t\t0, 2, 0, 2,\n\t\t\t0, 0, 1, 1,\n\t\t\t0, 2, 1, 0\n\t\t], buildLog);\n\t},\n\tdifference: function(segments, buildLog){ // primary - secondary\n\t\t// above1 below1 above2 below2 Keep? Value\n\t\t// 0 0 0 0 => no 0\n\t\t// 0 0 0 1 => no 0\n\t\t// 0 0 1 0 => no 0\n\t\t// 0 0 1 1 => no 0\n\t\t// 0 1 0 0 => yes filled below 2\n\t\t// 0 1 0 1 => no 0\n\t\t// 0 1 1 0 => yes filled below 2\n\t\t// 0 1 1 1 => no 0\n\t\t// 1 0 0 0 => yes filled above 1\n\t\t// 1 0 0 1 => yes filled above 1\n\t\t// 1 0 1 0 => no 0\n\t\t// 1 0 1 1 => no 0\n\t\t// 1 1 0 0 => no 0\n\t\t// 1 1 0 1 => yes filled above 1\n\t\t// 1 1 1 0 => yes filled below 2\n\t\t// 1 1 1 1 => no 0\n\t\treturn select(segments, [\n\t\t\t0, 0, 0, 0,\n\t\t\t2, 0, 2, 0,\n\t\t\t1, 1, 0, 0,\n\t\t\t0, 1, 2, 0\n\t\t], buildLog);\n\t},\n\tdifferenceRev: function(segments, buildLog){ // secondary - primary\n\t\t// above1 below1 above2 below2 Keep? Value\n\t\t// 0 0 0 0 => no 0\n\t\t// 0 0 0 1 => yes filled below 2\n\t\t// 0 0 1 0 => yes filled above 1\n\t\t// 0 0 1 1 => no 0\n\t\t// 0 1 0 0 => no 0\n\t\t// 0 1 0 1 => no 0\n\t\t// 0 1 1 0 => yes filled above 1\n\t\t// 0 1 1 1 => yes filled above 1\n\t\t// 1 0 0 0 => no 0\n\t\t// 1 0 0 1 => yes filled below 2\n\t\t// 1 0 1 0 => no 0\n\t\t// 1 0 1 1 => yes filled below 2\n\t\t// 1 1 0 0 => no 0\n\t\t// 1 1 0 1 => no 0\n\t\t// 1 1 1 0 => no 0\n\t\t// 1 1 1 1 => no 0\n\t\treturn select(segments, [\n\t\t\t0, 2, 1, 0,\n\t\t\t0, 0, 1, 1,\n\t\t\t0, 2, 0, 2,\n\t\t\t0, 0, 0, 0\n\t\t], buildLog);\n\t},\n\txor: function(segments, buildLog){ // primary ^ secondary\n\t\t// above1 below1 above2 below2 Keep? Value\n\t\t// 0 0 0 0 => no 0\n\t\t// 0 0 0 1 => yes filled below 2\n\t\t// 0 0 1 0 => yes filled above 1\n\t\t// 0 0 1 1 => no 0\n\t\t// 0 1 0 0 => yes filled below 2\n\t\t// 0 1 0 1 => no 0\n\t\t// 0 1 1 0 => no 0\n\t\t// 0 1 1 1 => yes filled above 1\n\t\t// 1 0 0 0 => yes filled above 1\n\t\t// 1 0 0 1 => no 0\n\t\t// 1 0 1 0 => no 0\n\t\t// 1 0 1 1 => yes filled below 2\n\t\t// 1 1 0 0 => no 0\n\t\t// 1 1 0 1 => yes filled above 1\n\t\t// 1 1 1 0 => yes filled below 2\n\t\t// 1 1 1 1 => no 0\n\t\treturn select(segments, [\n\t\t\t0, 2, 1, 0,\n\t\t\t2, 0, 0, 1,\n\t\t\t1, 0, 0, 2,\n\t\t\t0, 1, 2, 0\n\t\t], buildLog);\n\t}\n};\n\nmodule.exports = SegmentSelector;\n","'use strict'\n\nlet Container = require('./container')\n\nclass AtRule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'atrule'\n }\n\n append(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.append(...children)\n }\n\n prepend(...children) {\n if (!this.proxyOf.nodes) this.nodes = []\n return super.prepend(...children)\n }\n}\n\nmodule.exports = AtRule\nAtRule.default = AtRule\n\nContainer.registerAtRule(AtRule)\n","'use strict'\n\nlet Node = require('./node')\n\nclass Comment extends Node {\n constructor(defaults) {\n super(defaults)\n this.type = 'comment'\n }\n}\n\nmodule.exports = Comment\nComment.default = Comment\n","'use strict'\n\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Node = require('./node')\nlet { isClean, my } = require('./symbols')\n\nlet AtRule, parse, Root, Rule\n\nfunction cleanSource(nodes) {\n return nodes.map(i => {\n if (i.nodes) i.nodes = cleanSource(i.nodes)\n delete i.source\n return i\n })\n}\n\nfunction markTreeDirty(node) {\n node[isClean] = false\n if (node.proxyOf.nodes) {\n for (let i of node.proxyOf.nodes) {\n markTreeDirty(i)\n }\n }\n}\n\nclass Container extends Node {\n append(...children) {\n for (let child of children) {\n let nodes = this.normalize(child, this.last)\n for (let node of nodes) this.proxyOf.nodes.push(node)\n }\n\n this.markDirty()\n\n return this\n }\n\n cleanRaws(keepBetween) {\n super.cleanRaws(keepBetween)\n if (this.nodes) {\n for (let node of this.nodes) node.cleanRaws(keepBetween)\n }\n }\n\n each(callback) {\n if (!this.proxyOf.nodes) return undefined\n let iterator = this.getIterator()\n\n let index, result\n while (this.indexes[iterator] < this.proxyOf.nodes.length) {\n index = this.indexes[iterator]\n result = callback(this.proxyOf.nodes[index], index)\n if (result === false) break\n\n this.indexes[iterator] += 1\n }\n\n delete this.indexes[iterator]\n return result\n }\n\n every(condition) {\n return this.nodes.every(condition)\n }\n\n getIterator() {\n if (!this.lastEach) this.lastEach = 0\n if (!this.indexes) this.indexes = {}\n\n this.lastEach += 1\n let iterator = this.lastEach\n this.indexes[iterator] = 0\n\n return iterator\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (!node[prop]) {\n return node[prop]\n } else if (\n prop === 'each' ||\n (typeof prop === 'string' && prop.startsWith('walk'))\n ) {\n return (...args) => {\n return node[prop](\n ...args.map(i => {\n if (typeof i === 'function') {\n return (child, index) => i(child.toProxy(), index)\n } else {\n return i\n }\n })\n )\n }\n } else if (prop === 'every' || prop === 'some') {\n return cb => {\n return node[prop]((child, ...other) =>\n cb(child.toProxy(), ...other)\n )\n }\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else if (prop === 'nodes') {\n return node.nodes.map(i => i.toProxy())\n } else if (prop === 'first' || prop === 'last') {\n return node[prop].toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (prop === 'name' || prop === 'params' || prop === 'selector') {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n index(child) {\n if (typeof child === 'number') return child\n if (child.proxyOf) child = child.proxyOf\n return this.proxyOf.nodes.indexOf(child)\n }\n\n insertAfter(exist, add) {\n let existIndex = this.index(exist)\n let nodes = this.normalize(add, this.proxyOf.nodes[existIndex]).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex + 1, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex < index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n insertBefore(exist, add) {\n let existIndex = this.index(exist)\n let type = existIndex === 0 ? 'prepend' : false\n let nodes = this.normalize(\n add,\n this.proxyOf.nodes[existIndex],\n type\n ).reverse()\n existIndex = this.index(exist)\n for (let node of nodes) this.proxyOf.nodes.splice(existIndex, 0, node)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (existIndex <= index) {\n this.indexes[id] = index + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n normalize(nodes, sample) {\n if (typeof nodes === 'string') {\n nodes = cleanSource(parse(nodes).nodes)\n } else if (typeof nodes === 'undefined') {\n nodes = []\n } else if (Array.isArray(nodes)) {\n nodes = nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\n } else if (nodes.type === 'root' && this.type !== 'document') {\n nodes = nodes.nodes.slice(0)\n for (let i of nodes) {\n if (i.parent) i.parent.removeChild(i, 'ignore')\n }\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 nodes = [new Declaration(nodes)]\n } else if (nodes.selector || nodes.selectors) {\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 let processed = nodes.map(i => {\n /* c8 ignore next */\n if (!i[my]) Container.rebuild(i)\n i = i.proxyOf\n if (i.parent) i.parent.removeChild(i)\n if (i[isClean]) markTreeDirty(i)\n\n if (!i.raws) i.raws = {}\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 i.parent = this.proxyOf\n return i\n })\n\n return processed\n }\n\n prepend(...children) {\n children = children.reverse()\n for (let child of children) {\n let nodes = this.normalize(child, this.first, 'prepend').reverse()\n for (let node of nodes) this.proxyOf.nodes.unshift(node)\n for (let id in this.indexes) {\n this.indexes[id] = this.indexes[id] + nodes.length\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n push(child) {\n child.parent = this\n this.proxyOf.nodes.push(child)\n return this\n }\n\n removeAll() {\n for (let node of this.proxyOf.nodes) node.parent = undefined\n this.proxyOf.nodes = []\n\n this.markDirty()\n\n return this\n }\n\n removeChild(child) {\n child = this.index(child)\n this.proxyOf.nodes[child].parent = undefined\n this.proxyOf.nodes.splice(child, 1)\n\n let index\n for (let id in this.indexes) {\n index = this.indexes[id]\n if (index >= child) {\n this.indexes[id] = index - 1\n }\n }\n\n this.markDirty()\n\n return this\n }\n\n replaceValues(pattern, opts, callback) {\n if (!callback) {\n callback = opts\n opts = {}\n }\n\n this.walkDecls(decl => {\n if (opts.props && !opts.props.includes(decl.prop)) return\n if (opts.fast && !decl.value.includes(opts.fast)) return\n\n decl.value = decl.value.replace(pattern, callback)\n })\n\n this.markDirty()\n\n return this\n }\n\n some(condition) {\n return this.nodes.some(condition)\n }\n\n walk(callback) {\n return this.each((child, i) => {\n let result\n try {\n result = callback(child, i)\n } catch (e) {\n throw child.addToError(e)\n }\n if (result !== false && child.walk) {\n result = child.walk(callback)\n }\n\n return result\n })\n }\n\n walkAtRules(name, callback) {\n if (!callback) {\n callback = name\n return this.walk((child, i) => {\n if (child.type === 'atrule') {\n return callback(child, i)\n }\n })\n }\n if (name instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'atrule' && name.test(child.name)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'atrule' && child.name === name) {\n return callback(child, i)\n }\n })\n }\n\n walkComments(callback) {\n return this.walk((child, i) => {\n if (child.type === 'comment') {\n return callback(child, i)\n }\n })\n }\n\n walkDecls(prop, callback) {\n if (!callback) {\n callback = prop\n return this.walk((child, i) => {\n if (child.type === 'decl') {\n return callback(child, i)\n }\n })\n }\n if (prop instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'decl' && prop.test(child.prop)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'decl' && child.prop === prop) {\n return callback(child, i)\n }\n })\n }\n\n walkRules(selector, callback) {\n if (!callback) {\n callback = selector\n\n return this.walk((child, i) => {\n if (child.type === 'rule') {\n return callback(child, i)\n }\n })\n }\n if (selector instanceof RegExp) {\n return this.walk((child, i) => {\n if (child.type === 'rule' && selector.test(child.selector)) {\n return callback(child, i)\n }\n })\n }\n return this.walk((child, i) => {\n if (child.type === 'rule' && child.selector === selector) {\n return callback(child, i)\n }\n })\n }\n\n get first() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[0]\n }\n\n get last() {\n if (!this.proxyOf.nodes) return undefined\n return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]\n }\n}\n\nContainer.registerParse = dependant => {\n parse = dependant\n}\n\nContainer.registerRule = dependant => {\n Rule = dependant\n}\n\nContainer.registerAtRule = dependant => {\n AtRule = dependant\n}\n\nContainer.registerRoot = dependant => {\n Root = dependant\n}\n\nmodule.exports = Container\nContainer.default = Container\n\n/* c8 ignore start */\nContainer.rebuild = node => {\n if (node.type === 'atrule') {\n Object.setPrototypeOf(node, AtRule.prototype)\n } else if (node.type === 'rule') {\n Object.setPrototypeOf(node, Rule.prototype)\n } else if (node.type === 'decl') {\n Object.setPrototypeOf(node, Declaration.prototype)\n } else if (node.type === 'comment') {\n Object.setPrototypeOf(node, Comment.prototype)\n } else if (node.type === 'root') {\n Object.setPrototypeOf(node, Root.prototype)\n }\n\n node[my] = true\n\n if (node.nodes) {\n node.nodes.forEach(child => {\n Container.rebuild(child)\n })\n }\n}\n/* c8 ignore stop */\n","'use strict'\n\nlet pico = require('picocolors')\n\nlet terminalHighlight = require('./terminal-highlight')\n\nclass CssSyntaxError extends Error {\n constructor(message, line, column, source, file, plugin) {\n super(message)\n this.name = 'CssSyntaxError'\n this.reason = message\n\n if (file) {\n this.file = file\n }\n if (source) {\n this.source = source\n }\n if (plugin) {\n this.plugin = plugin\n }\n if (typeof line !== 'undefined' && typeof column !== 'undefined') {\n if (typeof line === 'number') {\n this.line = line\n this.column = column\n } else {\n this.line = line.line\n this.column = line.column\n this.endLine = column.line\n this.endColumn = column.column\n }\n }\n\n this.setMessage()\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CssSyntaxError)\n }\n }\n\n setMessage() {\n this.message = this.plugin ? this.plugin + ': ' : ''\n this.message += this.file ? this.file : ''\n if (typeof this.line !== 'undefined') {\n this.message += ':' + this.line + ':' + this.column\n }\n this.message += ': ' + this.reason\n }\n\n showSourceCode(color) {\n if (!this.source) return ''\n\n let css = this.source\n if (color == null) color = pico.isColorSupported\n\n let aside = text => text\n let mark = text => text\n let highlight = text => text\n if (color) {\n let { bold, gray, red } = pico.createColors(true)\n mark = text => bold(red(text))\n aside = text => gray(text)\n if (terminalHighlight) {\n highlight = text => terminalHighlight(text)\n }\n }\n\n let lines = css.split(/\\r?\\n/)\n let start = Math.max(this.line - 3, 0)\n let end = Math.min(this.line + 2, lines.length)\n let maxWidth = String(end).length\n\n return lines\n .slice(start, end)\n .map((line, index) => {\n let number = start + 1 + index\n let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | '\n if (number === this.line) {\n if (line.length > 160) {\n let padding = 20\n let subLineStart = Math.max(0, this.column - padding)\n let subLineEnd = Math.max(\n this.column + padding,\n this.endColumn + padding\n )\n let subLine = line.slice(subLineStart, subLineEnd)\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line\n .slice(0, Math.min(this.column - 1, padding - 1))\n .replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(subLine) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n let spacing =\n aside(gutter.replace(/\\d/g, ' ')) +\n line.slice(0, this.column - 1).replace(/[^\\t]/g, ' ')\n\n return (\n mark('>') +\n aside(gutter) +\n highlight(line) +\n '\\n ' +\n spacing +\n mark('^')\n )\n }\n\n return ' ' + aside(gutter) + highlight(line)\n })\n .join('\\n')\n }\n\n toString() {\n let code = this.showSourceCode()\n if (code) {\n code = '\\n\\n' + code + '\\n'\n }\n return this.name + ': ' + this.message + code\n }\n}\n\nmodule.exports = CssSyntaxError\nCssSyntaxError.default = CssSyntaxError\n","'use strict'\n\nlet Node = require('./node')\n\nclass Declaration extends Node {\n constructor(defaults) {\n if (\n defaults &&\n typeof defaults.value !== 'undefined' &&\n typeof defaults.value !== 'string'\n ) {\n defaults = { ...defaults, value: String(defaults.value) }\n }\n super(defaults)\n this.type = 'decl'\n }\n\n get variable() {\n return this.prop.startsWith('--') || this.prop[0] === '$'\n }\n}\n\nmodule.exports = Declaration\nDeclaration.default = Declaration\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Document extends Container {\n constructor(defaults) {\n // type needs to be passed to super, otherwise child roots won't be normalized correctly\n super({ type: 'document', ...defaults })\n\n if (!this.nodes) {\n this.nodes = []\n }\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n\n return lazy.stringify()\n }\n}\n\nDocument.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nDocument.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Document\nDocument.default = Document\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Input = require('./input')\nlet PreviousMap = require('./previous-map')\nlet Root = require('./root')\nlet Rule = require('./rule')\n\nfunction fromJSON(json, inputs) {\n if (Array.isArray(json)) return json.map(n => fromJSON(n))\n\n let { inputs: ownInputs, ...defaults } = json\n if (ownInputs) {\n inputs = []\n for (let input of ownInputs) {\n let inputHydrated = { ...input, __proto__: Input.prototype }\n if (inputHydrated.map) {\n inputHydrated.map = {\n ...inputHydrated.map,\n __proto__: PreviousMap.prototype\n }\n }\n inputs.push(inputHydrated)\n }\n }\n if (defaults.nodes) {\n defaults.nodes = json.nodes.map(n => fromJSON(n, inputs))\n }\n if (defaults.source) {\n let { inputId, ...source } = defaults.source\n defaults.source = source\n if (inputId != null) {\n defaults.source.input = inputs[inputId]\n }\n }\n if (defaults.type === 'root') {\n return new Root(defaults)\n } else if (defaults.type === 'decl') {\n return new Declaration(defaults)\n } else if (defaults.type === 'rule') {\n return new Rule(defaults)\n } else if (defaults.type === 'comment') {\n return new Comment(defaults)\n } else if (defaults.type === 'atrule') {\n return new AtRule(defaults)\n } else {\n throw new Error('Unknown node type: ' + json.type)\n }\n}\n\nmodule.exports = fromJSON\nfromJSON.default = fromJSON\n","'use strict'\n\nlet { nanoid } = require('nanoid/non-secure')\nlet { isAbsolute, resolve } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { fileURLToPath, pathToFileURL } = require('url')\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet PreviousMap = require('./previous-map')\nlet terminalHighlight = require('./terminal-highlight')\n\nlet fromOffsetCache = Symbol('fromOffsetCache')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(resolve && isAbsolute)\n\nclass Input {\n constructor(css, opts = {}) {\n if (\n css === null ||\n typeof css === 'undefined' ||\n (typeof css === 'object' && !css.toString)\n ) {\n throw new Error(`PostCSS received ${css} instead of CSS string`)\n }\n\n this.css = css.toString()\n\n if (this.css[0] === '\\uFEFF' || this.css[0] === '\\uFFFE') {\n this.hasBOM = true\n this.css = this.css.slice(1)\n } else {\n this.hasBOM = false\n }\n\n this.document = this.css\n if (opts.document) this.document = opts.document.toString()\n\n if (opts.from) {\n if (\n !pathAvailable ||\n /^\\w+:\\/\\//.test(opts.from) ||\n isAbsolute(opts.from)\n ) {\n this.file = opts.from\n } else {\n this.file = resolve(opts.from)\n }\n }\n\n if (pathAvailable && sourceMapAvailable) {\n let map = new PreviousMap(this.css, opts)\n if (map.text) {\n this.map = map\n let file = map.consumer().file\n if (!this.file && file) this.file = this.mapResolve(file)\n }\n }\n\n if (!this.file) {\n this.id = ''\n }\n if (this.map) this.map.file = this.from\n }\n\n error(message, line, column, opts = {}) {\n let endColumn, endLine, result\n\n if (line && typeof line === 'object') {\n let start = line\n let end = column\n if (typeof start.offset === 'number') {\n let pos = this.fromOffset(start.offset)\n line = pos.line\n column = pos.col\n } else {\n line = start.line\n column = start.column\n }\n if (typeof end.offset === 'number') {\n let pos = this.fromOffset(end.offset)\n endLine = pos.line\n endColumn = pos.col\n } else {\n endLine = end.line\n endColumn = end.column\n }\n } else if (!column) {\n let pos = this.fromOffset(line)\n line = pos.line\n column = pos.col\n }\n\n let origin = this.origin(line, column, endLine, endColumn)\n if (origin) {\n result = new CssSyntaxError(\n message,\n origin.endLine === undefined\n ? origin.line\n : { column: origin.column, line: origin.line },\n origin.endLine === undefined\n ? origin.column\n : { column: origin.endColumn, line: origin.endLine },\n origin.source,\n origin.file,\n opts.plugin\n )\n } else {\n result = new CssSyntaxError(\n message,\n endLine === undefined ? line : { column, line },\n endLine === undefined ? column : { column: endColumn, line: endLine },\n this.css,\n this.file,\n opts.plugin\n )\n }\n\n result.input = { column, endColumn, endLine, line, source: this.css }\n if (this.file) {\n if (pathToFileURL) {\n result.input.url = pathToFileURL(this.file).toString()\n }\n result.input.file = this.file\n }\n\n return result\n }\n\n fromOffset(offset) {\n let lastLine, lineToIndex\n if (!this[fromOffsetCache]) {\n let lines = this.css.split('\\n')\n lineToIndex = new Array(lines.length)\n let prevIndex = 0\n\n for (let i = 0, l = lines.length; i < l; i++) {\n lineToIndex[i] = prevIndex\n prevIndex += lines[i].length + 1\n }\n\n this[fromOffsetCache] = lineToIndex\n } else {\n lineToIndex = this[fromOffsetCache]\n }\n lastLine = lineToIndex[lineToIndex.length - 1]\n\n let min = 0\n if (offset >= lastLine) {\n min = lineToIndex.length - 1\n } else {\n let max = lineToIndex.length - 2\n let mid\n while (min < max) {\n mid = min + ((max - min) >> 1)\n if (offset < lineToIndex[mid]) {\n max = mid - 1\n } else if (offset >= lineToIndex[mid + 1]) {\n min = mid + 1\n } else {\n min = mid\n break\n }\n }\n }\n return {\n col: offset - lineToIndex[min] + 1,\n line: min + 1\n }\n }\n\n mapResolve(file) {\n if (/^\\w+:\\/\\//.test(file)) {\n return file\n }\n return resolve(this.map.consumer().sourceRoot || this.map.root || '.', file)\n }\n\n origin(line, column, endLine, endColumn) {\n if (!this.map) return false\n let consumer = this.map.consumer()\n\n let from = consumer.originalPositionFor({ column, line })\n if (!from.source) return false\n\n let to\n if (typeof endLine === 'number') {\n to = consumer.originalPositionFor({ column: endColumn, line: endLine })\n }\n\n let fromUrl\n\n if (isAbsolute(from.source)) {\n fromUrl = pathToFileURL(from.source)\n } else {\n fromUrl = new URL(\n from.source,\n this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)\n )\n }\n\n let result = {\n column: from.column,\n endColumn: to && to.column,\n endLine: to && to.line,\n line: from.line,\n url: fromUrl.toString()\n }\n\n if (fromUrl.protocol === 'file:') {\n if (fileURLToPath) {\n result.file = fileURLToPath(fromUrl)\n } else {\n /* c8 ignore next 2 */\n throw new Error(`file: protocol is not available in this PostCSS build`)\n }\n }\n\n let source = consumer.sourceContentFor(from.source)\n if (source) result.source = source\n\n return result\n }\n\n toJSON() {\n let json = {}\n for (let name of ['hasBOM', 'css', 'file', 'id']) {\n if (this[name] != null) {\n json[name] = this[name]\n }\n }\n if (this.map) {\n json.map = { ...this.map }\n if (json.map.consumerCache) {\n json.map.consumerCache = undefined\n }\n }\n return json\n }\n\n get from() {\n return this.file || this.id\n }\n}\n\nmodule.exports = Input\nInput.default = Input\n\nif (terminalHighlight && terminalHighlight.registerInput) {\n terminalHighlight.registerInput(Input)\n}\n","'use strict'\n\nlet Container = require('./container')\nlet Document = require('./document')\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nlet Result = require('./result')\nlet Root = require('./root')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\nlet warnOnce = require('./warn-once')\n\nconst TYPE_TO_CLASS_NAME = {\n atrule: 'AtRule',\n comment: 'Comment',\n decl: 'Declaration',\n document: 'Document',\n root: 'Root',\n rule: 'Rule'\n}\n\nconst PLUGIN_PROPS = {\n AtRule: true,\n AtRuleExit: true,\n Comment: true,\n CommentExit: true,\n Declaration: true,\n DeclarationExit: true,\n Document: true,\n DocumentExit: true,\n Once: true,\n OnceExit: true,\n postcssPlugin: true,\n prepare: true,\n Root: true,\n RootExit: true,\n Rule: true,\n RuleExit: true\n}\n\nconst NOT_VISITORS = {\n Once: true,\n postcssPlugin: true,\n prepare: true\n}\n\nconst CHILDREN = 0\n\nfunction isPromise(obj) {\n return typeof obj === 'object' && typeof obj.then === 'function'\n}\n\nfunction getEvents(node) {\n let key = false\n let type = TYPE_TO_CLASS_NAME[node.type]\n if (node.type === 'decl') {\n key = node.prop.toLowerCase()\n } else if (node.type === 'atrule') {\n key = node.name.toLowerCase()\n }\n\n if (key && node.append) {\n return [\n type,\n type + '-' + key,\n CHILDREN,\n type + 'Exit',\n type + 'Exit-' + key\n ]\n } else if (key) {\n return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]\n } else if (node.append) {\n return [type, CHILDREN, type + 'Exit']\n } else {\n return [type, type + 'Exit']\n }\n}\n\nfunction toStack(node) {\n let events\n if (node.type === 'document') {\n events = ['Document', CHILDREN, 'DocumentExit']\n } else if (node.type === 'root') {\n events = ['Root', CHILDREN, 'RootExit']\n } else {\n events = getEvents(node)\n }\n\n return {\n eventIndex: 0,\n events,\n iterator: 0,\n node,\n visitorIndex: 0,\n visitors: []\n }\n}\n\nfunction cleanMarks(node) {\n node[isClean] = false\n if (node.nodes) node.nodes.forEach(i => cleanMarks(i))\n return node\n}\n\nlet postcss = {}\n\nclass LazyResult {\n constructor(processor, css, opts) {\n this.stringified = false\n this.processed = false\n\n let root\n if (\n typeof css === 'object' &&\n css !== null &&\n (css.type === 'root' || css.type === 'document')\n ) {\n root = cleanMarks(css)\n } else if (css instanceof LazyResult || css instanceof Result) {\n root = cleanMarks(css.root)\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 let parser = parse\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.processed = true\n this.error = error\n }\n\n if (root && !root[my]) {\n /* c8 ignore next 2 */\n Container.rebuild(root)\n }\n }\n\n this.result = new Result(processor, root, opts)\n this.helpers = { ...postcss, postcss, result: this.result }\n this.plugins = this.processor.plugins.map(plugin => {\n if (typeof plugin === 'object' && plugin.prepare) {\n return { ...plugin, ...plugin.prepare(this.result) }\n } else {\n return plugin\n }\n })\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n if (this.processed) return Promise.resolve(this.result)\n if (!this.processing) {\n this.processing = this.runAsync()\n }\n return this.processing\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n getAsyncError() {\n throw new Error('Use process(css).then(cb) to work with async plugins')\n }\n\n handleError(error, node) {\n let plugin = this.result.lastPlugin\n try {\n if (node) node.addToError(error)\n this.error = error\n if (error.name === 'CssSyntaxError' && !error.plugin) {\n error.plugin = plugin.postcssPlugin\n error.setMessage()\n } else if (plugin.postcssVersion) {\n if (process.env.NODE_ENV !== 'production') {\n let pluginName = plugin.postcssPlugin\n let pluginVer = plugin.postcssVersion\n let runtimeVer = this.result.processor.version\n let a = pluginVer.split('.')\n let b = runtimeVer.split('.')\n\n if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {\n // eslint-disable-next-line no-console\n console.error(\n 'Unknown error from PostCSS plugin. Your current PostCSS ' +\n 'version is ' +\n runtimeVer +\n ', but ' +\n pluginName +\n ' uses ' +\n pluginVer +\n '. Perhaps this is the source of the error below.'\n )\n }\n }\n }\n } catch (err) {\n /* c8 ignore next 3 */\n // eslint-disable-next-line no-console\n if (console && console.error) console.error(err)\n }\n return error\n }\n\n prepareVisitors() {\n this.listeners = {}\n let add = (plugin, type, cb) => {\n if (!this.listeners[type]) this.listeners[type] = []\n this.listeners[type].push([plugin, cb])\n }\n for (let plugin of this.plugins) {\n if (typeof plugin === 'object') {\n for (let event in plugin) {\n if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {\n throw new Error(\n `Unknown event ${event} in ${plugin.postcssPlugin}. ` +\n `Try to update PostCSS (${this.processor.version} now).`\n )\n }\n if (!NOT_VISITORS[event]) {\n if (typeof plugin[event] === 'object') {\n for (let filter in plugin[event]) {\n if (filter === '*') {\n add(plugin, event, plugin[event][filter])\n } else {\n add(\n plugin,\n event + '-' + filter.toLowerCase(),\n plugin[event][filter]\n )\n }\n }\n } else if (typeof plugin[event] === 'function') {\n add(plugin, event, plugin[event])\n }\n }\n }\n }\n }\n this.hasListener = Object.keys(this.listeners).length > 0\n }\n\n async runAsync() {\n this.plugin = 0\n for (let i = 0; i < this.plugins.length; i++) {\n let plugin = this.plugins[i]\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (error) {\n throw this.handleError(error)\n }\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n let stack = [toStack(root)]\n while (stack.length > 0) {\n let promise = this.visitTick(stack)\n if (isPromise(promise)) {\n try {\n await promise\n } catch (e) {\n let node = stack[stack.length - 1].node\n throw this.handleError(e, node)\n }\n }\n }\n }\n\n if (this.listeners.OnceExit) {\n for (let [plugin, visitor] of this.listeners.OnceExit) {\n this.result.lastPlugin = plugin\n try {\n if (root.type === 'document') {\n let roots = root.nodes.map(subRoot =>\n visitor(subRoot, this.helpers)\n )\n\n await Promise.all(roots)\n } else {\n await visitor(root, this.helpers)\n }\n } catch (e) {\n throw this.handleError(e)\n }\n }\n }\n }\n\n this.processed = true\n return this.stringify()\n }\n\n runOnRoot(plugin) {\n this.result.lastPlugin = plugin\n try {\n if (typeof plugin === 'object' && plugin.Once) {\n if (this.result.root.type === 'document') {\n let roots = this.result.root.nodes.map(root =>\n plugin.Once(root, this.helpers)\n )\n\n if (isPromise(roots[0])) {\n return Promise.all(roots)\n }\n\n return roots\n }\n\n return plugin.Once(this.result.root, this.helpers)\n } else if (typeof plugin === 'function') {\n return plugin(this.result.root, this.result)\n }\n } catch (error) {\n throw this.handleError(error)\n }\n }\n\n stringify() {\n if (this.error) throw this.error\n if (this.stringified) return this.result\n this.stringified = true\n\n this.sync()\n\n let opts = this.result.opts\n let str = stringify\n if (opts.syntax) str = opts.syntax.stringify\n if (opts.stringifier) str = opts.stringifier\n if (str.stringify) str = str.stringify\n\n let map = new MapGenerator(str, this.result.root, this.result.opts)\n let data = map.generate()\n this.result.css = data[0]\n this.result.map = data[1]\n\n return this.result\n }\n\n sync() {\n if (this.error) throw this.error\n if (this.processed) return this.result\n this.processed = true\n\n if (this.processing) {\n throw this.getAsyncError()\n }\n\n for (let plugin of this.plugins) {\n let promise = this.runOnRoot(plugin)\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n\n this.prepareVisitors()\n if (this.hasListener) {\n let root = this.result.root\n while (!root[isClean]) {\n root[isClean] = true\n this.walkSync(root)\n }\n if (this.listeners.OnceExit) {\n if (root.type === 'document') {\n for (let subRoot of root.nodes) {\n this.visitSync(this.listeners.OnceExit, subRoot)\n }\n } else {\n this.visitSync(this.listeners.OnceExit, root)\n }\n }\n }\n\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this.opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this.css\n }\n\n visitSync(visitors, node) {\n for (let [plugin, visitor] of visitors) {\n this.result.lastPlugin = plugin\n let promise\n try {\n promise = visitor(node, this.helpers)\n } catch (e) {\n throw this.handleError(e, node.proxyOf)\n }\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n return true\n }\n if (isPromise(promise)) {\n throw this.getAsyncError()\n }\n }\n }\n\n visitTick(stack) {\n let visit = stack[stack.length - 1]\n let { node, visitors } = visit\n\n if (node.type !== 'root' && node.type !== 'document' && !node.parent) {\n stack.pop()\n return\n }\n\n if (visitors.length > 0 && visit.visitorIndex < visitors.length) {\n let [plugin, visitor] = visitors[visit.visitorIndex]\n visit.visitorIndex += 1\n if (visit.visitorIndex === visitors.length) {\n visit.visitors = []\n visit.visitorIndex = 0\n }\n this.result.lastPlugin = plugin\n try {\n return visitor(node.toProxy(), this.helpers)\n } catch (e) {\n throw this.handleError(e, node)\n }\n }\n\n if (visit.iterator !== 0) {\n let iterator = visit.iterator\n let child\n while ((child = node.nodes[node.indexes[iterator]])) {\n node.indexes[iterator] += 1\n if (!child[isClean]) {\n child[isClean] = true\n stack.push(toStack(child))\n return\n }\n }\n visit.iterator = 0\n delete node.indexes[iterator]\n }\n\n let events = visit.events\n while (visit.eventIndex < events.length) {\n let event = events[visit.eventIndex]\n visit.eventIndex += 1\n if (event === CHILDREN) {\n if (node.nodes && node.nodes.length) {\n node[isClean] = true\n visit.iterator = node.getIterator()\n }\n return\n } else if (this.listeners[event]) {\n visit.visitors = this.listeners[event]\n return\n }\n }\n stack.pop()\n }\n\n walkSync(node) {\n node[isClean] = true\n let events = getEvents(node)\n for (let event of events) {\n if (event === CHILDREN) {\n if (node.nodes) {\n node.each(child => {\n if (!child[isClean]) this.walkSync(child)\n })\n }\n } else {\n let visitors = this.listeners[event]\n if (visitors) {\n if (this.visitSync(visitors, node.toProxy())) return\n }\n }\n }\n }\n\n warnings() {\n return this.sync().warnings()\n }\n\n get content() {\n return this.stringify().content\n }\n\n get css() {\n return this.stringify().css\n }\n\n get map() {\n return this.stringify().map\n }\n\n get messages() {\n return this.sync().messages\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n return this.sync().root\n }\n\n get [Symbol.toStringTag]() {\n return 'LazyResult'\n }\n}\n\nLazyResult.registerPostcss = dependant => {\n postcss = dependant\n}\n\nmodule.exports = LazyResult\nLazyResult.default = LazyResult\n\nRoot.registerLazyResult(LazyResult)\nDocument.registerLazyResult(LazyResult)\n","'use strict'\n\nlet list = {\n comma(string) {\n return list.split(string, [','], true)\n },\n\n space(string) {\n let spaces = [' ', '\\n', '\\t']\n return list.split(string, spaces)\n },\n\n split(string, separators, last) {\n let array = []\n let current = ''\n let split = false\n\n let func = 0\n let inQuote = false\n let prevQuote = ''\n let escape = false\n\n for (let letter of string) {\n if (escape) {\n escape = false\n } else if (letter === '\\\\') {\n escape = true\n } else if (inQuote) {\n if (letter === prevQuote) {\n inQuote = false\n }\n } else if (letter === '\"' || letter === \"'\") {\n inQuote = true\n prevQuote = 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.includes(letter)) 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\nmodule.exports = list\nlist.default = list\n","'use strict'\n\nlet { dirname, relative, resolve, sep } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\nlet { pathToFileURL } = require('url')\n\nlet Input = require('./input')\n\nlet sourceMapAvailable = Boolean(SourceMapConsumer && SourceMapGenerator)\nlet pathAvailable = Boolean(dirname && resolve && relative && sep)\n\nclass MapGenerator {\n constructor(stringify, root, opts, cssString) {\n this.stringify = stringify\n this.mapOpts = opts.map || {}\n this.root = root\n this.opts = opts\n this.css = cssString\n this.originalCSS = cssString\n this.usesFileUrls = !this.mapOpts.from && this.mapOpts.absolute\n\n this.memoizedFileURLs = new Map()\n this.memoizedPaths = new Map()\n this.memoizedURLs = new Map()\n }\n\n addAnnotation() {\n let content\n\n if (this.isInline()) {\n content =\n 'data:application/json;base64,' + this.toBase64(this.map.toString())\n } else if (typeof this.mapOpts.annotation === 'string') {\n content = this.mapOpts.annotation\n } else if (typeof this.mapOpts.annotation === 'function') {\n content = this.mapOpts.annotation(this.opts.to, this.root)\n } else {\n content = this.outputFile() + '.map'\n }\n let eol = '\\n'\n if (this.css.includes('\\r\\n')) eol = '\\r\\n'\n\n this.css += eol + '/*# sourceMappingURL=' + content + ' */'\n }\n\n applyPrevMaps() {\n for (let prev of this.previous()) {\n let from = this.toUrl(this.path(prev.file))\n let root = prev.root || dirname(prev.file)\n let map\n\n if (this.mapOpts.sourcesContent === false) {\n map = new SourceMapConsumer(prev.text)\n if (map.sourcesContent) {\n map.sourcesContent = null\n }\n } else {\n map = prev.consumer()\n }\n\n this.map.applySourceMap(map, from, this.toUrl(this.path(root)))\n }\n }\n\n clearAnnotation() {\n if (this.mapOpts.annotation === false) return\n\n if (this.root) {\n let node\n for (let i = this.root.nodes.length - 1; i >= 0; i--) {\n node = this.root.nodes[i]\n if (node.type !== 'comment') continue\n if (node.text.startsWith('# sourceMappingURL=')) {\n this.root.removeChild(i)\n }\n }\n } else if (this.css) {\n this.css = this.css.replace(/\\n*\\/\\*#[\\S\\s]*?\\*\\/$/gm, '')\n }\n }\n\n generate() {\n this.clearAnnotation()\n if (pathAvailable && sourceMapAvailable && this.isMap()) {\n return this.generateMap()\n } else {\n let result = ''\n this.stringify(this.root, i => {\n result += i\n })\n return [result]\n }\n }\n\n generateMap() {\n if (this.root) {\n this.generateString()\n } else if (this.previous().length === 1) {\n let prev = this.previous()[0].consumer()\n prev.file = this.outputFile()\n this.map = SourceMapGenerator.fromSourceMap(prev, {\n ignoreInvalidMapping: true\n })\n } else {\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n this.map.addMapping({\n generated: { column: 0, line: 1 },\n original: { column: 0, line: 1 },\n source: this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : ''\n })\n }\n\n if (this.isSourcesContent()) this.setSourcesContent()\n if (this.root && this.previous().length > 0) this.applyPrevMaps()\n if (this.isAnnotation()) this.addAnnotation()\n\n if (this.isInline()) {\n return [this.css]\n } else {\n return [this.css, this.map]\n }\n }\n\n generateString() {\n this.css = ''\n this.map = new SourceMapGenerator({\n file: this.outputFile(),\n ignoreInvalidMapping: true\n })\n\n let line = 1\n let column = 1\n\n let noSource = ''\n let mapping = {\n generated: { column: 0, line: 0 },\n original: { column: 0, line: 0 },\n source: ''\n }\n\n let last, lines\n this.stringify(this.root, (str, node, type) => {\n this.css += str\n\n if (node && type !== 'end') {\n mapping.generated.line = line\n mapping.generated.column = column - 1\n if (node.source && node.source.start) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.start.line\n mapping.original.column = node.source.start.column - 1\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n this.map.addMapping(mapping)\n }\n }\n\n lines = str.match(/\\n/g)\n if (lines) {\n line += lines.length\n last = str.lastIndexOf('\\n')\n column = str.length - last\n } else {\n column += str.length\n }\n\n if (node && type !== 'start') {\n let p = node.parent || { raws: {} }\n let childless =\n node.type === 'decl' || (node.type === 'atrule' && !node.nodes)\n if (!childless || node !== p.last || p.raws.semicolon) {\n if (node.source && node.source.end) {\n mapping.source = this.sourcePath(node)\n mapping.original.line = node.source.end.line\n mapping.original.column = node.source.end.column - 1\n mapping.generated.line = line\n mapping.generated.column = column - 2\n this.map.addMapping(mapping)\n } else {\n mapping.source = noSource\n mapping.original.line = 1\n mapping.original.column = 0\n mapping.generated.line = line\n mapping.generated.column = column - 1\n this.map.addMapping(mapping)\n }\n }\n }\n })\n }\n\n isAnnotation() {\n if (this.isInline()) {\n return true\n }\n if (typeof this.mapOpts.annotation !== 'undefined') {\n return this.mapOpts.annotation\n }\n if (this.previous().length) {\n return this.previous().some(i => i.annotation)\n }\n return true\n }\n\n isInline() {\n if (typeof this.mapOpts.inline !== 'undefined') {\n return this.mapOpts.inline\n }\n\n let annotation = this.mapOpts.annotation\n if (typeof annotation !== 'undefined' && annotation !== true) {\n return false\n }\n\n if (this.previous().length) {\n return this.previous().some(i => i.inline)\n }\n return true\n }\n\n isMap() {\n if (typeof this.opts.map !== 'undefined') {\n return !!this.opts.map\n }\n return this.previous().length > 0\n }\n\n isSourcesContent() {\n if (typeof this.mapOpts.sourcesContent !== 'undefined') {\n return this.mapOpts.sourcesContent\n }\n if (this.previous().length) {\n return this.previous().some(i => i.withContent())\n }\n return true\n }\n\n outputFile() {\n if (this.opts.to) {\n return this.path(this.opts.to)\n } else if (this.opts.from) {\n return this.path(this.opts.from)\n } else {\n return 'to.css'\n }\n }\n\n path(file) {\n if (this.mapOpts.absolute) return file\n if (file.charCodeAt(0) === 60 /* `<` */) return file\n if (/^\\w+:\\/\\//.test(file)) return file\n let cached = this.memoizedPaths.get(file)\n if (cached) return cached\n\n let from = this.opts.to ? dirname(this.opts.to) : '.'\n\n if (typeof this.mapOpts.annotation === 'string') {\n from = dirname(resolve(from, this.mapOpts.annotation))\n }\n\n let path = relative(from, file)\n this.memoizedPaths.set(file, path)\n\n return path\n }\n\n previous() {\n if (!this.previousMaps) {\n this.previousMaps = []\n if (this.root) {\n this.root.walk(node => {\n if (node.source && node.source.input.map) {\n let map = node.source.input.map\n if (!this.previousMaps.includes(map)) {\n this.previousMaps.push(map)\n }\n }\n })\n } else {\n let input = new Input(this.originalCSS, this.opts)\n if (input.map) this.previousMaps.push(input.map)\n }\n }\n\n return this.previousMaps\n }\n\n setSourcesContent() {\n let already = {}\n if (this.root) {\n this.root.walk(node => {\n if (node.source) {\n let from = node.source.input.from\n if (from && !already[from]) {\n already[from] = true\n let fromUrl = this.usesFileUrls\n ? this.toFileUrl(from)\n : this.toUrl(this.path(from))\n this.map.setSourceContent(fromUrl, node.source.input.css)\n }\n }\n })\n } else if (this.css) {\n let from = this.opts.from\n ? this.toUrl(this.path(this.opts.from))\n : ''\n this.map.setSourceContent(from, this.css)\n }\n }\n\n sourcePath(node) {\n if (this.mapOpts.from) {\n return this.toUrl(this.mapOpts.from)\n } else if (this.usesFileUrls) {\n return this.toFileUrl(node.source.input.from)\n } else {\n return this.toUrl(this.path(node.source.input.from))\n }\n }\n\n toBase64(str) {\n if (Buffer) {\n return Buffer.from(str).toString('base64')\n } else {\n return window.btoa(unescape(encodeURIComponent(str)))\n }\n }\n\n toFileUrl(path) {\n let cached = this.memoizedFileURLs.get(path)\n if (cached) return cached\n\n if (pathToFileURL) {\n let fileURL = pathToFileURL(path).toString()\n this.memoizedFileURLs.set(path, fileURL)\n\n return fileURL\n } else {\n throw new Error(\n '`map.absolute` option is not available in this PostCSS build'\n )\n }\n }\n\n toUrl(path) {\n let cached = this.memoizedURLs.get(path)\n if (cached) return cached\n\n if (sep === '\\\\') {\n path = path.replace(/\\\\/g, '/')\n }\n\n let url = encodeURI(path).replace(/[#?]/g, encodeURIComponent)\n this.memoizedURLs.set(path, url)\n\n return url\n }\n}\n\nmodule.exports = MapGenerator\n","'use strict'\n\nlet MapGenerator = require('./map-generator')\nlet parse = require('./parse')\nconst Result = require('./result')\nlet stringify = require('./stringify')\nlet warnOnce = require('./warn-once')\n\nclass NoWorkResult {\n constructor(processor, css, opts) {\n css = css.toString()\n this.stringified = false\n\n this._processor = processor\n this._css = css\n this._opts = opts\n this._map = undefined\n let root\n\n let str = stringify\n this.result = new Result(this._processor, root, this._opts)\n this.result.css = css\n\n let self = this\n Object.defineProperty(this.result, 'root', {\n get() {\n return self.root\n }\n })\n\n let map = new MapGenerator(str, root, this._opts, css)\n if (map.isMap()) {\n let [generatedCSS, generatedMap] = map.generate()\n if (generatedCSS) {\n this.result.css = generatedCSS\n }\n if (generatedMap) {\n this.result.map = generatedMap\n }\n } else {\n map.clearAnnotation()\n this.result.css = map.css\n }\n }\n\n async() {\n if (this.error) return Promise.reject(this.error)\n return Promise.resolve(this.result)\n }\n\n catch(onRejected) {\n return this.async().catch(onRejected)\n }\n\n finally(onFinally) {\n return this.async().then(onFinally, onFinally)\n }\n\n sync() {\n if (this.error) throw this.error\n return this.result\n }\n\n then(onFulfilled, onRejected) {\n if (process.env.NODE_ENV !== 'production') {\n if (!('from' in this._opts)) {\n warnOnce(\n 'Without `from` option PostCSS could generate wrong source map ' +\n 'and will not find Browserslist config. Set it to CSS file path ' +\n 'or to `undefined` to prevent this warning.'\n )\n }\n }\n\n return this.async().then(onFulfilled, onRejected)\n }\n\n toString() {\n return this._css\n }\n\n warnings() {\n return []\n }\n\n get content() {\n return this.result.css\n }\n\n get css() {\n return this.result.css\n }\n\n get map() {\n return this.result.map\n }\n\n get messages() {\n return []\n }\n\n get opts() {\n return this.result.opts\n }\n\n get processor() {\n return this.result.processor\n }\n\n get root() {\n if (this._root) {\n return this._root\n }\n\n let root\n let parser = parse\n\n try {\n root = parser(this._css, this._opts)\n } catch (error) {\n this.error = error\n }\n\n if (this.error) {\n throw this.error\n } else {\n this._root = root\n return root\n }\n }\n\n get [Symbol.toStringTag]() {\n return 'NoWorkResult'\n }\n}\n\nmodule.exports = NoWorkResult\nNoWorkResult.default = NoWorkResult\n","'use strict'\n\nlet CssSyntaxError = require('./css-syntax-error')\nlet Stringifier = require('./stringifier')\nlet stringify = require('./stringify')\nlet { isClean, my } = require('./symbols')\n\nfunction cloneNode(obj, parent) {\n let cloned = new obj.constructor()\n\n for (let i in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, i)) {\n /* c8 ignore next 2 */\n continue\n }\n if (i === 'proxyCache') continue\n let value = obj[i]\n let type = 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 (Array.isArray(value)) {\n cloned[i] = value.map(j => cloneNode(j, cloned))\n } else {\n if (type === 'object' && value !== null) value = cloneNode(value)\n cloned[i] = value\n }\n }\n\n return cloned\n}\n\nfunction sourceOffset(inputCSS, position) {\n // Not all custom syntaxes support `offset` in `source.start` and `source.end`\n if (\n position &&\n typeof position.offset !== 'undefined'\n ) {\n return position.offset;\n }\n\n let column = 1\n let line = 1\n let offset = 0\n\n for (let i = 0; i < inputCSS.length; i++) {\n if (line === position.line && column === position.column) {\n offset = i\n break\n }\n\n if (inputCSS[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return offset\n}\n\nclass Node {\n constructor(defaults = {}) {\n this.raws = {}\n this[isClean] = false\n this[my] = true\n\n for (let name in defaults) {\n if (name === 'nodes') {\n this.nodes = []\n for (let node of defaults[name]) {\n if (typeof node.clone === 'function') {\n this.append(node.clone())\n } else {\n this.append(node)\n }\n }\n } else {\n this[name] = defaults[name]\n }\n }\n }\n\n addToError(error) {\n error.postcssNode = this\n if (error.stack && this.source && /\\n\\s{4}at /.test(error.stack)) {\n let s = this.source\n error.stack = error.stack.replace(\n /\\n\\s{4}at /,\n `$&${s.input.from}:${s.start.line}:${s.start.column}$&`\n )\n }\n return error\n }\n\n after(add) {\n this.parent.insertAfter(this, add)\n return this\n }\n\n assign(overrides = {}) {\n for (let name in overrides) {\n this[name] = overrides[name]\n }\n return this\n }\n\n before(add) {\n this.parent.insertBefore(this, add)\n return this\n }\n\n cleanRaws(keepBetween) {\n delete this.raws.before\n delete this.raws.after\n if (!keepBetween) delete this.raws.between\n }\n\n clone(overrides = {}) {\n let cloned = cloneNode(this)\n for (let name in overrides) {\n cloned[name] = overrides[name]\n }\n return cloned\n }\n\n cloneAfter(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertAfter(this, cloned)\n return cloned\n }\n\n cloneBefore(overrides = {}) {\n let cloned = this.clone(overrides)\n this.parent.insertBefore(this, cloned)\n return cloned\n }\n\n error(message, opts = {}) {\n if (this.source) {\n let { end, start } = this.rangeBy(opts)\n return this.source.input.error(\n message,\n { column: start.column, line: start.line },\n { column: end.column, line: end.line },\n opts\n )\n }\n return new CssSyntaxError(message)\n }\n\n getProxyProcessor() {\n return {\n get(node, prop) {\n if (prop === 'proxyOf') {\n return node\n } else if (prop === 'root') {\n return () => node.root().toProxy()\n } else {\n return node[prop]\n }\n },\n\n set(node, prop, value) {\n if (node[prop] === value) return true\n node[prop] = value\n if (\n prop === 'prop' ||\n prop === 'value' ||\n prop === 'name' ||\n prop === 'params' ||\n prop === 'important' ||\n /* c8 ignore next */\n prop === 'text'\n ) {\n node.markDirty()\n }\n return true\n }\n }\n }\n\n /* c8 ignore next 3 */\n markClean() {\n this[isClean] = true\n }\n\n markDirty() {\n if (this[isClean]) {\n this[isClean] = false\n let next = this\n while ((next = next.parent)) {\n next[isClean] = false\n }\n }\n }\n\n next() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index + 1]\n }\n\n positionBy(opts) {\n let pos = this.source.start\n if (opts.index) {\n pos = this.positionInside(opts.index)\n } else if (opts.word) {\n let inputString = ('document' in this.source.input)\n ? this.source.input.document\n : this.source.input.css\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) pos = this.positionInside(index)\n }\n return pos\n }\n\n positionInside(index) {\n let column = this.source.start.column\n let line = this.source.start.line\n let inputString = ('document' in this.source.input)\n ? this.source.input.document\n : this.source.input.css\n let offset = sourceOffset(inputString, this.source.start)\n let end = offset + index\n\n for (let i = offset; i < end; i++) {\n if (inputString[i] === '\\n') {\n column = 1\n line += 1\n } else {\n column += 1\n }\n }\n\n return { column, line }\n }\n\n prev() {\n if (!this.parent) return undefined\n let index = this.parent.index(this)\n return this.parent.nodes[index - 1]\n }\n\n rangeBy(opts) {\n let start = {\n column: this.source.start.column,\n line: this.source.start.line\n }\n let end = this.source.end\n ? {\n column: this.source.end.column + 1,\n line: this.source.end.line\n }\n : {\n column: start.column + 1,\n line: start.line\n }\n\n if (opts.word) {\n let inputString = ('document' in this.source.input)\n ? this.source.input.document\n : this.source.input.css\n let stringRepresentation = inputString.slice(\n sourceOffset(inputString, this.source.start),\n sourceOffset(inputString, this.source.end)\n )\n let index = stringRepresentation.indexOf(opts.word)\n if (index !== -1) {\n start = this.positionInside(index)\n end = this.positionInside(\n index + opts.word.length,\n )\n }\n } else {\n if (opts.start) {\n start = {\n column: opts.start.column,\n line: opts.start.line\n }\n } else if (opts.index) {\n start = this.positionInside(opts.index)\n }\n\n if (opts.end) {\n end = {\n column: opts.end.column,\n line: opts.end.line\n }\n } else if (typeof opts.endIndex === 'number') {\n end = this.positionInside(opts.endIndex)\n } else if (opts.index) {\n end = this.positionInside(opts.index + 1)\n }\n }\n\n if (\n end.line < start.line ||\n (end.line === start.line && end.column <= start.column)\n ) {\n end = { column: start.column + 1, line: start.line }\n }\n\n return { end, start }\n }\n\n raw(prop, defaultType) {\n let str = new Stringifier()\n return str.raw(this, prop, defaultType)\n }\n\n remove() {\n if (this.parent) {\n this.parent.removeChild(this)\n }\n this.parent = undefined\n return this\n }\n\n replaceWith(...nodes) {\n if (this.parent) {\n let bookmark = this\n let foundSelf = false\n for (let node of nodes) {\n if (node === this) {\n foundSelf = true\n } else if (foundSelf) {\n this.parent.insertAfter(bookmark, node)\n bookmark = node\n } else {\n this.parent.insertBefore(bookmark, node)\n }\n }\n\n if (!foundSelf) {\n this.remove()\n }\n }\n\n return this\n }\n\n root() {\n let result = this\n while (result.parent && result.parent.type !== 'document') {\n result = result.parent\n }\n return result\n }\n\n toJSON(_, inputs) {\n let fixed = {}\n let emitInputs = inputs == null\n inputs = inputs || new Map()\n let inputsNextIndex = 0\n\n for (let name in this) {\n if (!Object.prototype.hasOwnProperty.call(this, name)) {\n /* c8 ignore next 2 */\n continue\n }\n if (name === 'parent' || name === 'proxyCache') continue\n let value = this[name]\n\n if (Array.isArray(value)) {\n fixed[name] = value.map(i => {\n if (typeof i === 'object' && i.toJSON) {\n return i.toJSON(null, inputs)\n } else {\n return i\n }\n })\n } else if (typeof value === 'object' && value.toJSON) {\n fixed[name] = value.toJSON(null, inputs)\n } else if (name === 'source') {\n let inputId = inputs.get(value.input)\n if (inputId == null) {\n inputId = inputsNextIndex\n inputs.set(value.input, inputsNextIndex)\n inputsNextIndex++\n }\n fixed[name] = {\n end: value.end,\n inputId,\n start: value.start\n }\n } else {\n fixed[name] = value\n }\n }\n\n if (emitInputs) {\n fixed.inputs = [...inputs.keys()].map(input => input.toJSON())\n }\n\n return fixed\n }\n\n toProxy() {\n if (!this.proxyCache) {\n this.proxyCache = new Proxy(this, this.getProxyProcessor())\n }\n return this.proxyCache\n }\n\n toString(stringifier = stringify) {\n if (stringifier.stringify) stringifier = stringifier.stringify\n let result = ''\n stringifier(this, i => {\n result += i\n })\n return result\n }\n\n warn(result, text, opts) {\n let data = { node: this }\n for (let i in opts) data[i] = opts[i]\n return result.warn(text, data)\n }\n\n get proxyOf() {\n return this\n }\n}\n\nmodule.exports = Node\nNode.default = Node\n","'use strict'\n\nlet Container = require('./container')\nlet Input = require('./input')\nlet Parser = require('./parser')\n\nfunction parse(css, opts) {\n let input = new Input(css, opts)\n let parser = new Parser(input)\n try {\n parser.parse()\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n if (e.name === 'CssSyntaxError' && opts && opts.from) {\n if (/\\.scss$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse SCSS with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-scss parser'\n } else if (/\\.sass/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Sass with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-sass parser'\n } else if (/\\.less$/i.test(opts.from)) {\n e.message +=\n '\\nYou tried to parse Less with ' +\n 'the standard CSS parser; ' +\n 'try again with the postcss-less parser'\n }\n }\n }\n throw e\n }\n\n return parser.root\n}\n\nmodule.exports = parse\nparse.default = parse\n\nContainer.registerParse(parse)\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Declaration = require('./declaration')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet tokenizer = require('./tokenize')\n\nconst SAFE_COMMENT_NEIGHBOR = {\n empty: true,\n space: true\n}\n\nfunction findLastWithPosition(tokens) {\n for (let i = tokens.length - 1; i >= 0; i--) {\n let token = tokens[i]\n let pos = token[3] || token[2]\n if (pos) return pos\n }\n}\n\nclass Parser {\n constructor(input) {\n this.input = input\n\n this.root = new Root()\n this.current = this.root\n this.spaces = ''\n this.semicolon = false\n\n this.createTokenizer()\n this.root.source = { input, start: { column: 1, line: 1, offset: 0 } }\n }\n\n atrule(token) {\n let node = new AtRule()\n node.name = token[1].slice(1)\n if (node.name === '') {\n this.unnamedAtrule(node, token)\n }\n this.init(node, token[2])\n\n let type\n let prev\n let shift\n let last = false\n let open = false\n let params = []\n let brackets = []\n\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n type = token[0]\n\n if (type === '(' || type === '[') {\n brackets.push(type === '(' ? ')' : ']')\n } else if (type === '{' && brackets.length > 0) {\n brackets.push('}')\n } else if (type === brackets[brackets.length - 1]) {\n brackets.pop()\n }\n\n if (brackets.length === 0) {\n if (type === ';') {\n node.source.end = this.getPosition(token[2])\n node.source.end.offset++\n this.semicolon = true\n break\n } else if (type === '{') {\n open = true\n break\n } else if (type === '}') {\n if (params.length > 0) {\n shift = params.length - 1\n prev = params[shift]\n while (prev && prev[0] === 'space') {\n prev = params[--shift]\n }\n if (prev) {\n node.source.end = this.getPosition(prev[3] || prev[2])\n node.source.end.offset++\n }\n }\n this.end(token)\n break\n } else {\n params.push(token)\n }\n } else {\n params.push(token)\n }\n\n if (this.tokenizer.endOfFile()) {\n last = true\n break\n }\n }\n\n node.raws.between = this.spacesAndCommentsFromEnd(params)\n if (params.length) {\n node.raws.afterName = this.spacesAndCommentsFromStart(params)\n this.raw(node, 'params', params)\n if (last) {\n token = params[params.length - 1]\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\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 checkMissedSemicolon(tokens) {\n let colon = this.colon(tokens)\n if (colon === false) return\n\n let founded = 0\n let token\n for (let j = colon - 1; j >= 0; j--) {\n token = tokens[j]\n if (token[0] !== 'space') {\n founded += 1\n if (founded === 2) break\n }\n }\n // If the token is a word, e.g. `!important`, `red` or any other valid property's value.\n // Then we need to return the colon after that word token. [3] is the \"end\" colon of that word.\n // And because we need it after that one we do +1 to get the next one.\n throw this.input.error(\n 'Missed semicolon',\n token[0] === 'word' ? token[3] + 1 : token[2]\n )\n }\n\n colon(tokens) {\n let brackets = 0\n let prev, token, type\n for (let [i, element] of tokens.entries()) {\n token = element\n type = token[0]\n\n if (type === '(') {\n brackets += 1\n }\n if (type === ')') {\n brackets -= 1\n }\n 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 return false\n }\n\n comment(token) {\n let node = new Comment()\n this.init(node, token[2])\n node.source.end = this.getPosition(token[3] || token[2])\n node.source.end.offset++\n\n let text = token[1].slice(2, -2)\n if (/^\\s*$/.test(text)) {\n node.text = ''\n node.raws.left = text\n node.raws.right = ''\n } else {\n let 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 createTokenizer() {\n this.tokenizer = tokenizer(this.input)\n }\n\n decl(tokens, customProperty) {\n let node = new Declaration()\n this.init(node, tokens[0][2])\n\n let last = tokens[tokens.length - 1]\n if (last[0] === ';') {\n this.semicolon = true\n tokens.pop()\n }\n\n node.source.end = this.getPosition(\n last[3] || last[2] || findLastWithPosition(tokens)\n )\n node.source.end.offset++\n\n while (tokens[0][0] !== 'word') {\n if (tokens.length === 1) this.unknownWord(tokens)\n node.raws.before += tokens.shift()[1]\n }\n node.source.start = this.getPosition(tokens[0][2])\n\n node.prop = ''\n while (tokens.length) {\n let type = tokens[0][0]\n if (type === ':' || type === 'space' || type === 'comment') {\n break\n }\n node.prop += tokens.shift()[1]\n }\n\n node.raws.between = ''\n\n let token\n while (tokens.length) {\n token = tokens.shift()\n\n if (token[0] === ':') {\n node.raws.between += token[1]\n break\n } else {\n if (token[0] === 'word' && /\\w/.test(token[1])) {\n this.unknownWord([token])\n }\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 let firstSpaces = []\n let next\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n firstSpaces.push(tokens.shift())\n }\n\n this.precheckMissedSemicolon(tokens)\n\n for (let i = tokens.length - 1; i >= 0; i--) {\n token = tokens[i]\n if (token[1].toLowerCase() === '!important') {\n node.important = true\n let 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].toLowerCase() === 'important') {\n let cache = tokens.slice(0)\n let str = ''\n for (let j = i; j > 0; j--) {\n let type = cache[j][0]\n if (str.trim().startsWith('!') && type !== 'space') {\n break\n }\n str = cache.pop()[1] + str\n }\n if (str.trim().startsWith('!')) {\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 let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment')\n\n if (hasWord) {\n node.raws.between += firstSpaces.map(i => i[1]).join('')\n firstSpaces = []\n }\n this.raw(node, 'value', firstSpaces.concat(tokens), customProperty)\n\n if (node.value.includes(':') && !customProperty) {\n this.checkMissedSemicolon(tokens)\n }\n }\n\n doubleColon(token) {\n throw this.input.error(\n 'Double colon',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n\n emptyRule(token) {\n let node = new Rule()\n this.init(node, token[2])\n node.selector = ''\n node.raws.between = ''\n this.current = node\n }\n\n end(token) {\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.semicolon = false\n\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 = this.getPosition(token[2])\n this.current.source.end.offset++\n this.current = this.current.parent\n } else {\n this.unexpectedClose(token)\n }\n }\n\n endFile() {\n if (this.current.parent) this.unclosedBlock()\n if (this.current.nodes && this.current.nodes.length) {\n this.current.raws.semicolon = this.semicolon\n }\n this.current.raws.after = (this.current.raws.after || '') + this.spaces\n this.root.source.end = this.getPosition(this.tokenizer.position())\n }\n\n freeSemicolon(token) {\n this.spaces += token[1]\n if (this.current.nodes) {\n let prev = this.current.nodes[this.current.nodes.length - 1]\n if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {\n prev.raws.ownSemicolon = this.spaces\n this.spaces = ''\n prev.source.end = this.getPosition(token[2])\n prev.source.end.offset += prev.raws.ownSemicolon.length\n }\n }\n }\n\n // Helpers\n\n getPosition(offset) {\n let pos = this.input.fromOffset(offset)\n return {\n column: pos.col,\n line: pos.line,\n offset\n }\n }\n\n init(node, offset) {\n this.current.push(node)\n node.source = {\n input: this.input,\n start: this.getPosition(offset)\n }\n node.raws.before = this.spaces\n this.spaces = ''\n if (node.type !== 'comment') this.semicolon = false\n }\n\n other(start) {\n let end = false\n let type = null\n let colon = false\n let bracket = null\n let brackets = []\n let customProperty = start[1].startsWith('--')\n\n let tokens = []\n let token = start\n while (token) {\n type = token[0]\n tokens.push(token)\n\n if (type === '(' || type === '[') {\n if (!bracket) bracket = token\n brackets.push(type === '(' ? ')' : ']')\n } else if (customProperty && colon && type === '{') {\n if (!bracket) bracket = token\n brackets.push('}')\n } else if (brackets.length === 0) {\n if (type === ';') {\n if (colon) {\n this.decl(tokens, customProperty)\n return\n } else {\n break\n }\n } else if (type === '{') {\n this.rule(tokens)\n return\n } else if (type === '}') {\n this.tokenizer.back(tokens.pop())\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 token = this.tokenizer.nextToken()\n }\n\n if (this.tokenizer.endOfFile()) end = true\n if (brackets.length > 0) this.unclosedBracket(bracket)\n\n if (end && colon) {\n if (!customProperty) {\n while (tokens.length) {\n token = tokens[tokens.length - 1][0]\n if (token !== 'space' && token !== 'comment') break\n this.tokenizer.back(tokens.pop())\n }\n }\n this.decl(tokens, customProperty)\n } else {\n this.unknownWord(tokens)\n }\n }\n\n parse() {\n let token\n while (!this.tokenizer.endOfFile()) {\n token = this.tokenizer.nextToken()\n\n switch (token[0]) {\n case 'space':\n this.spaces += token[1]\n break\n\n case ';':\n this.freeSemicolon(token)\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(token)\n break\n }\n }\n this.endFile()\n }\n\n precheckMissedSemicolon(/* tokens */) {\n // Hook for Safe Parser\n }\n\n raw(node, prop, tokens, customProperty) {\n let token, type\n let length = tokens.length\n let value = ''\n let clean = true\n let next, prev\n\n for (let i = 0; i < length; i += 1) {\n token = tokens[i]\n type = token[0]\n if (type === 'space' && i === length - 1 && !customProperty) {\n clean = false\n } else if (type === 'comment') {\n prev = tokens[i - 1] ? tokens[i - 1][0] : 'empty'\n next = tokens[i + 1] ? tokens[i + 1][0] : 'empty'\n if (!SAFE_COMMENT_NEIGHBOR[prev] && !SAFE_COMMENT_NEIGHBOR[next]) {\n if (value.slice(-1) === ',') {\n clean = false\n } else {\n value += token[1]\n }\n } else {\n clean = false\n }\n } else {\n value += token[1]\n }\n }\n if (!clean) {\n let raw = tokens.reduce((all, i) => all + i[1], '')\n node.raws[prop] = { raw, value }\n }\n node[prop] = value\n }\n\n rule(tokens) {\n tokens.pop()\n\n let node = new Rule()\n this.init(node, tokens[0][2])\n\n node.raws.between = this.spacesAndCommentsFromEnd(tokens)\n this.raw(node, 'selector', tokens)\n this.current = node\n }\n\n spacesAndCommentsFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\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 return spaces\n }\n\n // Errors\n\n spacesAndCommentsFromStart(tokens) {\n let next\n let spaces = ''\n while (tokens.length) {\n next = tokens[0][0]\n if (next !== 'space' && next !== 'comment') break\n spaces += tokens.shift()[1]\n }\n return spaces\n }\n\n spacesFromEnd(tokens) {\n let lastTokenType\n let spaces = ''\n while (tokens.length) {\n lastTokenType = tokens[tokens.length - 1][0]\n if (lastTokenType !== 'space') break\n spaces = tokens.pop()[1] + spaces\n }\n return spaces\n }\n\n stringFrom(tokens, from) {\n let result = ''\n for (let i = from; i < tokens.length; i++) {\n result += tokens[i][1]\n }\n tokens.splice(from, tokens.length - from)\n return result\n }\n\n unclosedBlock() {\n let pos = this.current.source.start\n throw this.input.error('Unclosed block', pos.line, pos.column)\n }\n\n unclosedBracket(bracket) {\n throw this.input.error(\n 'Unclosed bracket',\n { offset: bracket[2] },\n { offset: bracket[2] + 1 }\n )\n }\n\n unexpectedClose(token) {\n throw this.input.error(\n 'Unexpected }',\n { offset: token[2] },\n { offset: token[2] + 1 }\n )\n }\n\n unknownWord(tokens) {\n throw this.input.error(\n 'Unknown word',\n { offset: tokens[0][2] },\n { offset: tokens[0][2] + tokens[0][1].length }\n )\n }\n\n unnamedAtrule(node, token) {\n throw this.input.error(\n 'At-rule without name',\n { offset: token[2] },\n { offset: token[2] + token[1].length }\n )\n }\n}\n\nmodule.exports = Parser\n","'use strict'\n\nlet AtRule = require('./at-rule')\nlet Comment = require('./comment')\nlet Container = require('./container')\nlet CssSyntaxError = require('./css-syntax-error')\nlet Declaration = require('./declaration')\nlet Document = require('./document')\nlet fromJSON = require('./fromJSON')\nlet Input = require('./input')\nlet LazyResult = require('./lazy-result')\nlet list = require('./list')\nlet Node = require('./node')\nlet parse = require('./parse')\nlet Processor = require('./processor')\nlet Result = require('./result.js')\nlet Root = require('./root')\nlet Rule = require('./rule')\nlet stringify = require('./stringify')\nlet Warning = require('./warning')\n\nfunction postcss(...plugins) {\n if (plugins.length === 1 && Array.isArray(plugins[0])) {\n plugins = plugins[0]\n }\n return new Processor(plugins)\n}\n\npostcss.plugin = function plugin(name, initializer) {\n let warningPrinted = false\n function creator(...args) {\n // eslint-disable-next-line no-console\n if (console && console.warn && !warningPrinted) {\n warningPrinted = true\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': postcss.plugin was deprecated. Migration guide:\\n' +\n 'https://evilmartians.com/chronicles/postcss-8-plugin-migration'\n )\n if (process.env.LANG && process.env.LANG.startsWith('cn')) {\n /* c8 ignore next 7 */\n // eslint-disable-next-line no-console\n console.warn(\n name +\n ': 里面 postcss.plugin 被弃用. 迁移指南:\\n' +\n 'https://www.w3ctech.com/topic/2226'\n )\n }\n }\n let transformer = initializer(...args)\n transformer.postcssPlugin = name\n transformer.postcssVersion = new Processor().version\n return transformer\n }\n\n let cache\n Object.defineProperty(creator, 'postcss', {\n get() {\n if (!cache) cache = creator()\n return cache\n }\n })\n\n creator.process = function (css, processOpts, pluginOpts) {\n return postcss([creator(pluginOpts)]).process(css, processOpts)\n }\n\n return creator\n}\n\npostcss.stringify = stringify\npostcss.parse = parse\npostcss.fromJSON = fromJSON\npostcss.list = list\n\npostcss.comment = defaults => new Comment(defaults)\npostcss.atRule = defaults => new AtRule(defaults)\npostcss.decl = defaults => new Declaration(defaults)\npostcss.rule = defaults => new Rule(defaults)\npostcss.root = defaults => new Root(defaults)\npostcss.document = defaults => new Document(defaults)\n\npostcss.CssSyntaxError = CssSyntaxError\npostcss.Declaration = Declaration\npostcss.Container = Container\npostcss.Processor = Processor\npostcss.Document = Document\npostcss.Comment = Comment\npostcss.Warning = Warning\npostcss.AtRule = AtRule\npostcss.Result = Result\npostcss.Input = Input\npostcss.Rule = Rule\npostcss.Root = Root\npostcss.Node = Node\n\nLazyResult.registerPostcss(postcss)\n\nmodule.exports = postcss\npostcss.default = postcss\n","'use strict'\n\nlet { existsSync, readFileSync } = require('fs')\nlet { dirname, join } = require('path')\nlet { SourceMapConsumer, SourceMapGenerator } = require('source-map-js')\n\nfunction fromBase64(str) {\n if (Buffer) {\n return Buffer.from(str, 'base64').toString()\n } else {\n /* c8 ignore next 2 */\n return window.atob(str)\n }\n}\n\nclass PreviousMap {\n constructor(css, opts) {\n if (opts.map === false) return\n this.loadAnnotation(css)\n this.inline = this.startWith(this.annotation, 'data:')\n\n let prev = opts.map ? opts.map.prev : undefined\n let text = this.loadMap(opts.from, prev)\n if (!this.mapFile && opts.from) {\n this.mapFile = opts.from\n }\n if (this.mapFile) this.root = dirname(this.mapFile)\n if (text) this.text = text\n }\n\n consumer() {\n if (!this.consumerCache) {\n this.consumerCache = new SourceMapConsumer(this.text)\n }\n return this.consumerCache\n }\n\n decodeInline(text) {\n let baseCharsetUri = /^data:application\\/json;charset=utf-?8;base64,/\n let baseUri = /^data:application\\/json;base64,/\n let charsetUri = /^data:application\\/json;charset=utf-?8,/\n let uri = /^data:application\\/json,/\n\n let uriMatch = text.match(charsetUri) || text.match(uri)\n if (uriMatch) {\n return decodeURIComponent(text.substr(uriMatch[0].length))\n }\n\n let baseUriMatch = text.match(baseCharsetUri) || text.match(baseUri)\n if (baseUriMatch) {\n return fromBase64(text.substr(baseUriMatch[0].length))\n }\n\n let encoding = text.match(/data:application\\/json;([^,]+),/)[1]\n throw new Error('Unsupported source map encoding ' + encoding)\n }\n\n getAnnotationURL(sourceMapString) {\n return sourceMapString.replace(/^\\/\\*\\s*# sourceMappingURL=/, '').trim()\n }\n\n isMap(map) {\n if (typeof map !== 'object') return false\n return (\n typeof map.mappings === 'string' ||\n typeof map._mappings === 'string' ||\n Array.isArray(map.sections)\n )\n }\n\n loadAnnotation(css) {\n let comments = css.match(/\\/\\*\\s*# sourceMappingURL=/g)\n if (!comments) return\n\n // sourceMappingURLs from comments, strings, etc.\n let start = css.lastIndexOf(comments.pop())\n let end = css.indexOf('*/', start)\n\n if (start > -1 && end > -1) {\n // Locate the last sourceMappingURL to avoid pickin\n this.annotation = this.getAnnotationURL(css.substring(start, end))\n }\n }\n\n loadFile(path) {\n this.root = dirname(path)\n if (existsSync(path)) {\n this.mapFile = path\n return readFileSync(path, 'utf-8').toString().trim()\n }\n }\n\n loadMap(file, prev) {\n if (prev === false) return false\n\n if (prev) {\n if (typeof prev === 'string') {\n return prev\n } else if (typeof prev === 'function') {\n let prevPath = prev(file)\n if (prevPath) {\n let map = this.loadFile(prevPath)\n if (!map) {\n throw new Error(\n 'Unable to load previous source map: ' + prevPath.toString()\n )\n }\n return map\n }\n } else if (prev instanceof SourceMapConsumer) {\n return SourceMapGenerator.fromSourceMap(prev).toString()\n } else if (prev instanceof SourceMapGenerator) {\n return prev.toString()\n } else if (this.isMap(prev)) {\n return JSON.stringify(prev)\n } else {\n throw new Error(\n 'Unsupported previous source map format: ' + prev.toString()\n )\n }\n } else if (this.inline) {\n return this.decodeInline(this.annotation)\n } else if (this.annotation) {\n let map = this.annotation\n if (file) map = join(dirname(file), map)\n return this.loadFile(map)\n }\n }\n\n startWith(string, start) {\n if (!string) return false\n return string.substr(0, start.length) === start\n }\n\n withContent() {\n return !!(\n this.consumer().sourcesContent &&\n this.consumer().sourcesContent.length > 0\n )\n }\n}\n\nmodule.exports = PreviousMap\nPreviousMap.default = PreviousMap\n","'use strict'\n\nlet Document = require('./document')\nlet LazyResult = require('./lazy-result')\nlet NoWorkResult = require('./no-work-result')\nlet Root = require('./root')\n\nclass Processor {\n constructor(plugins = []) {\n this.version = '8.5.2'\n this.plugins = this.normalize(plugins)\n }\n\n normalize(plugins) {\n let normalized = []\n for (let i of plugins) {\n if (i.postcss === true) {\n i = i()\n } else if (i.postcss) {\n i = i.postcss\n }\n\n if (typeof i === 'object' && Array.isArray(i.plugins)) {\n normalized = normalized.concat(i.plugins)\n } else if (typeof i === 'object' && i.postcssPlugin) {\n normalized.push(i)\n } else if (typeof i === 'function') {\n normalized.push(i)\n } else if (typeof i === 'object' && (i.parse || i.stringify)) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\n 'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +\n 'one of the syntax/parser/stringifier options as outlined ' +\n 'in your PostCSS runner documentation.'\n )\n }\n } else {\n throw new Error(i + ' is not a PostCSS plugin')\n }\n }\n return normalized\n }\n\n process(css, opts = {}) {\n if (\n !this.plugins.length &&\n !opts.parser &&\n !opts.stringifier &&\n !opts.syntax\n ) {\n return new NoWorkResult(this, css, opts)\n } else {\n return new LazyResult(this, css, opts)\n }\n }\n\n use(plugin) {\n this.plugins = this.plugins.concat(this.normalize([plugin]))\n return this\n }\n}\n\nmodule.exports = Processor\nProcessor.default = Processor\n\nRoot.registerProcessor(Processor)\nDocument.registerProcessor(Processor)\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = undefined\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n\n get content() {\n return this.css\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","'use strict'\n\nlet Container = require('./container')\n\nlet LazyResult, Processor\n\nclass Root extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'root'\n if (!this.nodes) this.nodes = []\n }\n\n normalize(child, sample, type) {\n let nodes = super.normalize(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 for (let node of nodes) {\n node.raws.before = sample.raws.before\n }\n }\n }\n\n return nodes\n }\n\n removeChild(child, ignore) {\n let index = this.index(child)\n\n if (!ignore && index === 0 && this.nodes.length > 1) {\n this.nodes[1].raws.before = this.nodes[index].raws.before\n }\n\n return super.removeChild(child)\n }\n\n toResult(opts = {}) {\n let lazy = new LazyResult(new Processor(), this, opts)\n return lazy.stringify()\n }\n}\n\nRoot.registerLazyResult = dependant => {\n LazyResult = dependant\n}\n\nRoot.registerProcessor = dependant => {\n Processor = dependant\n}\n\nmodule.exports = Root\nRoot.default = Root\n\nContainer.registerRoot(Root)\n","'use strict'\n\nlet Container = require('./container')\nlet list = require('./list')\n\nclass Rule extends Container {\n constructor(defaults) {\n super(defaults)\n this.type = 'rule'\n if (!this.nodes) this.nodes = []\n }\n\n get selectors() {\n return list.comma(this.selector)\n }\n\n set selectors(values) {\n let match = this.selector ? this.selector.match(/,\\s*/) : null\n let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen')\n this.selector = values.join(sep)\n }\n}\n\nmodule.exports = Rule\nRule.default = Rule\n\nContainer.registerRule(Rule)\n","'use strict'\n\nconst DEFAULT_RAW = {\n after: '\\n',\n beforeClose: '\\n',\n beforeComment: '\\n',\n beforeDecl: '\\n',\n beforeOpen: ' ',\n beforeRule: '\\n',\n colon: ': ',\n commentLeft: ' ',\n commentRight: ' ',\n emptyBody: '',\n indent: ' ',\n semicolon: false\n}\n\nfunction capitalize(str) {\n return str[0].toUpperCase() + str.slice(1)\n}\n\nclass Stringifier {\n constructor(builder) {\n this.builder = builder\n }\n\n atrule(node, semicolon) {\n let name = '@' + node.name\n let 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 let end = (node.raws.between || '') + (semicolon ? ';' : '')\n this.builder(name + params + end, node)\n }\n }\n\n beforeAfter(node, detect) {\n let value\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 let buf = node.parent\n let depth = 0\n while (buf && buf.type !== 'root') {\n depth += 1\n buf = buf.parent\n }\n\n if (value.includes('\\n')) {\n let indent = this.raw(node, null, 'indent')\n if (indent.length) {\n for (let step = 0; step < depth; step++) value += indent\n }\n }\n\n return value\n }\n\n block(node, start) {\n let between = this.raw(node, 'between', 'beforeOpen')\n this.builder(start + between + '{', node, 'start')\n\n let after\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 body(node) {\n let last = node.nodes.length - 1\n while (last > 0) {\n if (node.nodes[last].type !== 'comment') break\n last -= 1\n }\n\n let semicolon = this.raw(node, 'semicolon')\n for (let i = 0; i < node.nodes.length; i++) {\n let child = node.nodes[i]\n let before = this.raw(child, 'before')\n if (before) this.builder(before)\n this.stringify(child, last !== i || semicolon)\n }\n }\n\n comment(node) {\n let left = this.raw(node, 'left', 'commentLeft')\n let right = this.raw(node, 'right', 'commentRight')\n this.builder('/*' + left + node.text + right + '*/', node)\n }\n\n decl(node, semicolon) {\n let between = this.raw(node, 'between', 'colon')\n let 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 document(node) {\n this.body(node)\n }\n\n raw(node, own, detect) {\n let value\n if (!detect) detect = own\n\n // Already had\n if (own) {\n value = node.raws[own]\n if (typeof value !== 'undefined') return value\n }\n\n let parent = node.parent\n\n if (detect === 'before') {\n // Hack for first rule in CSS\n if (!parent || (parent.type === 'root' && parent.first === node)) {\n return ''\n }\n\n // `root` nodes in `document` should use only their own raws\n if (parent && parent.type === 'document') {\n return ''\n }\n }\n\n // Floating child without parent\n if (!parent) return DEFAULT_RAW[detect]\n\n // Detect style by other nodes\n let root = node.root()\n if (!root.rawCache) root.rawCache = {}\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 let method = 'raw' + capitalize(detect)\n if (this[method]) {\n value = this[method](root, node)\n } else {\n root.walk(i => {\n value = i.raws[own]\n if (typeof value !== 'undefined') return false\n })\n }\n }\n\n if (typeof value === 'undefined') value = DEFAULT_RAW[detect]\n\n root.rawCache[detect] = value\n return value\n }\n\n rawBeforeClose(root) {\n let value\n root.walk(i => {\n if (i.nodes && i.nodes.length > 0) {\n if (typeof i.raws.after !== 'undefined') {\n value = i.raws.after\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawBeforeComment(root, node) {\n let value\n root.walkComments(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeDecl')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeDecl(root, node) {\n let value\n root.walkDecls(i => {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n })\n if (typeof value === 'undefined') {\n value = this.raw(node, null, 'beforeRule')\n } else if (value) {\n value = value.replace(/\\S/g, '')\n }\n return value\n }\n\n rawBeforeOpen(root) {\n let value\n root.walk(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 rawBeforeRule(root) {\n let value\n root.walk(i => {\n if (i.nodes && (i.parent !== root || root.first !== i)) {\n if (typeof i.raws.before !== 'undefined') {\n value = i.raws.before\n if (value.includes('\\n')) {\n value = value.replace(/[^\\n]+$/, '')\n }\n return false\n }\n }\n })\n if (value) value = value.replace(/\\S/g, '')\n return value\n }\n\n rawColon(root) {\n let value\n root.walkDecls(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 rawEmptyBody(root) {\n let value\n root.walk(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 rawIndent(root) {\n if (root.raws.indent) return root.raws.indent\n let value\n root.walk(i => {\n let p = i.parent\n if (p && p !== root && p.parent && p.parent === root) {\n if (typeof i.raws.before !== 'undefined') {\n let 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 rawSemicolon(root) {\n let value\n root.walk(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 rawValue(node, prop) {\n let value = node[prop]\n let raw = node.raws[prop]\n if (raw && raw.value === value) {\n return raw.raw\n }\n\n return value\n }\n\n root(node) {\n this.body(node)\n if (node.raws.after) this.builder(node.raws.after)\n }\n\n rule(node) {\n this.block(node, this.rawValue(node, 'selector'))\n if (node.raws.ownSemicolon) {\n this.builder(node.raws.ownSemicolon, node, 'end')\n }\n }\n\n stringify(node, semicolon) {\n /* c8 ignore start */\n if (!this[node.type]) {\n throw new Error(\n 'Unknown AST node type ' +\n node.type +\n '. ' +\n 'Maybe you need to change PostCSS stringifier.'\n )\n }\n /* c8 ignore stop */\n this[node.type](node, semicolon)\n }\n}\n\nmodule.exports = Stringifier\nStringifier.default = Stringifier\n","'use strict'\n\nlet Stringifier = require('./stringifier')\n\nfunction stringify(node, builder) {\n let str = new Stringifier(builder)\n str.stringify(node)\n}\n\nmodule.exports = stringify\nstringify.default = stringify\n","'use strict'\n\nmodule.exports.isClean = Symbol('isClean')\n\nmodule.exports.my = Symbol('my')\n","'use strict'\n\nconst SINGLE_QUOTE = \"'\".charCodeAt(0)\nconst DOUBLE_QUOTE = '\"'.charCodeAt(0)\nconst BACKSLASH = '\\\\'.charCodeAt(0)\nconst SLASH = '/'.charCodeAt(0)\nconst NEWLINE = '\\n'.charCodeAt(0)\nconst SPACE = ' '.charCodeAt(0)\nconst FEED = '\\f'.charCodeAt(0)\nconst TAB = '\\t'.charCodeAt(0)\nconst CR = '\\r'.charCodeAt(0)\nconst OPEN_SQUARE = '['.charCodeAt(0)\nconst CLOSE_SQUARE = ']'.charCodeAt(0)\nconst OPEN_PARENTHESES = '('.charCodeAt(0)\nconst CLOSE_PARENTHESES = ')'.charCodeAt(0)\nconst OPEN_CURLY = '{'.charCodeAt(0)\nconst CLOSE_CURLY = '}'.charCodeAt(0)\nconst SEMICOLON = ';'.charCodeAt(0)\nconst ASTERISK = '*'.charCodeAt(0)\nconst COLON = ':'.charCodeAt(0)\nconst AT = '@'.charCodeAt(0)\n\nconst RE_AT_END = /[\\t\\n\\f\\r \"#'()/;[\\\\\\]{}]/g\nconst RE_WORD_END = /[\\t\\n\\f\\r !\"#'():;@[\\\\\\]{}]|\\/(?=\\*)/g\nconst RE_BAD_BRACKET = /.[\\r\\n\"'(/\\\\]/\nconst RE_HEX_ESCAPE = /[\\da-f]/i\n\nmodule.exports = function tokenizer(input, options = {}) {\n let css = input.css.valueOf()\n let ignore = options.ignoreErrors\n\n let code, content, escape, next, quote\n let currentToken, escaped, escapePos, n, prev\n\n let length = css.length\n let pos = 0\n let buffer = []\n let returned = []\n\n function position() {\n return pos\n }\n\n function unclosed(what) {\n throw input.error('Unclosed ' + what, pos)\n }\n\n function endOfFile() {\n return returned.length === 0 && pos >= length\n }\n\n function nextToken(opts) {\n if (returned.length) return returned.pop()\n if (pos >= length) return\n\n let ignoreUnclosed = opts ? opts.ignoreUnclosed : false\n\n code = css.charCodeAt(pos)\n\n switch (code) {\n case NEWLINE:\n case SPACE:\n case TAB:\n case CR:\n case FEED: {\n next = pos\n do {\n next += 1\n code = css.charCodeAt(next)\n } while (\n code === SPACE ||\n code === NEWLINE ||\n code === TAB ||\n code === CR ||\n code === FEED\n )\n\n currentToken = ['space', css.slice(pos, next)]\n pos = next - 1\n break\n }\n\n case OPEN_SQUARE:\n case CLOSE_SQUARE:\n case OPEN_CURLY:\n case CLOSE_CURLY:\n case COLON:\n case SEMICOLON:\n case CLOSE_PARENTHESES: {\n let controlChar = String.fromCharCode(code)\n currentToken = [controlChar, controlChar, pos]\n break\n }\n\n case OPEN_PARENTHESES: {\n prev = buffer.length ? buffer.pop()[1] : ''\n n = css.charCodeAt(pos + 1)\n if (\n prev === 'url' &&\n n !== SINGLE_QUOTE &&\n n !== DOUBLE_QUOTE &&\n n !== SPACE &&\n n !== NEWLINE &&\n n !== TAB &&\n n !== FEED &&\n n !== CR\n ) {\n next = pos\n do {\n escaped = false\n next = css.indexOf(')', next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos\n break\n } else {\n unclosed('bracket')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['brackets', css.slice(pos, next + 1), pos, next]\n\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 currentToken = ['(', '(', pos]\n } else {\n currentToken = ['brackets', content, pos, next]\n pos = next\n }\n }\n\n break\n }\n\n case SINGLE_QUOTE:\n case DOUBLE_QUOTE: {\n quote = code === SINGLE_QUOTE ? \"'\" : '\"'\n next = pos\n do {\n escaped = false\n next = css.indexOf(quote, next + 1)\n if (next === -1) {\n if (ignore || ignoreUnclosed) {\n next = pos + 1\n break\n } else {\n unclosed('string')\n }\n }\n escapePos = next\n while (css.charCodeAt(escapePos - 1) === BACKSLASH) {\n escapePos -= 1\n escaped = !escaped\n }\n } while (escaped)\n\n currentToken = ['string', css.slice(pos, next + 1), pos, next]\n pos = next\n break\n }\n\n case AT: {\n RE_AT_END.lastIndex = pos + 1\n RE_AT_END.test(css)\n if (RE_AT_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_AT_END.lastIndex - 2\n }\n\n currentToken = ['at-word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n case BACKSLASH: {\n next = pos\n escape = true\n while (css.charCodeAt(next + 1) === BACKSLASH) {\n next += 1\n escape = !escape\n }\n code = css.charCodeAt(next + 1)\n if (\n escape &&\n code !== SLASH &&\n code !== SPACE &&\n code !== NEWLINE &&\n code !== TAB &&\n code !== CR &&\n code !== FEED\n ) {\n next += 1\n if (RE_HEX_ESCAPE.test(css.charAt(next))) {\n while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {\n next += 1\n }\n if (css.charCodeAt(next + 1) === SPACE) {\n next += 1\n }\n }\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n\n pos = next\n break\n }\n\n default: {\n if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {\n next = css.indexOf('*/', pos + 2) + 1\n if (next === 0) {\n if (ignore || ignoreUnclosed) {\n next = css.length\n } else {\n unclosed('comment')\n }\n }\n\n currentToken = ['comment', css.slice(pos, next + 1), pos, next]\n pos = next\n } else {\n RE_WORD_END.lastIndex = pos + 1\n RE_WORD_END.test(css)\n if (RE_WORD_END.lastIndex === 0) {\n next = css.length - 1\n } else {\n next = RE_WORD_END.lastIndex - 2\n }\n\n currentToken = ['word', css.slice(pos, next + 1), pos, next]\n buffer.push(currentToken)\n pos = next\n }\n\n break\n }\n }\n\n pos++\n return currentToken\n }\n\n function back(token) {\n returned.push(token)\n }\n\n return {\n back,\n endOfFile,\n nextToken,\n position\n }\n}\n","/* eslint-disable no-console */\n'use strict'\n\nlet printed = {}\n\nmodule.exports = function warnOnce(message) {\n if (printed[message]) return\n printed[message] = true\n\n if (typeof console !== 'undefined' && console.warn) {\n console.warn(message)\n }\n}\n","'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._x = 0;\n this._y = 0;\n this._z = null;\n this._A = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._B = null;\nPromise._C = null;\nPromise._D = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._y === 3) {\n self = self._z;\n }\n if (Promise._B) {\n Promise._B(self);\n }\n if (self._y === 0) {\n if (self._x === 0) {\n self._x = 1;\n self._A = deferred;\n return;\n }\n if (self._x === 1) {\n self._x = 2;\n self._A = [self._A, deferred];\n return;\n }\n self._A.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._y === 1) {\n resolve(deferred.promise, self._z);\n } else {\n reject(deferred.promise, self._z);\n }\n return;\n }\n var ret = tryCallOne(cb, self._z);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._y = 3;\n self._z = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._y = 1;\n self._z = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._y = 2;\n self._z = newValue;\n if (Promise._C) {\n Promise._C(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._x === 1) {\n handle(self, self._A);\n self._A = null;\n }\n if (self._x === 2) {\n for (var i = 0; i < self._A.length; i++) {\n handle(self, self._A[i]);\n }\n self._A = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._D);\n p._y = 1;\n p._z = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nvar iterableToArray = function (iterable) {\n if (typeof Array.from === 'function') {\n // ES2015+, iterables exist\n iterableToArray = Array.from;\n return Array.from(iterable);\n }\n\n // ES5, only arrays and array-likes exist\n iterableToArray = function (x) { return Array.prototype.slice.call(x); };\n return Array.prototype.slice.call(iterable);\n}\n\nPromise.all = function (arr) {\n var args = iterableToArray(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._y === 3) {\n val = val._z;\n }\n if (val._y === 1) return res(i, val._z);\n if (val._y === 2) reject(val._z);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nfunction onSettledFulfill(value) {\n return { status: 'fulfilled', value: value };\n}\nfunction onSettledReject(reason) {\n return { status: 'rejected', reason: reason };\n}\nfunction mapAllSettled(item) {\n if(item && (typeof item === 'object' || typeof item === 'function')){\n if(item instanceof Promise && item.then === Promise.prototype.then){\n return item.then(onSettledFulfill, onSettledReject);\n }\n var then = item.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(item)).then(onSettledFulfill, onSettledReject)\n }\n }\n\n return onSettledFulfill(item);\n}\nPromise.allSettled = function (iterable) {\n return Promise.all(iterableToArray(iterable).map(mapAllSettled));\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n iterableToArray(values).forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n\nfunction getAggregateError(errors){\n if(typeof AggregateError === 'function'){\n return new AggregateError(errors,'All promises were rejected');\n }\n\n var error = new Error('All promises were rejected');\n\n error.name = 'AggregateError';\n error.errors = errors;\n\n return error;\n}\n\nPromise.any = function promiseAny(values) {\n return new Promise(function(resolve, reject) {\n var promises = iterableToArray(values);\n var hasResolved = false;\n var rejectionReasons = [];\n\n function resolveOnce(value) {\n if (!hasResolved) {\n hasResolved = true;\n resolve(value);\n }\n }\n\n function rejectionCheck(reason) {\n rejectionReasons.push(reason);\n\n if (rejectionReasons.length === promises.length) {\n reject(getAggregateError(rejectionReasons));\n }\n }\n\n if(promises.length === 0){\n reject(getAggregateError(rejectionReasons));\n } else {\n promises.forEach(function(value){\n Promise.resolve(value).then(resolveOnce, rejectionCheck);\n });\n }\n });\n};\n","'use strict';\n\nvar Promise = require('./core');\n\nvar DEFAULT_WHITELIST = [\n ReferenceError,\n TypeError,\n RangeError\n];\n\nvar enabled = false;\nexports.disable = disable;\nfunction disable() {\n enabled = false;\n Promise._B = null;\n Promise._C = null;\n}\n\nexports.enable = enable;\nfunction enable(options) {\n options = options || {};\n if (enabled) disable();\n enabled = true;\n var id = 0;\n var displayId = 0;\n var rejections = {};\n Promise._B = function (promise) {\n if (\n promise._y === 2 && // IS REJECTED\n rejections[promise._E]\n ) {\n if (rejections[promise._E].logged) {\n onHandled(promise._E);\n } else {\n clearTimeout(rejections[promise._E].timeout);\n }\n delete rejections[promise._E];\n }\n };\n Promise._C = function (promise, err) {\n if (promise._x === 0) { // not yet handled\n promise._E = id++;\n rejections[promise._E] = {\n displayId: null,\n error: err,\n timeout: setTimeout(\n onUnhandled.bind(null, promise._E),\n // For reference errors and type errors, this almost always\n // means the programmer made a mistake, so log them after just\n // 100ms\n // otherwise, wait 2 seconds to see if they get handled\n matchWhitelist(err, DEFAULT_WHITELIST)\n ? 100\n : 2000\n ),\n logged: false\n };\n }\n };\n function onUnhandled(id) {\n if (\n options.allRejections ||\n matchWhitelist(\n rejections[id].error,\n options.whitelist || DEFAULT_WHITELIST\n )\n ) {\n rejections[id].displayId = displayId++;\n if (options.onUnhandled) {\n rejections[id].logged = true;\n options.onUnhandled(\n rejections[id].displayId,\n rejections[id].error\n );\n } else {\n rejections[id].logged = true;\n logError(\n rejections[id].displayId,\n rejections[id].error\n );\n }\n }\n }\n function onHandled(id) {\n if (rejections[id].logged) {\n if (options.onHandled) {\n options.onHandled(rejections[id].displayId, rejections[id].error);\n } else if (!rejections[id].onUnhandled) {\n console.warn(\n 'Promise Rejection Handled (id: ' + rejections[id].displayId + '):'\n );\n console.warn(\n ' This means you can ignore any previous messages of the form \"Possible Unhandled Promise Rejection\" with id ' +\n rejections[id].displayId + '.'\n );\n }\n }\n }\n}\n\nfunction logError(id, error) {\n console.warn('Possible Unhandled Promise Rejection (id: ' + id + '):');\n var errStr = (error && (error.stack || error)) + '';\n errStr.split('\\n').forEach(function (line) {\n console.warn(' ' + line);\n });\n}\n\nfunction matchWhitelist(error, list) {\n return list.some(function (cls) {\n return error instanceof cls;\n });\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * Based on Kendo UI Core expression code \n */\n'use strict'\n\nfunction Cache(maxSize) {\n this._maxSize = maxSize\n this.clear()\n}\nCache.prototype.clear = function () {\n this._size = 0\n this._values = Object.create(null)\n}\nCache.prototype.get = function (key) {\n return this._values[key]\n}\nCache.prototype.set = function (key, value) {\n this._size >= this._maxSize && this.clear()\n if (!(key in this._values)) this._size++\n\n return (this._values[key] = value)\n}\n\nvar SPLIT_REGEX = /[^.^\\]^[]+|(?=\\[\\]|\\.\\.)/g,\n DIGIT_REGEX = /^\\d+$/,\n LEAD_DIGIT_REGEX = /^\\d/,\n SPEC_CHAR_REGEX = /[~`!#$%\\^&*+=\\-\\[\\]\\\\';,/{}|\\\\\":<>\\?]/g,\n CLEAN_QUOTES_REGEX = /^\\s*(['\"]?)(.*?)(\\1)\\s*$/,\n MAX_CACHE_SIZE = 512\n\nvar pathCache = new Cache(MAX_CACHE_SIZE),\n setCache = new Cache(MAX_CACHE_SIZE),\n getCache = new Cache(MAX_CACHE_SIZE)\n\nvar config\n\nmodule.exports = {\n Cache: Cache,\n\n split: split,\n\n normalizePath: normalizePath,\n\n setter: function (path) {\n var parts = normalizePath(path)\n\n return (\n setCache.get(path) ||\n setCache.set(path, function setter(obj, value) {\n var index = 0\n var len = parts.length\n var data = obj\n\n while (index < len - 1) {\n var part = parts[index]\n if (\n part === '__proto__' ||\n part === 'constructor' ||\n part === 'prototype'\n ) {\n return obj\n }\n\n data = data[parts[index++]]\n }\n data[parts[index]] = value\n })\n )\n },\n\n getter: function (path, safe) {\n var parts = normalizePath(path)\n return (\n getCache.get(path) ||\n getCache.set(path, function getter(data) {\n var index = 0,\n len = parts.length\n while (index < len) {\n if (data != null || !safe) data = data[parts[index++]]\n else return\n }\n return data\n })\n )\n },\n\n join: function (segments) {\n return segments.reduce(function (path, part) {\n return (\n path +\n (isQuoted(part) || DIGIT_REGEX.test(part)\n ? '[' + part + ']'\n : (path ? '.' : '') + part)\n )\n }, '')\n },\n\n forEach: function (path, cb, thisArg) {\n forEach(Array.isArray(path) ? path : split(path), cb, thisArg)\n },\n}\n\nfunction normalizePath(path) {\n return (\n pathCache.get(path) ||\n pathCache.set(\n path,\n split(path).map(function (part) {\n return part.replace(CLEAN_QUOTES_REGEX, '$2')\n })\n )\n )\n}\n\nfunction split(path) {\n return path.match(SPLIT_REGEX) || ['']\n}\n\nfunction forEach(parts, iter, thisArg) {\n var len = parts.length,\n part,\n idx,\n isArray,\n isBracket\n\n for (idx = 0; idx < len; idx++) {\n part = parts[idx]\n\n if (part) {\n if (shouldBeQuoted(part)) {\n part = '\"' + part + '\"'\n }\n\n isBracket = isQuoted(part)\n isArray = !isBracket && /^\\d+$/.test(part)\n\n iter.call(thisArg, part, isBracket, isArray, idx, parts)\n }\n }\n}\n\nfunction isQuoted(str) {\n return (\n typeof str === 'string' && str && [\"'\", '\"'].indexOf(str.charAt(0)) !== -1\n )\n}\n\nfunction hasLeadingNumber(part) {\n return part.match(LEAD_DIGIT_REGEX) && !part.match(DIGIT_REGEX)\n}\n\nfunction hasSpecialChars(part) {\n return SPEC_CHAR_REGEX.test(part)\n}\n\nfunction shouldBeQuoted(part) {\n return !isQuoted(part) && (hasLeadingNumber(part) || hasSpecialChars(part))\n}\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n"],"names":["PolyBool","BuildLog","require","Epsilon","Intersecter","SegmentChainer","SegmentSelector","GeoJSON","buildLog","epsilon","operate","poly1","poly2","selector","seg1","segments","seg2","seg3","combine","polygon","bl","list","v","poly","i","regions","forEach","addRegion","calculate","inverted","segments1","segments2","combined","inverted1","inverted2","selectUnion","union","selectIntersect","intersect","selectDifference","difference","selectDifferenceRev","differenceRev","selectXor","xor","polygonFromGeoJSON","geojson","toPolygon","polygonToGeoJSON","fromPolygon","window","module","exports","my","nextSegmentId","curVert","push","type","data","JSON","parse","stringify","segmentId","checkIntersection","segmentChop","seg","end","pt","statusRemove","segmentUpdate","segmentNew","primary","segmentRemove","tempStatus","above","below","rewind","status","vert","x","log","txt","reset","selected","segs","chainStart","chainRemoveHead","index","chainRemoveTail","chainNew","pt1","pt2","chainMatch","chainClose","chainAddHead","chainAddTail","chainConnect","index1","index2","chainReverse","chainJoin","done","eps","pointAboveOrOnLine","left","right","Ax","Ay","Bx","By","Cx","pointBetween","p","d_py_ly","d_rx_lx","d_px_lx","d_ry_ly","dot","pointsSameX","p1","p2","Math","abs","pointsSameY","pointsSame","pointsCompare","pointsCollinear","pt3","dx1","dy1","dx2","dy2","linesIntersect","a0","a1","b0","b1","adx","ady","bdx","bdy","axb","dx","dy","A","B","ret","alongA","alongB","pointInsideRegion","region","y","last_x","length","last_y","inside","curr_x","curr_y","GeoPoly","coords","LineString","ls","reg","slice","out","coordinates","Error","regionInsideRegion","r1","r2","newNode","children","roots","addChild","root","child","node","splice","forceWinding","clockwise","winding","copy","reverse","geopolys","addExterior","getInterior","LinkedList","selfIntersection","segmentCopy","start","id","myFill","otherFill","event_root","create","eventAdd","ev","other_pt","insertBefore","here","p1_isStart","p1_1","p1_2","p2_isStart","p2_1","p2_2","comp","eventCompare","isStart","other","eventAddSegment","ev_start","eventAddSegmentStart","ev_end","eventAddSegmentEnd","eventDivide","ns","remove","eventUpdateEnd","primaryPolyInverted","secondaryPolyInverted","status_root","statusFindSurrounding","findTransition","ev1","ev2","a2","b2","statusCompare","a1_equ_b1","a2_equ_b2","a1_between","a2_between","surrounding","eve","toggle","st","s","_loop","getHead","before","after","checkBothIntersections","insert","exists","prev","next","isEmpty","forward","check","last","chains","console","warn","first_match","matches_head","matches_pt1","second_match","next_match","head","chain","tail","setMatch","addToHead","grow","grow2","oppo","oppo2","shift","pop","unshift","F","S","reverseF","reverseChain","appendChain","chain1","chain2","tail2","head2","concat","select","selection","result","_classCallCheck","_createClass","_callSuper","_superPropGet","_inherits","Container","AtRule","_Container","defaults","_this","key","value","this","proxyOf","nodes","_len","arguments","Array","_key","_len2","_key2","default","registerAtRule","Comment","_Node","Root","Rule","_toConsumableArray","_createForOfIteratorHelper","Declaration","Node","_require","isClean","cleanSource","map","source","markTreeDirty","_step","_iterator","n","err","e","f","_i","_children","_step2","normalize","_iterator2","markDirty","keepBetween","_step3","_iterator3","cleanRaws","callback","iterator","getIterator","indexes","condition","every","lastEach","get","prop","startsWith","args","apply","toProxy","cb","_len3","_key3","set","indexOf","exist","add","existIndex","_step4","_iterator4","_step5","_iterator5","sample","isArray","_step6","_iterator6","parent","removeChild","_step7","_iterator7","String","selectors","name","text","processed","rebuild","raws","replace","_len4","_key4","_step8","_iterator8","_step9","first","_iterator9","_step10","_iterator10","undefined","pattern","opts","walkDecls","decl","props","includes","fast","some","each","addToError","walk","RegExp","test","registerParse","dependant","registerRule","registerRoot","Object","setPrototypeOf","prototype","_wrapNativeSuper","pico","terminalHighlight","CssSyntaxError","_Error","message","line","column","file","plugin","reason","endLine","endColumn","setMessage","captureStackTrace","color","_this2","css","isColorSupported","aside","mark","highlight","_pico$createColors","createColors","bold","gray","red","lines","split","max","min","maxWidth","number","gutter","subLineStart","subLineEnd","subLine","spacing","padding","join","code","showSourceCode","_objectSpread","LazyResult","Processor","Document","registerLazyResult","registerProcessor","_objectWithoutProperties","_excluded","_excluded2","Input","PreviousMap","fromJSON","json","inputs","ownInputs","input","inputHydrated","__proto__","_defaults$source","inputId","nanoid","_require2","isAbsolute","resolve","_require3","SourceMapConsumer","SourceMapGenerator","_require4","fileURLToPath","pathToFileURL","fromOffsetCache","Symbol","sourceMapAvailable","Boolean","pathAvailable","toString","hasBOM","document","from","consumer","mapResolve","offset","pos","fromOffset","col","origin","url","lineToIndex","prevIndex","l","mid","sourceRoot","to","fromUrl","originalPositionFor","URL","mapFile","protocol","sourceContentFor","_arr","consumerCache","registerInput","_regeneratorRuntime","_slicedToArray","_asyncToGenerator","MapGenerator","Result","TYPE_TO_CLASS_NAME","atrule","comment","rule","PLUGIN_PROPS","AtRuleExit","CommentExit","DeclarationExit","DocumentExit","Once","OnceExit","postcssPlugin","prepare","RootExit","RuleExit","NOT_VISITORS","isPromise","obj","then","getEvents","toLowerCase","append","toStack","eventIndex","events","visitorIndex","visitors","cleanMarks","postcss","processor","stringified","inline","parser","syntax","error","helpers","plugins","Promise","reject","processing","runAsync","onRejected","async","catch","onFinally","lastPlugin","postcssVersion","listeners","event","version","filter","hasListener","keys","_runAsync","_callee","promise","stack","_promise","_this3","wrap","_context2","runOnRoot","t0","handleError","prepareVisitors","visitTick","t1","_step2$value","visitor","_context","subRoot","all","stop","delegateYield","t3","finish","abrupt","_this4","sync","str","stringifier","generate","getAsyncError","walkSync","visitSync","onFulfilled","_step5$value","visit","_visitors$visit$visit","_this5","warnings","content","messages","toStringTag","registerPostcss","comma","string","space","separators","array","current","func","inQuote","prevQuote","escape","letter","trim","dirname","relative","sep","cssString","mapOpts","originalCSS","usesFileUrls","absolute","memoizedFileURLs","Map","memoizedPaths","memoizedURLs","isInline","toBase64","annotation","outputFile","eol","previous","toUrl","path","sourcesContent","applySourceMap","clearAnnotation","isMap","generateMap","generateString","fromSourceMap","ignoreInvalidMapping","addMapping","generated","original","isSourcesContent","setSourcesContent","applyPrevMaps","isAnnotation","addAnnotation","noSource","mapping","sourcePath","match","lastIndexOf","semicolon","withContent","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","Buffer","btoa","unescape","encodeURIComponent","fileURL","encodeURI","NoWorkResult","_processor","_css","_opts","_map","self","defineProperty","_map$generate","_map$generate2","generatedCSS","generatedMap","_root","Stringifier","cloneNode","cloned","constructor","hasOwnProperty","call","j","sourceOffset","inputCSS","position","clone","postcssNode","insertAfter","overrides","between","_this$rangeBy","rangeBy","positionInside","word","inputString","endIndex","defaultType","raw","bookmark","foundSelf","_nodes","_","fixed","emitInputs","inputsNextIndex","toJSON","proxyCache","Proxy","getProxyProcessor","Parser","tokenizer","SAFE_COMMENT_NEIGHBOR","empty","spaces","createTokenizer","token","unnamedAtrule","init","open","params","brackets","endOfFile","nextToken","getPosition","spacesAndCommentsFromEnd","afterName","spacesAndCommentsFromStart","tokens","colon","founded","entries","_step$value","doubleColon","customProperty","findLastWithPosition","unknownWord","firstSpaces","precheckMissedSemicolon","important","stringFrom","spacesFromEnd","cache","hasWord","checkMissedSemicolon","unexpectedClose","unclosedBlock","ownSemicolon","bracket","back","unclosedBracket","freeSemicolon","emptyRule","endFile","clean","reduce","lastTokenType","Warning","initializer","warningPrinted","creator","process","LANG","transformer","processOpts","pluginOpts","atRule","existsSync","readFileSync","loadAnnotation","startWith","loadMap","uriMatch","decodeURIComponent","substr","baseUriMatch","atob","encoding","sourceMapString","mappings","_mappings","sections","comments","getAnnotationURL","substring","prevPath","loadFile","decodeInline","normalized","warning","ignore","values","DEFAULT_RAW","beforeClose","beforeComment","beforeDecl","beforeOpen","beforeRule","commentLeft","commentRight","emptyBody","indent","builder","rawValue","block","detect","buf","depth","step","body","own","rawCache","beforeAfter","method","toUpperCase","walkComments","parts","SINGLE_QUOTE","DOUBLE_QUOTE","BACKSLASH","SLASH","NEWLINE","SPACE","FEED","TAB","CR","OPEN_SQUARE","CLOSE_SQUARE","OPEN_PARENTHESES","CLOSE_PARENTHESES","OPEN_CURLY","CLOSE_CURLY","SEMICOLON","ASTERISK","COLON","AT","RE_AT_END","RE_WORD_END","RE_BAD_BRACKET","RE_HEX_ESCAPE","quote","currentToken","escaped","escapePos","options","valueOf","ignoreErrors","buffer","returned","unclosed","what","ignoreUnclosed","controlChar","fromCharCode","lastIndex","charAt","printed","range","opt","asap","noop","LAST_ERROR","IS_ERROR","fn","TypeError","_x","_y","_z","_A","doResolve","handle","deferred","_B","a","ex","tryCallOne","handleResolved","newValue","getThen","finale","bind","_C","Handler","res","b","tryCallTwo","_D","safeThen","TRUE","valuePromise","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","iterableToArray","iterable","onSettledFulfill","onSettledReject","mapAllSettled","item","getAggregateError","errors","AggregateError","arr","remaining","val","allSettled","race","any","promises","hasResolved","rejectionReasons","resolveOnce","rejectionCheck","DEFAULT_WHITELIST","ReferenceError","RangeError","enabled","disable","matchWhitelist","cls","enable","displayId","rejections","onUnhandled","allRejections","whitelist","logged","logError","_E","onHandled","clearTimeout","timeout","setTimeout","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","object","symbol","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","Cache","maxSize","_maxSize","clear","_size","_values","SPLIT_REGEX","DIGIT_REGEX","LEAD_DIGIT_REGEX","SPEC_CHAR_REGEX","CLEAN_QUOTES_REGEX","pathCache","setCache","getCache","normalizePath","part","isQuoted","shouldBeQuoted","hasLeadingNumber","hasSpecialChars","setter","len","getter","safe","thisArg","iter","idx","isBracket","_defineProperty","strictUriEncode","decodeComponent","splitOnFirst","filterObject","encodeFragmentIdentifier","validateArrayFormatSeparator","encode","strict","decode","keysSorter","sort","Number","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","isNaN","parseBooleans","query","assign","arrayFormat","arrayFormatSeparator","formatter","accumulator","exec","isEncodedArray","arrayValue","parserForArrayFormat","param","_splitOnFirst","_splitOnFirst2","_Object$keys","_i2","_Object$keys2","k","shouldFilter","skipNull","skipEmptyString","keyValueSep","encoderForArrayFormat","objectCopy","_i3","_Object$keys3","parseUrl","_splitOnFirst3","_splitOnFirst4","url_","hash","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","pick","_exports$parseUrl","exclude","exclusionFilter"],"sourceRoot":""}