{ "version": 3, "sources": ["../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/lib/base64.js", "../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/lib/base64-vlq.js", "../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/lib/util.js", "../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/lib/array-set.js", "../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/lib/mapping-list.js", "../../node_modules/.pnpm/source-map-js@1.0.2/node_modules/source-map-js/lib/source-map-generator.js", "../../node_modules/.pnpm/@unocss+core@0.46.0/node_modules/@unocss/core/dist/index.mjs", "../../node_modules/.pnpm/@unocss+runtime@0.46.0/node_modules/@unocss/runtime/dist/index.mjs", "../../node_modules/.pnpm/@unocss+preset-attributify@0.46.0/node_modules/@unocss/preset-attributify/dist/index.mjs", "../../node_modules/.pnpm/destr@1.2.0/node_modules/destr/dist/index.mjs", "../../node_modules/.pnpm/ufo@0.8.6/node_modules/ufo/dist/index.mjs", "../../node_modules/.pnpm/ohmyfetch@0.4.20/node_modules/ohmyfetch/dist/shared/ohmyfetch.fb8dc89e.mjs", "../../node_modules/.pnpm/ohmyfetch@0.4.20/node_modules/ohmyfetch/dist/index.mjs", "../../node_modules/.pnpm/@unocss+preset-icons@0.46.0/node_modules/@unocss/preset-icons/dist/shared/preset-icons.b465130e.mjs", "../../node_modules/.pnpm/@unocss+preset-icons@0.46.0/node_modules/@unocss/preset-icons/dist/core.mjs", "../../node_modules/.pnpm/@unocss+preset-icons@0.46.0/node_modules/@unocss/preset-icons/dist/browser.mjs", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/types.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/char-code-definitions.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/utils.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/names.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/adopt-buffer.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/OffsetToLocation.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/TokenStream.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/tokenizer/index.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/utils/List.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/utils/create-custom-error.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/parser/SyntaxError.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/parser/sequence.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/parser/create.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/generator/sourceMap.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/generator/token-before.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/generator/create.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/convertor/create.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/walker/create.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/definition-syntax/generate.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/error.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/utils/names.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/generic-const.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/generic-an-plus-b.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/generic-urange.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/generic.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/definition-syntax/SyntaxError.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/definition-syntax/tokenizer.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/definition-syntax/parse.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/definition-syntax/walk.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/prepare-tokens.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/match-graph.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/match.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/trace.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/search.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/structure.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/lexer/Lexer.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/config/mix.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/create.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/dist/data.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/index.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/AnPlusB.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Atrule.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/AttributeSelector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Block.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Brackets.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/CDC.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/CDO.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/ClassSelector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Combinator.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Comment.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Declaration.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/DeclarationList.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Dimension.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Function.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Hash.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Identifier.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/IdSelector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/MediaFeature.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/MediaQuery.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/MediaQueryList.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Nth.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Number.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Operator.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Parentheses.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Percentage.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Ratio.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Raw.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Rule.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Selector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/SelectorList.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/String.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/utils/string.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/StyleSheet.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/TypeSelector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/UnicodeRange.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Url.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/utils/url.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/Value.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/WhiteSpace.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/config/lexer.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/scope/index.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/scope/default.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/scope/atrulePrelude.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/scope/selector.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/function/expression.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/function/var.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/scope/value.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/atrule/font-face.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/atrule/import.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/atrule/media.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/atrule/page.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/atrule/supports.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/atrule/index.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/pseudo/index.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/node/index-parse.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/config/parser.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/config/walker.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/syntax/index.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/utils/clone.js", "../../node_modules/.pnpm/css-tree@2.2.1/node_modules/css-tree/lib/index.js", "../../node_modules/.pnpm/@unocss+transformer-directives@0.46.0/node_modules/@unocss/transformer-directives/dist/index.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.9c5f881e.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.739fdcc7.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.13105b6e.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.65ac75be.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.ae98d318.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.154e3363.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/shared/preset-mini.9e26490c.mjs", "../../node_modules/.pnpm/@unocss+preset-mini@0.46.0/node_modules/@unocss/preset-mini/dist/index.mjs", "../../node_modules/.pnpm/@unocss+preset-wind@0.46.0/node_modules/@unocss/preset-wind/dist/index.mjs", "../../node_modules/.pnpm/@unocss+preset-uno@0.46.0/node_modules/@unocss/preset-uno/dist/index.mjs", "../../node_modules/.pnpm/camelcase@7.0.0/node_modules/camelcase/index.js", "../../node_modules/.pnpm/unocss-preset-daisy@1.2.0_k7bdlmn3ypheilzq2lmgrj7dzq/node_modules/unocss-preset-daisy/index.js", "../../src/unocss/test.js", "../../src/unocss/index.ts"], "sourcesContent": ["/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\nvar MAX_CACHED_INPUTS = 32;\n\n/**\n * Takes some function `f(input) -> result` and returns a memoized version of\n * `f`.\n *\n * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The\n * memoization is a dumb-simple, linear least-recently-used cache.\n */\nfunction lruMemoize(f) {\n var cache = [];\n\n return function(input) {\n for (var i = 0; i < cache.length; i++) {\n if (cache[i].input === input) {\n var temp = cache[0];\n cache[0] = cache[i];\n cache[i] = temp;\n return cache[0].result;\n }\n }\n\n var result = f(input);\n\n cache.unshift({\n input,\n result,\n });\n\n if (cache.length > MAX_CACHED_INPUTS) {\n cache.pop();\n }\n\n return result;\n };\n}\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '