worker-css-ba1d5bb7.js.map 470 KB

1
  1. {"version":3,"file":"worker-css-ba1d5bb7.js","sources":["../../node_modules/ace-builds/src-noconflict/worker-css.js"],"sourcesContent":["\"no use strict\";\n!(function(window) {\nif (typeof window.window != \"undefined\" && window.document)\n return;\nif (window.require && window.define)\n return;\n\nif (!window.console) {\n window.console = function() {\n var msgs = Array.prototype.slice.call(arguments, 0);\n postMessage({type: \"log\", data: msgs});\n };\n window.console.error =\n window.console.warn = \n window.console.log =\n window.console.trace = window.console;\n}\nwindow.window = window;\nwindow.ace = window;\n\nwindow.onerror = function(message, file, line, col, err) {\n postMessage({type: \"error\", data: {\n message: message,\n data: err && err.data,\n file: file,\n line: line, \n col: col,\n stack: err && err.stack\n }});\n};\n\nwindow.normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return window.normalizeModule(parentId, chunks[0]) + \"!\" + window.normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = (base ? base + \"/\" : \"\") + moduleName;\n \n while (moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/^\\.\\//, \"\").replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n \n return moduleName;\n};\n\nwindow.require = function require(parentId, id) {\n if (!id) {\n id = parentId;\n parentId = null;\n }\n if (!id.charAt)\n throw new Error(\"worker.js require() accepts only (parentId, id) as arguments\");\n\n id = window.normalizeModule(parentId, id);\n\n var module = window.require.modules[id];\n if (module) {\n if (!module.initialized) {\n module.initialized = true;\n module.exports = module.factory().exports;\n }\n return module.exports;\n }\n \n if (!window.require.tlns)\n return console.log(\"unable to load \" + id);\n \n var path = resolveModuleId(id, window.require.tlns);\n if (path.slice(-3) != \".js\") path += \".js\";\n \n window.require.id = id;\n window.require.modules[id] = {}; // prevent infinite loop on broken modules\n importScripts(path);\n return window.require(parentId, id);\n};\nfunction resolveModuleId(id, paths) {\n var testPath = id, tail = \"\";\n while (testPath) {\n var alias = paths[testPath];\n if (typeof alias == \"string\") {\n return alias + tail;\n } else if (alias) {\n return alias.location.replace(/\\/*$/, \"/\") + (tail || alias.main || alias.name);\n } else if (alias === false) {\n return \"\";\n }\n var i = testPath.lastIndexOf(\"/\");\n if (i === -1) break;\n tail = testPath.substr(i) + tail;\n testPath = testPath.slice(0, i);\n }\n return id;\n}\nwindow.require.modules = {};\nwindow.require.tlns = {};\n\nwindow.define = function(id, deps, factory) {\n if (arguments.length == 2) {\n factory = deps;\n if (typeof id != \"string\") {\n deps = id;\n id = window.require.id;\n }\n } else if (arguments.length == 1) {\n factory = id;\n deps = [];\n id = window.require.id;\n }\n \n if (typeof factory != \"function\") {\n window.require.modules[id] = {\n exports: factory,\n initialized: true\n };\n return;\n }\n\n if (!deps.length)\n // If there is no dependencies, we inject \"require\", \"exports\" and\n // \"module\" as dependencies, to provide CommonJS compatibility.\n deps = [\"require\", \"exports\", \"module\"];\n\n var req = function(childId) {\n return window.require(id, childId);\n };\n\n window.require.modules[id] = {\n exports: {},\n factory: function() {\n var module = this;\n var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) {\n switch (dep) {\n // Because \"require\", \"exports\" and \"module\" aren't actual\n // dependencies, we must handle them seperately.\n case \"require\": return req;\n case \"exports\": return module.exports;\n case \"module\": return module;\n // But for all other dependencies, we can just go ahead and\n // require them.\n default: return req(dep);\n }\n }));\n if (returnExports)\n module.exports = returnExports;\n return module;\n }\n };\n};\nwindow.define.amd = {};\nwindow.require.tlns = {};\nwindow.initBaseUrls = function initBaseUrls(topLevelNamespaces) {\n for (var i in topLevelNamespaces)\n this.require.tlns[i] = topLevelNamespaces[i];\n};\n\nwindow.initSender = function initSender() {\n\n var EventEmitter = window.require(\"ace/lib/event_emitter\").EventEmitter;\n var oop = window.require(\"ace/lib/oop\");\n \n var Sender = function() {};\n \n (function() {\n \n oop.implement(this, EventEmitter);\n \n this.callback = function(data, callbackId) {\n postMessage({\n type: \"call\",\n id: callbackId,\n data: data\n });\n };\n \n this.emit = function(name, data) {\n postMessage({\n type: \"event\",\n name: name,\n data: data\n });\n };\n \n }).call(Sender.prototype);\n \n return new Sender();\n};\n\nvar main = window.main = null;\nvar sender = window.sender = null;\n\nwindow.onmessage = function(e) {\n var msg = e.data;\n if (msg.event && sender) {\n sender._signal(msg.event, msg.data);\n }\n else if (msg.command) {\n if (main[msg.command])\n main[msg.command].apply(main, msg.args);\n else if (window[msg.command])\n window[msg.command].apply(window, msg.args);\n else\n throw new Error(\"Unknown command:\" + msg.command);\n }\n else if (msg.init) {\n window.initBaseUrls(msg.tlns);\n sender = window.sender = window.initSender();\n var clazz = this.require(msg.module)[msg.classname];\n main = window.main = new clazz(sender);\n }\n};\n})(this);\n\nace.define(\"ace/lib/oop\",[], function(require, exports, module){\"use strict\";\nexports.inherits = function (ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\nexports.mixin = function (obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\nexports.implement = function (proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/lang\",[], function(require, exports, module){\"use strict\";\nexports.last = function (a) {\n return a[a.length - 1];\n};\nexports.stringReverse = function (string) {\n return string.split(\"\").reverse().join(\"\");\n};\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n if (count >>= 1)\n string += string;\n }\n return result;\n};\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\nexports.copyObject = function (obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\nexports.copyArray = function (array) {\n var copy = [];\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] && typeof array[i] == \"object\")\n copy[i] = this.copyObject(array[i]);\n else\n copy[i] = array[i];\n }\n return copy;\n};\nexports.deepCopy = function deepCopy(obj) {\n if (typeof obj !== \"object\" || !obj)\n return obj;\n var copy;\n if (Array.isArray(obj)) {\n copy = [];\n for (var key = 0; key < obj.length; key++) {\n copy[key] = deepCopy(obj[key]);\n }\n return copy;\n }\n if (Object.prototype.toString.call(obj) !== \"[object Object]\")\n return obj;\n copy = {};\n for (var key in obj)\n copy[key] = deepCopy(obj[key]);\n return copy;\n};\nexports.arrayToMap = function (arr) {\n var map = {};\n for (var i = 0; i < arr.length; i++) {\n map[arr[i]] = 1;\n }\n return map;\n};\nexports.createMap = function (props) {\n var map = Object.create(null);\n for (var i in props) {\n map[i] = props[i];\n }\n return map;\n};\nexports.arrayRemove = function (array, value) {\n for (var i = 0; i <= array.length; i++) {\n if (value === array[i]) {\n array.splice(i, 1);\n }\n }\n};\nexports.escapeRegExp = function (str) {\n return str.replace(/([.*+?^${}()|[\\]\\/\\\\])/g, '\\\\$1');\n};\nexports.escapeHTML = function (str) {\n return (\"\" + str).replace(/&/g, \"&#38;\").replace(/\"/g, \"&#34;\").replace(/'/g, \"&#39;\").replace(/</g, \"&#60;\");\n};\nexports.getMatchOffsets = function (string, regExp) {\n var matches = [];\n string.replace(regExp, function (str) {\n matches.push({\n offset: arguments[arguments.length - 2],\n length: str.length\n });\n });\n return matches;\n};\nexports.deferredCall = function (fcn) {\n var timer = null;\n var callback = function () {\n timer = null;\n fcn();\n };\n var deferred = function (timeout) {\n deferred.cancel();\n timer = setTimeout(callback, timeout || 0);\n return deferred;\n };\n deferred.schedule = deferred;\n deferred.call = function () {\n this.cancel();\n fcn();\n return deferred;\n };\n deferred.cancel = function () {\n clearTimeout(timer);\n timer = null;\n return deferred;\n };\n deferred.isPending = function () {\n return timer;\n };\n return deferred;\n};\nexports.delayedCall = function (fcn, defaultTimeout) {\n var timer = null;\n var callback = function () {\n timer = null;\n fcn();\n };\n var _self = function (timeout) {\n if (timer == null)\n timer = setTimeout(callback, timeout || defaultTimeout);\n };\n _self.delay = function (timeout) {\n timer && clearTimeout(timer);\n timer = setTimeout(callback, timeout || defaultTimeout);\n };\n _self.schedule = _self;\n _self.call = function () {\n this.cancel();\n fcn();\n };\n _self.cancel = function () {\n timer && clearTimeout(timer);\n timer = null;\n };\n _self.isPending = function () {\n return timer;\n };\n return _self;\n};\n\n});\n\nace.define(\"ace/apply_delta\",[], function(require, exports, module){\"use strict\";\nfunction throwDeltaError(delta, errorText) {\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\nexports.applyDelta = function (docLines, delta, doNotValidate) {\n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n }\n else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n }\n else {\n docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn));\n }\n break;\n }\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[], function(require, exports, module){\"use strict\";\nvar EventEmitter = {};\nvar stopPropagation = function () { this.propagationStopped = true; };\nvar preventDefault = function () { this.defaultPrevented = true; };\nEventEmitter._emit =\n EventEmitter._dispatchEvent = function (eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n if (typeof e != \"object\" || !e)\n e = {};\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++) {\n listeners[i](e, this);\n if (e.propagationStopped)\n break;\n }\n if (defaultHandler && !e.defaultPrevented)\n return defaultHandler(e, this);\n };\nEventEmitter._signal = function (eventName, e) {\n var listeners = (this._eventRegistry || {})[eventName];\n if (!listeners)\n return;\n listeners = listeners.slice();\n for (var i = 0; i < listeners.length; i++)\n listeners[i](e, this);\n};\nEventEmitter.once = function (eventName, callback) {\n var _self = this;\n this.on(eventName, function newCallback() {\n _self.off(eventName, newCallback);\n callback.apply(null, arguments);\n });\n if (!callback) {\n return new Promise(function (resolve) {\n callback = resolve;\n });\n }\n};\nEventEmitter.setDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n handlers = this._defaultHandlers = { _disabled_: {} };\n if (handlers[eventName]) {\n var old = handlers[eventName];\n var disabled = handlers._disabled_[eventName];\n if (!disabled)\n handlers._disabled_[eventName] = disabled = [];\n disabled.push(old);\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n handlers[eventName] = callback;\n};\nEventEmitter.removeDefaultHandler = function (eventName, callback) {\n var handlers = this._defaultHandlers;\n if (!handlers)\n return;\n var disabled = handlers._disabled_[eventName];\n if (handlers[eventName] == callback) {\n if (disabled)\n this.setDefaultHandler(eventName, disabled.pop());\n }\n else if (disabled) {\n var i = disabled.indexOf(callback);\n if (i != -1)\n disabled.splice(i, 1);\n }\n};\nEventEmitter.on =\n EventEmitter.addEventListener = function (eventName, callback, capturing) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n listeners = this._eventRegistry[eventName] = [];\n if (listeners.indexOf(callback) == -1)\n listeners[capturing ? \"unshift\" : \"push\"](callback);\n return callback;\n };\nEventEmitter.off =\n EventEmitter.removeListener =\n EventEmitter.removeEventListener = function (eventName, callback) {\n this._eventRegistry = this._eventRegistry || {};\n var listeners = this._eventRegistry[eventName];\n if (!listeners)\n return;\n var index = listeners.indexOf(callback);\n if (index !== -1)\n listeners.splice(index, 1);\n };\nEventEmitter.removeAllListeners = function (eventName) {\n if (!eventName)\n this._eventRegistry = this._defaultHandlers = undefined;\n if (this._eventRegistry)\n this._eventRegistry[eventName] = undefined;\n if (this._defaultHandlers)\n this._defaultHandlers[eventName] = undefined;\n};\nexports.EventEmitter = EventEmitter;\n\n});\n\nace.define(\"ace/range\",[], function(require, exports, module){\"use strict\";\nvar comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = /** @class */ (function () {\n function Range(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n this.end = {\n row: endRow,\n column: endColumn\n };\n }\n Range.prototype.isEqual = function (range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n Range.prototype.toString = function () {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n Range.prototype.contains = function (row, column) {\n return this.compare(row, column) == 0;\n };\n Range.prototype.compareRange = function (range) {\n var cmp, end = range.end, start = range.start;\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n }\n else if (cmp == 0) {\n return 1;\n }\n else {\n return 0;\n }\n }\n else if (cmp == -1) {\n return -2;\n }\n else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n }\n else if (cmp == 1) {\n return 42;\n }\n else {\n return 0;\n }\n }\n };\n Range.prototype.comparePoint = function (p) {\n return this.compare(p.row, p.column);\n };\n Range.prototype.containsRange = function (range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n Range.prototype.intersects = function (range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n Range.prototype.isEnd = function (row, column) {\n return this.end.row == row && this.end.column == column;\n };\n Range.prototype.isStart = function (row, column) {\n return this.start.row == row && this.start.column == column;\n };\n Range.prototype.setStart = function (row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n }\n else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n Range.prototype.setEnd = function (row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n }\n else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n Range.prototype.inside = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideStart = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.insideEnd = function (row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n }\n else {\n return true;\n }\n }\n return false;\n };\n Range.prototype.compare = function (row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n if (row < this.start.row)\n return -1;\n if (row > this.end.row)\n return 1;\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n return 0;\n };\n Range.prototype.compareStart = function (row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareEnd = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.compareInside = function (row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n }\n else if (this.start.row == row && this.start.column == column) {\n return -1;\n }\n else {\n return this.compare(row, column);\n }\n };\n Range.prototype.clipRows = function (firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = { row: lastRow + 1, column: 0 };\n else if (this.end.row < firstRow)\n var end = { row: firstRow, column: 0 };\n if (this.start.row > lastRow)\n var start = { row: lastRow + 1, column: 0 };\n else if (this.start.row < firstRow)\n var start = { row: firstRow, column: 0 };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.extend = function (row, column) {\n var cmp = this.compare(row, column);\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = { row: row, column: column };\n else\n var end = { row: row, column: column };\n return Range.fromPoints(start || this.start, end || this.end);\n };\n Range.prototype.isEmpty = function () {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n Range.prototype.isMultiLine = function () {\n return (this.start.row !== this.end.row);\n };\n Range.prototype.clone = function () {\n return Range.fromPoints(this.start, this.end);\n };\n Range.prototype.collapseRows = function () {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n Range.prototype.toScreenRange = function (session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column);\n };\n Range.prototype.moveBy = function (row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n return Range;\n}());\nRange.fromPoints = function (start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\nRange.comparePoints = function (p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nexports.Range = Range;\n\n});\n\nace.define(\"ace/anchor\",[], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Anchor = /** @class */ (function () {\n function Anchor(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n }\n Anchor.prototype.getPosition = function () {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n Anchor.prototype.getDocument = function () {\n return this.document;\n };\n Anchor.prototype.onChange = function (delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n if (delta.start.row > this.row)\n return;\n var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n Anchor.prototype.setPosition = function (row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n }\n else {\n pos = this.$clipPositionToDocument(row, column);\n }\n if (this.row == pos.row && this.column == pos.column)\n return;\n var old = {\n row: this.row,\n column: this.column\n };\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n Anchor.prototype.detach = function () {\n this.document.off(\"change\", this.$onChange);\n };\n Anchor.prototype.attach = function (doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n Anchor.prototype.$clipPositionToDocument = function (row, column) {\n var pos = {};\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n if (column < 0)\n pos.column = 0;\n return pos;\n };\n return Anchor;\n}());\nAnchor.prototype.$insertRight = false;\noop.implement(Anchor.prototype, EventEmitter);\nfunction $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n}\nfunction $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n}\nexports.Anchor = Anchor;\n\n});\n\nace.define(\"ace/document\",[], function(require, exports, module){\"use strict\";\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\nvar Document = /** @class */ (function () {\n function Document(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n }\n else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({ row: 0, column: 0 }, textOrLines);\n }\n else {\n this.insert({ row: 0, column: 0 }, textOrLines);\n }\n }\n Document.prototype.setValue = function (text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({ row: 0, column: 0 }, text || \"\");\n };\n Document.prototype.getValue = function () {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n Document.prototype.createAnchor = function (row, column) {\n return new Anchor(this, row, column);\n };\n Document.prototype.$detectNewLine = function (text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineCharacter = function () {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n Document.prototype.setNewLineMode = function (newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n Document.prototype.getNewLineMode = function () {\n return this.$newLineMode;\n };\n Document.prototype.isNewLine = function (text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n Document.prototype.getLine = function (row) {\n return this.$lines[row] || \"\";\n };\n Document.prototype.getLines = function (firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n Document.prototype.getAllLines = function () {\n return this.getLines(0, this.getLength());\n };\n Document.prototype.getLength = function () {\n return this.$lines.length;\n };\n Document.prototype.getTextRange = function (range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n Document.prototype.getLinesForRange = function (range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n }\n else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n Document.prototype.insertLines = function (row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n Document.prototype.removeLines = function (firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n Document.prototype.insertNewLine = function (position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n Document.prototype.insert = function (position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n return this.insertMergedLines(position, this.$split(text));\n };\n Document.prototype.insertInLine = function (position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n return this.clonePos(end);\n };\n Document.prototype.clippedPos = function (row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n }\n else if (row < 0) {\n row = 0;\n }\n else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return { row: row, column: column };\n };\n Document.prototype.clonePos = function (pos) {\n return { row: pos.row, column: pos.column };\n };\n Document.prototype.pos = function (row, column) {\n return { row: row, column: column };\n };\n Document.prototype.$clipPosition = function (position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n }\n else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n Document.prototype.insertFullLines = function (row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n }\n else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({ row: row, column: column }, lines);\n };\n Document.prototype.insertMergedLines = function (position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n return this.clonePos(end);\n };\n Document.prototype.remove = function (range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n });\n return this.clonePos(start);\n };\n Document.prototype.removeInLine = function (row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({ start: start, end: end })\n }, true);\n return this.clonePos(start);\n };\n Document.prototype.removeFullLines = function (firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow);\n var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0);\n var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow);\n var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length);\n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n Document.prototype.removeNewLine = function (row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n Document.prototype.replace = function (range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n return end;\n };\n Document.prototype.applyDeltas = function (deltas) {\n for (var i = 0; i < deltas.length; i++) {\n this.applyDelta(deltas[i]);\n }\n };\n Document.prototype.revertDeltas = function (deltas) {\n for (var i = deltas.length - 1; i >= 0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n Document.prototype.applyDelta = function (delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n Document.prototype.$safeApplyDelta = function (delta) {\n var docLength = this.$lines.length;\n if (delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength) {\n this.applyDelta(delta);\n }\n };\n Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row;\n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n Document.prototype.revertDelta = function (delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n Document.prototype.indexToPosition = function (index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return { row: i, column: index + lines[i].length + newlineLength };\n }\n return { row: l - 1, column: index + lines[l - 1].length + newlineLength };\n };\n Document.prototype.positionToIndex = function (pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n return index + pos.column;\n };\n Document.prototype.$split = function (text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n return Document;\n}());\nDocument.prototype.$autoNewLine = \"\";\nDocument.prototype.$newLineMode = \"auto\";\noop.implement(Document.prototype, EventEmitter);\nexports.Document = Document;\n\n});\n\nace.define(\"ace/worker/mirror\",[], function(require, exports, module) {\n\"use strict\";\n\nvar Document = require(\"../document\").Document;\nvar lang = require(\"../lib/lang\");\n \nvar Mirror = exports.Mirror = function(sender) {\n this.sender = sender;\n var doc = this.doc = new Document(\"\");\n \n var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this));\n \n var _self = this;\n sender.on(\"change\", function(e) {\n var data = e.data;\n if (data[0].start) {\n doc.applyDeltas(data);\n } else {\n for (var i = 0; i < data.length; i += 2) {\n var d, err; \n if (Array.isArray(data[i+1])) {\n d = {action: \"insert\", start: data[i], lines: data[i+1]};\n } else {\n d = {action: \"remove\", start: data[i], end: data[i+1]};\n }\n \n if ((d.action == \"insert\" ? d.start : d.end).row >= doc.$lines.length) {\n err = new Error(\"Invalid delta\");\n err.data = {\n path: _self.$path,\n linesLength: doc.$lines.length,\n start: d.start,\n end: d.end\n };\n throw err;\n }\n\n doc.applyDelta(d, true);\n }\n }\n if (_self.$timeout)\n return deferredUpdate.schedule(_self.$timeout);\n _self.onUpdate();\n });\n};\n\n(function() {\n \n this.$timeout = 500;\n \n this.setTimeout = function(timeout) {\n this.$timeout = timeout;\n };\n \n this.setValue = function(value) {\n this.doc.setValue(value);\n this.deferredUpdate.schedule(this.$timeout);\n };\n \n this.getValue = function(callbackId) {\n this.sender.callback(this.doc.getValue(), callbackId);\n };\n \n this.onUpdate = function() {\n };\n \n this.isPending = function() {\n return this.deferredUpdate.isPending();\n };\n \n}).call(Mirror.prototype);\n\n});\n\nace.define(\"ace/mode/css/csslint\",[], function(require, exports, module) {\n\nvar CSSLint = (function(){\n var module = module || {},\n exports = exports || {};\nvar parserlib = (function () {\nvar require;\nrequire=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){\n\n\"use strict\";\n\nvar Colors = module.exports = {\n __proto__ : null,\n aliceblue : \"#f0f8ff\",\n antiquewhite : \"#faebd7\",\n aqua : \"#00ffff\",\n aquamarine : \"#7fffd4\",\n azure : \"#f0ffff\",\n beige : \"#f5f5dc\",\n bisque : \"#ffe4c4\",\n black : \"#000000\",\n blanchedalmond : \"#ffebcd\",\n blue : \"#0000ff\",\n blueviolet : \"#8a2be2\",\n brown : \"#a52a2a\",\n burlywood : \"#deb887\",\n cadetblue : \"#5f9ea0\",\n chartreuse : \"#7fff00\",\n chocolate : \"#d2691e\",\n coral : \"#ff7f50\",\n cornflowerblue : \"#6495ed\",\n cornsilk : \"#fff8dc\",\n crimson : \"#dc143c\",\n cyan : \"#00ffff\",\n darkblue : \"#00008b\",\n darkcyan : \"#008b8b\",\n darkgoldenrod : \"#b8860b\",\n darkgray : \"#a9a9a9\",\n darkgreen : \"#006400\",\n darkgrey : \"#a9a9a9\",\n darkkhaki : \"#bdb76b\",\n darkmagenta : \"#8b008b\",\n darkolivegreen : \"#556b2f\",\n darkorange : \"#ff8c00\",\n darkorchid : \"#9932cc\",\n darkred : \"#8b0000\",\n darksalmon : \"#e9967a\",\n darkseagreen : \"#8fbc8f\",\n darkslateblue : \"#483d8b\",\n darkslategray : \"#2f4f4f\",\n darkslategrey : \"#2f4f4f\",\n darkturquoise : \"#00ced1\",\n darkviolet : \"#9400d3\",\n deeppink : \"#ff1493\",\n deepskyblue : \"#00bfff\",\n dimgray : \"#696969\",\n dimgrey : \"#696969\",\n dodgerblue : \"#1e90ff\",\n firebrick : \"#b22222\",\n floralwhite : \"#fffaf0\",\n forestgreen : \"#228b22\",\n fuchsia : \"#ff00ff\",\n gainsboro : \"#dcdcdc\",\n ghostwhite : \"#f8f8ff\",\n gold : \"#ffd700\",\n goldenrod : \"#daa520\",\n gray : \"#808080\",\n green : \"#008000\",\n greenyellow : \"#adff2f\",\n grey : \"#808080\",\n honeydew : \"#f0fff0\",\n hotpink : \"#ff69b4\",\n indianred : \"#cd5c5c\",\n indigo : \"#4b0082\",\n ivory : \"#fffff0\",\n khaki : \"#f0e68c\",\n lavender : \"#e6e6fa\",\n lavenderblush : \"#fff0f5\",\n lawngreen : \"#7cfc00\",\n lemonchiffon : \"#fffacd\",\n lightblue : \"#add8e6\",\n lightcoral : \"#f08080\",\n lightcyan : \"#e0ffff\",\n lightgoldenrodyellow : \"#fafad2\",\n lightgray : \"#d3d3d3\",\n lightgreen : \"#90ee90\",\n lightgrey : \"#d3d3d3\",\n lightpink : \"#ffb6c1\",\n lightsalmon : \"#ffa07a\",\n lightseagreen : \"#20b2aa\",\n lightskyblue : \"#87cefa\",\n lightslategray : \"#778899\",\n lightslategrey : \"#778899\",\n lightsteelblue : \"#b0c4de\",\n lightyellow : \"#ffffe0\",\n lime : \"#00ff00\",\n limegreen : \"#32cd32\",\n linen : \"#faf0e6\",\n magenta : \"#ff00ff\",\n maroon : \"#800000\",\n mediumaquamarine : \"#66cdaa\",\n mediumblue : \"#0000cd\",\n mediumorchid : \"#ba55d3\",\n mediumpurple : \"#9370db\",\n mediumseagreen : \"#3cb371\",\n mediumslateblue : \"#7b68ee\",\n mediumspringgreen : \"#00fa9a\",\n mediumturquoise : \"#48d1cc\",\n mediumvioletred : \"#c71585\",\n midnightblue : \"#191970\",\n mintcream : \"#f5fffa\",\n mistyrose : \"#ffe4e1\",\n moccasin : \"#ffe4b5\",\n navajowhite : \"#ffdead\",\n navy : \"#000080\",\n oldlace : \"#fdf5e6\",\n olive : \"#808000\",\n olivedrab : \"#6b8e23\",\n orange : \"#ffa500\",\n orangered : \"#ff4500\",\n orchid : \"#da70d6\",\n palegoldenrod : \"#eee8aa\",\n palegreen : \"#98fb98\",\n paleturquoise : \"#afeeee\",\n palevioletred : \"#db7093\",\n papayawhip : \"#ffefd5\",\n peachpuff : \"#ffdab9\",\n peru : \"#cd853f\",\n pink : \"#ffc0cb\",\n plum : \"#dda0dd\",\n powderblue : \"#b0e0e6\",\n purple : \"#800080\",\n rebeccapurple : \"#663399\",\n red : \"#ff0000\",\n rosybrown : \"#bc8f8f\",\n royalblue : \"#4169e1\",\n saddlebrown : \"#8b4513\",\n salmon : \"#fa8072\",\n sandybrown : \"#f4a460\",\n seagreen : \"#2e8b57\",\n seashell : \"#fff5ee\",\n sienna : \"#a0522d\",\n silver : \"#c0c0c0\",\n skyblue : \"#87ceeb\",\n slateblue : \"#6a5acd\",\n slategray : \"#708090\",\n slategrey : \"#708090\",\n snow : \"#fffafa\",\n springgreen : \"#00ff7f\",\n steelblue : \"#4682b4\",\n tan : \"#d2b48c\",\n teal : \"#008080\",\n thistle : \"#d8bfd8\",\n tomato : \"#ff6347\",\n turquoise : \"#40e0d0\",\n violet : \"#ee82ee\",\n wheat : \"#f5deb3\",\n white : \"#ffffff\",\n whitesmoke : \"#f5f5f5\",\n yellow : \"#ffff00\",\n yellowgreen : \"#9acd32\",\n currentColor : \"The value of the 'color' property.\",\n activeborder : \"Active window border.\",\n activecaption : \"Active window caption.\",\n appworkspace : \"Background color of multiple document interface.\",\n background : \"Desktop background.\",\n buttonface : \"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.\",\n buttonhighlight : \"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.\",\n buttonshadow : \"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.\",\n buttontext : \"Text on push buttons.\",\n captiontext : \"Text in caption, size box, and scrollbar arrow box.\",\n graytext : \"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.\",\n greytext : \"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.\",\n highlight : \"Item(s) selected in a control.\",\n highlighttext : \"Text of item(s) selected in a control.\",\n inactiveborder : \"Inactive window border.\",\n inactivecaption : \"Inactive window caption.\",\n inactivecaptiontext : \"Color of text in an inactive caption.\",\n infobackground : \"Background color for tooltip controls.\",\n infotext : \"Text color for tooltip controls.\",\n menu : \"Menu background.\",\n menutext : \"Text in menus.\",\n scrollbar : \"Scroll bar gray area.\",\n threeddarkshadow : \"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",\n threedface : \"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",\n threedhighlight : \"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",\n threedlightshadow : \"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",\n threedshadow : \"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.\",\n window : \"Window background.\",\n windowframe : \"Window frame.\",\n windowtext : \"Text in windows.\"\n};\n\n},{}],2:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = Combinator;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction Combinator(text, line, col) {\n\n SyntaxUnit.call(this, text, line, col, Parser.COMBINATOR_TYPE);\n this.type = \"unknown\";\n if (/^\\s+$/.test(text)) {\n this.type = \"descendant\";\n } else if (text === \">\") {\n this.type = \"child\";\n } else if (text === \"+\") {\n this.type = \"adjacent-sibling\";\n } else if (text === \"~\") {\n this.type = \"sibling\";\n }\n\n}\n\nCombinator.prototype = new SyntaxUnit();\nCombinator.prototype.constructor = Combinator;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],3:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = Matcher;\n\nvar StringReader = require(\"../util/StringReader\");\nvar SyntaxError = require(\"../util/SyntaxError\");\nfunction Matcher(matchFunc, toString) {\n this.match = function(expression) {\n var result;\n expression.mark();\n result = matchFunc(expression);\n if (result) {\n expression.drop();\n } else {\n expression.restore();\n }\n return result;\n };\n this.toString = typeof toString === \"function\" ? toString : function() {\n return toString;\n };\n}\nMatcher.prec = {\n MOD: 5,\n SEQ: 4,\n ANDAND: 3,\n OROR: 2,\n ALT: 1\n};\nMatcher.parse = function(str) {\n var reader, eat, expr, oror, andand, seq, mod, term, result;\n reader = new StringReader(str);\n eat = function(matcher) {\n var result = reader.readMatch(matcher);\n if (result === null) {\n throw new SyntaxError(\n \"Expected \" + matcher, reader.getLine(), reader.getCol());\n }\n return result;\n };\n expr = function() {\n var m = [ oror() ];\n while (reader.readMatch(\" | \") !== null) {\n m.push(oror());\n }\n return m.length === 1 ? m[0] : Matcher.alt.apply(Matcher, m);\n };\n oror = function() {\n var m = [ andand() ];\n while (reader.readMatch(\" || \") !== null) {\n m.push(andand());\n }\n return m.length === 1 ? m[0] : Matcher.oror.apply(Matcher, m);\n };\n andand = function() {\n var m = [ seq() ];\n while (reader.readMatch(\" && \") !== null) {\n m.push(seq());\n }\n return m.length === 1 ? m[0] : Matcher.andand.apply(Matcher, m);\n };\n seq = function() {\n var m = [ mod() ];\n while (reader.readMatch(/^ (?![&|\\]])/) !== null) {\n m.push(mod());\n }\n return m.length === 1 ? m[0] : Matcher.seq.apply(Matcher, m);\n };\n mod = function() {\n var m = term();\n if (reader.readMatch(\"?\") !== null) {\n return m.question();\n } else if (reader.readMatch(\"*\") !== null) {\n return m.star();\n } else if (reader.readMatch(\"+\") !== null) {\n return m.plus();\n } else if (reader.readMatch(\"#\") !== null) {\n return m.hash();\n } else if (reader.readMatch(/^\\{\\s*/) !== null) {\n var min = eat(/^\\d+/);\n eat(/^\\s*,\\s*/);\n var max = eat(/^\\d+/);\n eat(/^\\s*\\}/);\n return m.braces(Number(min), Number(max));\n }\n return m;\n };\n term = function() {\n if (reader.readMatch(\"[ \") !== null) {\n var m = expr();\n eat(\" ]\");\n return m;\n }\n return Matcher.fromType(eat(/^[^ ?*+#{]+/));\n };\n result = expr();\n if (!reader.eof()) {\n throw new SyntaxError(\n \"Expected end of string\", reader.getLine(), reader.getCol());\n }\n return result;\n};\nMatcher.cast = function(m) {\n if (m instanceof Matcher) {\n return m;\n }\n return Matcher.parse(m);\n};\nMatcher.fromType = function(type) {\n var ValidationTypes = require(\"./ValidationTypes\");\n return new Matcher(function(expression) {\n return expression.hasNext() && ValidationTypes.isType(expression, type);\n }, type);\n};\nMatcher.seq = function() {\n var ms = Array.prototype.slice.call(arguments).map(Matcher.cast);\n if (ms.length === 1) {\n return ms[0];\n }\n return new Matcher(function(expression) {\n var i, result = true;\n for (i = 0; result && i < ms.length; i++) {\n result = ms[i].match(expression);\n }\n return result;\n }, function(prec) {\n var p = Matcher.prec.SEQ;\n var s = ms.map(function(m) {\n return m.toString(p);\n }).join(\" \");\n if (prec > p) {\n s = \"[ \" + s + \" ]\";\n }\n return s;\n });\n};\nMatcher.alt = function() {\n var ms = Array.prototype.slice.call(arguments).map(Matcher.cast);\n if (ms.length === 1) {\n return ms[0];\n }\n return new Matcher(function(expression) {\n var i, result = false;\n for (i = 0; !result && i < ms.length; i++) {\n result = ms[i].match(expression);\n }\n return result;\n }, function(prec) {\n var p = Matcher.prec.ALT;\n var s = ms.map(function(m) {\n return m.toString(p);\n }).join(\" | \");\n if (prec > p) {\n s = \"[ \" + s + \" ]\";\n }\n return s;\n });\n};\nMatcher.many = function(required) {\n var ms = Array.prototype.slice.call(arguments, 1).reduce(function(acc, v) {\n if (v.expand) {\n var ValidationTypes = require(\"./ValidationTypes\");\n acc.push.apply(acc, ValidationTypes.complex[v.expand].options);\n } else {\n acc.push(Matcher.cast(v));\n }\n return acc;\n }, []);\n\n if (required === true) {\n required = ms.map(function() {\n return true;\n });\n }\n\n var result = new Matcher(function(expression) {\n var seen = [], max = 0, pass = 0;\n var success = function(matchCount) {\n if (pass === 0) {\n max = Math.max(matchCount, max);\n return matchCount === ms.length;\n } else {\n return matchCount === max;\n }\n };\n var tryMatch = function(matchCount) {\n for (var i = 0; i < ms.length; i++) {\n if (seen[i]) {\n continue;\n }\n expression.mark();\n if (ms[i].match(expression)) {\n seen[i] = true;\n if (tryMatch(matchCount + (required === false || required[i] ? 1 : 0))) {\n expression.drop();\n return true;\n }\n expression.restore();\n seen[i] = false;\n } else {\n expression.drop();\n }\n }\n return success(matchCount);\n };\n if (!tryMatch(0)) {\n pass++;\n tryMatch(0);\n }\n\n if (required === false) {\n return max > 0;\n }\n for (var i = 0; i < ms.length; i++) {\n if (required[i] && !seen[i]) {\n return false;\n }\n }\n return true;\n }, function(prec) {\n var p = required === false ? Matcher.prec.OROR : Matcher.prec.ANDAND;\n var s = ms.map(function(m, i) {\n if (required !== false && !required[i]) {\n return m.toString(Matcher.prec.MOD) + \"?\";\n }\n return m.toString(p);\n }).join(required === false ? \" || \" : \" && \");\n if (prec > p) {\n s = \"[ \" + s + \" ]\";\n }\n return s;\n });\n result.options = ms;\n return result;\n};\nMatcher.andand = function() {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(true);\n return Matcher.many.apply(Matcher, args);\n};\nMatcher.oror = function() {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(false);\n return Matcher.many.apply(Matcher, args);\n};\nMatcher.prototype = {\n constructor: Matcher,\n match: function() {\n throw new Error(\"unimplemented\");\n },\n toString: function() {\n throw new Error(\"unimplemented\");\n },\n func: function() {\n return this.match.bind(this);\n },\n then: function(m) {\n return Matcher.seq(this, m);\n },\n or: function(m) {\n return Matcher.alt(this, m);\n },\n andand: function(m) {\n return Matcher.many(true, this, m);\n },\n oror: function(m) {\n return Matcher.many(false, this, m);\n },\n star: function() {\n return this.braces(0, Infinity, \"*\");\n },\n plus: function() {\n return this.braces(1, Infinity, \"+\");\n },\n question: function() {\n return this.braces(0, 1, \"?\");\n },\n hash: function() {\n return this.braces(1, Infinity, \"#\", Matcher.cast(\",\"));\n },\n braces: function(min, max, marker, optSep) {\n var m1 = this, m2 = optSep ? optSep.then(this) : this;\n if (!marker) {\n marker = \"{\" + min + \",\" + max + \"}\";\n }\n return new Matcher(function(expression) {\n var result = true, i;\n for (i = 0; i < max; i++) {\n if (i > 0 && optSep) {\n result = m2.match(expression);\n } else {\n result = m1.match(expression);\n }\n if (!result) {\n break;\n }\n }\n return i >= min;\n }, function() {\n return m1.toString(Matcher.prec.MOD) + marker;\n });\n }\n};\n\n},{\"../util/StringReader\":24,\"../util/SyntaxError\":25,\"./ValidationTypes\":21}],4:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = MediaFeature;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction MediaFeature(name, value) {\n\n SyntaxUnit.call(this, \"(\" + name + (value !== null ? \":\" + value : \"\") + \")\", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE);\n this.name = name;\n this.value = value;\n}\n\nMediaFeature.prototype = new SyntaxUnit();\nMediaFeature.prototype.constructor = MediaFeature;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],5:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = MediaQuery;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction MediaQuery(modifier, mediaType, features, line, col) {\n\n SyntaxUnit.call(this, (modifier ? modifier + \" \" : \"\") + (mediaType ? mediaType : \"\") + (mediaType && features.length > 0 ? \" and \" : \"\") + features.join(\" and \"), line, col, Parser.MEDIA_QUERY_TYPE);\n this.modifier = modifier;\n this.mediaType = mediaType;\n this.features = features;\n\n}\n\nMediaQuery.prototype = new SyntaxUnit();\nMediaQuery.prototype.constructor = MediaQuery;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],6:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = Parser;\n\nvar EventTarget = require(\"../util/EventTarget\");\nvar SyntaxError = require(\"../util/SyntaxError\");\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Combinator = require(\"./Combinator\");\nvar MediaFeature = require(\"./MediaFeature\");\nvar MediaQuery = require(\"./MediaQuery\");\nvar PropertyName = require(\"./PropertyName\");\nvar PropertyValue = require(\"./PropertyValue\");\nvar PropertyValuePart = require(\"./PropertyValuePart\");\nvar Selector = require(\"./Selector\");\nvar SelectorPart = require(\"./SelectorPart\");\nvar SelectorSubPart = require(\"./SelectorSubPart\");\nvar TokenStream = require(\"./TokenStream\");\nvar Tokens = require(\"./Tokens\");\nvar Validation = require(\"./Validation\");\nfunction Parser(options) {\n EventTarget.call(this);\n\n\n this.options = options || {};\n\n this._tokenStream = null;\n}\nParser.DEFAULT_TYPE = 0;\nParser.COMBINATOR_TYPE = 1;\nParser.MEDIA_FEATURE_TYPE = 2;\nParser.MEDIA_QUERY_TYPE = 3;\nParser.PROPERTY_NAME_TYPE = 4;\nParser.PROPERTY_VALUE_TYPE = 5;\nParser.PROPERTY_VALUE_PART_TYPE = 6;\nParser.SELECTOR_TYPE = 7;\nParser.SELECTOR_PART_TYPE = 8;\nParser.SELECTOR_SUB_PART_TYPE = 9;\n\nParser.prototype = function() {\n\n var proto = new EventTarget(), // new prototype\n prop,\n additions = {\n __proto__: null,\n constructor: Parser,\n DEFAULT_TYPE : 0,\n COMBINATOR_TYPE : 1,\n MEDIA_FEATURE_TYPE : 2,\n MEDIA_QUERY_TYPE : 3,\n PROPERTY_NAME_TYPE : 4,\n PROPERTY_VALUE_TYPE : 5,\n PROPERTY_VALUE_PART_TYPE : 6,\n SELECTOR_TYPE : 7,\n SELECTOR_PART_TYPE : 8,\n SELECTOR_SUB_PART_TYPE : 9,\n\n _stylesheet: function() {\n\n var tokenStream = this._tokenStream,\n count,\n token,\n tt;\n\n this.fire(\"startstylesheet\");\n this._charset();\n\n this._skipCruft();\n while (tokenStream.peek() === Tokens.IMPORT_SYM) {\n this._import();\n this._skipCruft();\n }\n while (tokenStream.peek() === Tokens.NAMESPACE_SYM) {\n this._namespace();\n this._skipCruft();\n }\n tt = tokenStream.peek();\n while (tt > Tokens.EOF) {\n\n try {\n\n switch (tt) {\n case Tokens.MEDIA_SYM:\n this._media();\n this._skipCruft();\n break;\n case Tokens.PAGE_SYM:\n this._page();\n this._skipCruft();\n break;\n case Tokens.FONT_FACE_SYM:\n this._font_face();\n this._skipCruft();\n break;\n case Tokens.KEYFRAMES_SYM:\n this._keyframes();\n this._skipCruft();\n break;\n case Tokens.VIEWPORT_SYM:\n this._viewport();\n this._skipCruft();\n break;\n case Tokens.DOCUMENT_SYM:\n this._document();\n this._skipCruft();\n break;\n case Tokens.SUPPORTS_SYM:\n this._supports();\n this._skipCruft();\n break;\n case Tokens.UNKNOWN_SYM: // unknown @ rule\n tokenStream.get();\n if (!this.options.strict) {\n this.fire({\n type: \"error\",\n error: null,\n message: \"Unknown @ rule: \" + tokenStream.LT(0).value + \".\",\n line: tokenStream.LT(0).startLine,\n col: tokenStream.LT(0).startCol\n });\n count = 0;\n while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) === Tokens.LBRACE) {\n count++; // keep track of nesting depth\n }\n\n while (count) {\n tokenStream.advance([Tokens.RBRACE]);\n count--;\n }\n\n } else {\n throw new SyntaxError(\"Unknown @ rule.\", tokenStream.LT(0).startLine, tokenStream.LT(0).startCol);\n }\n break;\n case Tokens.S:\n this._readWhitespace();\n break;\n default:\n if (!this._ruleset()) {\n switch (tt) {\n case Tokens.CHARSET_SYM:\n token = tokenStream.LT(1);\n this._charset(false);\n throw new SyntaxError(\"@charset not allowed here.\", token.startLine, token.startCol);\n case Tokens.IMPORT_SYM:\n token = tokenStream.LT(1);\n this._import(false);\n throw new SyntaxError(\"@import not allowed here.\", token.startLine, token.startCol);\n case Tokens.NAMESPACE_SYM:\n token = tokenStream.LT(1);\n this._namespace(false);\n throw new SyntaxError(\"@namespace not allowed here.\", token.startLine, token.startCol);\n default:\n tokenStream.get(); // get the last token\n this._unexpectedToken(tokenStream.token());\n }\n\n }\n }\n } catch (ex) {\n if (ex instanceof SyntaxError && !this.options.strict) {\n this.fire({\n type: \"error\",\n error: ex,\n message: ex.message,\n line: ex.line,\n col: ex.col\n });\n } else {\n throw ex;\n }\n }\n\n tt = tokenStream.peek();\n }\n\n if (tt !== Tokens.EOF) {\n this._unexpectedToken(tokenStream.token());\n }\n\n this.fire(\"endstylesheet\");\n },\n\n _charset: function(emit) {\n var tokenStream = this._tokenStream,\n charset,\n token,\n line,\n col;\n\n if (tokenStream.match(Tokens.CHARSET_SYM)) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.STRING);\n\n token = tokenStream.token();\n charset = token.value;\n\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.SEMICOLON);\n\n if (emit !== false) {\n this.fire({\n type: \"charset\",\n charset:charset,\n line: line,\n col: col\n });\n }\n }\n },\n\n _import: function(emit) {\n\n var tokenStream = this._tokenStream,\n uri,\n importToken,\n mediaList = [];\n tokenStream.mustMatch(Tokens.IMPORT_SYM);\n importToken = tokenStream.token();\n this._readWhitespace();\n\n tokenStream.mustMatch([Tokens.STRING, Tokens.URI]);\n uri = tokenStream.token().value.replace(/^(?:url\\()?[\"']?([^\"']+?)[\"']?\\)?$/, \"$1\");\n\n this._readWhitespace();\n\n mediaList = this._media_query_list();\n tokenStream.mustMatch(Tokens.SEMICOLON);\n this._readWhitespace();\n\n if (emit !== false) {\n this.fire({\n type: \"import\",\n uri: uri,\n media: mediaList,\n line: importToken.startLine,\n col: importToken.startCol\n });\n }\n\n },\n\n _namespace: function(emit) {\n\n var tokenStream = this._tokenStream,\n line,\n col,\n prefix,\n uri;\n tokenStream.mustMatch(Tokens.NAMESPACE_SYM);\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n this._readWhitespace();\n if (tokenStream.match(Tokens.IDENT)) {\n prefix = tokenStream.token().value;\n this._readWhitespace();\n }\n\n tokenStream.mustMatch([Tokens.STRING, Tokens.URI]);\n uri = tokenStream.token().value.replace(/(?:url\\()?[\"']([^\"']+)[\"']\\)?/, \"$1\");\n\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.SEMICOLON);\n this._readWhitespace();\n\n if (emit !== false) {\n this.fire({\n type: \"namespace\",\n prefix: prefix,\n uri: uri,\n line: line,\n col: col\n });\n }\n\n },\n\n _supports: function(emit) {\n var tokenStream = this._tokenStream,\n line,\n col;\n\n if (tokenStream.match(Tokens.SUPPORTS_SYM)) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this._readWhitespace();\n this._supports_condition();\n this._readWhitespace();\n\n tokenStream.mustMatch(Tokens.LBRACE);\n this._readWhitespace();\n\n if (emit !== false) {\n this.fire({\n type: \"startsupports\",\n line: line,\n col: col\n });\n }\n\n while (true) {\n if (!this._ruleset()) {\n break;\n }\n }\n\n tokenStream.mustMatch(Tokens.RBRACE);\n this._readWhitespace();\n\n this.fire({\n type: \"endsupports\",\n line: line,\n col: col\n });\n }\n },\n\n _supports_condition: function() {\n var tokenStream = this._tokenStream,\n ident;\n\n if (tokenStream.match(Tokens.IDENT)) {\n ident = tokenStream.token().value.toLowerCase();\n\n if (ident === \"not\") {\n tokenStream.mustMatch(Tokens.S);\n this._supports_condition_in_parens();\n } else {\n tokenStream.unget();\n }\n } else {\n this._supports_condition_in_parens();\n this._readWhitespace();\n\n while (tokenStream.peek() === Tokens.IDENT) {\n ident = tokenStream.LT(1).value.toLowerCase();\n if (ident === \"and\" || ident === \"or\") {\n tokenStream.mustMatch(Tokens.IDENT);\n this._readWhitespace();\n this._supports_condition_in_parens();\n this._readWhitespace();\n }\n }\n }\n },\n\n _supports_condition_in_parens: function() {\n var tokenStream = this._tokenStream,\n ident;\n\n if (tokenStream.match(Tokens.LPAREN)) {\n this._readWhitespace();\n if (tokenStream.match(Tokens.IDENT)) {\n ident = tokenStream.token().value.toLowerCase();\n if (ident === \"not\") {\n this._readWhitespace();\n this._supports_condition();\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.RPAREN);\n } else {\n tokenStream.unget();\n this._supports_declaration_condition(false);\n }\n } else {\n this._supports_condition();\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.RPAREN);\n }\n } else {\n this._supports_declaration_condition();\n }\n },\n\n _supports_declaration_condition: function(requireStartParen) {\n var tokenStream = this._tokenStream;\n\n if (requireStartParen !== false) {\n tokenStream.mustMatch(Tokens.LPAREN);\n }\n this._readWhitespace();\n this._declaration();\n tokenStream.mustMatch(Tokens.RPAREN);\n },\n\n _media: function() {\n var tokenStream = this._tokenStream,\n line,\n col,\n mediaList; // = [];\n tokenStream.mustMatch(Tokens.MEDIA_SYM);\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this._readWhitespace();\n\n mediaList = this._media_query_list();\n\n tokenStream.mustMatch(Tokens.LBRACE);\n this._readWhitespace();\n\n this.fire({\n type: \"startmedia\",\n media: mediaList,\n line: line,\n col: col\n });\n\n while (true) {\n if (tokenStream.peek() === Tokens.PAGE_SYM) {\n this._page();\n } else if (tokenStream.peek() === Tokens.FONT_FACE_SYM) {\n this._font_face();\n } else if (tokenStream.peek() === Tokens.VIEWPORT_SYM) {\n this._viewport();\n } else if (tokenStream.peek() === Tokens.DOCUMENT_SYM) {\n this._document();\n } else if (tokenStream.peek() === Tokens.SUPPORTS_SYM) {\n this._supports();\n } else if (tokenStream.peek() === Tokens.MEDIA_SYM) {\n this._media();\n } else if (!this._ruleset()) {\n break;\n }\n }\n\n tokenStream.mustMatch(Tokens.RBRACE);\n this._readWhitespace();\n\n this.fire({\n type: \"endmedia\",\n media: mediaList,\n line: line,\n col: col\n });\n },\n _media_query_list: function() {\n var tokenStream = this._tokenStream,\n mediaList = [];\n\n\n this._readWhitespace();\n\n if (tokenStream.peek() === Tokens.IDENT || tokenStream.peek() === Tokens.LPAREN) {\n mediaList.push(this._media_query());\n }\n\n while (tokenStream.match(Tokens.COMMA)) {\n this._readWhitespace();\n mediaList.push(this._media_query());\n }\n\n return mediaList;\n },\n _media_query: function() {\n var tokenStream = this._tokenStream,\n type = null,\n ident = null,\n token = null,\n expressions = [];\n\n if (tokenStream.match(Tokens.IDENT)) {\n ident = tokenStream.token().value.toLowerCase();\n if (ident !== \"only\" && ident !== \"not\") {\n tokenStream.unget();\n ident = null;\n } else {\n token = tokenStream.token();\n }\n }\n\n this._readWhitespace();\n\n if (tokenStream.peek() === Tokens.IDENT) {\n type = this._media_type();\n if (token === null) {\n token = tokenStream.token();\n }\n } else if (tokenStream.peek() === Tokens.LPAREN) {\n if (token === null) {\n token = tokenStream.LT(1);\n }\n expressions.push(this._media_expression());\n }\n\n if (type === null && expressions.length === 0) {\n return null;\n } else {\n this._readWhitespace();\n while (tokenStream.match(Tokens.IDENT)) {\n if (tokenStream.token().value.toLowerCase() !== \"and\") {\n this._unexpectedToken(tokenStream.token());\n }\n\n this._readWhitespace();\n expressions.push(this._media_expression());\n }\n }\n\n return new MediaQuery(ident, type, expressions, token.startLine, token.startCol);\n },\n _media_type: function() {\n return this._media_feature();\n },\n _media_expression: function() {\n var tokenStream = this._tokenStream,\n feature = null,\n token,\n expression = null;\n\n tokenStream.mustMatch(Tokens.LPAREN);\n this._readWhitespace();\n\n feature = this._media_feature();\n this._readWhitespace();\n\n if (tokenStream.match(Tokens.COLON)) {\n this._readWhitespace();\n token = tokenStream.LT(1);\n expression = this._expression();\n }\n\n tokenStream.mustMatch(Tokens.RPAREN);\n this._readWhitespace();\n\n return new MediaFeature(feature, expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null);\n },\n _media_feature: function() {\n var tokenStream = this._tokenStream;\n\n this._readWhitespace();\n\n tokenStream.mustMatch(Tokens.IDENT);\n\n return SyntaxUnit.fromToken(tokenStream.token());\n },\n _page: function() {\n var tokenStream = this._tokenStream,\n line,\n col,\n identifier = null,\n pseudoPage = null;\n tokenStream.mustMatch(Tokens.PAGE_SYM);\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this._readWhitespace();\n\n if (tokenStream.match(Tokens.IDENT)) {\n identifier = tokenStream.token().value;\n if (identifier.toLowerCase() === \"auto\") {\n this._unexpectedToken(tokenStream.token());\n }\n }\n if (tokenStream.peek() === Tokens.COLON) {\n pseudoPage = this._pseudo_page();\n }\n\n this._readWhitespace();\n\n this.fire({\n type: \"startpage\",\n id: identifier,\n pseudo: pseudoPage,\n line: line,\n col: col\n });\n\n this._readDeclarations(true, true);\n\n this.fire({\n type: \"endpage\",\n id: identifier,\n pseudo: pseudoPage,\n line: line,\n col: col\n });\n\n },\n _margin: function() {\n var tokenStream = this._tokenStream,\n line,\n col,\n marginSym = this._margin_sym();\n\n if (marginSym) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this.fire({\n type: \"startpagemargin\",\n margin: marginSym,\n line: line,\n col: col\n });\n\n this._readDeclarations(true);\n\n this.fire({\n type: \"endpagemargin\",\n margin: marginSym,\n line: line,\n col: col\n });\n return true;\n } else {\n return false;\n }\n },\n _margin_sym: function() {\n\n var tokenStream = this._tokenStream;\n\n if (tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM,\n Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM,\n Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM,\n Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM,\n Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM,\n Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM,\n Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) {\n return SyntaxUnit.fromToken(tokenStream.token());\n } else {\n return null;\n }\n\n },\n\n _pseudo_page: function() {\n\n var tokenStream = this._tokenStream;\n\n tokenStream.mustMatch(Tokens.COLON);\n tokenStream.mustMatch(Tokens.IDENT);\n\n return tokenStream.token().value;\n },\n\n _font_face: function() {\n var tokenStream = this._tokenStream,\n line,\n col;\n tokenStream.mustMatch(Tokens.FONT_FACE_SYM);\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this._readWhitespace();\n\n this.fire({\n type: \"startfontface\",\n line: line,\n col: col\n });\n\n this._readDeclarations(true);\n\n this.fire({\n type: \"endfontface\",\n line: line,\n col: col\n });\n },\n\n _viewport: function() {\n var tokenStream = this._tokenStream,\n line,\n col;\n\n tokenStream.mustMatch(Tokens.VIEWPORT_SYM);\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n\n this._readWhitespace();\n\n this.fire({\n type: \"startviewport\",\n line: line,\n col: col\n });\n\n this._readDeclarations(true);\n\n this.fire({\n type: \"endviewport\",\n line: line,\n col: col\n });\n\n },\n\n _document: function() {\n\n var tokenStream = this._tokenStream,\n token,\n functions = [],\n prefix = \"\";\n\n tokenStream.mustMatch(Tokens.DOCUMENT_SYM);\n token = tokenStream.token();\n if (/^@-([^-]+)-/.test(token.value)) {\n prefix = RegExp.$1;\n }\n\n this._readWhitespace();\n functions.push(this._document_function());\n\n while (tokenStream.match(Tokens.COMMA)) {\n this._readWhitespace();\n functions.push(this._document_function());\n }\n\n tokenStream.mustMatch(Tokens.LBRACE);\n this._readWhitespace();\n\n this.fire({\n type: \"startdocument\",\n functions: functions,\n prefix: prefix,\n line: token.startLine,\n col: token.startCol\n });\n\n var ok = true;\n while (ok) {\n switch (tokenStream.peek()) {\n case Tokens.PAGE_SYM:\n this._page();\n break;\n case Tokens.FONT_FACE_SYM:\n this._font_face();\n break;\n case Tokens.VIEWPORT_SYM:\n this._viewport();\n break;\n case Tokens.MEDIA_SYM:\n this._media();\n break;\n case Tokens.KEYFRAMES_SYM:\n this._keyframes();\n break;\n case Tokens.DOCUMENT_SYM:\n this._document();\n break;\n default:\n ok = Boolean(this._ruleset());\n }\n }\n\n tokenStream.mustMatch(Tokens.RBRACE);\n token = tokenStream.token();\n this._readWhitespace();\n\n this.fire({\n type: \"enddocument\",\n functions: functions,\n prefix: prefix,\n line: token.startLine,\n col: token.startCol\n });\n },\n\n _document_function: function() {\n\n var tokenStream = this._tokenStream,\n value;\n\n if (tokenStream.match(Tokens.URI)) {\n value = tokenStream.token().value;\n this._readWhitespace();\n } else {\n value = this._function();\n }\n\n return value;\n },\n\n _operator: function(inFunction) {\n\n var tokenStream = this._tokenStream,\n token = null;\n\n if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) ||\n inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS])) {\n token = tokenStream.token();\n this._readWhitespace();\n }\n return token ? PropertyValuePart.fromToken(token) : null;\n\n },\n\n _combinator: function() {\n\n var tokenStream = this._tokenStream,\n value = null,\n token;\n\n if (tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])) {\n token = tokenStream.token();\n value = new Combinator(token.value, token.startLine, token.startCol);\n this._readWhitespace();\n }\n\n return value;\n },\n\n _unary_operator: function() {\n\n var tokenStream = this._tokenStream;\n\n if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])) {\n return tokenStream.token().value;\n } else {\n return null;\n }\n },\n\n _property: function() {\n\n var tokenStream = this._tokenStream,\n value = null,\n hack = null,\n propertyName = \"\",\n token,\n line,\n col;\n if (tokenStream.peek() === Tokens.STAR && this.options.starHack) {\n tokenStream.get();\n token = tokenStream.token();\n hack = token.value;\n line = token.startLine;\n col = token.startCol;\n }\n if (tokenStream.peek() === Tokens.MINUS) {\n tokenStream.get();\n token = tokenStream.token();\n propertyName = token.value;\n line = token.startLine;\n col = token.startCol;\n }\n\n if (tokenStream.match(Tokens.IDENT)) {\n token = tokenStream.token();\n propertyName += token.value;\n if (propertyName.charAt(0) === \"_\" && this.options.underscoreHack) {\n hack = \"_\";\n propertyName = propertyName.substring(1);\n }\n\n value = new PropertyName(propertyName, hack, line || token.startLine, col || token.startCol);\n this._readWhitespace();\n } else {\n var tt = tokenStream.peek();\n if (tt !== Tokens.EOF && tt !== Tokens.RBRACE) {\n this._unexpectedToken(tokenStream.LT(1));\n }\n }\n\n return value;\n },\n _ruleset: function() {\n\n var tokenStream = this._tokenStream,\n tt,\n selectors;\n try {\n selectors = this._selectors_group();\n } catch (ex) {\n if (ex instanceof SyntaxError && !this.options.strict) {\n this.fire({\n type: \"error\",\n error: ex,\n message: ex.message,\n line: ex.line,\n col: ex.col\n });\n tt = tokenStream.advance([Tokens.RBRACE]);\n if (tt === Tokens.RBRACE) {\n } else {\n throw ex;\n }\n\n } else {\n throw ex;\n }\n return true;\n }\n if (selectors) {\n\n this.fire({\n type: \"startrule\",\n selectors: selectors,\n line: selectors[0].line,\n col: selectors[0].col\n });\n\n this._readDeclarations(true);\n\n this.fire({\n type: \"endrule\",\n selectors: selectors,\n line: selectors[0].line,\n col: selectors[0].col\n });\n\n }\n\n return selectors;\n\n },\n _selectors_group: function() {\n var tokenStream = this._tokenStream,\n selectors = [],\n selector;\n\n selector = this._selector();\n if (selector !== null) {\n\n selectors.push(selector);\n while (tokenStream.match(Tokens.COMMA)) {\n this._readWhitespace();\n selector = this._selector();\n if (selector !== null) {\n selectors.push(selector);\n } else {\n this._unexpectedToken(tokenStream.LT(1));\n }\n }\n }\n\n return selectors.length ? selectors : null;\n },\n _selector: function() {\n\n var tokenStream = this._tokenStream,\n selector = [],\n nextSelector = null,\n combinator = null,\n ws = null;\n nextSelector = this._simple_selector_sequence();\n if (nextSelector === null) {\n return null;\n }\n\n selector.push(nextSelector);\n\n do {\n combinator = this._combinator();\n\n if (combinator !== null) {\n selector.push(combinator);\n nextSelector = this._simple_selector_sequence();\n if (nextSelector === null) {\n this._unexpectedToken(tokenStream.LT(1));\n } else {\n selector.push(nextSelector);\n }\n } else {\n if (this._readWhitespace()) {\n ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol);\n combinator = this._combinator();\n nextSelector = this._simple_selector_sequence();\n if (nextSelector === null) {\n if (combinator !== null) {\n this._unexpectedToken(tokenStream.LT(1));\n }\n } else {\n\n if (combinator !== null) {\n selector.push(combinator);\n } else {\n selector.push(ws);\n }\n\n selector.push(nextSelector);\n }\n } else {\n break;\n }\n\n }\n } while (true);\n\n return new Selector(selector, selector[0].line, selector[0].col);\n },\n _simple_selector_sequence: function() {\n\n var tokenStream = this._tokenStream,\n elementName = null,\n modifiers = [],\n selectorText = \"\",\n components = [\n function() {\n return tokenStream.match(Tokens.HASH) ?\n new SelectorSubPart(tokenStream.token().value, \"id\", tokenStream.token().startLine, tokenStream.token().startCol) :\n null;\n },\n this._class,\n this._attrib,\n this._pseudo,\n this._negation\n ],\n i = 0,\n len = components.length,\n component = null,\n line,\n col;\n line = tokenStream.LT(1).startLine;\n col = tokenStream.LT(1).startCol;\n\n elementName = this._type_selector();\n if (!elementName) {\n elementName = this._universal();\n }\n\n if (elementName !== null) {\n selectorText += elementName;\n }\n\n while (true) {\n if (tokenStream.peek() === Tokens.S) {\n break;\n }\n while (i < len && component === null) {\n component = components[i++].call(this);\n }\n\n if (component === null) {\n if (selectorText === \"\") {\n return null;\n } else {\n break;\n }\n } else {\n i = 0;\n modifiers.push(component);\n selectorText += component.toString();\n component = null;\n }\n }\n\n\n return selectorText !== \"\" ?\n new SelectorPart(elementName, modifiers, selectorText, line, col) :\n null;\n },\n _type_selector: function() {\n\n var tokenStream = this._tokenStream,\n ns = this._namespace_prefix(),\n elementName = this._element_name();\n\n if (!elementName) {\n if (ns) {\n tokenStream.unget();\n if (ns.length > 1) {\n tokenStream.unget();\n }\n }\n\n return null;\n } else {\n if (ns) {\n elementName.text = ns + elementName.text;\n elementName.col -= ns.length;\n }\n return elementName;\n }\n },\n _class: function() {\n\n var tokenStream = this._tokenStream,\n token;\n\n if (tokenStream.match(Tokens.DOT)) {\n tokenStream.mustMatch(Tokens.IDENT);\n token = tokenStream.token();\n return new SelectorSubPart(\".\" + token.value, \"class\", token.startLine, token.startCol - 1);\n } else {\n return null;\n }\n\n },\n _element_name: function() {\n\n var tokenStream = this._tokenStream,\n token;\n\n if (tokenStream.match(Tokens.IDENT)) {\n token = tokenStream.token();\n return new SelectorSubPart(token.value, \"elementName\", token.startLine, token.startCol);\n\n } else {\n return null;\n }\n },\n _namespace_prefix: function() {\n var tokenStream = this._tokenStream,\n value = \"\";\n if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE) {\n\n if (tokenStream.match([Tokens.IDENT, Tokens.STAR])) {\n value += tokenStream.token().value;\n }\n\n tokenStream.mustMatch(Tokens.PIPE);\n value += \"|\";\n\n }\n\n return value.length ? value : null;\n },\n _universal: function() {\n var tokenStream = this._tokenStream,\n value = \"\",\n ns;\n\n ns = this._namespace_prefix();\n if (ns) {\n value += ns;\n }\n\n if (tokenStream.match(Tokens.STAR)) {\n value += \"*\";\n }\n\n return value.length ? value : null;\n\n },\n _attrib: function() {\n\n var tokenStream = this._tokenStream,\n value = null,\n ns,\n token;\n\n if (tokenStream.match(Tokens.LBRACKET)) {\n token = tokenStream.token();\n value = token.value;\n value += this._readWhitespace();\n\n ns = this._namespace_prefix();\n\n if (ns) {\n value += ns;\n }\n\n tokenStream.mustMatch(Tokens.IDENT);\n value += tokenStream.token().value;\n value += this._readWhitespace();\n\n if (tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH,\n Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])) {\n\n value += tokenStream.token().value;\n value += this._readWhitespace();\n\n tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]);\n value += tokenStream.token().value;\n value += this._readWhitespace();\n }\n\n tokenStream.mustMatch(Tokens.RBRACKET);\n\n return new SelectorSubPart(value + \"]\", \"attribute\", token.startLine, token.startCol);\n } else {\n return null;\n }\n },\n _pseudo: function() {\n\n var tokenStream = this._tokenStream,\n pseudo = null,\n colons = \":\",\n line,\n col;\n\n if (tokenStream.match(Tokens.COLON)) {\n\n if (tokenStream.match(Tokens.COLON)) {\n colons += \":\";\n }\n\n if (tokenStream.match(Tokens.IDENT)) {\n pseudo = tokenStream.token().value;\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol - colons.length;\n } else if (tokenStream.peek() === Tokens.FUNCTION) {\n line = tokenStream.LT(1).startLine;\n col = tokenStream.LT(1).startCol - colons.length;\n pseudo = this._functional_pseudo();\n }\n\n if (pseudo) {\n pseudo = new SelectorSubPart(colons + pseudo, \"pseudo\", line, col);\n } else {\n var startLine = tokenStream.LT(1).startLine,\n startCol = tokenStream.LT(0).startCol;\n throw new SyntaxError(\"Expected a `FUNCTION` or `IDENT` after colon at line \" + startLine + \", col \" + startCol + \".\", startLine, startCol);\n }\n }\n\n return pseudo;\n },\n _functional_pseudo: function() {\n\n var tokenStream = this._tokenStream,\n value = null;\n\n if (tokenStream.match(Tokens.FUNCTION)) {\n value = tokenStream.token().value;\n value += this._readWhitespace();\n value += this._expression();\n tokenStream.mustMatch(Tokens.RPAREN);\n value += \")\";\n }\n\n return value;\n },\n _expression: function() {\n\n var tokenStream = this._tokenStream,\n value = \"\";\n\n while (tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION,\n Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH,\n Tokens.FREQ, Tokens.ANGLE, Tokens.TIME,\n Tokens.RESOLUTION, Tokens.SLASH])) {\n\n value += tokenStream.token().value;\n value += this._readWhitespace();\n }\n\n return value.length ? value : null;\n\n },\n _negation: function() {\n\n var tokenStream = this._tokenStream,\n line,\n col,\n value = \"\",\n arg,\n subpart = null;\n\n if (tokenStream.match(Tokens.NOT)) {\n value = tokenStream.token().value;\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n value += this._readWhitespace();\n arg = this._negation_arg();\n value += arg;\n value += this._readWhitespace();\n tokenStream.match(Tokens.RPAREN);\n value += tokenStream.token().value;\n\n subpart = new SelectorSubPart(value, \"not\", line, col);\n subpart.args.push(arg);\n }\n\n return subpart;\n },\n _negation_arg: function() {\n\n var tokenStream = this._tokenStream,\n args = [\n this._type_selector,\n this._universal,\n function() {\n return tokenStream.match(Tokens.HASH) ?\n new SelectorSubPart(tokenStream.token().value, \"id\", tokenStream.token().startLine, tokenStream.token().startCol) :\n null;\n },\n this._class,\n this._attrib,\n this._pseudo\n ],\n arg = null,\n i = 0,\n len = args.length,\n line,\n col,\n part;\n\n line = tokenStream.LT(1).startLine;\n col = tokenStream.LT(1).startCol;\n\n while (i < len && arg === null) {\n\n arg = args[i].call(this);\n i++;\n }\n if (arg === null) {\n this._unexpectedToken(tokenStream.LT(1));\n }\n if (arg.type === \"elementName\") {\n part = new SelectorPart(arg, [], arg.toString(), line, col);\n } else {\n part = new SelectorPart(null, [arg], arg.toString(), line, col);\n }\n\n return part;\n },\n\n _declaration: function() {\n\n var tokenStream = this._tokenStream,\n property = null,\n expr = null,\n prio = null,\n invalid = null,\n propertyName = \"\";\n\n property = this._property();\n if (property !== null) {\n\n tokenStream.mustMatch(Tokens.COLON);\n this._readWhitespace();\n\n expr = this._expr();\n if (!expr || expr.length === 0) {\n this._unexpectedToken(tokenStream.LT(1));\n }\n\n prio = this._prio();\n propertyName = property.toString();\n if (this.options.starHack && property.hack === \"*\" ||\n this.options.underscoreHack && property.hack === \"_\") {\n\n propertyName = property.text;\n }\n\n try {\n this._validateProperty(propertyName, expr);\n } catch (ex) {\n invalid = ex;\n }\n\n this.fire({\n type: \"property\",\n property: property,\n value: expr,\n important: prio,\n line: property.line,\n col: property.col,\n invalid: invalid\n });\n\n return true;\n } else {\n return false;\n }\n },\n\n _prio: function() {\n\n var tokenStream = this._tokenStream,\n result = tokenStream.match(Tokens.IMPORTANT_SYM);\n\n this._readWhitespace();\n return result;\n },\n\n _expr: function(inFunction) {\n\n var values = [],\n value = null,\n operator = null;\n\n value = this._term(inFunction);\n if (value !== null) {\n\n values.push(value);\n\n do {\n operator = this._operator(inFunction);\n if (operator) {\n values.push(operator);\n } /*else {\n values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col));\n valueParts = [];\n }*/\n\n value = this._term(inFunction);\n\n if (value === null) {\n break;\n } else {\n values.push(value);\n }\n } while (true);\n }\n\n return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null;\n },\n\n _term: function(inFunction) {\n\n var tokenStream = this._tokenStream,\n unary = null,\n value = null,\n endChar = null,\n part = null,\n token,\n line,\n col;\n unary = this._unary_operator();\n if (unary !== null) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n }\n if (tokenStream.peek() === Tokens.IE_FUNCTION && this.options.ieFilters) {\n\n value = this._ie_function();\n if (unary === null) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n }\n } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])) {\n\n token = tokenStream.token();\n endChar = token.endChar;\n value = token.value + this._expr(inFunction).text;\n if (unary === null) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n }\n tokenStream.mustMatch(Tokens.type(endChar));\n value += endChar;\n this._readWhitespace();\n } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH,\n Tokens.ANGLE, Tokens.TIME,\n Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])) {\n\n value = tokenStream.token().value;\n if (unary === null) {\n line = tokenStream.token().startLine;\n col = tokenStream.token().startCol;\n part = PropertyValuePart.fromToken(tokenStream.token());\n }\n this._readWhitespace();\n } else {\n token = this._hexcolor();\n if (token === null) {\n if (unary === null) {\n line = tokenStream.LT(1).startLine;\n col = tokenStream.LT(1).startCol;\n }\n if (value === null) {\n if (tokenStream.LA(3) === Tokens.EQUALS && this.options.ieFilters) {\n value = this._ie_function();\n } else {\n value = this._function();\n }\n }\n\n } else {\n value = token.value;\n if (unary === null) {\n line = token.startLine;\n col = token.startCol;\n }\n }\n\n }\n\n return part !== null ? part : value !== null ?\n new PropertyValuePart(unary !== null ? unary + value : value, line, col) :\n null;\n\n },\n\n _function: function() {\n\n var tokenStream = this._tokenStream,\n functionText = null,\n expr = null,\n lt;\n\n if (tokenStream.match(Tokens.FUNCTION)) {\n functionText = tokenStream.token().value;\n this._readWhitespace();\n expr = this._expr(true);\n functionText += expr;\n if (this.options.ieFilters && tokenStream.peek() === Tokens.EQUALS) {\n do {\n\n if (this._readWhitespace()) {\n functionText += tokenStream.token().value;\n }\n if (tokenStream.LA(0) === Tokens.COMMA) {\n functionText += tokenStream.token().value;\n }\n\n tokenStream.match(Tokens.IDENT);\n functionText += tokenStream.token().value;\n\n tokenStream.match(Tokens.EQUALS);\n functionText += tokenStream.token().value;\n lt = tokenStream.peek();\n while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) {\n tokenStream.get();\n functionText += tokenStream.token().value;\n lt = tokenStream.peek();\n }\n } while (tokenStream.match([Tokens.COMMA, Tokens.S]));\n }\n\n tokenStream.match(Tokens.RPAREN);\n functionText += \")\";\n this._readWhitespace();\n }\n\n return functionText;\n },\n\n _ie_function: function() {\n\n var tokenStream = this._tokenStream,\n functionText = null,\n lt;\n if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])) {\n functionText = tokenStream.token().value;\n\n do {\n\n if (this._readWhitespace()) {\n functionText += tokenStream.token().value;\n }\n if (tokenStream.LA(0) === Tokens.COMMA) {\n functionText += tokenStream.token().value;\n }\n\n tokenStream.match(Tokens.IDENT);\n functionText += tokenStream.token().value;\n\n tokenStream.match(Tokens.EQUALS);\n functionText += tokenStream.token().value;\n lt = tokenStream.peek();\n while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) {\n tokenStream.get();\n functionText += tokenStream.token().value;\n lt = tokenStream.peek();\n }\n } while (tokenStream.match([Tokens.COMMA, Tokens.S]));\n\n tokenStream.match(Tokens.RPAREN);\n functionText += \")\";\n this._readWhitespace();\n }\n\n return functionText;\n },\n\n _hexcolor: function() {\n\n var tokenStream = this._tokenStream,\n token = null,\n color;\n\n if (tokenStream.match(Tokens.HASH)) {\n\n token = tokenStream.token();\n color = token.value;\n if (!/#[a-f0-9]{3,6}/i.test(color)) {\n throw new SyntaxError(\"Expected a hex color but found '\" + color + \"' at line \" + token.startLine + \", col \" + token.startCol + \".\", token.startLine, token.startCol);\n }\n this._readWhitespace();\n }\n\n return token;\n },\n\n _keyframes: function() {\n var tokenStream = this._tokenStream,\n token,\n tt,\n name,\n prefix = \"\";\n\n tokenStream.mustMatch(Tokens.KEYFRAMES_SYM);\n token = tokenStream.token();\n if (/^@-([^-]+)-/.test(token.value)) {\n prefix = RegExp.$1;\n }\n\n this._readWhitespace();\n name = this._keyframe_name();\n\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.LBRACE);\n\n this.fire({\n type: \"startkeyframes\",\n name: name,\n prefix: prefix,\n line: token.startLine,\n col: token.startCol\n });\n\n this._readWhitespace();\n tt = tokenStream.peek();\n while (tt === Tokens.IDENT || tt === Tokens.PERCENTAGE) {\n this._keyframe_rule();\n this._readWhitespace();\n tt = tokenStream.peek();\n }\n\n this.fire({\n type: \"endkeyframes\",\n name: name,\n prefix: prefix,\n line: token.startLine,\n col: token.startCol\n });\n\n this._readWhitespace();\n tokenStream.mustMatch(Tokens.RBRACE);\n this._readWhitespace();\n\n },\n\n _keyframe_name: function() {\n var tokenStream = this._tokenStream;\n\n tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]);\n return SyntaxUnit.fromToken(tokenStream.token());\n },\n\n _keyframe_rule: function() {\n var keyList = this._key_list();\n\n this.fire({\n type: \"startkeyframerule\",\n keys: keyList,\n line: keyList[0].line,\n col: keyList[0].col\n });\n\n this._readDeclarations(true);\n\n this.fire({\n type: \"endkeyframerule\",\n keys: keyList,\n line: keyList[0].line,\n col: keyList[0].col\n });\n\n },\n\n _key_list: function() {\n var tokenStream = this._tokenStream,\n keyList = [];\n keyList.push(this._key());\n\n this._readWhitespace();\n\n while (tokenStream.match(Tokens.COMMA)) {\n this._readWhitespace();\n keyList.push(this._key());\n this._readWhitespace();\n }\n\n return keyList;\n },\n\n _key: function() {\n\n var tokenStream = this._tokenStream,\n token;\n\n if (tokenStream.match(Tokens.PERCENTAGE)) {\n return SyntaxUnit.fromToken(tokenStream.token());\n } else if (tokenStream.match(Tokens.IDENT)) {\n token = tokenStream.token();\n\n if (/from|to/i.test(token.value)) {\n return SyntaxUnit.fromToken(token);\n }\n\n tokenStream.unget();\n }\n this._unexpectedToken(tokenStream.LT(1));\n },\n _skipCruft: function() {\n while (this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])) {\n }\n },\n _readDeclarations: function(checkStart, readMargins) {\n var tokenStream = this._tokenStream,\n tt;\n\n\n this._readWhitespace();\n\n if (checkStart) {\n tokenStream.mustMatch(Tokens.LBRACE);\n }\n\n this._readWhitespace();\n\n try {\n\n while (true) {\n\n if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())) {\n } else if (this._declaration()) {\n if (!tokenStream.match(Tokens.SEMICOLON)) {\n break;\n }\n } else {\n break;\n }\n this._readWhitespace();\n }\n\n tokenStream.mustMatch(Tokens.RBRACE);\n this._readWhitespace();\n\n } catch (ex) {\n if (ex instanceof SyntaxError && !this.options.strict) {\n this.fire({\n type: \"error\",\n error: ex,\n message: ex.message,\n line: ex.line,\n col: ex.col\n });\n tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]);\n if (tt === Tokens.SEMICOLON) {\n this._readDeclarations(false, readMargins);\n } else if (tt !== Tokens.EOF && tt !== Tokens.RBRACE) {\n throw ex;\n }\n\n } else {\n throw ex;\n }\n }\n\n },\n _readWhitespace: function() {\n\n var tokenStream = this._tokenStream,\n ws = \"\";\n\n while (tokenStream.match(Tokens.S)) {\n ws += tokenStream.token().value;\n }\n\n return ws;\n },\n _unexpectedToken: function(token) {\n throw new SyntaxError(\"Unexpected token '\" + token.value + \"' at line \" + token.startLine + \", col \" + token.startCol + \".\", token.startLine, token.startCol);\n },\n _verifyEnd: function() {\n if (this._tokenStream.LA(1) !== Tokens.EOF) {\n this._unexpectedToken(this._tokenStream.LT(1));\n }\n },\n _validateProperty: function(property, value) {\n Validation.validate(property, value);\n },\n\n parse: function(input) {\n this._tokenStream = new TokenStream(input, Tokens);\n this._stylesheet();\n },\n\n parseStyleSheet: function(input) {\n return this.parse(input);\n },\n\n parseMediaQuery: function(input) {\n this._tokenStream = new TokenStream(input, Tokens);\n var result = this._media_query();\n this._verifyEnd();\n return result;\n },\n parsePropertyValue: function(input) {\n\n this._tokenStream = new TokenStream(input, Tokens);\n this._readWhitespace();\n\n var result = this._expr();\n this._readWhitespace();\n this._verifyEnd();\n return result;\n },\n parseRule: function(input) {\n this._tokenStream = new TokenStream(input, Tokens);\n this._readWhitespace();\n\n var result = this._ruleset();\n this._readWhitespace();\n this._verifyEnd();\n return result;\n },\n parseSelector: function(input) {\n\n this._tokenStream = new TokenStream(input, Tokens);\n this._readWhitespace();\n\n var result = this._selector();\n this._readWhitespace();\n this._verifyEnd();\n return result;\n },\n parseStyleAttribute: function(input) {\n input += \"}\"; // for error recovery in _readDeclarations()\n this._tokenStream = new TokenStream(input, Tokens);\n this._readDeclarations();\n }\n };\n for (prop in additions) {\n if (Object.prototype.hasOwnProperty.call(additions, prop)) {\n proto[prop] = additions[prop];\n }\n }\n\n return proto;\n}();\n\n},{\"../util/EventTarget\":23,\"../util/SyntaxError\":25,\"../util/SyntaxUnit\":26,\"./Combinator\":2,\"./MediaFeature\":4,\"./MediaQuery\":5,\"./PropertyName\":8,\"./PropertyValue\":9,\"./PropertyValuePart\":11,\"./Selector\":13,\"./SelectorPart\":14,\"./SelectorSubPart\":15,\"./TokenStream\":17,\"./Tokens\":18,\"./Validation\":19}],7:[function(require,module,exports){\n\n\"use strict\";\n\nvar Properties = module.exports = {\n __proto__: null,\n \"align-items\" : \"flex-start | flex-end | center | baseline | stretch\",\n \"align-content\" : \"flex-start | flex-end | center | space-between | space-around | stretch\",\n \"align-self\" : \"auto | flex-start | flex-end | center | baseline | stretch\",\n \"all\" : \"initial | inherit | unset\",\n \"-webkit-align-items\" : \"flex-start | flex-end | center | baseline | stretch\",\n \"-webkit-align-content\" : \"flex-start | flex-end | center | space-between | space-around | stretch\",\n \"-webkit-align-self\" : \"auto | flex-start | flex-end | center | baseline | stretch\",\n \"alignment-adjust\" : \"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>\",\n \"alignment-baseline\" : \"auto | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\n \"animation\" : 1,\n \"animation-delay\" : \"<time>#\",\n \"animation-direction\" : \"<single-animation-direction>#\",\n \"animation-duration\" : \"<time>#\",\n \"animation-fill-mode\" : \"[ none | forwards | backwards | both ]#\",\n \"animation-iteration-count\" : \"[ <number> | infinite ]#\",\n \"animation-name\" : \"[ none | <single-animation-name> ]#\",\n \"animation-play-state\" : \"[ running | paused ]#\",\n \"animation-timing-function\" : 1,\n \"-moz-animation-delay\" : \"<time>#\",\n \"-moz-animation-direction\" : \"[ normal | alternate ]#\",\n \"-moz-animation-duration\" : \"<time>#\",\n \"-moz-animation-iteration-count\" : \"[ <number> | infinite ]#\",\n \"-moz-animation-name\" : \"[ none | <single-animation-name> ]#\",\n \"-moz-animation-play-state\" : \"[ running | paused ]#\",\n\n \"-ms-animation-delay\" : \"<time>#\",\n \"-ms-animation-direction\" : \"[ normal | alternate ]#\",\n \"-ms-animation-duration\" : \"<time>#\",\n \"-ms-animation-iteration-count\" : \"[ <number> | infinite ]#\",\n \"-ms-animation-name\" : \"[ none | <single-animation-name> ]#\",\n \"-ms-animation-play-state\" : \"[ running | paused ]#\",\n\n \"-webkit-animation-delay\" : \"<time>#\",\n \"-webkit-animation-direction\" : \"[ normal | alternate ]#\",\n \"-webkit-animation-duration\" : \"<time>#\",\n \"-webkit-animation-fill-mode\" : \"[ none | forwards | backwards | both ]#\",\n \"-webkit-animation-iteration-count\" : \"[ <number> | infinite ]#\",\n \"-webkit-animation-name\" : \"[ none | <single-animation-name> ]#\",\n \"-webkit-animation-play-state\" : \"[ running | paused ]#\",\n\n \"-o-animation-delay\" : \"<time>#\",\n \"-o-animation-direction\" : \"[ normal | alternate ]#\",\n \"-o-animation-duration\" : \"<time>#\",\n \"-o-animation-iteration-count\" : \"[ <number> | infinite ]#\",\n \"-o-animation-name\" : \"[ none | <single-animation-name> ]#\",\n \"-o-animation-play-state\" : \"[ running | paused ]#\",\n\n \"appearance\" : \"none | auto\",\n \"-moz-appearance\" : \"none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized\",\n \"-ms-appearance\" : \"none | icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal\",\n \"-webkit-appearance\" : \"none | button | button-bevel | caps-lock-indicator | caret | checkbox | default-button | listbox | listitem | media-fullscreen-button | media-mute-button | media-play-button | media-seek-back-button | media-seek-forward-button | media-slider | media-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbargripper-horizontal | scrollbargripper-vertical | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical\",\n \"-o-appearance\" : \"none | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal\",\n\n \"azimuth\" : \"<azimuth>\",\n \"backface-visibility\" : \"visible | hidden\",\n \"background\" : 1,\n \"background-attachment\" : \"<attachment>#\",\n \"background-clip\" : \"<box>#\",\n \"background-color\" : \"<color>\",\n \"background-image\" : \"<bg-image>#\",\n \"background-origin\" : \"<box>#\",\n \"background-position\" : \"<bg-position>\",\n \"background-repeat\" : \"<repeat-style>#\",\n \"background-size\" : \"<bg-size>#\",\n \"baseline-shift\" : \"baseline | sub | super | <percentage> | <length>\",\n \"behavior\" : 1,\n \"binding\" : 1,\n \"bleed\" : \"<length>\",\n \"bookmark-label\" : \"<content> | <attr> | <string>\",\n \"bookmark-level\" : \"none | <integer>\",\n \"bookmark-state\" : \"open | closed\",\n \"bookmark-target\" : \"none | <uri> | <attr>\",\n \"border\" : \"<border-width> || <border-style> || <color>\",\n \"border-bottom\" : \"<border-width> || <border-style> || <color>\",\n \"border-bottom-color\" : \"<color>\",\n \"border-bottom-left-radius\" : \"<x-one-radius>\",\n \"border-bottom-right-radius\" : \"<x-one-radius>\",\n \"border-bottom-style\" : \"<border-style>\",\n \"border-bottom-width\" : \"<border-width>\",\n \"border-collapse\" : \"collapse | separate\",\n \"border-color\" : \"<color>{1,4}\",\n \"border-image\" : 1,\n \"border-image-outset\" : \"[ <length> | <number> ]{1,4}\",\n \"border-image-repeat\" : \"[ stretch | repeat | round | space ]{1,2}\",\n \"border-image-slice\" : \"<border-image-slice>\",\n \"border-image-source\" : \"<image> | none\",\n \"border-image-width\" : \"[ <length> | <percentage> | <number> | auto ]{1,4}\",\n \"border-left\" : \"<border-width> || <border-style> || <color>\",\n \"border-left-color\" : \"<color>\",\n \"border-left-style\" : \"<border-style>\",\n \"border-left-width\" : \"<border-width>\",\n \"border-radius\" : \"<border-radius>\",\n \"border-right\" : \"<border-width> || <border-style> || <color>\",\n \"border-right-color\" : \"<color>\",\n \"border-right-style\" : \"<border-style>\",\n \"border-right-width\" : \"<border-width>\",\n \"border-spacing\" : \"<length>{1,2}\",\n \"border-style\" : \"<border-style>{1,4}\",\n \"border-top\" : \"<border-width> || <border-style> || <color>\",\n \"border-top-color\" : \"<color>\",\n \"border-top-left-radius\" : \"<x-one-radius>\",\n \"border-top-right-radius\" : \"<x-one-radius>\",\n \"border-top-style\" : \"<border-style>\",\n \"border-top-width\" : \"<border-width>\",\n \"border-width\" : \"<border-width>{1,4}\",\n \"bottom\" : \"<margin-width>\",\n \"-moz-box-align\" : \"start | end | center | baseline | stretch\",\n \"-moz-box-decoration-break\" : \"slice | clone\",\n \"-moz-box-direction\" : \"normal | reverse\",\n \"-moz-box-flex\" : \"<number>\",\n \"-moz-box-flex-group\" : \"<integer>\",\n \"-moz-box-lines\" : \"single | multiple\",\n \"-moz-box-ordinal-group\" : \"<integer>\",\n \"-moz-box-orient\" : \"horizontal | vertical | inline-axis | block-axis\",\n \"-moz-box-pack\" : \"start | end | center | justify\",\n \"-o-box-decoration-break\" : \"slice | clone\",\n \"-webkit-box-align\" : \"start | end | center | baseline | stretch\",\n \"-webkit-box-decoration-break\" : \"slice | clone\",\n \"-webkit-box-direction\" : \"normal | reverse\",\n \"-webkit-box-flex\" : \"<number>\",\n \"-webkit-box-flex-group\" : \"<integer>\",\n \"-webkit-box-lines\" : \"single | multiple\",\n \"-webkit-box-ordinal-group\" : \"<integer>\",\n \"-webkit-box-orient\" : \"horizontal | vertical | inline-axis | block-axis\",\n \"-webkit-box-pack\" : \"start | end | center | justify\",\n \"box-decoration-break\" : \"slice | clone\",\n \"box-shadow\" : \"<box-shadow>\",\n \"box-sizing\" : \"content-box | border-box\",\n \"break-after\" : \"auto | always | avoid | left | right | page | column | avoid-page | avoid-column\",\n \"break-before\" : \"auto | always | avoid | left | right | page | column | avoid-page | avoid-column\",\n \"break-inside\" : \"auto | avoid | avoid-page | avoid-column\",\n \"caption-side\" : \"top | bottom\",\n \"clear\" : \"none | right | left | both\",\n \"clip\" : \"<shape> | auto\",\n \"-webkit-clip-path\" : \"<clip-source> | <clip-path> | none\",\n \"clip-path\" : \"<clip-source> | <clip-path> | none\",\n \"clip-rule\" : \"nonzero | evenodd\",\n \"color\" : \"<color>\",\n \"color-interpolation\" : \"auto | sRGB | linearRGB\",\n \"color-interpolation-filters\" : \"auto | sRGB | linearRGB\",\n \"color-profile\" : 1,\n \"color-rendering\" : \"auto | optimizeSpeed | optimizeQuality\",\n \"column-count\" : \"<integer> | auto\", // https ://www.w3.org/TR/css3-multicol/\n \"column-fill\" : \"auto | balance\",\n \"column-gap\" : \"<length> | normal\",\n \"column-rule\" : \"<border-width> || <border-style> || <color>\",\n \"column-rule-color\" : \"<color>\",\n \"column-rule-style\" : \"<border-style>\",\n \"column-rule-width\" : \"<border-width>\",\n \"column-span\" : \"none | all\",\n \"column-width\" : \"<length> | auto\",\n \"columns\" : 1,\n \"content\" : 1,\n \"counter-increment\" : 1,\n \"counter-reset\" : 1,\n \"crop\" : \"<shape> | auto\",\n \"cue\" : \"cue-after | cue-before\",\n \"cue-after\" : 1,\n \"cue-before\" : 1,\n \"cursor\" : 1,\n \"direction\" : \"ltr | rtl\",\n \"display\" : \"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | grid | inline-grid | run-in | ruby | ruby-base | ruby-text | ruby-base-container | ruby-text-container | contents | none | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box | -ms-flexbox | -ms-inline-flexbox | flex | -webkit-flex | inline-flex | -webkit-inline-flex\",\n \"dominant-baseline\" : \"auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge\",\n \"drop-initial-after-adjust\" : \"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>\",\n \"drop-initial-after-align\" : \"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\n \"drop-initial-before-adjust\" : \"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>\",\n \"drop-initial-before-align\" : \"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical\",\n \"drop-initial-size\" : \"auto | line | <length> | <percentage>\",\n \"drop-initial-value\" : \"<integer>\",\n \"elevation\" : \"<angle> | below | level | above | higher | lower\",\n \"empty-cells\" : \"show | hide\",\n \"enable-background\" : 1,\n \"fill\" : \"<paint>\",\n \"fill-opacity\" : \"<opacity-value>\",\n \"fill-rule\" : \"nonzero | evenodd\",\n \"filter\" : \"<filter-function-list> | none\",\n \"fit\" : \"fill | hidden | meet | slice\",\n \"fit-position\" : 1,\n \"flex\" : \"<flex>\",\n \"flex-basis\" : \"<width>\",\n \"flex-direction\" : \"row | row-reverse | column | column-reverse\",\n \"flex-flow\" : \"<flex-direction> || <flex-wrap>\",\n \"flex-grow\" : \"<number>\",\n \"flex-shrink\" : \"<number>\",\n \"flex-wrap\" : \"nowrap | wrap | wrap-reverse\",\n \"-webkit-flex\" : \"<flex>\",\n \"-webkit-flex-basis\" : \"<width>\",\n \"-webkit-flex-direction\" : \"row | row-reverse | column | column-reverse\",\n \"-webkit-flex-flow\" : \"<flex-direction> || <flex-wrap>\",\n \"-webkit-flex-grow\" : \"<number>\",\n \"-webkit-flex-shrink\" : \"<number>\",\n \"-webkit-flex-wrap\" : \"nowrap | wrap | wrap-reverse\",\n \"-ms-flex\" : \"<flex>\",\n \"-ms-flex-align\" : \"start | end | center | stretch | baseline\",\n \"-ms-flex-direction\" : \"row | row-reverse | column | column-reverse\",\n \"-ms-flex-order\" : \"<number>\",\n \"-ms-flex-pack\" : \"start | end | center | justify | distribute\",\n \"-ms-flex-wrap\" : \"nowrap | wrap | wrap-reverse\",\n \"float\" : \"left | right | none\",\n \"float-offset\" : 1,\n \"flood-color\" : 1,\n \"flood-opacity\" : \"<opacity-value>\",\n \"font\" : \"<font-shorthand> | caption | icon | menu | message-box | small-caption | status-bar\",\n \"font-family\" : \"<font-family>\",\n \"font-feature-settings\" : \"<feature-tag-value> | normal\",\n \"font-kerning\" : \"auto | normal | none\",\n \"font-size\" : \"<font-size>\",\n \"font-size-adjust\" : \"<number> | none\",\n \"font-stretch\" : \"<font-stretch>\",\n \"font-style\" : \"<font-style>\",\n \"font-variant\" : \"<font-variant> | normal | none\",\n \"font-variant-alternates\" : \"<font-variant-alternates> | normal\",\n \"font-variant-caps\" : \"<font-variant-caps> | normal\",\n \"font-variant-east-asian\" : \"<font-variant-east-asian> | normal\",\n \"font-variant-ligatures\" : \"<font-variant-ligatures> | normal | none\",\n \"font-variant-numeric\" : \"<font-variant-numeric> | normal\",\n \"font-variant-position\" : \"normal | sub | super\",\n \"font-weight\" : \"<font-weight>\",\n \"gap\" : \"[ <length> | <percentage> ]{1,2}\",\n \"glyph-orientation-horizontal\" : \"<glyph-angle>\",\n \"glyph-orientation-vertical\" : \"auto | <glyph-angle>\",\n \"grid\" : 1,\n \"grid-area\" : 1,\n \"grid-auto-columns\" : 1,\n \"grid-auto-flow\" : 1,\n \"grid-auto-position\" : 1,\n \"grid-auto-rows\" : 1,\n \"grid-cell-stacking\" : \"columns | rows | layer\",\n \"grid-column\" : 1,\n \"grid-columns\" : 1,\n \"grid-column-align\" : \"start | end | center | stretch\",\n \"grid-column-sizing\" : 1,\n \"grid-column-start\" : 1,\n \"grid-column-end\" : 1,\n \"grid-column-span\" : \"<integer>\",\n \"grid-flow\" : \"none | rows | columns\",\n \"grid-gap\" : \"[ <length> | <percentage> ]{1,2}\",\n \"grid-layer\" : \"<integer>\",\n \"grid-row\" : 1,\n \"grid-rows\" : 1,\n \"grid-row-align\" : \"start | end | center | stretch\",\n \"grid-row-gap\" : 1,\n \"grid-row-start\" : 1,\n \"grid-row-end\" : 1,\n \"grid-row-span\" : \"<integer>\",\n \"grid-row-sizing\" : 1,\n \"grid-template\" : 1,\n \"grid-template-areas\" : 1,\n \"grid-template-columns\" : 1,\n \"grid-template-rows\" : 1,\n \"hanging-punctuation\" : 1,\n \"height\" : \"<margin-width> | <content-sizing>\",\n \"hyphenate-after\" : \"<integer> | auto\",\n \"hyphenate-before\" : \"<integer> | auto\",\n \"hyphenate-character\" : \"<string> | auto\",\n \"hyphenate-lines\" : \"no-limit | <integer>\",\n \"hyphenate-resource\" : 1,\n \"hyphens\" : \"none | manual | auto\",\n \"icon\" : 1,\n \"image-orientation\" : \"angle | auto\",\n \"image-rendering\" : \"auto | optimizeSpeed | optimizeQuality\",\n \"image-resolution\" : 1,\n \"ime-mode\" : \"auto | normal | active | inactive | disabled\",\n \"inline-box-align\" : \"last | <integer>\",\n \"justify-content\" : \"flex-start | flex-end | center | space-between | space-around | space-evenly | stretch\",\n \"-webkit-justify-content\" : \"flex-start | flex-end | center | space-between | space-around | space-evenly | stretch\",\n \"kerning\" : \"auto | <length>\",\n \"left\" : \"<margin-width>\",\n \"letter-spacing\" : \"<length> | normal\",\n \"line-height\" : \"<line-height>\",\n \"line-break\" : \"auto | loose | normal | strict\",\n \"line-stacking\" : 1,\n \"line-stacking-ruby\" : \"exclude-ruby | include-ruby\",\n \"line-stacking-shift\" : \"consider-shifts | disregard-shifts\",\n \"line-stacking-strategy\" : \"inline-line-height | block-line-height | max-height | grid-height\",\n \"list-style\" : 1,\n \"list-style-image\" : \"<uri> | none\",\n \"list-style-position\" : \"inside | outside\",\n \"list-style-type\" : \"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none\",\n \"margin\" : \"<margin-width>{1,4}\",\n \"margin-bottom\" : \"<margin-width>\",\n \"margin-left\" : \"<margin-width>\",\n \"margin-right\" : \"<margin-width>\",\n \"margin-top\" : \"<margin-width>\",\n \"mark\" : 1,\n \"mark-after\" : 1,\n \"mark-before\" : 1,\n \"marker\" : 1,\n \"marker-end\" : 1,\n \"marker-mid\" : 1,\n \"marker-start\" : 1,\n \"marks\" : 1,\n \"marquee-direction\" : 1,\n \"marquee-play-count\" : 1,\n \"marquee-speed\" : 1,\n \"marquee-style\" : 1,\n \"mask\" : 1,\n \"max-height\" : \"<length> | <percentage> | <content-sizing> | none\",\n \"max-width\" : \"<length> | <percentage> | <content-sizing> | none\",\n \"min-height\" : \"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats\",\n \"min-width\" : \"<length> | <percentage> | <content-sizing> | contain-floats | -moz-contain-floats | -webkit-contain-floats\",\n \"mix-blend-mode\" : \"<blend-mode>\",\n \"move-to\" : 1,\n \"nav-down\" : 1,\n \"nav-index\" : 1,\n \"nav-left\" : 1,\n \"nav-right\" : 1,\n \"nav-up\" : 1,\n \"object-fit\" : \"fill | contain | cover | none | scale-down\",\n \"object-position\" : \"<position>\",\n \"opacity\" : \"<opacity-value>\",\n \"order\" : \"<integer>\",\n \"-webkit-order\" : \"<integer>\",\n \"orphans\" : \"<integer>\",\n \"outline\" : 1,\n \"outline-color\" : \"<color> | invert\",\n \"outline-offset\" : 1,\n \"outline-style\" : \"<border-style>\",\n \"outline-width\" : \"<border-width>\",\n \"overflow\" : \"visible | hidden | scroll | auto\",\n \"overflow-style\" : 1,\n \"overflow-wrap\" : \"normal | break-word\",\n \"overflow-x\" : 1,\n \"overflow-y\" : 1,\n \"padding\" : \"<padding-width>{1,4}\",\n \"padding-bottom\" : \"<padding-width>\",\n \"padding-left\" : \"<padding-width>\",\n \"padding-right\" : \"<padding-width>\",\n \"padding-top\" : \"<padding-width>\",\n \"page\" : 1,\n \"page-break-after\" : \"auto | always | avoid | left | right\",\n \"page-break-before\" : \"auto | always | avoid | left | right\",\n \"page-break-inside\" : \"auto | avoid\",\n \"page-policy\" : 1,\n \"pause\" : 1,\n \"pause-after\" : 1,\n \"pause-before\" : 1,\n \"perspective\" : 1,\n \"perspective-origin\" : 1,\n \"phonemes\" : 1,\n \"pitch\" : 1,\n \"pitch-range\" : 1,\n \"play-during\" : 1,\n \"pointer-events\" : \"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all\",\n \"position\" : \"static | relative | absolute | fixed | sticky | -webkit-sticky\",\n \"presentation-level\" : 1,\n \"punctuation-trim\" : 1,\n \"quotes\" : 1,\n \"rendering-intent\" : 1,\n \"resize\" : 1,\n \"rest\" : 1,\n \"rest-after\" : 1,\n \"rest-before\" : 1,\n \"richness\" : 1,\n \"right\" : \"<margin-width>\",\n \"rotation\" : 1,\n \"rotation-point\" : 1,\n \"ruby-align\" : 1,\n \"ruby-overhang\" : 1,\n \"ruby-position\" : 1,\n \"ruby-span\" : 1,\n \"shape-rendering\" : \"auto | optimizeSpeed | crispEdges | geometricPrecision\",\n \"size\" : 1,\n \"speak\" : \"normal | none | spell-out\",\n \"speak-header\" : \"once | always\",\n \"speak-numeral\" : \"digits | continuous\",\n \"speak-punctuation\" : \"code | none\",\n \"speech-rate\" : 1,\n \"src\" : 1,\n \"stop-color\" : 1,\n \"stop-opacity\" : \"<opacity-value>\",\n \"stress\" : 1,\n \"string-set\" : 1,\n \"stroke\" : \"<paint>\",\n \"stroke-dasharray\" : \"none | <dasharray>\",\n \"stroke-dashoffset\" : \"<percentage> | <length>\",\n \"stroke-linecap\" : \"butt | round | square\",\n \"stroke-linejoin\" : \"miter | round | bevel\",\n \"stroke-miterlimit\" : \"<miterlimit>\",\n \"stroke-opacity\" : \"<opacity-value>\",\n \"stroke-width\" : \"<percentage> | <length>\",\n\n \"table-layout\" : \"auto | fixed\",\n \"tab-size\" : \"<integer> | <length>\",\n \"target\" : 1,\n \"target-name\" : 1,\n \"target-new\" : 1,\n \"target-position\" : 1,\n \"text-align\" : \"left | right | center | justify | match-parent | start | end\",\n \"text-align-last\" : 1,\n \"text-anchor\" : \"start | middle | end\",\n \"text-decoration\" : \"<text-decoration-line> || <text-decoration-style> || <text-decoration-color>\",\n \"text-decoration-color\" : \"<text-decoration-color>\",\n \"text-decoration-line\" : \"<text-decoration-line>\",\n \"text-decoration-style\" : \"<text-decoration-style>\",\n \"text-decoration-skip\" : \"none | [ objects || spaces || ink || edges || box-decoration ]\",\n \"-webkit-text-decoration-skip\" : \"none | [ objects || spaces || ink || edges || box-decoration ]\",\n \"text-underline-position\" : \"auto | [ under || [ left | right ] ]\",\n \"text-emphasis\" : 1,\n \"text-height\" : 1,\n \"text-indent\" : \"<length> | <percentage>\",\n \"text-justify\" : \"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida\",\n \"text-outline\" : 1,\n \"text-overflow\" : 1,\n \"text-rendering\" : \"auto | optimizeSpeed | optimizeLegibility | geometricPrecision\",\n \"text-shadow\" : 1,\n \"text-transform\" : \"capitalize | uppercase | lowercase | none\",\n \"text-wrap\" : \"normal | none | avoid\",\n \"top\" : \"<margin-width>\",\n \"-ms-touch-action\" : \"auto | none | pan-x | pan-y | pan-left | pan-right | pan-up | pan-down | manipulation\",\n \"touch-action\" : \"auto | none | pan-x | pan-y | pan-left | pan-right | pan-up | pan-down | manipulation\",\n \"transform\" : 1,\n \"transform-origin\" : 1,\n \"transform-style\" : 1,\n \"transition\" : 1,\n \"transition-delay\" : 1,\n \"transition-duration\" : 1,\n \"transition-property\" : 1,\n \"transition-timing-function\" : 1,\n \"unicode-bidi\" : \"normal | embed | isolate | bidi-override | isolate-override | plaintext\",\n \"user-modify\" : \"read-only | read-write | write-only\",\n \"user-select\" : \"auto | text | none | contain | all\",\n \"vertical-align\" : \"auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>\",\n \"visibility\" : \"visible | hidden | collapse\",\n \"voice-balance\" : 1,\n \"voice-duration\" : 1,\n \"voice-family\" : 1,\n \"voice-pitch\" : 1,\n \"voice-pitch-range\" : 1,\n \"voice-rate\" : 1,\n \"voice-stress\" : 1,\n \"voice-volume\" : 1,\n \"volume\" : 1,\n \"white-space\" : \"normal | pre | nowrap | pre-wrap | pre-line | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap\", // https ://perishablepress.com/wrapping-content/\n \"white-space-collapse\" : 1,\n \"widows\" : \"<integer>\",\n \"width\" : \"<length> | <percentage> | <content-sizing> | auto\",\n \"will-change\" : \"<will-change>\",\n \"word-break\" : \"normal | keep-all | break-all | break-word\",\n \"word-spacing\" : \"<length> | normal\",\n \"word-wrap\" : \"normal | break-word\",\n \"writing-mode\" : \"horizontal-tb | vertical-rl | vertical-lr | lr-tb | rl-tb | tb-rl | bt-rl | tb-lr | bt-lr | lr-bt | rl-bt | lr | rl | tb\",\n \"z-index\" : \"<integer> | auto\",\n \"zoom\" : \"<number> | <percentage> | normal\"\n};\n\n},{}],8:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = PropertyName;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction PropertyName(text, hack, line, col) {\n\n SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_NAME_TYPE);\n this.hack = hack;\n\n}\n\nPropertyName.prototype = new SyntaxUnit();\nPropertyName.prototype.constructor = PropertyName;\nPropertyName.prototype.toString = function() {\n return (this.hack ? this.hack : \"\") + this.text;\n};\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],9:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = PropertyValue;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction PropertyValue(parts, line, col) {\n\n SyntaxUnit.call(this, parts.join(\" \"), line, col, Parser.PROPERTY_VALUE_TYPE);\n this.parts = parts;\n\n}\n\nPropertyValue.prototype = new SyntaxUnit();\nPropertyValue.prototype.constructor = PropertyValue;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],10:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = PropertyValueIterator;\nfunction PropertyValueIterator(value) {\n this._i = 0;\n this._parts = value.parts;\n this._marks = [];\n this.value = value;\n\n}\nPropertyValueIterator.prototype.count = function() {\n return this._parts.length;\n};\nPropertyValueIterator.prototype.isFirst = function() {\n return this._i === 0;\n};\nPropertyValueIterator.prototype.hasNext = function() {\n return this._i < this._parts.length;\n};\nPropertyValueIterator.prototype.mark = function() {\n this._marks.push(this._i);\n};\nPropertyValueIterator.prototype.peek = function(count) {\n return this.hasNext() ? this._parts[this._i + (count || 0)] : null;\n};\nPropertyValueIterator.prototype.next = function() {\n return this.hasNext() ? this._parts[this._i++] : null;\n};\nPropertyValueIterator.prototype.previous = function() {\n return this._i > 0 ? this._parts[--this._i] : null;\n};\nPropertyValueIterator.prototype.restore = function() {\n if (this._marks.length) {\n this._i = this._marks.pop();\n }\n};\nPropertyValueIterator.prototype.drop = function() {\n this._marks.pop();\n};\n\n},{}],11:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = PropertyValuePart;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Colors = require(\"./Colors\");\nvar Parser = require(\"./Parser\");\nvar Tokens = require(\"./Tokens\");\nfunction PropertyValuePart(text, line, col, optionalHint) {\n var hint = optionalHint || {};\n\n SyntaxUnit.call(this, text, line, col, Parser.PROPERTY_VALUE_PART_TYPE);\n this.type = \"unknown\";\n\n var temp;\n if (/^([+-]?[\\d.]+)([a-z]+)$/i.test(text)) { // dimension\n this.type = \"dimension\";\n this.value = Number(RegExp.$1);\n this.units = RegExp.$2;\n switch (this.units.toLowerCase()) {\n\n case \"em\":\n case \"rem\":\n case \"ex\":\n case \"px\":\n case \"cm\":\n case \"mm\":\n case \"in\":\n case \"pt\":\n case \"pc\":\n case \"ch\":\n case \"vh\":\n case \"vw\":\n case \"vmax\":\n case \"vmin\":\n this.type = \"length\";\n break;\n\n case \"fr\":\n this.type = \"grid\";\n break;\n\n case \"deg\":\n case \"rad\":\n case \"grad\":\n case \"turn\":\n this.type = \"angle\";\n break;\n\n case \"ms\":\n case \"s\":\n this.type = \"time\";\n break;\n\n case \"hz\":\n case \"khz\":\n this.type = \"frequency\";\n break;\n\n case \"dpi\":\n case \"dpcm\":\n this.type = \"resolution\";\n break;\n\n }\n\n } else if (/^([+-]?[\\d.]+)%$/i.test(text)) { // percentage\n this.type = \"percentage\";\n this.value = Number(RegExp.$1);\n } else if (/^([+-]?\\d+)$/i.test(text)) { // integer\n this.type = \"integer\";\n this.value = Number(RegExp.$1);\n } else if (/^([+-]?[\\d.]+)$/i.test(text)) { // number\n this.type = \"number\";\n this.value = Number(RegExp.$1);\n\n } else if (/^#([a-f0-9]{3,6})/i.test(text)) { // hexcolor\n this.type = \"color\";\n temp = RegExp.$1;\n if (temp.length === 3) {\n this.red = parseInt(temp.charAt(0) + temp.charAt(0), 16);\n this.green = parseInt(temp.charAt(1) + temp.charAt(1), 16);\n this.blue = parseInt(temp.charAt(2) + temp.charAt(2), 16);\n } else {\n this.red = parseInt(temp.substring(0, 2), 16);\n this.green = parseInt(temp.substring(2, 4), 16);\n this.blue = parseInt(temp.substring(4, 6), 16);\n }\n } else if (/^rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i.test(text)) { // rgb() color with absolute numbers\n this.type = \"color\";\n this.red = Number(RegExp.$1);\n this.green = Number(RegExp.$2);\n this.blue = Number(RegExp.$3);\n } else if (/^rgb\\(\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)/i.test(text)) { // rgb() color with percentages\n this.type = \"color\";\n this.red = Number(RegExp.$1) * 255 / 100;\n this.green = Number(RegExp.$2) * 255 / 100;\n this.blue = Number(RegExp.$3) * 255 / 100;\n } else if (/^rgba\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*([\\d.]+)\\s*\\)/i.test(text)) { // rgba() color with absolute numbers\n this.type = \"color\";\n this.red = Number(RegExp.$1);\n this.green = Number(RegExp.$2);\n this.blue = Number(RegExp.$3);\n this.alpha = Number(RegExp.$4);\n } else if (/^rgba\\(\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*([\\d.]+)\\s*\\)/i.test(text)) { // rgba() color with percentages\n this.type = \"color\";\n this.red = Number(RegExp.$1) * 255 / 100;\n this.green = Number(RegExp.$2) * 255 / 100;\n this.blue = Number(RegExp.$3) * 255 / 100;\n this.alpha = Number(RegExp.$4);\n } else if (/^hsl\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*\\)/i.test(text)) { // hsl()\n this.type = \"color\";\n this.hue = Number(RegExp.$1);\n this.saturation = Number(RegExp.$2) / 100;\n this.lightness = Number(RegExp.$3) / 100;\n } else if (/^hsla\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*,\\s*([\\d.]+)\\s*\\)/i.test(text)) { // hsla() color with percentages\n this.type = \"color\";\n this.hue = Number(RegExp.$1);\n this.saturation = Number(RegExp.$2) / 100;\n this.lightness = Number(RegExp.$3) / 100;\n this.alpha = Number(RegExp.$4);\n } else if (/^url\\((\"([^\\\\\"]|\\.)*\")\\)/i.test(text)) { // URI\n this.type = \"uri\";\n this.uri = PropertyValuePart.parseString(RegExp.$1);\n } else if (/^([^(]+)\\(/i.test(text)) {\n this.type = \"function\";\n this.name = RegExp.$1;\n this.value = text;\n } else if (/^\"([^\\n\\r\\f\\\\\"]|\\\\\\r\\n|\\\\[^\\r0-9a-f]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?)*\"/i.test(text)) { // double-quoted string\n this.type = \"string\";\n this.value = PropertyValuePart.parseString(text);\n } else if (/^'([^\\n\\r\\f\\\\']|\\\\\\r\\n|\\\\[^\\r0-9a-f]|\\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?)*'/i.test(text)) { // single-quoted string\n this.type = \"string\";\n this.value = PropertyValuePart.parseString(text);\n } else if (Colors[text.toLowerCase()]) { // named color\n this.type = \"color\";\n temp = Colors[text.toLowerCase()].substring(1);\n this.red = parseInt(temp.substring(0, 2), 16);\n this.green = parseInt(temp.substring(2, 4), 16);\n this.blue = parseInt(temp.substring(4, 6), 16);\n } else if (/^[,/]$/.test(text)) {\n this.type = \"operator\";\n this.value = text;\n } else if (/^-?[a-z_\\u00A0-\\uFFFF][a-z0-9\\-_\\u00A0-\\uFFFF]*$/i.test(text)) {\n this.type = \"identifier\";\n this.value = text;\n }\n this.wasIdent = Boolean(hint.ident);\n\n}\n\nPropertyValuePart.prototype = new SyntaxUnit();\nPropertyValuePart.prototype.constructor = PropertyValuePart;\nPropertyValuePart.parseString = function(str) {\n str = str.slice(1, -1); // Strip surrounding single/double quotes\n var replacer = function(match, esc) {\n if (/^(\\n|\\r\\n|\\r|\\f)$/.test(esc)) {\n return \"\";\n }\n var m = /^[0-9a-f]{1,6}/i.exec(esc);\n if (m) {\n var codePoint = parseInt(m[0], 16);\n if (String.fromCodePoint) {\n return String.fromCodePoint(codePoint);\n } else {\n return String.fromCharCode(codePoint);\n }\n }\n return esc;\n };\n return str.replace(/\\\\(\\r\\n|[^\\r0-9a-f]|[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?)/ig,\n replacer);\n};\nPropertyValuePart.serializeString = function(value) {\n var replacer = function(match, c) {\n if (c === \"\\\"\") {\n return \"\\\\\" + c;\n }\n var cp = String.codePointAt ? String.codePointAt(0) :\n String.charCodeAt(0);\n return \"\\\\\" + cp.toString(16) + \" \";\n };\n return \"\\\"\" + value.replace(/[\"\\r\\n\\f]/g, replacer) + \"\\\"\";\n};\nPropertyValuePart.fromToken = function(token) {\n var part = new PropertyValuePart(token.value, token.startLine, token.startCol, {\n ident: token.type === Tokens.IDENT\n });\n return part;\n};\n\n},{\"../util/SyntaxUnit\":26,\"./Colors\":1,\"./Parser\":6,\"./Tokens\":18}],12:[function(require,module,exports){\n\"use strict\";\n\nvar Pseudos = module.exports = {\n __proto__: null,\n \":first-letter\": 1,\n \":first-line\": 1,\n \":before\": 1,\n \":after\": 1\n};\n\nPseudos.ELEMENT = 1;\nPseudos.CLASS = 2;\n\nPseudos.isElement = function(pseudo) {\n return pseudo.indexOf(\"::\") === 0 || Pseudos[pseudo.toLowerCase()] === Pseudos.ELEMENT;\n};\n\n},{}],13:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = Selector;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nvar Specificity = require(\"./Specificity\");\nfunction Selector(parts, line, col) {\n\n SyntaxUnit.call(this, parts.join(\" \"), line, col, Parser.SELECTOR_TYPE);\n this.parts = parts;\n this.specificity = Specificity.calculate(this);\n\n}\n\nSelector.prototype = new SyntaxUnit();\nSelector.prototype.constructor = Selector;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6,\"./Specificity\":16}],14:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = SelectorPart;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction SelectorPart(elementName, modifiers, text, line, col) {\n\n SyntaxUnit.call(this, text, line, col, Parser.SELECTOR_PART_TYPE);\n this.elementName = elementName;\n this.modifiers = modifiers;\n\n}\n\nSelectorPart.prototype = new SyntaxUnit();\nSelectorPart.prototype.constructor = SelectorPart;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],15:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = SelectorSubPart;\n\nvar SyntaxUnit = require(\"../util/SyntaxUnit\");\n\nvar Parser = require(\"./Parser\");\nfunction SelectorSubPart(text, type, line, col) {\n\n SyntaxUnit.call(this, text, line, col, Parser.SELECTOR_SUB_PART_TYPE);\n this.type = type;\n this.args = [];\n\n}\n\nSelectorSubPart.prototype = new SyntaxUnit();\nSelectorSubPart.prototype.constructor = SelectorSubPart;\n\n\n},{\"../util/SyntaxUnit\":26,\"./Parser\":6}],16:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = Specificity;\n\nvar Pseudos = require(\"./Pseudos\");\nvar SelectorPart = require(\"./SelectorPart\");\nfunction Specificity(a, b, c, d) {\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n}\n\nSpecificity.prototype = {\n constructor: Specificity,\n compare: function(other) {\n var comps = [\"a\", \"b\", \"c\", \"d\"],\n i, len;\n\n for (i = 0, len = comps.length; i < len; i++) {\n if (this[comps[i]] < other[comps[i]]) {\n return -1;\n } else if (this[comps[i]] > other[comps[i]]) {\n return 1;\n }\n }\n\n return 0;\n },\n valueOf: function() {\n return (this.a * 1000) + (this.b * 100) + (this.c * 10) + this.d;\n },\n toString: function() {\n return this.a + \",\" + this.b + \",\" + this.c + \",\" + this.d;\n }\n\n};\nSpecificity.calculate = function(selector) {\n\n var i,\n len,\n part,\n b = 0,\n c = 0,\n d = 0;\n\n function updateValues(part) {\n\n var i, j, len, num,\n elementName = part.elementName ? part.elementName.text : \"\",\n modifier;\n\n if (elementName && elementName.charAt(elementName.length - 1) !== \"*\") {\n d++;\n }\n\n for (i = 0, len = part.modifiers.length; i < len; i++) {\n modifier = part.modifiers[i];\n switch (modifier.type) {\n case \"class\":\n case \"attribute\":\n c++;\n break;\n\n case \"id\":\n b++;\n break;\n\n case \"pseudo\":\n if (Pseudos.isElement(modifier.text)) {\n d++;\n } else {\n c++;\n }\n break;\n\n case \"not\":\n for (j = 0, num = modifier.args.length; j < num; j++) {\n updateValues(modifier.args[j]);\n }\n }\n }\n }\n\n for (i = 0, len = selector.parts.length; i < len; i++) {\n part = selector.parts[i];\n\n if (part instanceof SelectorPart) {\n updateValues(part);\n }\n }\n\n return new Specificity(0, b, c, d);\n};\n\n},{\"./Pseudos\":12,\"./SelectorPart\":14}],17:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = TokenStream;\n\nvar TokenStreamBase = require(\"../util/TokenStreamBase\");\n\nvar PropertyValuePart = require(\"./PropertyValuePart\");\nvar Tokens = require(\"./Tokens\");\n\nvar h = /^[0-9a-fA-F]$/,\n nonascii = /^[\\u00A0-\\uFFFF]$/,\n nl = /\\n|\\r\\n|\\r|\\f/,\n whitespace = /\\u0009|\\u000a|\\u000c|\\u000d|\\u0020/;\n\n\nfunction isHexDigit(c) {\n return c != null && h.test(c);\n}\n\nfunction isDigit(c) {\n return c != null && /\\d/.test(c);\n}\n\nfunction isWhitespace(c) {\n return c != null && whitespace.test(c);\n}\n\nfunction isNewLine(c) {\n return c != null && nl.test(c);\n}\n\nfunction isNameStart(c) {\n return c != null && /[a-z_\\u00A0-\\uFFFF\\\\]/i.test(c);\n}\n\nfunction isNameChar(c) {\n return c != null && (isNameStart(c) || /[0-9\\-\\\\]/.test(c));\n}\n\nfunction isIdentStart(c) {\n return c != null && (isNameStart(c) || /-\\\\/.test(c));\n}\n\nfunction mix(receiver, supplier) {\n for (var prop in supplier) {\n if (Object.prototype.hasOwnProperty.call(supplier, prop)) {\n receiver[prop] = supplier[prop];\n }\n }\n return receiver;\n}\n\nfunction wouldStartIdent(twoCodePoints) {\n return typeof twoCodePoints === \"string\" &&\n (twoCodePoints[0] === \"-\" && isNameStart(twoCodePoints[1]) || isNameStart(twoCodePoints[0]));\n}\n\nfunction wouldStartUnsignedNumber(twoCodePoints) {\n return typeof twoCodePoints === \"string\" &&\n (isDigit(twoCodePoints[0]) || (twoCodePoints[0] === \".\" && isDigit(twoCodePoints[1])));\n}\nfunction TokenStream(input) {\n TokenStreamBase.call(this, input, Tokens);\n}\n\nTokenStream.prototype = mix(new TokenStreamBase(), {\n _getToken: function() {\n\n var c,\n reader = this._reader,\n token = null,\n startLine = reader.getLine(),\n startCol = reader.getCol();\n\n c = reader.read();\n\n while (c) {\n switch (c) {\n case \"/\":\n\n if (reader.peek() === \"*\") {\n token = this.commentToken(c, startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n break;\n case \"|\":\n case \"~\":\n case \"^\":\n case \"$\":\n case \"*\":\n if (reader.peek() === \"=\") {\n token = this.comparisonToken(c, startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n break;\n case \"\\\"\":\n case \"'\":\n token = this.stringToken(c, startLine, startCol);\n break;\n case \"#\":\n if (isNameChar(reader.peek())) {\n token = this.hashToken(c, startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n break;\n case \".\":\n if (isDigit(reader.peek())) {\n token = this.numberToken(c, startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n break;\n case \"-\":\n if (wouldStartUnsignedNumber(reader.peekCount(2))) {\n token = this.numberToken(c, startLine, startCol);\n break;\n } else if (reader.peekCount(2) === \"->\") {\n token = this.htmlCommentEndToken(c, startLine, startCol);\n } else {\n token = this._getDefaultToken(c, startLine, startCol);\n }\n break;\n case \"+\":\n if (wouldStartUnsignedNumber(reader.peekCount(2))) {\n token = this.numberToken(c, startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n break;\n case \"!\":\n token = this.importantToken(c, startLine, startCol);\n break;\n case \"@\":\n token = this.atRuleToken(c, startLine, startCol);\n break;\n case \":\":\n token = this.notToken(c, startLine, startCol);\n break;\n case \"<\":\n token = this.htmlCommentStartToken(c, startLine, startCol);\n break;\n case \"\\\\\":\n if (/[^\\r\\n\\f]/.test(reader.peek())) {\n token = this.identOrFunctionToken(this.readEscape(c, true), startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n break;\n case \"U\":\n case \"u\":\n if (reader.peek() === \"+\") {\n token = this.unicodeRangeToken(c, startLine, startCol);\n } else {\n token = this._getDefaultToken(c, startLine, startCol);\n }\n break;\n\n default:\n token = this._getDefaultToken(c, startLine, startCol);\n\n }\n break;\n }\n\n if (!token && c === null) {\n token = this.createToken(Tokens.EOF, null, startLine, startCol);\n }\n\n return token;\n },\n _getDefaultToken: function(c, startLine, startCol) {\n var reader = this._reader,\n token = null;\n\n if (isDigit(c)) {\n token = this.numberToken(c, startLine, startCol);\n } else\n if (isWhitespace(c)) {\n token = this.whitespaceToken(c, startLine, startCol);\n } else\n if (wouldStartIdent(c + reader.peekCount(1))) {\n token = this.identOrFunctionToken(c, startLine, startCol);\n } else {\n token = this.charToken(c, startLine, startCol);\n }\n\n return token;\n },\n createToken: function(tt, value, startLine, startCol, options) {\n var reader = this._reader;\n options = options || {};\n\n return {\n value: value,\n type: tt,\n channel: options.channel,\n endChar: options.endChar,\n hide: options.hide || false,\n startLine: startLine,\n startCol: startCol,\n endLine: reader.getLine(),\n endCol: reader.getCol()\n };\n },\n atRuleToken: function(first, startLine, startCol) {\n var rule = first,\n reader = this._reader,\n tt = Tokens.CHAR,\n ident;\n reader.mark();\n ident = this.readName();\n rule = first + ident;\n tt = Tokens.type(rule.toLowerCase());\n if (tt === Tokens.CHAR || tt === Tokens.UNKNOWN) {\n if (rule.length > 1) {\n tt = Tokens.UNKNOWN_SYM;\n } else {\n tt = Tokens.CHAR;\n rule = first;\n reader.reset();\n }\n }\n\n return this.createToken(tt, rule, startLine, startCol);\n },\n charToken: function(c, startLine, startCol) {\n var tt = Tokens.type(c);\n var opts = {};\n\n if (tt === -1) {\n tt = Tokens.CHAR;\n } else {\n opts.endChar = Tokens[tt].endChar;\n }\n\n return this.createToken(tt, c, startLine, startCol, opts);\n },\n commentToken: function(first, startLine, startCol) {\n var comment = this.readComment(first);\n\n return this.createToken(Tokens.COMMENT, comment, startLine, startCol);\n },\n comparisonToken: function(c, startLine, startCol) {\n var reader = this._reader,\n comparison = c + reader.read(),\n tt = Tokens.type(comparison) || Tokens.CHAR;\n\n return this.createToken(tt, comparison, startLine, startCol);\n },\n hashToken: function(first, startLine, startCol) {\n var name = this.readName(first);\n\n return this.createToken(Tokens.HASH, name, startLine, startCol);\n },\n htmlCommentStartToken: function(first, startLine, startCol) {\n var reader = this._reader,\n text = first;\n\n reader.mark();\n text += reader.readCount(3);\n\n if (text === \"<!--\") {\n return this.createToken(Tokens.CDO, text, startLine, startCol);\n } else {\n reader.reset();\n return this.charToken(first, startLine, startCol);\n }\n },\n htmlCommentEndToken: function(first, startLine, startCol) {\n var reader = this._reader,\n text = first;\n\n reader.mark();\n text += reader.readCount(2);\n\n if (text === \"-->\") {\n return this.createToken(Tokens.CDC, text, startLine, startCol);\n } else {\n reader.reset();\n return this.charToken(first, startLine, startCol);\n }\n },\n identOrFunctionToken: function(first, startLine, startCol) {\n var reader = this._reader,\n ident = this.readName(first),\n tt = Tokens.IDENT,\n uriFns = [\"url(\", \"url-prefix(\", \"domain(\"],\n uri;\n if (reader.peek() === \"(\") {\n ident += reader.read();\n if (uriFns.indexOf(ident.toLowerCase()) > -1) {\n reader.mark();\n uri = this.readURI(ident);\n if (uri === null) {\n reader.reset();\n tt = Tokens.FUNCTION;\n } else {\n tt = Tokens.URI;\n ident = uri;\n }\n } else {\n tt = Tokens.FUNCTION;\n }\n } else if (reader.peek() === \":\") { // might be an IE function\n if (ident.toLowerCase() === \"progid\") {\n ident += reader.readTo(\"(\");\n tt = Tokens.IE_FUNCTION;\n }\n }\n\n return this.createToken(tt, ident, startLine, startCol);\n },\n importantToken: function(first, startLine, startCol) {\n var reader = this._reader,\n important = first,\n tt = Tokens.CHAR,\n temp,\n c;\n\n reader.mark();\n c = reader.read();\n\n while (c) {\n if (c === \"/\") {\n if (reader.peek() !== \"*\") {\n break;\n } else {\n temp = this.readComment(c);\n if (temp === \"\") { // broken!\n break;\n }\n }\n } else if (isWhitespace(c)) {\n important += c + this.readWhitespace();\n } else if (/i/i.test(c)) {\n temp = reader.readCount(8);\n if (/mportant/i.test(temp)) {\n important += c + temp;\n tt = Tokens.IMPORTANT_SYM;\n\n }\n break; // we're done\n } else {\n break;\n }\n\n c = reader.read();\n }\n\n if (tt === Tokens.CHAR) {\n reader.reset();\n return this.charToken(first, startLine, startCol);\n } else {\n return this.createToken(tt, important, startLine, startCol);\n }\n\n\n },\n notToken: function(first, startLine, startCol) {\n var reader = this._reader,\n text = first;\n\n reader.mark();\n text += reader.readCount(4);\n\n if (text.toLowerCase() === \":not(\") {\n return this.createToken(Tokens.NOT, text, startLine, startCol);\n } else {\n reader.reset();\n return this.charToken(first, startLine, startCol);\n }\n },\n numberToken: function(first, startLine, startCol) {\n var reader = this._reader,\n value = this.readNumber(first),\n ident,\n tt = Tokens.NUMBER,\n c = reader.peek();\n\n if (isIdentStart(c)) {\n ident = this.readName(reader.read());\n value += ident;\n\n if (/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^fr$|^vmax$|^vmin$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(ident)) {\n tt = Tokens.LENGTH;\n } else if (/^deg|^rad$|^grad$|^turn$/i.test(ident)) {\n tt = Tokens.ANGLE;\n } else if (/^ms$|^s$/i.test(ident)) {\n tt = Tokens.TIME;\n } else if (/^hz$|^khz$/i.test(ident)) {\n tt = Tokens.FREQ;\n } else if (/^dpi$|^dpcm$/i.test(ident)) {\n tt = Tokens.RESOLUTION;\n } else {\n tt = Tokens.DIMENSION;\n }\n\n } else if (c === \"%\") {\n value += reader.read();\n tt = Tokens.PERCENTAGE;\n }\n\n return this.createToken(tt, value, startLine, startCol);\n },\n stringToken: function(first, startLine, startCol) {\n var delim = first,\n string = first,\n reader = this._reader,\n tt = Tokens.STRING,\n c = reader.read(),\n i;\n\n while (c) {\n string += c;\n\n if (c === \"\\\\\") {\n c = reader.read();\n if (c === null) {\n break; // premature EOF after backslash\n } else if (/[^\\r\\n\\f0-9a-f]/i.test(c)) {\n string += c;\n } else {\n for (i = 0; isHexDigit(c) && i < 6; i++) {\n string += c;\n c = reader.read();\n }\n if (c === \"\\r\" && reader.peek() === \"\\n\") {\n string += c;\n c = reader.read();\n }\n if (isWhitespace(c)) {\n string += c;\n } else {\n continue;\n }\n }\n } else if (c === delim) {\n break; // delimiter found.\n } else if (isNewLine(reader.peek())) {\n tt = Tokens.INVALID;\n break;\n }\n c = reader.read();\n }\n if (c === null) {\n tt = Tokens.INVALID;\n }\n\n return this.createToken(tt, string, startLine, startCol);\n },\n\n unicodeRangeToken: function(first, startLine, startCol) {\n var reader = this._reader,\n value = first,\n temp,\n tt = Tokens.CHAR;\n if (reader.peek() === \"+\") {\n reader.mark();\n value += reader.read();\n value += this.readUnicodeRangePart(true);\n if (value.length === 2) {\n reader.reset();\n } else {\n\n tt = Tokens.UNICODE_RANGE;\n if (value.indexOf(\"?\") === -1) {\n\n if (reader.peek() === \"-\") {\n reader.mark();\n temp = reader.read();\n temp += this.readUnicodeRangePart(false);\n if (temp.length === 1) {\n reader.reset();\n } else {\n value += temp;\n }\n }\n\n }\n }\n }\n\n return this.createToken(tt, value, startLine, startCol);\n },\n whitespaceToken: function(first, startLine, startCol) {\n var value = first + this.readWhitespace();\n return this.createToken(Tokens.S, value, startLine, startCol);\n },\n\n readUnicodeRangePart: function(allowQuestionMark) {\n var reader = this._reader,\n part = \"\",\n c = reader.peek();\n while (isHexDigit(c) && part.length < 6) {\n reader.read();\n part += c;\n c = reader.peek();\n }\n if (allowQuestionMark) {\n while (c === \"?\" && part.length < 6) {\n reader.read();\n part += c;\n c = reader.peek();\n }\n }\n\n return part;\n },\n\n readWhitespace: function() {\n var reader = this._reader,\n whitespace = \"\",\n c = reader.peek();\n\n while (isWhitespace(c)) {\n reader.read();\n whitespace += c;\n c = reader.peek();\n }\n\n return whitespace;\n },\n readNumber: function(first) {\n var reader = this._reader,\n number = first,\n hasDot = first === \".\",\n c = reader.peek();\n\n\n while (c) {\n if (isDigit(c)) {\n number += reader.read();\n } else if (c === \".\") {\n if (hasDot) {\n break;\n } else {\n hasDot = true;\n number += reader.read();\n }\n } else {\n break;\n }\n\n c = reader.peek();\n }\n\n return number;\n },\n readString: function() {\n var token = this.stringToken(this._reader.read(), 0, 0);\n return token.type === Tokens.INVALID ? null : token.value;\n },\n readURI: function(first) {\n var reader = this._reader,\n uri = first,\n inner = \"\",\n c = reader.peek();\n while (c && isWhitespace(c)) {\n reader.read();\n c = reader.peek();\n }\n if (c === \"'\" || c === \"\\\"\") {\n inner = this.readString();\n if (inner !== null) {\n inner = PropertyValuePart.parseString(inner);\n }\n } else {\n inner = this.readUnquotedURL();\n }\n\n c = reader.peek();\n while (c && isWhitespace(c)) {\n reader.read();\n c = reader.peek();\n }\n if (inner === null || c !== \")\") {\n uri = null;\n } else {\n uri += PropertyValuePart.serializeString(inner) + reader.read();\n }\n\n return uri;\n },\n readUnquotedURL: function(first) {\n var reader = this._reader,\n url = first || \"\",\n c;\n\n for (c = reader.peek(); c; c = reader.peek()) {\n if (nonascii.test(c) || /^[-!#$%&*-[\\]-~]$/.test(c)) {\n url += c;\n reader.read();\n } else if (c === \"\\\\\") {\n if (/^[^\\r\\n\\f]$/.test(reader.peek(2))) {\n url += this.readEscape(reader.read(), true);\n } else {\n break; // bad escape sequence.\n }\n } else {\n break; // bad character\n }\n }\n\n return url;\n },\n\n readName: function(first) {\n var reader = this._reader,\n ident = first || \"\",\n c;\n\n for (c = reader.peek(); c; c = reader.peek()) {\n if (c === \"\\\\\") {\n if (/^[^\\r\\n\\f]$/.test(reader.peek(2))) {\n ident += this.readEscape(reader.read(), true);\n } else {\n break;\n }\n } else if (isNameChar(c)) {\n ident += reader.read();\n } else {\n break;\n }\n }\n\n return ident;\n },\n\n readEscape: function(first, unescape) {\n var reader = this._reader,\n cssEscape = first || \"\",\n i = 0,\n c = reader.peek();\n\n if (isHexDigit(c)) {\n do {\n cssEscape += reader.read();\n c = reader.peek();\n } while (c && isHexDigit(c) && ++i < 6);\n }\n\n if (cssEscape.length === 1) {\n if (/^[^\\r\\n\\f0-9a-f]$/.test(c)) {\n reader.read();\n if (unescape) {\n return c;\n }\n } else {\n throw new Error(\"Bad escape sequence.\");\n }\n } else if (c === \"\\r\") {\n reader.read();\n if (reader.peek() === \"\\n\") {\n c += reader.read();\n }\n } else if (/^[ \\t\\n\\f]$/.test(c)) {\n reader.read();\n } else {\n c = \"\";\n }\n\n if (unescape) {\n var cp = parseInt(cssEscape.slice(first.length), 16);\n return String.fromCodePoint ? String.fromCodePoint(cp) :\n String.fromCharCode(cp);\n }\n return cssEscape + c;\n },\n\n readComment: function(first) {\n var reader = this._reader,\n comment = first || \"\",\n c = reader.read();\n\n if (c === \"*\") {\n while (c) {\n comment += c;\n if (comment.length > 2 && c === \"*\" && reader.peek() === \"/\") {\n comment += reader.read();\n break;\n }\n\n c = reader.read();\n }\n\n return comment;\n } else {\n return \"\";\n }\n\n }\n});\n\n},{\"../util/TokenStreamBase\":27,\"./PropertyValuePart\":11,\"./Tokens\":18}],18:[function(require,module,exports){\n\"use strict\";\n\nvar Tokens = module.exports = [\n { name: \"CDO\" },\n { name: \"CDC\" },\n { name: \"S\", whitespace: true/*, channel: \"ws\"*/ },\n { name: \"COMMENT\", comment: true, hide: true, channel: \"comment\" },\n { name: \"INCLUDES\", text: \"~=\" },\n { name: \"DASHMATCH\", text: \"|=\" },\n { name: \"PREFIXMATCH\", text: \"^=\" },\n { name: \"SUFFIXMATCH\", text: \"$=\" },\n { name: \"SUBSTRINGMATCH\", text: \"*=\" },\n { name: \"STRING\" },\n { name: \"IDENT\" },\n { name: \"HASH\" },\n { name: \"IMPORT_SYM\", text: \"@import\" },\n { name: \"PAGE_SYM\", text: \"@page\" },\n { name: \"MEDIA_SYM\", text: \"@media\" },\n { name: \"FONT_FACE_SYM\", text: \"@font-face\" },\n { name: \"CHARSET_SYM\", text: \"@charset\" },\n { name: \"NAMESPACE_SYM\", text: \"@namespace\" },\n { name: \"SUPPORTS_SYM\", text: \"@supports\" },\n { name: \"VIEWPORT_SYM\", text: [\"@viewport\", \"@-ms-viewport\", \"@-o-viewport\"] },\n { name: \"DOCUMENT_SYM\", text: [\"@document\", \"@-moz-document\"] },\n { name: \"UNKNOWN_SYM\" },\n { name: \"KEYFRAMES_SYM\", text: [ \"@keyframes\", \"@-webkit-keyframes\", \"@-moz-keyframes\", \"@-o-keyframes\" ] },\n { name: \"IMPORTANT_SYM\" },\n { name: \"LENGTH\" },\n { name: \"ANGLE\" },\n { name: \"TIME\" },\n { name: \"FREQ\" },\n { name: \"DIMENSION\" },\n { name: \"PERCENTAGE\" },\n { name: \"NUMBER\" },\n { name: \"URI\" },\n { name: \"FUNCTION\" },\n { name: \"UNICODE_RANGE\" },\n { name: \"INVALID\" },\n { name: \"PLUS\", text: \"+\" },\n { name: \"GREATER\", text: \">\" },\n { name: \"COMMA\", text: \",\" },\n { name: \"TILDE\", text: \"~\" },\n { name: \"NOT\" },\n { name: \"TOPLEFTCORNER_SYM\", text: \"@top-left-corner\" },\n { name: \"TOPLEFT_SYM\", text: \"@top-left\" },\n { name: \"TOPCENTER_SYM\", text: \"@top-center\" },\n { name: \"TOPRIGHT_SYM\", text: \"@top-right\" },\n { name: \"TOPRIGHTCORNER_SYM\", text: \"@top-right-corner\" },\n { name: \"BOTTOMLEFTCORNER_SYM\", text: \"@bottom-left-corner\" },\n { name: \"BOTTOMLEFT_SYM\", text: \"@bottom-left\" },\n { name: \"BOTTOMCENTER_SYM\", text: \"@bottom-center\" },\n { name: \"BOTTOMRIGHT_SYM\", text: \"@bottom-right\" },\n { name: \"BOTTOMRIGHTCORNER_SYM\", text: \"@bottom-right-corner\" },\n { name: \"LEFTTOP_SYM\", text: \"@left-top\" },\n { name: \"LEFTMIDDLE_SYM\", text: \"@left-middle\" },\n { name: \"LEFTBOTTOM_SYM\", text: \"@left-bottom\" },\n { name: \"RIGHTTOP_SYM\", text: \"@right-top\" },\n { name: \"RIGHTMIDDLE_SYM\", text: \"@right-middle\" },\n { name: \"RIGHTBOTTOM_SYM\", text: \"@right-bottom\" },\n { name: \"RESOLUTION\", state: \"media\" },\n { name: \"IE_FUNCTION\" },\n { name: \"CHAR\" },\n {\n name: \"PIPE\",\n text: \"|\"\n },\n {\n name: \"SLASH\",\n text: \"/\"\n },\n {\n name: \"MINUS\",\n text: \"-\"\n },\n {\n name: \"STAR\",\n text: \"*\"\n },\n\n {\n name: \"LBRACE\",\n endChar: \"}\",\n text: \"{\"\n },\n {\n name: \"RBRACE\",\n text: \"}\"\n },\n {\n name: \"LBRACKET\",\n endChar: \"]\",\n text: \"[\"\n },\n {\n name: \"RBRACKET\",\n text: \"]\"\n },\n {\n name: \"EQUALS\",\n text: \"=\"\n },\n {\n name: \"COLON\",\n text: \":\"\n },\n {\n name: \"SEMICOLON\",\n text: \";\"\n },\n {\n name: \"LPAREN\",\n endChar: \")\",\n text: \"(\"\n },\n {\n name: \"RPAREN\",\n text: \")\"\n },\n {\n name: \"DOT\",\n text: \".\"\n }\n];\n\n(function() {\n var nameMap = [],\n typeMap = Object.create(null);\n\n Tokens.UNKNOWN = -1;\n Tokens.unshift({ name:\"EOF\" });\n for (var i = 0, len = Tokens.length; i < len; i++) {\n nameMap.push(Tokens[i].name);\n Tokens[Tokens[i].name] = i;\n if (Tokens[i].text) {\n if (Tokens[i].text instanceof Array) {\n for (var j = 0; j < Tokens[i].text.length; j++) {\n typeMap[Tokens[i].text[j]] = i;\n }\n } else {\n typeMap[Tokens[i].text] = i;\n }\n }\n }\n\n Tokens.name = function(tt) {\n return nameMap[tt];\n };\n\n Tokens.type = function(c) {\n return typeMap[c] || -1;\n };\n})();\n\n},{}],19:[function(require,module,exports){\n\n\"use strict\";\n\nvar Matcher = require(\"./Matcher\");\nvar Properties = require(\"./Properties\");\nvar ValidationTypes = require(\"./ValidationTypes\");\nvar ValidationError = require(\"./ValidationError\");\nvar PropertyValueIterator = require(\"./PropertyValueIterator\");\n\nvar Validation = module.exports = {\n\n validate: function(property, value) {\n var name = property.toString().toLowerCase(),\n expression = new PropertyValueIterator(value),\n spec = Properties[name],\n part;\n\n if (!spec) {\n if (name.indexOf(\"-\") !== 0) { // vendor prefixed are ok\n throw new ValidationError(\"Unknown property '\" + property + \"'.\", property.line, property.col);\n }\n } else if (typeof spec !== \"number\") {\n if (ValidationTypes.isAny(expression, \"inherit | initial | unset\")) {\n if (expression.hasNext()) {\n part = expression.next();\n throw new ValidationError(\"Expected end of value but found '\" + part + \"'.\", part.line, part.col);\n }\n return;\n }\n this.singleProperty(spec, expression);\n\n }\n\n },\n\n singleProperty: function(types, expression) {\n\n var result = false,\n value = expression.value,\n part;\n\n result = Matcher.parse(types).match(expression);\n\n if (!result) {\n if (expression.hasNext() && !expression.isFirst()) {\n part = expression.peek();\n throw new ValidationError(\"Expected end of value but found '\" + part + \"'.\", part.line, part.col);\n } else {\n throw new ValidationError(\"Expected (\" + ValidationTypes.describe(types) + \") but found '\" + value + \"'.\", value.line, value.col);\n }\n } else if (expression.hasNext()) {\n part = expression.next();\n throw new ValidationError(\"Expected end of value but found '\" + part + \"'.\", part.line, part.col);\n }\n\n }\n\n};\n\n},{\"./Matcher\":3,\"./Properties\":7,\"./PropertyValueIterator\":10,\"./ValidationError\":20,\"./ValidationTypes\":21}],20:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = ValidationError;\nfunction ValidationError(message, line, col) {\n this.col = col;\n this.line = line;\n this.message = message;\n\n}\nValidationError.prototype = new Error();\n\n},{}],21:[function(require,module,exports){\n\"use strict\";\n\nvar ValidationTypes = module.exports;\n\nvar Matcher = require(\"./Matcher\");\n\nfunction copy(to, from) {\n Object.keys(from).forEach(function(prop) {\n to[prop] = from[prop];\n });\n}\ncopy(ValidationTypes, {\n\n isLiteral: function (part, literals) {\n var text = part.text.toString().toLowerCase(),\n args = literals.split(\" | \"),\n i,\n len,\n found = false;\n\n for (i = 0, len = args.length; i < len && !found; i++) {\n if (args[i].charAt(0) === \"<\") {\n found = this.simple[args[i]](part);\n } else if (args[i].slice(-2) === \"()\") {\n found = (part.type === \"function\" &&\n part.name === args[i].slice(0, -2));\n } else if (text === args[i].toLowerCase()) {\n found = true;\n }\n }\n\n return found;\n },\n\n isSimple: function(type) {\n return Boolean(this.simple[type]);\n },\n\n isComplex: function(type) {\n return Boolean(this.complex[type]);\n },\n\n describe: function(type) {\n if (this.complex[type] instanceof Matcher) {\n return this.complex[type].toString(0);\n }\n return type;\n },\n isAny: function (expression, types) {\n var args = types.split(\" | \"),\n i,\n len,\n found = false;\n\n for (i = 0, len = args.length; i < len && !found && expression.hasNext(); i++) {\n found = this.isType(expression, args[i]);\n }\n\n return found;\n },\n isAnyOfGroup: function(expression, types) {\n var args = types.split(\" || \"),\n i,\n len,\n found = false;\n\n for (i = 0, len = args.length; i < len && !found; i++) {\n found = this.isType(expression, args[i]);\n }\n\n return found ? args[i - 1] : false;\n },\n isType: function (expression, type) {\n var part = expression.peek(),\n result = false;\n\n if (type.charAt(0) !== \"<\") {\n result = this.isLiteral(part, type);\n if (result) {\n expression.next();\n }\n } else if (this.simple[type]) {\n result = this.simple[type](part);\n if (result) {\n expression.next();\n }\n } else if (this.complex[type] instanceof Matcher) {\n result = this.complex[type].match(expression);\n } else {\n result = this.complex[type](expression);\n }\n\n return result;\n },\n\n\n simple: {\n __proto__: null,\n\n \"<absolute-size>\":\n \"xx-small | x-small | small | medium | large | x-large | xx-large\",\n\n \"<animateable-feature>\":\n \"scroll-position | contents | <animateable-feature-name>\",\n\n \"<animateable-feature-name>\": function(part) {\n return this[\"<ident>\"](part) &&\n !/^(unset|initial|inherit|will-change|auto|scroll-position|contents)$/i.test(part);\n },\n\n \"<angle>\": function(part) {\n return part.type === \"angle\";\n },\n\n \"<attachment>\": \"scroll | fixed | local\",\n\n \"<attr>\": \"attr()\",\n \"<basic-shape>\": \"inset() | circle() | ellipse() | polygon()\",\n\n \"<bg-image>\": \"<image> | <gradient> | none\",\n\n \"<border-style>\":\n \"none | hidden | dotted | dashed | solid | double | groove | \" +\n \"ridge | inset | outset\",\n\n \"<border-width>\": \"<length> | thin | medium | thick\",\n\n \"<box>\": \"padding-box | border-box | content-box\",\n\n \"<clip-source>\": \"<uri>\",\n\n \"<color>\": function(part) {\n return part.type === \"color\" || String(part) === \"transparent\" || String(part) === \"currentColor\";\n },\n \"<color-svg>\": function(part) {\n return part.type === \"color\";\n },\n\n \"<content>\": \"content()\",\n \"<content-sizing>\":\n \"fill-available | -moz-available | -webkit-fill-available | \" +\n \"max-content | -moz-max-content | -webkit-max-content | \" +\n \"min-content | -moz-min-content | -webkit-min-content | \" +\n \"fit-content | -moz-fit-content | -webkit-fit-content\",\n\n \"<feature-tag-value>\": function(part) {\n return part.type === \"function\" && /^[A-Z0-9]{4}$/i.test(part);\n },\n \"<filter-function>\":\n \"blur() | brightness() | contrast() | custom() | \" +\n \"drop-shadow() | grayscale() | hue-rotate() | invert() | \" +\n \"opacity() | saturate() | sepia()\",\n\n \"<flex-basis>\": \"<width>\",\n\n \"<flex-direction>\": \"row | row-reverse | column | column-reverse\",\n\n \"<flex-grow>\": \"<number>\",\n\n \"<flex-shrink>\": \"<number>\",\n\n \"<flex-wrap>\": \"nowrap | wrap | wrap-reverse\",\n\n \"<font-size>\":\n \"<absolute-size> | <relative-size> | <length> | <percentage>\",\n\n \"<font-stretch>\":\n \"normal | ultra-condensed | extra-condensed | condensed | \" +\n \"semi-condensed | semi-expanded | expanded | extra-expanded | \" +\n \"ultra-expanded\",\n\n \"<font-style>\": \"normal | italic | oblique\",\n\n \"<font-variant-caps>\":\n \"small-caps | all-small-caps | petite-caps | all-petite-caps | \" +\n \"unicase | titling-caps\",\n\n \"<font-variant-css21>\": \"normal | small-caps\",\n\n \"<font-weight>\":\n \"normal | bold | bolder | lighter | \" +\n \"100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900\",\n\n \"<generic-family>\":\n \"serif | sans-serif | cursive | fantasy | monospace\",\n\n \"<geometry-box>\": \"<shape-box> | fill-box | stroke-box | view-box\",\n\n \"<glyph-angle>\": function(part) {\n return part.type === \"angle\" && part.units === \"deg\";\n },\n\n \"<gradient>\": function(part) {\n return part.type === \"function\" && /^(?:-(?:ms|moz|o|webkit)-)?(?:repeating-)?(?:radial-|linear-)?gradient/i.test(part);\n },\n\n \"<icccolor>\":\n \"cielab() | cielch() | cielchab() | \" +\n \"icc-color() | icc-named-color()\",\n \"<ident>\": function(part) {\n return part.type === \"identifier\" || part.wasIdent;\n },\n\n \"<ident-not-generic-family>\": function(part) {\n return this[\"<ident>\"](part) && !this[\"<generic-family>\"](part);\n },\n\n \"<image>\": \"<uri>\",\n\n \"<integer>\": function(part) {\n return part.type === \"integer\";\n },\n\n \"<length>\": function(part) {\n if (part.type === \"function\" && /^(?:-(?:ms|moz|o|webkit)-)?calc/i.test(part)) {\n return true;\n } else {\n return part.type === \"length\" || part.type === \"number\" || part.type === \"integer\" || String(part) === \"0\";\n }\n },\n\n \"<line>\": function(part) {\n return part.type === \"integer\";\n },\n\n \"<line-height>\": \"<number> | <length> | <percentage> | normal\",\n\n \"<margin-width>\": \"<length> | <percentage> | auto\",\n\n \"<miterlimit>\": function(part) {\n return this[\"<number>\"](part) && part.value >= 1;\n },\n\n \"<nonnegative-length-or-percentage>\": function(part) {\n return (this[\"<length>\"](part) || this[\"<percentage>\"](part)) &&\n (String(part) === \"0\" || part.type === \"function\" || (part.value) >= 0);\n },\n\n \"<nonnegative-number-or-percentage>\": function(part) {\n return (this[\"<number>\"](part) || this[\"<percentage>\"](part)) &&\n (String(part) === \"0\" || part.type === \"function\" || (part.value) >= 0);\n },\n\n \"<number>\": function(part) {\n return part.type === \"number\" || this[\"<integer>\"](part);\n },\n\n \"<opacity-value>\": function(part) {\n return this[\"<number>\"](part) && part.value >= 0 && part.value <= 1;\n },\n\n \"<padding-width>\": \"<nonnegative-length-or-percentage>\",\n\n \"<percentage>\": function(part) {\n return part.type === \"percentage\" || String(part) === \"0\";\n },\n\n \"<relative-size>\": \"smaller | larger\",\n\n \"<shape>\": \"rect() | inset-rect()\",\n\n \"<shape-box>\": \"<box> | margin-box\",\n\n \"<single-animation-direction>\":\n \"normal | reverse | alternate | alternate-reverse\",\n\n \"<single-animation-name>\": function(part) {\n return this[\"<ident>\"](part) &&\n /^-?[a-z_][-a-z0-9_]+$/i.test(part) &&\n !/^(none|unset|initial|inherit)$/i.test(part);\n },\n\n \"<string>\": function(part) {\n return part.type === \"string\";\n },\n\n \"<time>\": function(part) {\n return part.type === \"time\";\n },\n\n \"<uri>\": function(part) {\n return part.type === \"uri\";\n },\n\n \"<width>\": \"<margin-width>\"\n },\n\n complex: {\n __proto__: null,\n\n \"<azimuth>\":\n \"<angle>\" +\n \" | \" +\n \"[ [ left-side | far-left | left | center-left | center | \" +\n \"center-right | right | far-right | right-side ] || behind ]\" +\n \" | \" +\n \"leftwards | rightwards\",\n\n \"<bg-position>\": \"<position>#\",\n\n \"<bg-size>\":\n \"[ <length> | <percentage> | auto ]{1,2} | cover | contain\",\n\n \"<blend-mode>\":\n \"normal | multiply | screen | overlay | darken | lighten | color-dodge | \" +\n \"color-burn | hard-light | soft-light | difference | exclusion | hue | \" +\n \"saturation | color | luminosity\",\n\n \"<border-image-slice>\":\n Matcher.many([true /* first element is required */],\n Matcher.cast(\"<nonnegative-number-or-percentage>\"),\n Matcher.cast(\"<nonnegative-number-or-percentage>\"),\n Matcher.cast(\"<nonnegative-number-or-percentage>\"),\n Matcher.cast(\"<nonnegative-number-or-percentage>\"),\n \"fill\"),\n\n \"<border-radius>\":\n \"<nonnegative-length-or-percentage>{1,4} \" +\n \"[ / <nonnegative-length-or-percentage>{1,4} ]?\",\n\n \"<box-shadow>\": \"none | <shadow>#\",\n\n \"<clip-path>\": \"<basic-shape> || <geometry-box>\",\n\n \"<dasharray>\":\n Matcher.cast(\"<nonnegative-length-or-percentage>\")\n .braces(1, Infinity, \"#\", Matcher.cast(\",\").question()),\n\n \"<family-name>\":\n \"<string> | <ident-not-generic-family> <ident>*\",\n\n \"<filter-function-list>\": \"[ <filter-function> | <uri> ]+\",\n \"<flex>\":\n \"none | [ <flex-grow> <flex-shrink>? || <flex-basis> ]\",\n\n \"<font-family>\": \"[ <generic-family> | <family-name> ]#\",\n\n \"<font-shorthand>\":\n \"[ <font-style> || <font-variant-css21> || \" +\n \"<font-weight> || <font-stretch> ]? <font-size> \" +\n \"[ / <line-height> ]? <font-family>\",\n\n \"<font-variant-alternates>\":\n \"stylistic() || \" +\n \"historical-forms || \" +\n \"styleset() || \" +\n \"character-variant() || \" +\n \"swash() || \" +\n \"ornaments() || \" +\n \"annotation()\",\n\n \"<font-variant-ligatures>\":\n \"[ common-ligatures | no-common-ligatures ] || \" +\n \"[ discretionary-ligatures | no-discretionary-ligatures ] || \" +\n \"[ historical-ligatures | no-historical-ligatures ] || \" +\n \"[ contextual | no-contextual ]\",\n\n \"<font-variant-numeric>\":\n \"[ lining-nums | oldstyle-nums ] || \" +\n \"[ proportional-nums | tabular-nums ] || \" +\n \"[ diagonal-fractions | stacked-fractions ] || \" +\n \"ordinal || slashed-zero\",\n\n \"<font-variant-east-asian>\":\n \"[ jis78 | jis83 | jis90 | jis04 | simplified | traditional ] || \" +\n \"[ full-width | proportional-width ] || \" +\n \"ruby\",\n \"<paint>\": \"<paint-basic> | <uri> <paint-basic>?\",\n \"<paint-basic>\": \"none | currentColor | <color-svg> <icccolor>?\",\n\n \"<position>\":\n \"[ center | [ left | right ] [ <percentage> | <length> ]? ] && \" +\n \"[ center | [ top | bottom ] [ <percentage> | <length> ]? ]\" +\n \" | \" +\n \"[ left | center | right | <percentage> | <length> ] \" +\n \"[ top | center | bottom | <percentage> | <length> ]\" +\n \" | \" +\n \"[ left | center | right | top | bottom | <percentage> | <length> ]\",\n\n \"<repeat-style>\":\n \"repeat-x | repeat-y | [ repeat | space | round | no-repeat ]{1,2}\",\n\n \"<shadow>\":\n Matcher.many([true /* length is required */],\n Matcher.cast(\"<length>\").braces(2, 4), \"inset\", \"<color>\"),\n\n \"<text-decoration-color>\":\n \"<color>\",\n\n \"<text-decoration-line>\":\n \"none | [ underline || overline || line-through || blink ]\",\n\n \"<text-decoration-style>\":\n \"solid | double | dotted | dashed | wavy\",\n\n \"<will-change>\":\n \"auto | <animateable-feature>#\",\n\n \"<x-one-radius>\":\n \"[ <length> | <percentage> ]{1,2}\"\n }\n});\n\nObject.keys(ValidationTypes.simple).forEach(function(nt) {\n var rule = ValidationTypes.simple[nt];\n if (typeof rule === \"string\") {\n ValidationTypes.simple[nt] = function(part) {\n return ValidationTypes.isLiteral(part, rule);\n };\n }\n});\n\nObject.keys(ValidationTypes.complex).forEach(function(nt) {\n var rule = ValidationTypes.complex[nt];\n if (typeof rule === \"string\") {\n ValidationTypes.complex[nt] = Matcher.parse(rule);\n }\n});\nValidationTypes.complex[\"<font-variant>\"] =\n Matcher.oror({ expand: \"<font-variant-ligatures>\" },\n { expand: \"<font-variant-alternates>\" },\n \"<font-variant-caps>\",\n { expand: \"<font-variant-numeric>\" },\n { expand: \"<font-variant-east-asian>\" });\n\n},{\"./Matcher\":3}],22:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n Colors : require(\"./Colors\"),\n Combinator : require(\"./Combinator\"),\n Parser : require(\"./Parser\"),\n PropertyName : require(\"./PropertyName\"),\n PropertyValue : require(\"./PropertyValue\"),\n PropertyValuePart : require(\"./PropertyValuePart\"),\n Matcher : require(\"./Matcher\"),\n MediaFeature : require(\"./MediaFeature\"),\n MediaQuery : require(\"./MediaQuery\"),\n Selector : require(\"./Selector\"),\n SelectorPart : require(\"./SelectorPart\"),\n SelectorSubPart : require(\"./SelectorSubPart\"),\n Specificity : require(\"./Specificity\"),\n TokenStream : require(\"./TokenStream\"),\n Tokens : require(\"./Tokens\"),\n ValidationError : require(\"./ValidationError\")\n};\n\n},{\"./Colors\":1,\"./Combinator\":2,\"./Matcher\":3,\"./MediaFeature\":4,\"./MediaQuery\":5,\"./Parser\":6,\"./PropertyName\":8,\"./PropertyValue\":9,\"./PropertyValuePart\":11,\"./Selector\":13,\"./SelectorPart\":14,\"./SelectorSubPart\":15,\"./Specificity\":16,\"./TokenStream\":17,\"./Tokens\":18,\"./ValidationError\":20}],23:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = EventTarget;\nfunction EventTarget() {\n this._listeners = Object.create(null);\n}\n\nEventTarget.prototype = {\n constructor: EventTarget,\n addListener: function(type, listener) {\n if (!this._listeners[type]) {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(listener);\n },\n fire: function(event) {\n if (typeof event === \"string\") {\n event = { type: event };\n }\n if (typeof event.target !== \"undefined\") {\n event.target = this;\n }\n\n if (typeof event.type === \"undefined\") {\n throw new Error(\"Event object missing 'type' property.\");\n }\n\n if (this._listeners[event.type]) {\n var listeners = this._listeners[event.type].concat();\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].call(this, event);\n }\n }\n },\n removeListener: function(type, listener) {\n if (this._listeners[type]) {\n var listeners = this._listeners[type];\n for (var i = 0, len = listeners.length; i < len; i++) {\n if (listeners[i] === listener) {\n listeners.splice(i, 1);\n break;\n }\n }\n\n\n }\n }\n};\n\n},{}],24:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = StringReader;\nfunction StringReader(text) {\n this._input = text.replace(/(\\r\\n?|\\n)/g, \"\\n\");\n this._line = 1;\n this._col = 1;\n this._cursor = 0;\n}\n\nStringReader.prototype = {\n constructor: StringReader,\n getCol: function() {\n return this._col;\n },\n getLine: function() {\n return this._line;\n },\n eof: function() {\n return this._cursor === this._input.length;\n },\n peek: function(count) {\n var c = null;\n count = typeof count === \"undefined\" ? 1 : count;\n if (this._cursor < this._input.length) {\n c = this._input.charAt(this._cursor + count - 1);\n }\n\n return c;\n },\n read: function() {\n var c = null;\n if (this._cursor < this._input.length) {\n if (this._input.charAt(this._cursor) === \"\\n\") {\n this._line++;\n this._col = 1;\n } else {\n this._col++;\n }\n c = this._input.charAt(this._cursor++);\n }\n\n return c;\n },\n mark: function() {\n this._bookmark = {\n cursor: this._cursor,\n line: this._line,\n col: this._col\n };\n },\n\n reset: function() {\n if (this._bookmark) {\n this._cursor = this._bookmark.cursor;\n this._line = this._bookmark.line;\n this._col = this._bookmark.col;\n delete this._bookmark;\n }\n },\n peekCount: function(count) {\n count = typeof count === \"undefined\" ? 1 : Math.max(count, 0);\n return this._input.substring(this._cursor, this._cursor + count);\n },\n readTo: function(pattern) {\n\n var buffer = \"\",\n c;\n while (buffer.length < pattern.length || buffer.lastIndexOf(pattern) !== buffer.length - pattern.length) {\n c = this.read();\n if (c) {\n buffer += c;\n } else {\n throw new Error(\"Expected \\\"\" + pattern + \"\\\" at line \" + this._line + \", col \" + this._col + \".\");\n }\n }\n\n return buffer;\n\n },\n readWhile: function(filter) {\n\n var buffer = \"\",\n c = this.peek();\n\n while (c !== null && filter(c)) {\n buffer += this.read();\n c = this.peek();\n }\n\n return buffer;\n\n },\n readMatch: function(matcher) {\n\n var source = this._input.substring(this._cursor),\n value = null;\n if (typeof matcher === \"string\") {\n if (source.slice(0, matcher.length) === matcher) {\n value = this.readCount(matcher.length);\n }\n } else if (matcher instanceof RegExp) {\n if (matcher.test(source)) {\n value = this.readCount(RegExp.lastMatch.length);\n }\n }\n\n return value;\n },\n readCount: function(count) {\n var buffer = \"\";\n\n while (count--) {\n buffer += this.read();\n }\n\n return buffer;\n }\n\n};\n\n},{}],25:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = SyntaxError;\nfunction SyntaxError(message, line, col) {\n Error.call(this);\n this.name = this.constructor.name;\n this.col = col;\n this.line = line;\n this.message = message;\n\n}\nSyntaxError.prototype = Object.create(Error.prototype); // jshint ignore:line\nSyntaxError.prototype.constructor = SyntaxError; // jshint ignore:line\n\n},{}],26:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = SyntaxUnit;\nfunction SyntaxUnit(text, line, col, type) {\n this.col = col;\n this.line = line;\n this.text = text;\n this.type = type;\n}\nSyntaxUnit.fromToken = function(token) {\n return new SyntaxUnit(token.value, token.startLine, token.startCol);\n};\n\nSyntaxUnit.prototype = {\n constructor: SyntaxUnit,\n valueOf: function() {\n return this.toString();\n },\n toString: function() {\n return this.text;\n }\n\n};\n\n},{}],27:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = TokenStreamBase;\n\nvar StringReader = require(\"./StringReader\");\nvar SyntaxError = require(\"./SyntaxError\");\nfunction TokenStreamBase(input, tokenData) {\n this._reader = new StringReader(input ? input.toString() : \"\");\n this._token = null;\n this._tokenData = tokenData;\n this._lt = [];\n this._ltIndex = 0;\n\n this._ltIndexCache = [];\n}\nTokenStreamBase.createTokenData = function(tokens) {\n\n var nameMap = [],\n typeMap = Object.create(null),\n tokenData = tokens.concat([]),\n i = 0,\n len = tokenData.length + 1;\n\n tokenData.UNKNOWN = -1;\n tokenData.unshift({ name:\"EOF\" });\n\n for (; i < len; i++) {\n nameMap.push(tokenData[i].name);\n tokenData[tokenData[i].name] = i;\n if (tokenData[i].text) {\n typeMap[tokenData[i].text] = i;\n }\n }\n\n tokenData.name = function(tt) {\n return nameMap[tt];\n };\n\n tokenData.type = function(c) {\n return typeMap[c];\n };\n\n return tokenData;\n};\n\nTokenStreamBase.prototype = {\n constructor: TokenStreamBase,\n match: function(tokenTypes, channel) {\n if (!(tokenTypes instanceof Array)) {\n tokenTypes = [tokenTypes];\n }\n\n var tt = this.get(channel),\n i = 0,\n len = tokenTypes.length;\n\n while (i < len) {\n if (tt === tokenTypes[i++]) {\n return true;\n }\n }\n this.unget();\n return false;\n },\n mustMatch: function(tokenTypes) {\n\n var token;\n if (!(tokenTypes instanceof Array)) {\n tokenTypes = [tokenTypes];\n }\n\n if (!this.match.apply(this, arguments)) {\n token = this.LT(1);\n throw new SyntaxError(\"Expected \" + this._tokenData[tokenTypes[0]].name +\n \" at line \" + token.startLine + \", col \" + token.startCol + \".\", token.startLine, token.startCol);\n }\n },\n advance: function(tokenTypes, channel) {\n\n while (this.LA(0) !== 0 && !this.match(tokenTypes, channel)) {\n this.get();\n }\n\n return this.LA(0);\n },\n get: function(channel) {\n\n var tokenInfo = this._tokenData,\n i = 0,\n token,\n info;\n if (this._lt.length && this._ltIndex >= 0 && this._ltIndex < this._lt.length) {\n\n i++;\n this._token = this._lt[this._ltIndex++];\n info = tokenInfo[this._token.type];\n while ((typeof info.channel !== \"undefined\" && channel !== info.channel) &&\n this._ltIndex < this._lt.length) {\n this._token = this._lt[this._ltIndex++];\n info = tokenInfo[this._token.type];\n i++;\n }\n if ((typeof info.channel === \"undefined\" || channel === info.channel) &&\n this._ltIndex <= this._lt.length) {\n this._ltIndexCache.push(i);\n return this._token.type;\n }\n }\n token = this._getToken();\n if (token.type > -1 && !tokenInfo[token.type].hide) {\n token.channel = tokenInfo[token.type].channel;\n this._token = token;\n this._lt.push(token);\n this._ltIndexCache.push(this._lt.length - this._ltIndex + i);\n if (this._lt.length > 5) {\n this._lt.shift();\n }\n if (this._ltIndexCache.length > 5) {\n this._ltIndexCache.shift();\n }\n this._ltIndex = this._lt.length;\n }\n info = tokenInfo[token.type];\n if (info &&\n (info.hide ||\n (typeof info.channel !== \"undefined\" && channel !== info.channel))) {\n return this.get(channel);\n } else {\n return token.type;\n }\n },\n LA: function(index) {\n var total = index,\n tt;\n if (index > 0) {\n if (index > 5) {\n throw new Error(\"Too much lookahead.\");\n }\n while (total) {\n tt = this.get();\n total--;\n }\n while (total < index) {\n this.unget();\n total++;\n }\n } else if (index < 0) {\n\n if (this._lt[this._ltIndex + index]) {\n tt = this._lt[this._ltIndex + index].type;\n } else {\n throw new Error(\"Too much lookbehind.\");\n }\n\n } else {\n tt = this._token.type;\n }\n\n return tt;\n\n },\n LT: function(index) {\n this.LA(index);\n return this._lt[this._ltIndex + index - 1];\n },\n peek: function() {\n return this.LA(1);\n },\n token: function() {\n return this._token;\n },\n tokenName: function(tokenType) {\n if (tokenType < 0 || tokenType > this._tokenData.length) {\n return \"UNKNOWN_TOKEN\";\n } else {\n return this._tokenData[tokenType].name;\n }\n },\n tokenType: function(tokenName) {\n return this._tokenData[tokenName] || -1;\n },\n unget: function() {\n if (this._ltIndexCache.length) {\n this._ltIndex -= this._ltIndexCache.pop();//--;\n this._token = this._lt[this._ltIndex - 1];\n } else {\n throw new Error(\"Too much lookahead.\");\n }\n }\n\n};\n\n\n},{\"./StringReader\":24,\"./SyntaxError\":25}],28:[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n StringReader : require(\"./StringReader\"),\n SyntaxError : require(\"./SyntaxError\"),\n SyntaxUnit : require(\"./SyntaxUnit\"),\n EventTarget : require(\"./EventTarget\"),\n TokenStreamBase : require(\"./TokenStreamBase\")\n};\n\n},{\"./EventTarget\":23,\"./StringReader\":24,\"./SyntaxError\":25,\"./SyntaxUnit\":26,\"./TokenStreamBase\":27}],\"parserlib\":[function(require,module,exports){\n\"use strict\";\n\nmodule.exports = {\n css : require(\"./css\"),\n util : require(\"./util\")\n};\n\n},{\"./css\":22,\"./util\":28}]},{},[]);\n\nreturn require('parserlib');\n})();\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n function _clone(parent, depth) {\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n child = Buffer.allocUnsafe(parent.length);\n } else {\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\nvar CSSLint = (function() {\n \"use strict\";\n\n var rules = [],\n formatters = [],\n embeddedRuleset = /\\/\\*\\s*csslint([^\\*]*)\\*\\//,\n api = new parserlib.util.EventTarget();\n\n api.version = \"1.0.5\";\n api.addRule = function(rule) {\n rules.push(rule);\n rules[rule.id] = rule;\n };\n api.clearRules = function() {\n rules = [];\n };\n api.getRules = function() {\n return [].concat(rules).sort(function(a, b) {\n return a.id > b.id ? 1 : 0;\n });\n };\n api.getRuleset = function() {\n var ruleset = {},\n i = 0,\n len = rules.length;\n\n while (i < len) {\n ruleset[rules[i++].id] = 1; // by default, everything is a warning\n }\n\n return ruleset;\n };\n function applyEmbeddedRuleset(text, ruleset) {\n var valueMap,\n embedded = text && text.match(embeddedRuleset),\n rules = embedded && embedded[1];\n\n if (rules) {\n valueMap = {\n \"true\": 2, // true is error\n \"\": 1, // blank is warning\n \"false\": 0, // false is ignore\n\n \"2\": 2, // explicit error\n \"1\": 1, // explicit warning\n \"0\": 0 // explicit ignore\n };\n\n rules.toLowerCase().split(\",\").forEach(function(rule) {\n var pair = rule.split(\":\"),\n property = pair[0] || \"\",\n value = pair[1] || \"\";\n\n ruleset[property.trim()] = valueMap[value.trim()];\n });\n }\n\n return ruleset;\n }\n api.addFormatter = function(formatter) {\n formatters[formatter.id] = formatter;\n };\n api.getFormatter = function(formatId) {\n return formatters[formatId];\n };\n api.format = function(results, filename, formatId, options) {\n var formatter = api.getFormatter(formatId),\n result = null;\n\n if (formatter) {\n result = formatter.startFormat();\n result += formatter.formatResults(results, filename, options || {});\n result += formatter.endFormat();\n }\n\n return result;\n };\n api.hasFormat = function(formatId) {\n return formatters.hasOwnProperty(formatId);\n };\n api.verify = function(text, ruleset) {\n\n var i = 0,\n reporter,\n lines,\n allow = {},\n ignore = [],\n report,\n parser = new parserlib.css.Parser({\n starHack: true,\n ieFilters: true,\n underscoreHack: true,\n strict: false\n });\n lines = text.replace(/\\n\\r?/g, \"$split$\").split(\"$split$\");\n CSSLint.Util.forEach(lines, function (line, lineno) {\n var allowLine = line && line.match(/\\/\\*[ \\t]*csslint[ \\t]+allow:[ \\t]*([^\\*]*)\\*\\//i),\n allowRules = allowLine && allowLine[1],\n allowRuleset = {};\n\n if (allowRules) {\n allowRules.toLowerCase().split(\",\").forEach(function(allowRule) {\n allowRuleset[allowRule.trim()] = true;\n });\n if (Object.keys(allowRuleset).length > 0) {\n allow[lineno + 1] = allowRuleset;\n }\n }\n });\n\n var ignoreStart = null,\n ignoreEnd = null;\n CSSLint.Util.forEach(lines, function (line, lineno) {\n if (ignoreStart === null && line.match(/\\/\\*[ \\t]*csslint[ \\t]+ignore:start[ \\t]*\\*\\//i)) {\n ignoreStart = lineno;\n }\n\n if (line.match(/\\/\\*[ \\t]*csslint[ \\t]+ignore:end[ \\t]*\\*\\//i)) {\n ignoreEnd = lineno;\n }\n\n if (ignoreStart !== null && ignoreEnd !== null) {\n ignore.push([ignoreStart, ignoreEnd]);\n ignoreStart = ignoreEnd = null;\n }\n });\n if (ignoreStart !== null) {\n ignore.push([ignoreStart, lines.length]);\n }\n\n if (!ruleset) {\n ruleset = api.getRuleset();\n }\n\n if (embeddedRuleset.test(text)) {\n ruleset = clone(ruleset);\n ruleset = applyEmbeddedRuleset(text, ruleset);\n }\n\n reporter = new Reporter(lines, ruleset, allow, ignore);\n\n ruleset.errors = 2; // always report parsing errors as errors\n for (i in ruleset) {\n if (ruleset.hasOwnProperty(i) && ruleset[i]) {\n if (rules[i]) {\n rules[i].init(parser, reporter);\n }\n }\n }\n try {\n parser.parse(text);\n } catch (ex) {\n reporter.error(\"Fatal error, cannot continue: \" + ex.message, ex.line, ex.col, {});\n }\n\n report = {\n messages : reporter.messages,\n stats : reporter.stats,\n ruleset : reporter.ruleset,\n allow : reporter.allow,\n ignore : reporter.ignore\n };\n report.messages.sort(function (a, b) {\n if (a.rollup && !b.rollup) {\n return 1;\n } else if (!a.rollup && b.rollup) {\n return -1;\n } else {\n return a.line - b.line;\n }\n });\n\n return report;\n };\n\n return api;\n\n})();\nfunction Reporter(lines, ruleset, allow, ignore) {\n \"use strict\";\n this.messages = [];\n this.stats = [];\n this.lines = lines;\n this.ruleset = ruleset;\n this.allow = allow;\n if (!this.allow) {\n this.allow = {};\n }\n this.ignore = ignore;\n if (!this.ignore) {\n this.ignore = [];\n }\n}\n\nReporter.prototype = {\n constructor: Reporter,\n error: function(message, line, col, rule) {\n \"use strict\";\n this.messages.push({\n type : \"error\",\n line : line,\n col : col,\n message : message,\n evidence: this.lines[line-1],\n rule : rule || {}\n });\n },\n warn: function(message, line, col, rule) {\n \"use strict\";\n this.report(message, line, col, rule);\n },\n report: function(message, line, col, rule) {\n \"use strict\";\n if (this.allow.hasOwnProperty(line) && this.allow[line].hasOwnProperty(rule.id)) {\n return;\n }\n\n if (this.isIgnored(line)) {\n return;\n }\n\n this.messages.push({\n type : this.ruleset[rule.id] === 2 ? \"error\" : \"warning\",\n line : line,\n col : col,\n message : message,\n evidence: this.lines[line-1],\n rule : rule\n });\n },\n info: function(message, line, col, rule) {\n \"use strict\";\n this.messages.push({\n type : \"info\",\n line : line,\n col : col,\n message : message,\n evidence: this.lines[line-1],\n rule : rule\n });\n },\n rollupError: function(message, rule) {\n \"use strict\";\n this.messages.push({\n type : \"error\",\n rollup : true,\n message : message,\n rule : rule\n });\n },\n rollupWarn: function(message, rule) {\n \"use strict\";\n this.messages.push({\n type : \"warning\",\n rollup : true,\n message : message,\n rule : rule\n });\n },\n stat: function(name, value) {\n \"use strict\";\n this.stats[name] = value;\n },\n isIgnored: function(line) {\n \"use strict\";\n var ignore = false;\n CSSLint.Util.forEach(this.ignore, function (range) {\n if (range[0] <= line && line <= range[1]) {\n ignore = true;\n }\n });\n return ignore;\n }\n};\nCSSLint._Reporter = Reporter;\nCSSLint.Util = {\n mix: function(receiver, supplier) {\n \"use strict\";\n var prop;\n\n for (prop in supplier) {\n if (supplier.hasOwnProperty(prop)) {\n receiver[prop] = supplier[prop];\n }\n }\n\n return prop;\n },\n indexOf: function(values, value) {\n \"use strict\";\n if (values.indexOf) {\n return values.indexOf(value);\n } else {\n for (var i=0, len=values.length; i < len; i++) {\n if (values[i] === value) {\n return i;\n }\n }\n return -1;\n }\n },\n forEach: function(values, func) {\n \"use strict\";\n if (values.forEach) {\n return values.forEach(func);\n } else {\n for (var i=0, len=values.length; i < len; i++) {\n func(values[i], i, values);\n }\n }\n }\n};\nCSSLint.addRule({\n id: \"box-model\",\n name: \"Beware of broken box size\",\n desc: \"Don't use width or height when using padding or border.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Beware-of-box-model-size\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n widthProperties = {\n border: 1,\n \"border-left\": 1,\n \"border-right\": 1,\n padding: 1,\n \"padding-left\": 1,\n \"padding-right\": 1\n },\n heightProperties = {\n border: 1,\n \"border-bottom\": 1,\n \"border-top\": 1,\n padding: 1,\n \"padding-bottom\": 1,\n \"padding-top\": 1\n },\n properties,\n boxSizing = false;\n\n function startRule() {\n properties = {};\n boxSizing = false;\n }\n\n function endRule() {\n var prop, value;\n\n if (!boxSizing) {\n if (properties.height) {\n for (prop in heightProperties) {\n if (heightProperties.hasOwnProperty(prop) && properties[prop]) {\n value = properties[prop].value;\n if (!(prop === \"padding\" && value.parts.length === 2 && value.parts[0].value === 0)) {\n reporter.report(\"Using height with \" + prop + \" can sometimes make elements larger than you expect.\", properties[prop].line, properties[prop].col, rule);\n }\n }\n }\n }\n\n if (properties.width) {\n for (prop in widthProperties) {\n if (widthProperties.hasOwnProperty(prop) && properties[prop]) {\n value = properties[prop].value;\n\n if (!(prop === \"padding\" && value.parts.length === 2 && value.parts[1].value === 0)) {\n reporter.report(\"Using width with \" + prop + \" can sometimes make elements larger than you expect.\", properties[prop].line, properties[prop].col, rule);\n }\n }\n }\n }\n }\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"startpage\", startRule);\n parser.addListener(\"startpagemargin\", startRule);\n parser.addListener(\"startkeyframerule\", startRule);\n parser.addListener(\"startviewport\", startRule);\n\n parser.addListener(\"property\", function(event) {\n var name = event.property.text.toLowerCase();\n\n if (heightProperties[name] || widthProperties[name]) {\n if (!/^0\\S*$/.test(event.value) && !(name === \"border\" && event.value.toString() === \"none\")) {\n properties[name] = {\n line: event.property.line,\n col: event.property.col,\n value: event.value\n };\n }\n } else {\n if (/^(width|height)/i.test(name) && /^(length|percentage)/.test(event.value.parts[0].type)) {\n properties[name] = 1;\n } else if (name === \"box-sizing\") {\n boxSizing = true;\n }\n }\n\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n parser.addListener(\"endpage\", endRule);\n parser.addListener(\"endpagemargin\", endRule);\n parser.addListener(\"endkeyframerule\", endRule);\n parser.addListener(\"endviewport\", endRule);\n }\n\n});\n\nCSSLint.addRule({\n id: \"bulletproof-font-face\",\n name: \"Use the bulletproof @font-face syntax\",\n desc: \"Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).\",\n url: \"https://github.com/CSSLint/csslint/wiki/Bulletproof-font-face\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n fontFaceRule = false,\n firstSrc = true,\n ruleFailed = false,\n line, col;\n parser.addListener(\"startfontface\", function() {\n fontFaceRule = true;\n });\n\n parser.addListener(\"property\", function(event) {\n if (!fontFaceRule) {\n return;\n }\n\n var propertyName = event.property.toString().toLowerCase(),\n value = event.value.toString();\n line = event.line;\n col = event.col;\n if (propertyName === \"src\") {\n var regex = /^\\s?url\\(['\"].+\\.eot\\?.*['\"]\\)\\s*format\\(['\"]embedded-opentype['\"]\\).*$/i;\n if (!value.match(regex) && firstSrc) {\n ruleFailed = true;\n firstSrc = false;\n } else if (value.match(regex) && !firstSrc) {\n ruleFailed = false;\n }\n }\n\n\n });\n parser.addListener(\"endfontface\", function() {\n fontFaceRule = false;\n\n if (ruleFailed) {\n reporter.report(\"@font-face declaration doesn't follow the fontspring bulletproof syntax.\", line, col, rule);\n }\n });\n }\n});\n\nCSSLint.addRule({\n id: \"compatible-vendor-prefixes\",\n name: \"Require compatible vendor prefixes\",\n desc: \"Include all compatible vendor prefixes to reach a wider range of users.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Require-compatible-vendor-prefixes\",\n browsers: \"All\",\n init: function (parser, reporter) {\n \"use strict\";\n var rule = this,\n compatiblePrefixes,\n properties,\n prop,\n variations,\n prefixed,\n i,\n len,\n inKeyFrame = false,\n arrayPush = Array.prototype.push,\n applyTo = [];\n compatiblePrefixes = {\n \"animation\" : \"webkit\",\n \"animation-delay\" : \"webkit\",\n \"animation-direction\" : \"webkit\",\n \"animation-duration\" : \"webkit\",\n \"animation-fill-mode\" : \"webkit\",\n \"animation-iteration-count\" : \"webkit\",\n \"animation-name\" : \"webkit\",\n \"animation-play-state\" : \"webkit\",\n \"animation-timing-function\" : \"webkit\",\n \"appearance\" : \"webkit moz\",\n \"border-end\" : \"webkit moz\",\n \"border-end-color\" : \"webkit moz\",\n \"border-end-style\" : \"webkit moz\",\n \"border-end-width\" : \"webkit moz\",\n \"border-image\" : \"webkit moz o\",\n \"border-radius\" : \"webkit\",\n \"border-start\" : \"webkit moz\",\n \"border-start-color\" : \"webkit moz\",\n \"border-start-style\" : \"webkit moz\",\n \"border-start-width\" : \"webkit moz\",\n \"box-align\" : \"webkit moz\",\n \"box-direction\" : \"webkit moz\",\n \"box-flex\" : \"webkit moz\",\n \"box-lines\" : \"webkit\",\n \"box-ordinal-group\" : \"webkit moz\",\n \"box-orient\" : \"webkit moz\",\n \"box-pack\" : \"webkit moz\",\n \"box-sizing\" : \"\",\n \"box-shadow\" : \"\",\n \"column-count\" : \"webkit moz ms\",\n \"column-gap\" : \"webkit moz ms\",\n \"column-rule\" : \"webkit moz ms\",\n \"column-rule-color\" : \"webkit moz ms\",\n \"column-rule-style\" : \"webkit moz ms\",\n \"column-rule-width\" : \"webkit moz ms\",\n \"column-width\" : \"webkit moz ms\",\n \"flex\" : \"webkit ms\",\n \"flex-basis\" : \"webkit\",\n \"flex-direction\" : \"webkit ms\",\n \"flex-flow\" : \"webkit\",\n \"flex-grow\" : \"webkit\",\n \"flex-shrink\" : \"webkit\",\n \"hyphens\" : \"epub moz\",\n \"line-break\" : \"webkit ms\",\n \"margin-end\" : \"webkit moz\",\n \"margin-start\" : \"webkit moz\",\n \"marquee-speed\" : \"webkit wap\",\n \"marquee-style\" : \"webkit wap\",\n \"padding-end\" : \"webkit moz\",\n \"padding-start\" : \"webkit moz\",\n \"tab-size\" : \"moz o\",\n \"text-size-adjust\" : \"webkit ms\",\n \"transform\" : \"webkit ms\",\n \"transform-origin\" : \"webkit ms\",\n \"transition\" : \"\",\n \"transition-delay\" : \"\",\n \"transition-duration\" : \"\",\n \"transition-property\" : \"\",\n \"transition-timing-function\" : \"\",\n \"user-modify\" : \"webkit moz\",\n \"user-select\" : \"webkit moz ms\",\n \"word-break\" : \"epub ms\",\n \"writing-mode\" : \"epub ms\"\n };\n\n\n for (prop in compatiblePrefixes) {\n if (compatiblePrefixes.hasOwnProperty(prop)) {\n variations = [];\n prefixed = compatiblePrefixes[prop].split(\" \");\n for (i = 0, len = prefixed.length; i < len; i++) {\n variations.push(\"-\" + prefixed[i] + \"-\" + prop);\n }\n compatiblePrefixes[prop] = variations;\n arrayPush.apply(applyTo, variations);\n }\n }\n\n parser.addListener(\"startrule\", function () {\n properties = [];\n });\n\n parser.addListener(\"startkeyframes\", function (event) {\n inKeyFrame = event.prefix || true;\n });\n\n parser.addListener(\"endkeyframes\", function () {\n inKeyFrame = false;\n });\n\n parser.addListener(\"property\", function (event) {\n var name = event.property;\n if (CSSLint.Util.indexOf(applyTo, name.text) > -1) {\n if (!inKeyFrame || typeof inKeyFrame !== \"string\" ||\n name.text.indexOf(\"-\" + inKeyFrame + \"-\") !== 0) {\n properties.push(name);\n }\n }\n });\n\n parser.addListener(\"endrule\", function () {\n if (!properties.length) {\n return;\n }\n\n var propertyGroups = {},\n i,\n len,\n name,\n prop,\n variations,\n value,\n full,\n actual,\n item,\n propertiesSpecified;\n\n for (i = 0, len = properties.length; i < len; i++) {\n name = properties[i];\n\n for (prop in compatiblePrefixes) {\n if (compatiblePrefixes.hasOwnProperty(prop)) {\n variations = compatiblePrefixes[prop];\n if (CSSLint.Util.indexOf(variations, name.text) > -1) {\n if (!propertyGroups[prop]) {\n propertyGroups[prop] = {\n full: variations.slice(0),\n actual: [],\n actualNodes: []\n };\n }\n if (CSSLint.Util.indexOf(propertyGroups[prop].actual, name.text) === -1) {\n propertyGroups[prop].actual.push(name.text);\n propertyGroups[prop].actualNodes.push(name);\n }\n }\n }\n }\n }\n\n for (prop in propertyGroups) {\n if (propertyGroups.hasOwnProperty(prop)) {\n value = propertyGroups[prop];\n full = value.full;\n actual = value.actual;\n\n if (full.length > actual.length) {\n for (i = 0, len = full.length; i < len; i++) {\n item = full[i];\n if (CSSLint.Util.indexOf(actual, item) === -1) {\n propertiesSpecified = (actual.length === 1) ? actual[0] : (actual.length === 2) ? actual.join(\" and \") : actual.join(\", \");\n reporter.report(\"The property \" + item + \" is compatible with \" + propertiesSpecified + \" and should be included as well.\", value.actualNodes[0].line, value.actualNodes[0].col, rule);\n }\n }\n\n }\n }\n }\n });\n }\n});\n\nCSSLint.addRule({\n id: \"display-property-grouping\",\n name: \"Require properties appropriate for display\",\n desc: \"Certain properties shouldn't be used with certain display property values.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Require-properties-appropriate-for-display\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n var propertiesToCheck = {\n display: 1,\n \"float\": \"none\",\n height: 1,\n width: 1,\n margin: 1,\n \"margin-left\": 1,\n \"margin-right\": 1,\n \"margin-bottom\": 1,\n \"margin-top\": 1,\n padding: 1,\n \"padding-left\": 1,\n \"padding-right\": 1,\n \"padding-bottom\": 1,\n \"padding-top\": 1,\n \"vertical-align\": 1\n },\n properties;\n\n function reportProperty(name, display, msg) {\n if (properties[name]) {\n if (typeof propertiesToCheck[name] !== \"string\" || properties[name].value.toLowerCase() !== propertiesToCheck[name]) {\n reporter.report(msg || name + \" can't be used with display: \" + display + \".\", properties[name].line, properties[name].col, rule);\n }\n }\n }\n\n function startRule() {\n properties = {};\n }\n\n function endRule() {\n\n var display = properties.display ? properties.display.value : null;\n if (display) {\n switch (display) {\n\n case \"inline\":\n reportProperty(\"height\", display);\n reportProperty(\"width\", display);\n reportProperty(\"margin\", display);\n reportProperty(\"margin-top\", display);\n reportProperty(\"margin-bottom\", display);\n reportProperty(\"float\", display, \"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).\");\n break;\n\n case \"block\":\n reportProperty(\"vertical-align\", display);\n break;\n\n case \"inline-block\":\n reportProperty(\"float\", display);\n break;\n\n default:\n if (display.indexOf(\"table-\") === 0) {\n reportProperty(\"margin\", display);\n reportProperty(\"margin-left\", display);\n reportProperty(\"margin-right\", display);\n reportProperty(\"margin-top\", display);\n reportProperty(\"margin-bottom\", display);\n reportProperty(\"float\", display);\n }\n }\n }\n\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"startkeyframerule\", startRule);\n parser.addListener(\"startpagemargin\", startRule);\n parser.addListener(\"startpage\", startRule);\n parser.addListener(\"startviewport\", startRule);\n\n parser.addListener(\"property\", function(event) {\n var name = event.property.text.toLowerCase();\n\n if (propertiesToCheck[name]) {\n properties[name] = {\n value: event.value.text,\n line: event.property.line,\n col: event.property.col\n };\n }\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n parser.addListener(\"endkeyframerule\", endRule);\n parser.addListener(\"endpagemargin\", endRule);\n parser.addListener(\"endpage\", endRule);\n parser.addListener(\"endviewport\", endRule);\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"duplicate-background-images\",\n name: \"Disallow duplicate background images\",\n desc: \"Every background-image should be unique. Use a common class for e.g. sprites.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-duplicate-background-images\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n stack = {};\n\n parser.addListener(\"property\", function(event) {\n var name = event.property.text,\n value = event.value,\n i, len;\n\n if (name.match(/background/i)) {\n for (i=0, len=value.parts.length; i < len; i++) {\n if (value.parts[i].type === \"uri\") {\n if (typeof stack[value.parts[i].uri] === \"undefined\") {\n stack[value.parts[i].uri] = event;\n } else {\n reporter.report(\"Background image '\" + value.parts[i].uri + \"' was used multiple times, first declared at line \" + stack[value.parts[i].uri].line + \", col \" + stack[value.parts[i].uri].col + \".\", event.line, event.col, rule);\n }\n }\n }\n }\n });\n }\n});\n\nCSSLint.addRule({\n id: \"duplicate-properties\",\n name: \"Disallow duplicate properties\",\n desc: \"Duplicate properties must appear one after the other.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-duplicate-properties\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n properties,\n lastProperty;\n\n function startRule() {\n properties = {};\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"startpage\", startRule);\n parser.addListener(\"startpagemargin\", startRule);\n parser.addListener(\"startkeyframerule\", startRule);\n parser.addListener(\"startviewport\", startRule);\n\n parser.addListener(\"property\", function(event) {\n var property = event.property,\n name = property.text.toLowerCase();\n\n if (properties[name] && (lastProperty !== name || properties[name] === event.value.text)) {\n reporter.report(\"Duplicate property '\" + event.property + \"' found.\", event.line, event.col, rule);\n }\n\n properties[name] = event.value.text;\n lastProperty = name;\n\n });\n\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"empty-rules\",\n name: \"Disallow empty rules\",\n desc: \"Rules without any properties specified should be removed.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-empty-rules\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n count = 0;\n\n parser.addListener(\"startrule\", function() {\n count=0;\n });\n\n parser.addListener(\"property\", function() {\n count++;\n });\n\n parser.addListener(\"endrule\", function(event) {\n var selectors = event.selectors;\n\n if (count === 0) {\n reporter.report(\"Rule is empty.\", selectors[0].line, selectors[0].col, rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"errors\",\n name: \"Parsing Errors\",\n desc: \"This rule looks for recoverable syntax errors.\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n parser.addListener(\"error\", function(event) {\n reporter.error(event.message, event.line, event.col, rule);\n });\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"floats\",\n name: \"Disallow too many floats\",\n desc: \"This rule tests if the float property is used too many times\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-too-many-floats\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n var count = 0;\n parser.addListener(\"property\", function(event) {\n if (!reporter.isIgnored(event.property.line)) {\n if (event.property.text.toLowerCase() === \"float\" &&\n event.value.text.toLowerCase() !== \"none\") {\n count++;\n }\n }\n });\n parser.addListener(\"endstylesheet\", function() {\n reporter.stat(\"floats\", count);\n if (count >= 10) {\n reporter.rollupWarn(\"Too many floats (\" + count + \"), you're probably using them for layout. Consider using a grid system instead.\", rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"font-faces\",\n name: \"Don't use too many web fonts\",\n desc: \"Too many different web fonts in the same stylesheet.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Don%27t-use-too-many-web-fonts\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n count = 0;\n\n\n parser.addListener(\"startfontface\", function(event) {\n if (!reporter.isIgnored(event.line)) {\n count++;\n }\n });\n\n parser.addListener(\"endstylesheet\", function() {\n if (count > 5) {\n reporter.rollupWarn(\"Too many @font-face declarations (\" + count + \").\", rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"font-sizes\",\n name: \"Disallow too many font sizes\",\n desc: \"Checks the number of font-size declarations.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Don%27t-use-too-many-font-size-declarations\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n count = 0;\n parser.addListener(\"property\", function(event) {\n if (!reporter.isIgnored(event.property.line)) {\n if (event.property.toString() === \"font-size\") {\n count++;\n }\n }\n });\n parser.addListener(\"endstylesheet\", function() {\n reporter.stat(\"font-sizes\", count);\n if (count >= 10) {\n reporter.rollupWarn(\"Too many font-size declarations (\" + count + \"), abstraction needed.\", rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"gradients\",\n name: \"Require all gradient definitions\",\n desc: \"When using a vendor-prefixed gradient, make sure to use them all.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Require-all-gradient-definitions\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n gradients;\n\n parser.addListener(\"startrule\", function() {\n gradients = {\n moz: 0,\n webkit: 0,\n oldWebkit: 0,\n o: 0\n };\n });\n\n parser.addListener(\"property\", function(event) {\n\n if (/\\-(moz|o|webkit)(?:\\-(?:linear|radial))\\-gradient/i.test(event.value)) {\n gradients[RegExp.$1] = 1;\n } else if (/\\-webkit\\-gradient/i.test(event.value)) {\n gradients.oldWebkit = 1;\n }\n\n });\n\n parser.addListener(\"endrule\", function(event) {\n var missing = [];\n\n if (!gradients.moz) {\n missing.push(\"Firefox 3.6+\");\n }\n\n if (!gradients.webkit) {\n missing.push(\"Webkit (Safari 5+, Chrome)\");\n }\n\n if (!gradients.oldWebkit) {\n missing.push(\"Old Webkit (Safari 4+, Chrome)\");\n }\n\n if (!gradients.o) {\n missing.push(\"Opera 11.1+\");\n }\n\n if (missing.length && missing.length < 4) {\n reporter.report(\"Missing vendor-prefixed CSS gradients for \" + missing.join(\", \") + \".\", event.selectors[0].line, event.selectors[0].col, rule);\n }\n\n });\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"ids\",\n name: \"Disallow IDs in selectors\",\n desc: \"Selectors should not contain IDs.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-IDs-in-selectors\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n parser.addListener(\"startrule\", function(event) {\n var selectors = event.selectors,\n selector,\n part,\n modifier,\n idCount,\n i, j, k;\n\n for (i=0; i < selectors.length; i++) {\n selector = selectors[i];\n idCount = 0;\n\n for (j=0; j < selector.parts.length; j++) {\n part = selector.parts[j];\n if (part.type === parser.SELECTOR_PART_TYPE) {\n for (k=0; k < part.modifiers.length; k++) {\n modifier = part.modifiers[k];\n if (modifier.type === \"id\") {\n idCount++;\n }\n }\n }\n }\n\n if (idCount === 1) {\n reporter.report(\"Don't use IDs in selectors.\", selector.line, selector.col, rule);\n } else if (idCount > 1) {\n reporter.report(idCount + \" IDs in the selector, really?\", selector.line, selector.col, rule);\n }\n }\n\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"import-ie-limit\",\n name: \"@import limit on IE6-IE9\",\n desc: \"IE6-9 supports up to 31 @import per stylesheet\",\n browsers: \"IE6, IE7, IE8, IE9\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n MAX_IMPORT_COUNT = 31,\n count = 0;\n\n function startPage() {\n count = 0;\n }\n\n parser.addListener(\"startpage\", startPage);\n\n parser.addListener(\"import\", function() {\n count++;\n });\n\n parser.addListener(\"endstylesheet\", function() {\n if (count > MAX_IMPORT_COUNT) {\n reporter.rollupError(\n \"Too many @import rules (\" + count + \"). IE6-9 supports up to 31 import per stylesheet.\",\n rule\n );\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"import\",\n name: \"Disallow @import\",\n desc: \"Don't use @import, use <link> instead.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-%40import\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n parser.addListener(\"import\", function(event) {\n reporter.report(\"@import prevents parallel downloads, use <link> instead.\", event.line, event.col, rule);\n });\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"important\",\n name: \"Disallow !important\",\n desc: \"Be careful when using !important declaration\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-%21important\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n count = 0;\n parser.addListener(\"property\", function(event) {\n if (!reporter.isIgnored(event.line)) {\n if (event.important === true) {\n count++;\n reporter.report(\"Use of !important\", event.line, event.col, rule);\n }\n }\n });\n parser.addListener(\"endstylesheet\", function() {\n reporter.stat(\"important\", count);\n if (count >= 10) {\n reporter.rollupWarn(\"Too many !important declarations (\" + count + \"), try to use less than 10 to avoid specificity issues.\", rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"known-properties\",\n name: \"Require use of known properties\",\n desc: \"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Require-use-of-known-properties\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n parser.addListener(\"property\", function(event) {\n if (event.invalid) {\n reporter.report(event.invalid.message, event.line, event.col, rule);\n }\n\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"order-alphabetical\",\n name: \"Alphabetical order\",\n desc: \"Assure properties are in alphabetical order\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n properties;\n\n var startRule = function () {\n properties = [];\n };\n\n var endRule = function(event) {\n var currentProperties = properties.join(\",\"),\n expectedProperties = properties.sort().join(\",\");\n\n if (currentProperties !== expectedProperties) {\n reporter.report(\"Rule doesn't have all its properties in alphabetical order.\", event.line, event.col, rule);\n }\n };\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"startpage\", startRule);\n parser.addListener(\"startpagemargin\", startRule);\n parser.addListener(\"startkeyframerule\", startRule);\n parser.addListener(\"startviewport\", startRule);\n\n parser.addListener(\"property\", function(event) {\n var name = event.property.text,\n lowerCasePrefixLessName = name.toLowerCase().replace(/^-.*?-/, \"\");\n\n properties.push(lowerCasePrefixLessName);\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n parser.addListener(\"endpage\", endRule);\n parser.addListener(\"endpagemargin\", endRule);\n parser.addListener(\"endkeyframerule\", endRule);\n parser.addListener(\"endviewport\", endRule);\n }\n\n});\n\nCSSLint.addRule({\n id: \"outline-none\",\n name: \"Disallow outline: none\",\n desc: \"Use of outline: none or outline: 0 should be limited to :focus rules.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-outline%3Anone\",\n browsers: \"All\",\n tags: [\"Accessibility\"],\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n lastRule;\n\n function startRule(event) {\n if (event.selectors) {\n lastRule = {\n line: event.line,\n col: event.col,\n selectors: event.selectors,\n propCount: 0,\n outline: false\n };\n } else {\n lastRule = null;\n }\n }\n\n function endRule() {\n if (lastRule) {\n if (lastRule.outline) {\n if (lastRule.selectors.toString().toLowerCase().indexOf(\":focus\") === -1) {\n reporter.report(\"Outlines should only be modified using :focus.\", lastRule.line, lastRule.col, rule);\n } else if (lastRule.propCount === 1) {\n reporter.report(\"Outlines shouldn't be hidden unless other visual changes are made.\", lastRule.line, lastRule.col, rule);\n }\n }\n }\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"startpage\", startRule);\n parser.addListener(\"startpagemargin\", startRule);\n parser.addListener(\"startkeyframerule\", startRule);\n parser.addListener(\"startviewport\", startRule);\n\n parser.addListener(\"property\", function(event) {\n var name = event.property.text.toLowerCase(),\n value = event.value;\n\n if (lastRule) {\n lastRule.propCount++;\n if (name === \"outline\" && (value.toString() === \"none\" || value.toString() === \"0\")) {\n lastRule.outline = true;\n }\n }\n\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n parser.addListener(\"endpage\", endRule);\n parser.addListener(\"endpagemargin\", endRule);\n parser.addListener(\"endkeyframerule\", endRule);\n parser.addListener(\"endviewport\", endRule);\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"overqualified-elements\",\n name: \"Disallow overqualified elements\",\n desc: \"Don't use classes or IDs with elements (a.foo or a#foo).\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-overqualified-elements\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n classes = {};\n\n parser.addListener(\"startrule\", function(event) {\n var selectors = event.selectors,\n selector,\n part,\n modifier,\n i, j, k;\n\n for (i=0; i < selectors.length; i++) {\n selector = selectors[i];\n\n for (j=0; j < selector.parts.length; j++) {\n part = selector.parts[j];\n if (part.type === parser.SELECTOR_PART_TYPE) {\n for (k=0; k < part.modifiers.length; k++) {\n modifier = part.modifiers[k];\n if (part.elementName && modifier.type === \"id\") {\n reporter.report(\"Element (\" + part + \") is overqualified, just use \" + modifier + \" without element name.\", part.line, part.col, rule);\n } else if (modifier.type === \"class\") {\n\n if (!classes[modifier]) {\n classes[modifier] = [];\n }\n classes[modifier].push({\n modifier: modifier,\n part: part\n });\n }\n }\n }\n }\n }\n });\n\n parser.addListener(\"endstylesheet\", function() {\n\n var prop;\n for (prop in classes) {\n if (classes.hasOwnProperty(prop)) {\n if (classes[prop].length === 1 && classes[prop][0].part.elementName) {\n reporter.report(\"Element (\" + classes[prop][0].part + \") is overqualified, just use \" + classes[prop][0].modifier + \" without element name.\", classes[prop][0].part.line, classes[prop][0].part.col, rule);\n }\n }\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"regex-selectors\",\n name: \"Disallow selectors that look like regexs\",\n desc: \"Selectors that look like regular expressions are slow and should be avoided.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-selectors-that-look-like-regular-expressions\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n parser.addListener(\"startrule\", function(event) {\n var selectors = event.selectors,\n selector,\n part,\n modifier,\n i, j, k;\n\n for (i=0; i < selectors.length; i++) {\n selector = selectors[i];\n for (j=0; j < selector.parts.length; j++) {\n part = selector.parts[j];\n if (part.type === parser.SELECTOR_PART_TYPE) {\n for (k=0; k < part.modifiers.length; k++) {\n modifier = part.modifiers[k];\n if (modifier.type === \"attribute\") {\n if (/([~\\|\\^\\$\\*]=)/.test(modifier)) {\n reporter.report(\"Attribute selectors with \" + RegExp.$1 + \" are slow!\", modifier.line, modifier.col, rule);\n }\n }\n\n }\n }\n }\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"rules-count\",\n name: \"Rules Count\",\n desc: \"Track how many rules there are.\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var count = 0;\n parser.addListener(\"startrule\", function() {\n count++;\n });\n\n parser.addListener(\"endstylesheet\", function() {\n reporter.stat(\"rule-count\", count);\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"selector-max-approaching\",\n name: \"Warn when approaching the 4095 selector limit for IE\",\n desc: \"Will warn when selector count is >= 3800 selectors.\",\n browsers: \"IE\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this, count = 0;\n\n parser.addListener(\"startrule\", function(event) {\n count += event.selectors.length;\n });\n\n parser.addListener(\"endstylesheet\", function() {\n if (count >= 3800) {\n reporter.report(\"You have \" + count + \" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.\", 0, 0, rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"selector-max\",\n name: \"Error when past the 4095 selector limit for IE\",\n desc: \"Will error when selector count is > 4095.\",\n browsers: \"IE\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this, count = 0;\n\n parser.addListener(\"startrule\", function(event) {\n count += event.selectors.length;\n });\n\n parser.addListener(\"endstylesheet\", function() {\n if (count > 4095) {\n reporter.report(\"You have \" + count + \" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.\", 0, 0, rule);\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"selector-newline\",\n name: \"Disallow new-line characters in selectors\",\n desc: \"New-line characters in selectors are usually a forgotten comma and not a descendant combinator.\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n function startRule(event) {\n var i, len, selector, p, n, pLen, part, part2, type, currentLine, nextLine,\n selectors = event.selectors;\n\n for (i = 0, len = selectors.length; i < len; i++) {\n selector = selectors[i];\n for (p = 0, pLen = selector.parts.length; p < pLen; p++) {\n for (n = p + 1; n < pLen; n++) {\n part = selector.parts[p];\n part2 = selector.parts[n];\n type = part.type;\n currentLine = part.line;\n nextLine = part2.line;\n\n if (type === \"descendant\" && nextLine > currentLine) {\n reporter.report(\"newline character found in selector (forgot a comma?)\", currentLine, selectors[i].parts[0].col, rule);\n }\n }\n }\n\n }\n }\n\n parser.addListener(\"startrule\", startRule);\n\n }\n});\n\nCSSLint.addRule({\n id: \"shorthand\",\n name: \"Require shorthand properties\",\n desc: \"Use shorthand properties where possible.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Require-shorthand-properties\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n prop, i, len,\n propertiesToCheck = {},\n properties,\n mapping = {\n \"margin\": [\n \"margin-top\",\n \"margin-bottom\",\n \"margin-left\",\n \"margin-right\"\n ],\n \"padding\": [\n \"padding-top\",\n \"padding-bottom\",\n \"padding-left\",\n \"padding-right\"\n ]\n };\n for (prop in mapping) {\n if (mapping.hasOwnProperty(prop)) {\n for (i=0, len=mapping[prop].length; i < len; i++) {\n propertiesToCheck[mapping[prop][i]] = prop;\n }\n }\n }\n\n function startRule() {\n properties = {};\n }\n function endRule(event) {\n\n var prop, i, len, total;\n for (prop in mapping) {\n if (mapping.hasOwnProperty(prop)) {\n total=0;\n\n for (i=0, len=mapping[prop].length; i < len; i++) {\n total += properties[mapping[prop][i]] ? 1 : 0;\n }\n\n if (total === mapping[prop].length) {\n reporter.report(\"The properties \" + mapping[prop].join(\", \") + \" can be replaced by \" + prop + \".\", event.line, event.col, rule);\n }\n }\n }\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"property\", function(event) {\n var name = event.property.toString().toLowerCase();\n\n if (propertiesToCheck[name]) {\n properties[name] = 1;\n }\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"star-property-hack\",\n name: \"Disallow properties with a star prefix\",\n desc: \"Checks for the star property hack (targets IE6/7)\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-star-hack\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n parser.addListener(\"property\", function(event) {\n var property = event.property;\n\n if (property.hack === \"*\") {\n reporter.report(\"Property with star prefix found.\", event.property.line, event.property.col, rule);\n }\n });\n }\n});\n\nCSSLint.addRule({\n id: \"text-indent\",\n name: \"Disallow negative text-indent\",\n desc: \"Checks for text indent less than -99px\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-negative-text-indent\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n textIndent,\n direction;\n\n\n function startRule() {\n textIndent = false;\n direction = \"inherit\";\n }\n function endRule() {\n if (textIndent && direction !== \"ltr\") {\n reporter.report(\"Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.\", textIndent.line, textIndent.col, rule);\n }\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"property\", function(event) {\n var name = event.property.toString().toLowerCase(),\n value = event.value;\n\n if (name === \"text-indent\" && value.parts[0].value < -99) {\n textIndent = event.property;\n } else if (name === \"direction\" && value.toString() === \"ltr\") {\n direction = \"ltr\";\n }\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n\n }\n\n});\n\nCSSLint.addRule({\n id: \"underscore-property-hack\",\n name: \"Disallow properties with an underscore prefix\",\n desc: \"Checks for the underscore property hack (targets IE6)\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-underscore-hack\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n parser.addListener(\"property\", function(event) {\n var property = event.property;\n\n if (property.hack === \"_\") {\n reporter.report(\"Property with underscore prefix found.\", event.property.line, event.property.col, rule);\n }\n });\n }\n});\n\nCSSLint.addRule({\n id: \"universal-selector\",\n name: \"Disallow universal selector\",\n desc: \"The universal selector (*) is known to be slow.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-universal-selector\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n\n parser.addListener(\"startrule\", function(event) {\n var selectors = event.selectors,\n selector,\n part,\n i;\n\n for (i=0; i < selectors.length; i++) {\n selector = selectors[i];\n\n part = selector.parts[selector.parts.length-1];\n if (part.elementName === \"*\") {\n reporter.report(rule.desc, part.line, part.col, rule);\n }\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"unqualified-attributes\",\n name: \"Disallow unqualified attribute selectors\",\n desc: \"Unqualified attribute selectors are known to be slow.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-unqualified-attribute-selectors\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n\n var rule = this;\n\n parser.addListener(\"startrule\", function(event) {\n\n var selectors = event.selectors,\n selectorContainsClassOrId = false,\n selector,\n part,\n modifier,\n i, k;\n\n for (i=0; i < selectors.length; i++) {\n selector = selectors[i];\n\n part = selector.parts[selector.parts.length-1];\n if (part.type === parser.SELECTOR_PART_TYPE) {\n for (k=0; k < part.modifiers.length; k++) {\n modifier = part.modifiers[k];\n\n if (modifier.type === \"class\" || modifier.type === \"id\") {\n selectorContainsClassOrId = true;\n break;\n }\n }\n\n if (!selectorContainsClassOrId) {\n for (k=0; k < part.modifiers.length; k++) {\n modifier = part.modifiers[k];\n if (modifier.type === \"attribute\" && (!part.elementName || part.elementName === \"*\")) {\n reporter.report(rule.desc, part.line, part.col, rule);\n }\n }\n }\n }\n\n }\n });\n }\n\n});\n\nCSSLint.addRule({\n id: \"vendor-prefix\",\n name: \"Require standard property with vendor prefix\",\n desc: \"When using a vendor-prefixed property, make sure to include the standard one.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Require-standard-property-with-vendor-prefix\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this,\n properties,\n num,\n propertiesToCheck = {\n \"-webkit-border-radius\": \"border-radius\",\n \"-webkit-border-top-left-radius\": \"border-top-left-radius\",\n \"-webkit-border-top-right-radius\": \"border-top-right-radius\",\n \"-webkit-border-bottom-left-radius\": \"border-bottom-left-radius\",\n \"-webkit-border-bottom-right-radius\": \"border-bottom-right-radius\",\n\n \"-o-border-radius\": \"border-radius\",\n \"-o-border-top-left-radius\": \"border-top-left-radius\",\n \"-o-border-top-right-radius\": \"border-top-right-radius\",\n \"-o-border-bottom-left-radius\": \"border-bottom-left-radius\",\n \"-o-border-bottom-right-radius\": \"border-bottom-right-radius\",\n\n \"-moz-border-radius\": \"border-radius\",\n \"-moz-border-radius-topleft\": \"border-top-left-radius\",\n \"-moz-border-radius-topright\": \"border-top-right-radius\",\n \"-moz-border-radius-bottomleft\": \"border-bottom-left-radius\",\n \"-moz-border-radius-bottomright\": \"border-bottom-right-radius\",\n\n \"-moz-column-count\": \"column-count\",\n \"-webkit-column-count\": \"column-count\",\n\n \"-moz-column-gap\": \"column-gap\",\n \"-webkit-column-gap\": \"column-gap\",\n\n \"-moz-column-rule\": \"column-rule\",\n \"-webkit-column-rule\": \"column-rule\",\n\n \"-moz-column-rule-style\": \"column-rule-style\",\n \"-webkit-column-rule-style\": \"column-rule-style\",\n\n \"-moz-column-rule-color\": \"column-rule-color\",\n \"-webkit-column-rule-color\": \"column-rule-color\",\n\n \"-moz-column-rule-width\": \"column-rule-width\",\n \"-webkit-column-rule-width\": \"column-rule-width\",\n\n \"-moz-column-width\": \"column-width\",\n \"-webkit-column-width\": \"column-width\",\n\n \"-webkit-column-span\": \"column-span\",\n \"-webkit-columns\": \"columns\",\n\n \"-moz-box-shadow\": \"box-shadow\",\n \"-webkit-box-shadow\": \"box-shadow\",\n\n \"-moz-transform\": \"transform\",\n \"-webkit-transform\": \"transform\",\n \"-o-transform\": \"transform\",\n \"-ms-transform\": \"transform\",\n\n \"-moz-transform-origin\": \"transform-origin\",\n \"-webkit-transform-origin\": \"transform-origin\",\n \"-o-transform-origin\": \"transform-origin\",\n \"-ms-transform-origin\": \"transform-origin\",\n\n \"-moz-box-sizing\": \"box-sizing\",\n \"-webkit-box-sizing\": \"box-sizing\"\n };\n function startRule() {\n properties = {};\n num = 1;\n }\n function endRule() {\n var prop,\n i,\n len,\n needed,\n actual,\n needsStandard = [];\n\n for (prop in properties) {\n if (propertiesToCheck[prop]) {\n needsStandard.push({\n actual: prop,\n needed: propertiesToCheck[prop]\n });\n }\n }\n\n for (i=0, len=needsStandard.length; i < len; i++) {\n needed = needsStandard[i].needed;\n actual = needsStandard[i].actual;\n\n if (!properties[needed]) {\n reporter.report(\"Missing standard property '\" + needed + \"' to go along with '\" + actual + \"'.\", properties[actual][0].name.line, properties[actual][0].name.col, rule);\n } else {\n if (properties[needed][0].pos < properties[actual][0].pos) {\n reporter.report(\"Standard property '\" + needed + \"' should come after vendor-prefixed property '\" + actual + \"'.\", properties[actual][0].name.line, properties[actual][0].name.col, rule);\n }\n }\n }\n\n }\n\n parser.addListener(\"startrule\", startRule);\n parser.addListener(\"startfontface\", startRule);\n parser.addListener(\"startpage\", startRule);\n parser.addListener(\"startpagemargin\", startRule);\n parser.addListener(\"startkeyframerule\", startRule);\n parser.addListener(\"startviewport\", startRule);\n\n parser.addListener(\"property\", function(event) {\n var name = event.property.text.toLowerCase();\n\n if (!properties[name]) {\n properties[name] = [];\n }\n\n properties[name].push({\n name: event.property,\n value: event.value,\n pos: num++\n });\n });\n\n parser.addListener(\"endrule\", endRule);\n parser.addListener(\"endfontface\", endRule);\n parser.addListener(\"endpage\", endRule);\n parser.addListener(\"endpagemargin\", endRule);\n parser.addListener(\"endkeyframerule\", endRule);\n parser.addListener(\"endviewport\", endRule);\n }\n\n});\n\nCSSLint.addRule({\n id: \"zero-units\",\n name: \"Disallow units for 0 values\",\n desc: \"You don't need to specify units when a value is 0.\",\n url: \"https://github.com/CSSLint/csslint/wiki/Disallow-units-for-zero-values\",\n browsers: \"All\",\n init: function(parser, reporter) {\n \"use strict\";\n var rule = this;\n parser.addListener(\"property\", function(event) {\n var parts = event.value.parts,\n i = 0,\n len = parts.length;\n\n while (i < len) {\n if ((parts[i].units || parts[i].type === \"percentage\") && parts[i].value === 0 && parts[i].type !== \"time\") {\n reporter.report(\"Values of 0 shouldn't have units specified.\", parts[i].line, parts[i].col, rule);\n }\n i++;\n }\n\n });\n\n }\n\n});\n\n(function() {\n \"use strict\";\n var xmlEscape = function(str) {\n if (!str || str.constructor !== String) {\n return \"\";\n }\n\n return str.replace(/[\"&><]/g, function(match) {\n switch (match) {\n case \"\\\"\":\n return \"&quot;\";\n case \"&\":\n return \"&amp;\";\n case \"<\":\n return \"&lt;\";\n case \">\":\n return \"&gt;\";\n }\n });\n };\n\n CSSLint.addFormatter({\n id: \"checkstyle-xml\",\n name: \"Checkstyle XML format\",\n startFormat: function() {\n return \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><checkstyle>\";\n },\n endFormat: function() {\n return \"</checkstyle>\";\n },\n readError: function(filename, message) {\n return \"<file name=\\\"\" + xmlEscape(filename) + \"\\\"><error line=\\\"0\\\" column=\\\"0\\\" severty=\\\"error\\\" message=\\\"\" + xmlEscape(message) + \"\\\"></error></file>\";\n },\n formatResults: function(results, filename/*, options*/) {\n var messages = results.messages,\n output = [];\n var generateSource = function(rule) {\n if (!rule || !(\"name\" in rule)) {\n return \"\";\n }\n return \"net.csslint.\" + rule.name.replace(/\\s/g, \"\");\n };\n\n\n if (messages.length > 0) {\n output.push(\"<file name=\\\"\"+filename+\"\\\">\");\n CSSLint.Util.forEach(messages, function (message) {\n if (!message.rollup) {\n output.push(\"<error line=\\\"\" + message.line + \"\\\" column=\\\"\" + message.col + \"\\\" severity=\\\"\" + message.type + \"\\\"\" +\n \" message=\\\"\" + xmlEscape(message.message) + \"\\\" source=\\\"\" + generateSource(message.rule) +\"\\\"/>\");\n }\n });\n output.push(\"</file>\");\n }\n\n return output.join(\"\");\n }\n });\n\n}());\n\nCSSLint.addFormatter({\n id: \"compact\",\n name: \"Compact, 'porcelain' format\",\n startFormat: function() {\n \"use strict\";\n return \"\";\n },\n endFormat: function() {\n \"use strict\";\n return \"\";\n },\n formatResults: function(results, filename, options) {\n \"use strict\";\n var messages = results.messages,\n output = \"\";\n options = options || {};\n var capitalize = function(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n\n if (messages.length === 0) {\n return options.quiet ? \"\" : filename + \": Lint Free!\";\n }\n\n CSSLint.Util.forEach(messages, function(message) {\n if (message.rollup) {\n output += filename + \": \" + capitalize(message.type) + \" - \" + message.message + \" (\" + message.rule.id + \")\\n\";\n } else {\n output += filename + \": line \" + message.line +\n \", col \" + message.col + \", \" + capitalize(message.type) + \" - \" + message.message + \" (\" + message.rule.id + \")\\n\";\n }\n });\n\n return output;\n }\n});\n\nCSSLint.addFormatter({\n id: \"csslint-xml\",\n name: \"CSSLint XML format\",\n startFormat: function() {\n \"use strict\";\n return \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><csslint>\";\n },\n endFormat: function() {\n \"use strict\";\n return \"</csslint>\";\n },\n formatResults: function(results, filename/*, options*/) {\n \"use strict\";\n var messages = results.messages,\n output = [];\n var escapeSpecialCharacters = function(str) {\n if (!str || str.constructor !== String) {\n return \"\";\n }\n return str.replace(/\"/g, \"'\").replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n };\n\n if (messages.length > 0) {\n output.push(\"<file name=\\\"\"+filename+\"\\\">\");\n CSSLint.Util.forEach(messages, function (message) {\n if (message.rollup) {\n output.push(\"<issue severity=\\\"\" + message.type + \"\\\" reason=\\\"\" + escapeSpecialCharacters(message.message) + \"\\\" evidence=\\\"\" + escapeSpecialCharacters(message.evidence) + \"\\\"/>\");\n } else {\n output.push(\"<issue line=\\\"\" + message.line + \"\\\" char=\\\"\" + message.col + \"\\\" severity=\\\"\" + message.type + \"\\\"\" +\n \" reason=\\\"\" + escapeSpecialCharacters(message.message) + \"\\\" evidence=\\\"\" + escapeSpecialCharacters(message.evidence) + \"\\\"/>\");\n }\n });\n output.push(\"</file>\");\n }\n\n return output.join(\"\");\n }\n});\n\nCSSLint.addFormatter({\n id: \"json\",\n name: \"JSON\",\n startFormat: function() {\n \"use strict\";\n this.json = [];\n return \"\";\n },\n endFormat: function() {\n \"use strict\";\n var ret = \"\";\n if (this.json.length > 0) {\n if (this.json.length === 1) {\n ret = JSON.stringify(this.json[0]);\n } else {\n ret = JSON.stringify(this.json);\n }\n }\n return ret;\n },\n formatResults: function(results, filename, options) {\n \"use strict\";\n if (results.messages.length > 0 || !options.quiet) {\n this.json.push({\n filename: filename,\n messages: results.messages,\n stats: results.stats\n });\n }\n return \"\";\n }\n});\n\nCSSLint.addFormatter({\n id: \"junit-xml\",\n name: \"JUNIT XML format\",\n startFormat: function() {\n \"use strict\";\n return \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><testsuites>\";\n },\n endFormat: function() {\n \"use strict\";\n return \"</testsuites>\";\n },\n formatResults: function(results, filename/*, options*/) {\n \"use strict\";\n\n var messages = results.messages,\n output = [],\n tests = {\n \"error\": 0,\n \"failure\": 0\n };\n var generateSource = function(rule) {\n if (!rule || !(\"name\" in rule)) {\n return \"\";\n }\n return \"net.csslint.\" + rule.name.replace(/\\s/g, \"\");\n };\n var escapeSpecialCharacters = function(str) {\n\n if (!str || str.constructor !== String) {\n return \"\";\n }\n\n return str.replace(/\"/g, \"'\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n\n };\n\n if (messages.length > 0) {\n\n messages.forEach(function (message) {\n var type = message.type === \"warning\" ? \"error\" : message.type;\n if (!message.rollup) {\n output.push(\"<testcase time=\\\"0\\\" name=\\\"\" + generateSource(message.rule) + \"\\\">\");\n output.push(\"<\" + type + \" message=\\\"\" + escapeSpecialCharacters(message.message) + \"\\\"><![CDATA[\" + message.line + \":\" + message.col + \":\" + escapeSpecialCharacters(message.evidence) + \"]]></\" + type + \">\");\n output.push(\"</testcase>\");\n\n tests[type] += 1;\n\n }\n\n });\n\n output.unshift(\"<testsuite time=\\\"0\\\" tests=\\\"\" + messages.length + \"\\\" skipped=\\\"0\\\" errors=\\\"\" + tests.error + \"\\\" failures=\\\"\" + tests.failure + \"\\\" package=\\\"net.csslint\\\" name=\\\"\" + filename + \"\\\">\");\n output.push(\"</testsuite>\");\n\n }\n\n return output.join(\"\");\n\n }\n});\n\nCSSLint.addFormatter({\n id: \"lint-xml\",\n name: \"Lint XML format\",\n startFormat: function() {\n \"use strict\";\n return \"<?xml version=\\\"1.0\\\" encoding=\\\"utf-8\\\"?><lint>\";\n },\n endFormat: function() {\n \"use strict\";\n return \"</lint>\";\n },\n formatResults: function(results, filename/*, options*/) {\n \"use strict\";\n var messages = results.messages,\n output = [];\n var escapeSpecialCharacters = function(str) {\n if (!str || str.constructor !== String) {\n return \"\";\n }\n return str.replace(/\"/g, \"'\").replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n };\n\n if (messages.length > 0) {\n\n output.push(\"<file name=\\\"\"+filename+\"\\\">\");\n CSSLint.Util.forEach(messages, function (message) {\n if (message.rollup) {\n output.push(\"<issue severity=\\\"\" + message.type + \"\\\" reason=\\\"\" + escapeSpecialCharacters(message.message) + \"\\\" evidence=\\\"\" + escapeSpecialCharacters(message.evidence) + \"\\\"/>\");\n } else {\n var rule = \"\";\n if (message.rule && message.rule.id) {\n rule = \"rule=\\\"\" + escapeSpecialCharacters(message.rule.id) + \"\\\" \";\n }\n output.push(\"<issue \" + rule + \"line=\\\"\" + message.line + \"\\\" char=\\\"\" + message.col + \"\\\" severity=\\\"\" + message.type + \"\\\"\" +\n \" reason=\\\"\" + escapeSpecialCharacters(message.message) + \"\\\" evidence=\\\"\" + escapeSpecialCharacters(message.evidence) + \"\\\"/>\");\n }\n });\n output.push(\"</file>\");\n }\n\n return output.join(\"\");\n }\n});\n\nCSSLint.addFormatter({\n id: \"text\",\n name: \"Plain Text\",\n startFormat: function() {\n \"use strict\";\n return \"\";\n },\n endFormat: function() {\n \"use strict\";\n return \"\";\n },\n formatResults: function(results, filename, options) {\n \"use strict\";\n var messages = results.messages,\n output = \"\";\n options = options || {};\n\n if (messages.length === 0) {\n return options.quiet ? \"\" : \"\\n\\ncsslint: No errors in \" + filename + \".\";\n }\n\n output = \"\\n\\ncsslint: There \";\n if (messages.length === 1) {\n output += \"is 1 problem\";\n } else {\n output += \"are \" + messages.length + \" problems\";\n }\n output += \" in \" + filename + \".\";\n\n var pos = filename.lastIndexOf(\"/\"),\n shortFilename = filename;\n\n if (pos === -1) {\n pos = filename.lastIndexOf(\"\\\\\");\n }\n if (pos > -1) {\n shortFilename = filename.substring(pos+1);\n }\n\n CSSLint.Util.forEach(messages, function (message, i) {\n output = output + \"\\n\\n\" + shortFilename;\n if (message.rollup) {\n output += \"\\n\" + (i+1) + \": \" + message.type;\n output += \"\\n\" + message.message;\n } else {\n output += \"\\n\" + (i+1) + \": \" + message.type + \" at line \" + message.line + \", col \" + message.col;\n output += \"\\n\" + message.message;\n output += \"\\n\" + message.evidence;\n }\n });\n\n return output;\n }\n});\n\nreturn CSSLint;\n})();\n\n\nmodule.exports.CSSLint = CSSLint;\n\n});\n\nace.define(\"ace/mode/css_worker\",[], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar lang = require(\"../lib/lang\");\nvar Mirror = require(\"../worker/mirror\").Mirror;\nvar CSSLint = require(\"./css/csslint\").CSSLint;\n\nvar Worker = exports.Worker = function(sender) {\n Mirror.call(this, sender);\n this.setTimeout(400);\n this.ruleset = null;\n this.setDisabledRules(\"ids|order-alphabetical\");\n this.setInfoRules(\n \"adjoining-classes|zero-units|gradients|box-model|\" +\n \"import|outline-none|vendor-prefix\"\n );\n};\n\noop.inherits(Worker, Mirror);\n\n(function() {\n this.setInfoRules = function(ruleNames) {\n if (typeof ruleNames == \"string\")\n ruleNames = ruleNames.split(\"|\");\n this.infoRules = lang.arrayToMap(ruleNames);\n this.doc.getValue() && this.deferredUpdate.schedule(100);\n };\n\n this.setDisabledRules = function(ruleNames) {\n if (!ruleNames) {\n this.ruleset = null;\n } else {\n if (typeof ruleNames == \"string\")\n ruleNames = ruleNames.split(\"|\");\n var all = {};\n\n CSSLint.getRules().forEach(function(x){\n all[x.id] = true;\n });\n ruleNames.forEach(function(x) {\n delete all[x];\n });\n \n this.ruleset = all;\n }\n this.doc.getValue() && this.deferredUpdate.schedule(100);\n };\n\n this.onUpdate = function() {\n var value = this.doc.getValue();\n if (!value)\n return this.sender.emit(\"annotate\", []);\n var infoRules = this.infoRules;\n\n var result = CSSLint.verify(value, this.ruleset);\n this.sender.emit(\"annotate\", result.messages.map(function(msg) {\n return {\n row: msg.line - 1,\n column: msg.col - 1,\n text: msg.message,\n type: infoRules[msg.rule.id] ? \"info\" : msg.type,\n rule: msg.rule.name\n };\n }));\n };\n\n}).call(Worker.prototype);\n\n});\n"],"names":["window","msgs","message","file","line","col","err","parentId","moduleName","chunks","base","previous","id","module","path","resolveModuleId","paths","testPath","tail","alias","deps","factory","req","childId","returnExports","dep","topLevelNamespaces","i","EventEmitter","oop","Sender","data","callbackId","name","main","sender","e","msg","clazz","this","require","exports","ctor","superCtor","obj","mixin","key","proto","a","string","count","result","trimBeginRegexp","trimEndRegexp","copy","array","l","deepCopy","arr","map","props","value","str","regExp","matches","fcn","timer","callback","deferred","timeout","defaultTimeout","_self","docLines","delta","doNotValidate","row","startColumn","lines","args","endColumn","endRow","stopPropagation","preventDefault","eventName","listeners","defaultHandler","newCallback","resolve","handlers","old","disabled","capturing","index","comparePoints","p1","p2","Range","startRow","range","column","cmp","end","start","p","firstRow","lastRow","session","screenPosStart","screenPosEnd","Anchor","doc","point","$getTransformedPoint","noClip","pos","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","applyDelta","Document","textOrLines","text","len","match","newLineMode","position","length","deleteFirstNewLine","deleteLastNewLine","startCol","endCol","deletedLines","deltas","isInsert","docLength","MAX","from","to","chunk","newlineLength","lang","Mirror","deferredUpdate","d","CSSLint","parserlib","r","n","t","f","c","u","Combinator","SyntaxUnit","Parser","Matcher","StringReader","SyntaxError","matchFunc","toString","expression","reader","eat","expr","oror","andand","seq","mod","term","matcher","m","min","max","type","ValidationTypes","ms","prec","s","required","acc","v","seen","pass","success","matchCount","tryMatch","marker","optSep","m1","m2","MediaFeature","MediaQuery","modifier","mediaType","features","EventTarget","PropertyName","PropertyValue","PropertyValuePart","Selector","SelectorPart","SelectorSubPart","TokenStream","Tokens","Validation","options","prop","additions","tokenStream","token","tt","ex","emit","charset","uri","importToken","mediaList","prefix","ident","requireStartParen","expressions","feature","identifier","pseudoPage","marginSym","functions","ok","inFunction","hack","propertyName","selectors","selector","nextSelector","combinator","ws","elementName","modifiers","selectorText","components","component","ns","pseudo","colons","startLine","arg","subpart","part","property","prio","invalid","values","operator","unary","endChar","functionText","lt","color","keyList","checkStart","readMargins","input","parts","PropertyValueIterator","Colors","optionalHint","hint","temp","replacer","esc","codePoint","cp","Pseudos","Specificity","b","other","comps","updateValues","j","num","TokenStreamBase","h","nonascii","nl","whitespace","isHexDigit","isDigit","isWhitespace","isNewLine","isNameStart","isNameChar","isIdentStart","mix","receiver","supplier","wouldStartIdent","twoCodePoints","wouldStartUnsignedNumber","first","rule","opts","comment","comparison","uriFns","important","delim","allowQuestionMark","number","hasDot","inner","url","unescape","cssEscape","nameMap","typeMap","Properties","ValidationError","spec","types","literals","found","nt","listener","event","pattern","buffer","filter","source","tokenData","tokens","tokenTypes","channel","tokenInfo","info","total","tokenType","tokenName","clone","_instanceof","nativeMap","nativeSet","nativePromise","parent","circular","depth","prototype","includeNonEnumerable","allParents","allChildren","useBuffer","_clone","child","reject","__getRegExpFlags","keyChild","valueChild","entryChild","attrs","symbols","symbol","descriptor","allPropertyNames","__objToStr","o","__isDate","__isArray","__isRegExp","re","flags","rules","formatters","embeddedRuleset","api","ruleset","applyEmbeddedRuleset","valueMap","embedded","pair","formatter","formatId","results","filename","reporter","allow","ignore","report","parser","lineno","allowLine","allowRules","allowRuleset","allowRule","ignoreStart","ignoreEnd","Reporter","func","widthProperties","heightProperties","properties","boxSizing","startRule","endRule","fontFaceRule","firstSrc","ruleFailed","regex","compatiblePrefixes","variations","prefixed","inKeyFrame","arrayPush","applyTo","propertyGroups","full","actual","item","propertiesSpecified","propertiesToCheck","reportProperty","display","stack","lastProperty","gradients","missing","idCount","k","MAX_IMPORT_COUNT","startPage","currentProperties","expectedProperties","lowerCasePrefixLessName","lastRule","classes","pLen","part2","currentLine","nextLine","mapping","textIndent","direction","selectorContainsClassOrId","needed","needsStandard","xmlEscape","messages","output","generateSource","capitalize","escapeSpecialCharacters","ret","tests","shortFilename","Worker","ruleNames","all","x","infoRules"],"mappings":"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","x_google_ignoreList":[0]}