{"version":3,"mappings":"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","names":["isImageMetadata","src","decoder","toUTF8String","input","start","end","toHexString","memo","i","readInt16LE","offset","val","readUInt16BE","readUInt16LE","readUInt24LE","readInt32LE","readUInt32BE","readUInt32LE","methods","readUInt","bits","isBigEndian","endian","methodName","readBox","buffer","boxSize","findBox","boxName","box","BMP","TYPE_ICON","SIZE_HEADER","SIZE_IMAGE_ENTRY","getSizeFromOffset","value","getImageSize","imageIndex","ICO","reserved","imageCount","nbImages","imageSize","imgs","TYPE_CURSOR","CUR","DDS","gifRegexp","GIF","brandMap","detectBrands","brandsDetected","brand","HEIF","ftype","metaBox","iprpBox","ipcoBox","ispeBox","FILE_LENGTH_OFFSET","ENTRY_LENGTH_OFFSET","ICON_TYPE_SIZE","readImageHeader","imageOffset","imageLengthOffset","type","size","ICNS","inputLength","fileLength","imageHeader","result","J2C","JP2","ftypBox","jp2hBox","ihdrBox","EXIF_MARKER","APP1_DATA_SIZE_BYTES","EXIF_HEADER_BYTES","TIFF_BYTE_ALIGN_BYTES","BIG_ENDIAN_BYTE_ALIGN","LITTLE_ENDIAN_BYTE_ALIGN","IDF_ENTRY_BYTES","NUM_DIRECTORY_ENTRIES_BYTES","isEXIF","extractSize","index","extractOrientation","exifBlock","idfDirectoryEntries","directoryEntryNumber","block","validateExifBlock","byteAlign","validateInput","JPG","orientation","next","KTX","signature","pngSignature","pngImageHeaderChunkName","pngFriedChunkName","PNG","chunkName","PNMTypes","handlers","lines","dimensions","line","key","PNM","PSD","svgReg","extractorRegExps","INCH_CM","units","unitsReg","parseLength","len","m","parseViewbox","viewbox","bounds","parseAttributes","root","width","height","calculateByDimensions","attrs","calculateByViewbox","ratio","SVG","TGA","readIFD","ifdOffset","readValue","low","nextTag","extractTags","tags","temp","code","length","determineEndianness","signatures","TIFF","ifdBuffer","calculateExtended","calculateLossless","calculateLossy","WEBP","riffHeader","webpHeader","vp8Header","chunkHeader","extendedHeader","validStart","validEnd","typeHandlers","types","firstBytes","detector","byte","fileType","globalOptions","lookup","imageMetadata","data","probe","AstroError","AstroErrorData.NoImageMetadata","isPortrait","inferRemoteSize","url","response","AstroErrorData.FailedToFetchRemoteImageDimensions","reader","done","accumulatedChunks","readResult","tmp","getConfiguredImageService","service","__vitePreload","n","error","AstroErrorData.InvalidImageService","getImage","options","imageConfig","AstroErrorData.ExpectedImageOptions","AstroErrorData.ExpectedImage","AstroErrorData.ExpectedNotESMImage","resolvedOptions","resolveSrc","isRemoteImage","isRemotePath","originalFilePath","isESMImportedImage","clonedSrc","validatedOptions","srcSetTransforms","imageURL","srcSets","srcSet","isLocalService","propsToHash","DEFAULT_HASH_PROPS","validateArgs","args","baseCreateComponent","cb","moduleId","propagation","name","fn","AstroErrorData.InvalidComponentArgs","createComponentWithOptions","opts","createComponent","arg1","ASTRO_VERSION","createAstroGlobFn","importMetaGlobResult","AstroErrorData.AstroGlobUsedOutside","allEntries","AstroErrorData.AstroGlobNoMatch","createAstro","site","replace","ca","esca","pe","escape","es","isPromise","escapeHTML","HTMLString","markHTMLString","isHTMLString","RenderInstructionSymbol","createRenderInstruction","instruction","htmlBooleanAttributes","htmlEnumAttributes","svgEnumAttributes","AMPERSAND_REGEX","DOUBLE_QUOTE_REGEX","STATIC_DIRECTIVES","toAttributeString","shouldEscape","kebab","k","match","toStyleString","obj","_","v","addAttribute","listValue","clsx","isHttpUrl","noop","BufferedRenderer","bufferRenderFunction","chunk","destination","renderToBufferDestination","VALID_PROTOCOLS","parsedUrl","maybeRenderHead","renderTemplateResultSym","RenderTemplateResult","htmlParts","expressions","expression","err","expRenders","exp","bufferDestination","renderChild","html","expRender","isRenderTemplateResult","renderTemplate","slotString","SlotString","content","instructions","isRenderInstance","child","childRenders","c","childRender","isAstroComponentInstance","astroComponentInstanceSym","EncodingPadding","DecodingPadding","object","hasOwnProperty","merge","defaults","regexAnySingleEscape","regexSingleEscape","regexExcessiveSpaces","cssesc","string","quote","isIdentifier","firstChar","output","counter","character","codePoint","extra","$0","$1","$2","spreadAttributes","values","_name","scopedClassName","addAttribute2","markHTMLString2","$$Astro","$$createAstro","$$Image","$$createComponent","$$result","$$props","$$slots","Astro","props","AstroErrorData.ImageMissingAlt","image","additionalAttributes","$$render","$$maybeRenderHead","$$addAttribute","$$spreadAttributes","mimes","extn","idx","$$Picture","defaultFormats","defaultFallbackFormat","specialFormatsFallback","formats","pictureAttributes","fallbackFormat","scopedStyleClass","originalSrc","optimizedImages","format","resultFallbackFormat","fallbackImage","imgAdditionalAttributes","sourceAdditionalAttributes","srcsetAttribute","mime.lookup","getConvertedImageUrl","img","assetPrefix","pathedImageMetadata","path","processImage","pngSrc","webpSrc","processImages","images","processedResidentBenefitsImages","residentBenefitsBestImage","residentBenefitsGoodImage","residentBenefitsBasicImage","residentBenefitsEmptyImage","PlanList","plans","jsx","plan","RatingPlanCard","PlanSelectionWizardPage","planSelectionWizardStatesById","featuredPlans","userStateId","setUserStateId","useState","state","setState","statePlans","setStatePlans","featuredFirst","setFeaturedFirst","useEffect","stateFromIp","getStateFromIp","stateWithPlans","showFeaturedPlansFirst","jsxs","StepMap","ArrowLeftIcon","FeaturedPlansSection","StatePlansSection","USMap","usState"],"ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49],"sources":["../../../node_modules/astro/dist/assets/types.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/utils.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/bmp.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/ico.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/cur.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/dds.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/gif.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/heif.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/icns.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/j2c.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/jp2.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/jpg.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/ktx.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/png.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/pnm.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/psd.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/svg.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/tga.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/tiff.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/webp.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/types/index.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/detector.js","../../../node_modules/astro/dist/assets/utils/vendor/image-size/lookup.js","../../../node_modules/astro/dist/assets/utils/metadata.js","../../../node_modules/astro/dist/assets/utils/remoteProbe.js","../../../node_modules/astro/dist/assets/internal.js","../../../node_modules/astro/dist/runtime/server/astro-component.js","../../../node_modules/astro/dist/core/constants.js","../../../node_modules/astro/dist/runtime/server/astro-global.js","../../../node_modules/kleur/colors.mjs","../../../node_modules/html-escaper/esm/index.js","../../../node_modules/astro/dist/runtime/server/util.js","../../../node_modules/astro/dist/runtime/server/escape.js","../../../node_modules/astro/dist/runtime/server/render/instruction.js","../../../node_modules/astro/dist/runtime/server/render/util.js","../../../node_modules/astro/dist/runtime/server/render/head.js","../../../node_modules/astro/dist/runtime/server/render/astro/render-template.js","../../../node_modules/astro/dist/runtime/server/render/slot.js","../../../node_modules/astro/dist/runtime/server/render/common.js","../../../node_modules/astro/dist/runtime/server/render/any.js","../../../node_modules/astro/dist/runtime/server/render/astro/instance.js","../../../node_modules/@oslojs/encoding/dist/base32.js","../../../node_modules/@oslojs/encoding/dist/base64.js","../../../node_modules/astro/dist/core/encryption.js","../../../node_modules/cssesc/cssesc.js","../../../node_modules/astro/dist/runtime/server/transition.js","../../../node_modules/astro/dist/runtime/server/index.js","../../../node_modules/astro/components/Image.astro","../../../node_modules/mrmime/index.mjs","../../../node_modules/astro/components/Picture.astro","../../../src/lib/image-server.ts","../../../src/components/resident-benefits/processed-resident-benefits-images.ts","../../../src/modules/widgets/plan-selection-wizard/plan-list.tsx","../../../src/modules/widgets/plan-selection-wizard/plan-selection-wizard-page.tsx"],"sourcesContent":["const isESMImport = Symbol(\"#isESM\");\nfunction isImageMetadata(src) {\n return src.fsPath && !(\"fsPath\" in src);\n}\nexport {\n isImageMetadata\n};\n","const decoder = new TextDecoder();\nconst toUTF8String = (input, start = 0, end = input.length) => decoder.decode(input.slice(start, end));\nconst toHexString = (input, start = 0, end = input.length) => input.slice(start, end).reduce((memo, i) => memo + (\"0\" + i.toString(16)).slice(-2), \"\");\nconst readInt16LE = (input, offset = 0) => {\n const val = input[offset] + input[offset + 1] * 2 ** 8;\n return val | (val & 2 ** 15) * 131070;\n};\nconst readUInt16BE = (input, offset = 0) => input[offset] * 2 ** 8 + input[offset + 1];\nconst readUInt16LE = (input, offset = 0) => input[offset] + input[offset + 1] * 2 ** 8;\nconst readUInt24LE = (input, offset = 0) => input[offset] + input[offset + 1] * 2 ** 8 + input[offset + 2] * 2 ** 16;\nconst readInt32LE = (input, offset = 0) => input[offset] + input[offset + 1] * 2 ** 8 + input[offset + 2] * 2 ** 16 + (input[offset + 3] << 24);\nconst readUInt32BE = (input, offset = 0) => input[offset] * 2 ** 24 + input[offset + 1] * 2 ** 16 + input[offset + 2] * 2 ** 8 + input[offset + 3];\nconst readUInt32LE = (input, offset = 0) => input[offset] + input[offset + 1] * 2 ** 8 + input[offset + 2] * 2 ** 16 + input[offset + 3] * 2 ** 24;\nconst methods = {\n readUInt16BE,\n readUInt16LE,\n readUInt32BE,\n readUInt32LE\n};\nfunction readUInt(input, bits, offset, isBigEndian) {\n offset = offset || 0;\n const endian = isBigEndian ? \"BE\" : \"LE\";\n const methodName = \"readUInt\" + bits + endian;\n return methods[methodName](input, offset);\n}\nfunction readBox(buffer, offset) {\n if (buffer.length - offset < 4) return;\n const boxSize = readUInt32BE(buffer, offset);\n if (buffer.length - offset < boxSize) return;\n return {\n name: toUTF8String(buffer, 4 + offset, 8 + offset),\n offset,\n size: boxSize\n };\n}\nfunction findBox(buffer, boxName, offset) {\n while (offset < buffer.length) {\n const box = readBox(buffer, offset);\n if (!box) break;\n if (box.name === boxName) return box;\n offset += box.size;\n }\n}\nexport {\n findBox,\n readInt16LE,\n readInt32LE,\n readUInt,\n readUInt16BE,\n readUInt16LE,\n readUInt24LE,\n readUInt32BE,\n readUInt32LE,\n toHexString,\n toUTF8String\n};\n","import { toUTF8String, readInt32LE, readUInt32LE } from \"./utils.js\";\nconst BMP = {\n validate: (input) => toUTF8String(input, 0, 2) === \"BM\",\n calculate: (input) => ({\n height: Math.abs(readInt32LE(input, 22)),\n width: readUInt32LE(input, 18)\n })\n};\nexport {\n BMP\n};\n","import { readUInt16LE } from \"./utils.js\";\nconst TYPE_ICON = 1;\nconst SIZE_HEADER = 2 + 2 + 2;\nconst SIZE_IMAGE_ENTRY = 1 + 1 + 1 + 1 + 2 + 2 + 4 + 4;\nfunction getSizeFromOffset(input, offset) {\n const value = input[offset];\n return value === 0 ? 256 : value;\n}\nfunction getImageSize(input, imageIndex) {\n const offset = SIZE_HEADER + imageIndex * SIZE_IMAGE_ENTRY;\n return {\n height: getSizeFromOffset(input, offset + 1),\n width: getSizeFromOffset(input, offset)\n };\n}\nconst ICO = {\n validate(input) {\n const reserved = readUInt16LE(input, 0);\n const imageCount = readUInt16LE(input, 4);\n if (reserved !== 0 || imageCount === 0) return false;\n const imageType = readUInt16LE(input, 2);\n return imageType === TYPE_ICON;\n },\n calculate(input) {\n const nbImages = readUInt16LE(input, 4);\n const imageSize = getImageSize(input, 0);\n if (nbImages === 1) return imageSize;\n const imgs = [imageSize];\n for (let imageIndex = 1; imageIndex < nbImages; imageIndex += 1) {\n imgs.push(getImageSize(input, imageIndex));\n }\n return {\n height: imageSize.height,\n images: imgs,\n width: imageSize.width\n };\n }\n};\nexport {\n ICO\n};\n","import { ICO } from \"./ico.js\";\nimport { readUInt16LE } from \"./utils.js\";\nconst TYPE_CURSOR = 2;\nconst CUR = {\n validate(input) {\n const reserved = readUInt16LE(input, 0);\n const imageCount = readUInt16LE(input, 4);\n if (reserved !== 0 || imageCount === 0) return false;\n const imageType = readUInt16LE(input, 2);\n return imageType === TYPE_CURSOR;\n },\n calculate: (input) => ICO.calculate(input)\n};\nexport {\n CUR\n};\n","import { readUInt32LE } from \"./utils.js\";\nconst DDS = {\n validate: (input) => readUInt32LE(input, 0) === 542327876,\n calculate: (input) => ({\n height: readUInt32LE(input, 12),\n width: readUInt32LE(input, 16)\n })\n};\nexport {\n DDS\n};\n","import { toUTF8String, readUInt16LE } from \"./utils.js\";\nconst gifRegexp = /^GIF8[79]a/;\nconst GIF = {\n validate: (input) => gifRegexp.test(toUTF8String(input, 0, 6)),\n calculate: (input) => ({\n height: readUInt16LE(input, 8),\n width: readUInt16LE(input, 6)\n })\n};\nexport {\n GIF\n};\n","import { findBox, readUInt32BE, toUTF8String } from \"./utils.js\";\nconst brandMap = {\n avif: \"avif\",\n mif1: \"heif\",\n msf1: \"heif\",\n // hief-sequence\n heic: \"heic\",\n heix: \"heic\",\n hevc: \"heic\",\n // heic-sequence\n hevx: \"heic\"\n // heic-sequence\n};\nfunction detectBrands(buffer, start, end) {\n let brandsDetected = {};\n for (let i = start; i <= end; i += 4) {\n const brand = toUTF8String(buffer, i, i + 4);\n if (brand in brandMap) {\n brandsDetected[brand] = 1;\n }\n }\n if (\"avif\" in brandsDetected) {\n return \"avif\";\n } else if (\"heic\" in brandsDetected || \"heix\" in brandsDetected || \"hevc\" in brandsDetected || \"hevx\" in brandsDetected) {\n return \"heic\";\n } else if (\"mif1\" in brandsDetected || \"msf1\" in brandsDetected) {\n return \"heif\";\n }\n}\nconst HEIF = {\n validate(buffer) {\n const ftype = toUTF8String(buffer, 4, 8);\n const brand = toUTF8String(buffer, 8, 12);\n return \"ftyp\" === ftype && brand in brandMap;\n },\n calculate(buffer) {\n const metaBox = findBox(buffer, \"meta\", 0);\n const iprpBox = metaBox && findBox(buffer, \"iprp\", metaBox.offset + 12);\n const ipcoBox = iprpBox && findBox(buffer, \"ipco\", iprpBox.offset + 8);\n const ispeBox = ipcoBox && findBox(buffer, \"ispe\", ipcoBox.offset + 8);\n if (ispeBox) {\n return {\n height: readUInt32BE(buffer, ispeBox.offset + 16),\n width: readUInt32BE(buffer, ispeBox.offset + 12),\n type: detectBrands(buffer, 8, metaBox.offset)\n };\n }\n throw new TypeError(\"Invalid HEIF, no size found\");\n }\n};\nexport {\n HEIF\n};\n","import { toUTF8String, readUInt32BE } from \"./utils.js\";\nconst SIZE_HEADER = 4 + 4;\nconst FILE_LENGTH_OFFSET = 4;\nconst ENTRY_LENGTH_OFFSET = 4;\nconst ICON_TYPE_SIZE = {\n ICON: 32,\n \"ICN#\": 32,\n // m => 16 x 16\n \"icm#\": 16,\n icm4: 16,\n icm8: 16,\n // s => 16 x 16\n \"ics#\": 16,\n ics4: 16,\n ics8: 16,\n is32: 16,\n s8mk: 16,\n icp4: 16,\n // l => 32 x 32\n icl4: 32,\n icl8: 32,\n il32: 32,\n l8mk: 32,\n icp5: 32,\n ic11: 32,\n // h => 48 x 48\n ich4: 48,\n ich8: 48,\n ih32: 48,\n h8mk: 48,\n // . => 64 x 64\n icp6: 64,\n ic12: 32,\n // t => 128 x 128\n it32: 128,\n t8mk: 128,\n ic07: 128,\n // . => 256 x 256\n ic08: 256,\n ic13: 256,\n // . => 512 x 512\n ic09: 512,\n ic14: 512,\n // . => 1024 x 1024\n ic10: 1024\n};\nfunction readImageHeader(input, imageOffset) {\n const imageLengthOffset = imageOffset + ENTRY_LENGTH_OFFSET;\n return [\n toUTF8String(input, imageOffset, imageLengthOffset),\n readUInt32BE(input, imageLengthOffset)\n ];\n}\nfunction getImageSize(type) {\n const size = ICON_TYPE_SIZE[type];\n return { width: size, height: size, type };\n}\nconst ICNS = {\n validate: (input) => toUTF8String(input, 0, 4) === \"icns\",\n calculate(input) {\n const inputLength = input.length;\n const fileLength = readUInt32BE(input, FILE_LENGTH_OFFSET);\n let imageOffset = SIZE_HEADER;\n let imageHeader = readImageHeader(input, imageOffset);\n let imageSize = getImageSize(imageHeader[0]);\n imageOffset += imageHeader[1];\n if (imageOffset === fileLength) return imageSize;\n const result = {\n height: imageSize.height,\n images: [imageSize],\n width: imageSize.width\n };\n while (imageOffset < fileLength && imageOffset < inputLength) {\n imageHeader = readImageHeader(input, imageOffset);\n imageSize = getImageSize(imageHeader[0]);\n imageOffset += imageHeader[1];\n result.images.push(imageSize);\n }\n return result;\n }\n};\nexport {\n ICNS\n};\n","import { toHexString, readUInt32BE } from \"./utils.js\";\nconst J2C = {\n // TODO: this doesn't seem right. SIZ marker doesn't have to be right after the SOC\n validate: (input) => toHexString(input, 0, 4) === \"ff4fff51\",\n calculate: (input) => ({\n height: readUInt32BE(input, 12),\n width: readUInt32BE(input, 8)\n })\n};\nexport {\n J2C\n};\n","import { readUInt32BE, findBox } from \"./utils.js\";\nconst JP2 = {\n validate(input) {\n if (readUInt32BE(input, 4) !== 1783636e3 || readUInt32BE(input, 0) < 1) return false;\n const ftypBox = findBox(input, \"ftyp\", 0);\n if (!ftypBox) return false;\n return readUInt32BE(input, ftypBox.offset + 4) === 1718909296;\n },\n calculate(input) {\n const jp2hBox = findBox(input, \"jp2h\", 0);\n const ihdrBox = jp2hBox && findBox(input, \"ihdr\", jp2hBox.offset + 8);\n if (ihdrBox) {\n return {\n height: readUInt32BE(input, ihdrBox.offset + 8),\n width: readUInt32BE(input, ihdrBox.offset + 12)\n };\n }\n throw new TypeError(\"Unsupported JPEG 2000 format\");\n }\n};\nexport {\n JP2\n};\n","import { readUInt, readUInt16BE, toHexString } from \"./utils.js\";\nconst EXIF_MARKER = \"45786966\";\nconst APP1_DATA_SIZE_BYTES = 2;\nconst EXIF_HEADER_BYTES = 6;\nconst TIFF_BYTE_ALIGN_BYTES = 2;\nconst BIG_ENDIAN_BYTE_ALIGN = \"4d4d\";\nconst LITTLE_ENDIAN_BYTE_ALIGN = \"4949\";\nconst IDF_ENTRY_BYTES = 12;\nconst NUM_DIRECTORY_ENTRIES_BYTES = 2;\nfunction isEXIF(input) {\n return toHexString(input, 2, 6) === EXIF_MARKER;\n}\nfunction extractSize(input, index) {\n return {\n height: readUInt16BE(input, index),\n width: readUInt16BE(input, index + 2)\n };\n}\nfunction extractOrientation(exifBlock, isBigEndian) {\n const idfOffset = 8;\n const offset = EXIF_HEADER_BYTES + idfOffset;\n const idfDirectoryEntries = readUInt(exifBlock, 16, offset, isBigEndian);\n for (let directoryEntryNumber = 0; directoryEntryNumber < idfDirectoryEntries; directoryEntryNumber++) {\n const start = offset + NUM_DIRECTORY_ENTRIES_BYTES + directoryEntryNumber * IDF_ENTRY_BYTES;\n const end = start + IDF_ENTRY_BYTES;\n if (start > exifBlock.length) {\n return;\n }\n const block = exifBlock.slice(start, end);\n const tagNumber = readUInt(block, 16, 0, isBigEndian);\n if (tagNumber === 274) {\n const dataFormat = readUInt(block, 16, 2, isBigEndian);\n if (dataFormat !== 3) {\n return;\n }\n const numberOfComponents = readUInt(block, 32, 4, isBigEndian);\n if (numberOfComponents !== 1) {\n return;\n }\n return readUInt(block, 16, 8, isBigEndian);\n }\n }\n}\nfunction validateExifBlock(input, index) {\n const exifBlock = input.slice(APP1_DATA_SIZE_BYTES, index);\n const byteAlign = toHexString(\n exifBlock,\n EXIF_HEADER_BYTES,\n EXIF_HEADER_BYTES + TIFF_BYTE_ALIGN_BYTES\n );\n const isBigEndian = byteAlign === BIG_ENDIAN_BYTE_ALIGN;\n const isLittleEndian = byteAlign === LITTLE_ENDIAN_BYTE_ALIGN;\n if (isBigEndian || isLittleEndian) {\n return extractOrientation(exifBlock, isBigEndian);\n }\n}\nfunction validateInput(input, index) {\n if (index > input.length) {\n throw new TypeError(\"Corrupt JPG, exceeded buffer limits\");\n }\n}\nconst JPG = {\n validate: (input) => toHexString(input, 0, 2) === \"ffd8\",\n calculate(input) {\n input = input.slice(4);\n let orientation;\n let next;\n while (input.length) {\n const i = readUInt16BE(input, 0);\n if (input[i] !== 255) {\n input = input.slice(1);\n continue;\n }\n if (isEXIF(input)) {\n orientation = validateExifBlock(input, i);\n }\n validateInput(input, i);\n next = input[i + 1];\n if (next === 192 || next === 193 || next === 194) {\n const size = extractSize(input, i + 5);\n if (!orientation) {\n return size;\n }\n return {\n height: size.height,\n orientation,\n width: size.width\n };\n }\n input = input.slice(i + 2);\n }\n throw new TypeError(\"Invalid JPG, no size found\");\n }\n};\nexport {\n JPG\n};\n","import { toUTF8String, readUInt32LE } from \"./utils.js\";\nconst KTX = {\n validate: (input) => {\n const signature = toUTF8String(input, 1, 7);\n return [\"KTX 11\", \"KTX 20\"].includes(signature);\n },\n calculate: (input) => {\n const type = input[5] === 49 ? \"ktx\" : \"ktx2\";\n const offset = type === \"ktx\" ? 36 : 20;\n return {\n height: readUInt32LE(input, offset + 4),\n width: readUInt32LE(input, offset),\n type\n };\n }\n};\nexport {\n KTX\n};\n","import { toUTF8String, readUInt32BE } from \"./utils.js\";\nconst pngSignature = \"PNG\\r\\n\u001a\\n\";\nconst pngImageHeaderChunkName = \"IHDR\";\nconst pngFriedChunkName = \"CgBI\";\nconst PNG = {\n validate(input) {\n if (pngSignature === toUTF8String(input, 1, 8)) {\n let chunkName = toUTF8String(input, 12, 16);\n if (chunkName === pngFriedChunkName) {\n chunkName = toUTF8String(input, 28, 32);\n }\n if (chunkName !== pngImageHeaderChunkName) {\n throw new TypeError(\"Invalid PNG\");\n }\n return true;\n }\n return false;\n },\n calculate(input) {\n if (toUTF8String(input, 12, 16) === pngFriedChunkName) {\n return {\n height: readUInt32BE(input, 36),\n width: readUInt32BE(input, 32)\n };\n }\n return {\n height: readUInt32BE(input, 20),\n width: readUInt32BE(input, 16)\n };\n }\n};\nexport {\n PNG\n};\n","import { toUTF8String } from \"./utils.js\";\nconst PNMTypes = {\n P1: \"pbm/ascii\",\n P2: \"pgm/ascii\",\n P3: \"ppm/ascii\",\n P4: \"pbm\",\n P5: \"pgm\",\n P6: \"ppm\",\n P7: \"pam\",\n PF: \"pfm\"\n};\nconst handlers = {\n default: (lines) => {\n let dimensions = [];\n while (lines.length > 0) {\n const line = lines.shift();\n if (line[0] === \"#\") {\n continue;\n }\n dimensions = line.split(\" \");\n break;\n }\n if (dimensions.length === 2) {\n return {\n height: parseInt(dimensions[1], 10),\n width: parseInt(dimensions[0], 10)\n };\n } else {\n throw new TypeError(\"Invalid PNM\");\n }\n },\n pam: (lines) => {\n const size = {};\n while (lines.length > 0) {\n const line = lines.shift();\n if (line.length > 16 || line.charCodeAt(0) > 128) {\n continue;\n }\n const [key, value] = line.split(\" \");\n if (key && value) {\n size[key.toLowerCase()] = parseInt(value, 10);\n }\n if (size.height && size.width) {\n break;\n }\n }\n if (size.height && size.width) {\n return {\n height: size.height,\n width: size.width\n };\n } else {\n throw new TypeError(\"Invalid PAM\");\n }\n }\n};\nconst PNM = {\n validate: (input) => toUTF8String(input, 0, 2) in PNMTypes,\n calculate(input) {\n const signature = toUTF8String(input, 0, 2);\n const type = PNMTypes[signature];\n const lines = toUTF8String(input, 3).split(/[\\r\\n]+/);\n const handler = handlers[type] || handlers.default;\n return handler(lines);\n }\n};\nexport {\n PNM\n};\n","import { toUTF8String, readUInt32BE } from \"./utils.js\";\nconst PSD = {\n validate: (input) => toUTF8String(input, 0, 4) === \"8BPS\",\n calculate: (input) => ({\n height: readUInt32BE(input, 14),\n width: readUInt32BE(input, 18)\n })\n};\nexport {\n PSD\n};\n","import { toUTF8String } from \"./utils.js\";\nconst svgReg = /\"']|\"[^\"]*\"|'[^']*')*>/;\nconst extractorRegExps = {\n height: /\\sheight=(['\"])([^%]+?)\\1/,\n root: svgReg,\n viewbox: /\\sviewBox=(['\"])(.+?)\\1/i,\n width: /\\swidth=(['\"])([^%]+?)\\1/\n};\nconst INCH_CM = 2.54;\nconst units = {\n in: 96,\n cm: 96 / INCH_CM,\n em: 16,\n ex: 8,\n m: 96 / INCH_CM * 100,\n mm: 96 / INCH_CM / 10,\n pc: 96 / 72 / 12,\n pt: 96 / 72,\n px: 1\n};\nconst unitsReg = new RegExp(\n `^([0-9.]+(?:e\\\\d+)?)(${Object.keys(units).join(\"|\")})?$`\n);\nfunction parseLength(len) {\n const m = unitsReg.exec(len);\n if (!m) {\n return void 0;\n }\n return Math.round(Number(m[1]) * (units[m[2]] || 1));\n}\nfunction parseViewbox(viewbox) {\n const bounds = viewbox.split(\" \");\n return {\n height: parseLength(bounds[3]),\n width: parseLength(bounds[2])\n };\n}\nfunction parseAttributes(root) {\n const width = extractorRegExps.width.exec(root);\n const height = extractorRegExps.height.exec(root);\n const viewbox = extractorRegExps.viewbox.exec(root);\n return {\n height: height && parseLength(height[2]),\n viewbox: viewbox && parseViewbox(viewbox[2]),\n width: width && parseLength(width[2])\n };\n}\nfunction calculateByDimensions(attrs) {\n return {\n height: attrs.height,\n width: attrs.width\n };\n}\nfunction calculateByViewbox(attrs, viewbox) {\n const ratio = viewbox.width / viewbox.height;\n if (attrs.width) {\n return {\n height: Math.floor(attrs.width / ratio),\n width: attrs.width\n };\n }\n if (attrs.height) {\n return {\n height: attrs.height,\n width: Math.floor(attrs.height * ratio)\n };\n }\n return {\n height: viewbox.height,\n width: viewbox.width\n };\n}\nconst SVG = {\n // Scan only the first kilo-byte to speed up the check on larger files\n validate: (input) => svgReg.test(toUTF8String(input, 0, 1e3)),\n calculate(input) {\n const root = extractorRegExps.root.exec(toUTF8String(input));\n if (root) {\n const attrs = parseAttributes(root[0]);\n if (attrs.width && attrs.height) {\n return calculateByDimensions(attrs);\n }\n if (attrs.viewbox) {\n return calculateByViewbox(attrs, attrs.viewbox);\n }\n }\n throw new TypeError(\"Invalid SVG\");\n }\n};\nexport {\n SVG\n};\n","import { readUInt16LE } from \"./utils.js\";\nconst TGA = {\n validate(input) {\n return readUInt16LE(input, 0) === 0 && readUInt16LE(input, 4) === 0;\n },\n calculate(input) {\n return {\n height: readUInt16LE(input, 14),\n width: readUInt16LE(input, 12)\n };\n }\n};\nexport {\n TGA\n};\n","import { readUInt, toHexString, toUTF8String } from \"./utils.js\";\nfunction readIFD(input, isBigEndian) {\n const ifdOffset = readUInt(input, 32, 4, isBigEndian);\n return input.slice(ifdOffset + 2);\n}\nfunction readValue(input, isBigEndian) {\n const low = readUInt(input, 16, 8, isBigEndian);\n const high = readUInt(input, 16, 10, isBigEndian);\n return (high << 16) + low;\n}\nfunction nextTag(input) {\n if (input.length > 24) {\n return input.slice(12);\n }\n}\nfunction extractTags(input, isBigEndian) {\n const tags = {};\n let temp = input;\n while (temp && temp.length) {\n const code = readUInt(temp, 16, 0, isBigEndian);\n const type = readUInt(temp, 16, 2, isBigEndian);\n const length = readUInt(temp, 32, 4, isBigEndian);\n if (code === 0) {\n break;\n } else {\n if (length === 1 && (type === 3 || type === 4)) {\n tags[code] = readValue(temp, isBigEndian);\n }\n temp = nextTag(temp);\n }\n }\n return tags;\n}\nfunction determineEndianness(input) {\n const signature = toUTF8String(input, 0, 2);\n if (\"II\" === signature) {\n return \"LE\";\n } else if (\"MM\" === signature) {\n return \"BE\";\n }\n}\nconst signatures = [\n // '492049', // currently not supported\n \"49492a00\",\n // Little endian\n \"4d4d002a\"\n // Big Endian\n // '4d4d002a', // BigTIFF > 4GB. currently not supported\n];\nconst TIFF = {\n validate: (input) => signatures.includes(toHexString(input, 0, 4)),\n calculate(input) {\n const isBigEndian = determineEndianness(input) === \"BE\";\n const ifdBuffer = readIFD(input, isBigEndian);\n const tags = extractTags(ifdBuffer, isBigEndian);\n const width = tags[256];\n const height = tags[257];\n if (!width || !height) {\n throw new TypeError(\"Invalid Tiff. Missing tags\");\n }\n return { height, width };\n }\n};\nexport {\n TIFF\n};\n","import { toHexString, toUTF8String, readInt16LE, readUInt24LE } from \"./utils.js\";\nfunction calculateExtended(input) {\n return {\n height: 1 + readUInt24LE(input, 7),\n width: 1 + readUInt24LE(input, 4)\n };\n}\nfunction calculateLossless(input) {\n return {\n height: 1 + ((input[4] & 15) << 10 | input[3] << 2 | (input[2] & 192) >> 6),\n width: 1 + ((input[2] & 63) << 8 | input[1])\n };\n}\nfunction calculateLossy(input) {\n return {\n height: readInt16LE(input, 8) & 16383,\n width: readInt16LE(input, 6) & 16383\n };\n}\nconst WEBP = {\n validate(input) {\n const riffHeader = \"RIFF\" === toUTF8String(input, 0, 4);\n const webpHeader = \"WEBP\" === toUTF8String(input, 8, 12);\n const vp8Header = \"VP8\" === toUTF8String(input, 12, 15);\n return riffHeader && webpHeader && vp8Header;\n },\n calculate(input) {\n const chunkHeader = toUTF8String(input, 12, 16);\n input = input.slice(20, 30);\n if (chunkHeader === \"VP8X\") {\n const extendedHeader = input[0];\n const validStart = (extendedHeader & 192) === 0;\n const validEnd = (extendedHeader & 1) === 0;\n if (validStart && validEnd) {\n return calculateExtended(input);\n } else {\n throw new TypeError(\"Invalid WebP\");\n }\n }\n if (chunkHeader === \"VP8 \" && input[0] !== 47) {\n return calculateLossy(input);\n }\n const signature = toHexString(input, 3, 6);\n if (chunkHeader === \"VP8L\" && signature !== \"9d012a\") {\n return calculateLossless(input);\n }\n throw new TypeError(\"Invalid WebP\");\n }\n};\nexport {\n WEBP\n};\n","import { BMP } from \"./bmp.js\";\nimport { CUR } from \"./cur.js\";\nimport { DDS } from \"./dds.js\";\nimport { GIF } from \"./gif.js\";\nimport { HEIF } from \"./heif.js\";\nimport { ICNS } from \"./icns.js\";\nimport { ICO } from \"./ico.js\";\nimport { J2C } from \"./j2c.js\";\nimport { JP2 } from \"./jp2.js\";\nimport { JPG } from \"./jpg.js\";\nimport { KTX } from \"./ktx.js\";\nimport { PNG } from \"./png.js\";\nimport { PNM } from \"./pnm.js\";\nimport { PSD } from \"./psd.js\";\nimport { SVG } from \"./svg.js\";\nimport { TGA } from \"./tga.js\";\nimport { TIFF } from \"./tiff.js\";\nimport { WEBP } from \"./webp.js\";\nconst typeHandlers = /* @__PURE__ */ new Map([\n [\"bmp\", BMP],\n [\"cur\", CUR],\n [\"dds\", DDS],\n [\"gif\", GIF],\n [\"heif\", HEIF],\n [\"icns\", ICNS],\n [\"ico\", ICO],\n [\"j2c\", J2C],\n [\"jp2\", JP2],\n [\"jpg\", JPG],\n [\"ktx\", KTX],\n [\"png\", PNG],\n [\"pnm\", PNM],\n [\"psd\", PSD],\n [\"svg\", SVG],\n [\"tga\", TGA],\n [\"tiff\", TIFF],\n [\"webp\", WEBP]\n]);\nconst types = Array.from(typeHandlers.keys());\nexport {\n typeHandlers,\n types\n};\n","import { typeHandlers, types } from \"./types/index.js\";\nconst firstBytes = /* @__PURE__ */ new Map([\n [56, \"psd\"],\n [66, \"bmp\"],\n [68, \"dds\"],\n [71, \"gif\"],\n [73, \"tiff\"],\n [77, \"tiff\"],\n [82, \"webp\"],\n [105, \"icns\"],\n [137, \"png\"],\n [255, \"jpg\"]\n]);\nfunction detector(input) {\n const byte = input[0];\n const type = firstBytes.get(byte);\n if (type && typeHandlers.get(type).validate(input)) {\n return type;\n }\n return types.find((fileType) => typeHandlers.get(fileType).validate(input));\n}\nexport {\n detector\n};\n","import { typeHandlers } from \"./types/index.js\";\nimport { detector } from \"./detector.js\";\nconst globalOptions = {\n disabledTypes: []\n};\nfunction lookup(input) {\n const type = detector(input);\n if (typeof type !== \"undefined\") {\n if (globalOptions.disabledTypes.includes(type)) {\n throw new TypeError(\"disabled file type: \" + type);\n }\n const size = typeHandlers.get(type).calculate(input);\n if (size !== void 0) {\n size.type = size.type ?? type;\n return size;\n }\n }\n throw new TypeError(\"unsupported file type: \" + type);\n}\nconst disableTypes = (types) => {\n globalOptions.disabledTypes = types;\n};\nexport {\n disableTypes,\n lookup\n};\n","import { AstroError, AstroErrorData } from \"../../core/errors/index.js\";\nimport { lookup as probe } from \"../utils/vendor/image-size/lookup.js\";\nasync function imageMetadata(data, src) {\n try {\n const result = probe(data);\n if (!result.height || !result.width || !result.type) {\n throw new AstroError({\n ...AstroErrorData.NoImageMetadata,\n message: AstroErrorData.NoImageMetadata.message(src)\n });\n }\n const { width, height, type, orientation } = result;\n const isPortrait = (orientation || 0) >= 5;\n return {\n width: isPortrait ? height : width,\n height: isPortrait ? width : height,\n format: type,\n orientation\n };\n } catch {\n throw new AstroError({\n ...AstroErrorData.NoImageMetadata,\n message: AstroErrorData.NoImageMetadata.message(src)\n });\n }\n}\nexport {\n imageMetadata\n};\n","import { AstroError, AstroErrorData } from \"../../core/errors/index.js\";\nimport { imageMetadata } from \"./metadata.js\";\nasync function inferRemoteSize(url) {\n const response = await fetch(url);\n if (!response.body || !response.ok) {\n throw new AstroError({\n ...AstroErrorData.FailedToFetchRemoteImageDimensions,\n message: AstroErrorData.FailedToFetchRemoteImageDimensions.message(url)\n });\n }\n const reader = response.body.getReader();\n let done, value;\n let accumulatedChunks = new Uint8Array();\n while (!done) {\n const readResult = await reader.read();\n done = readResult.done;\n if (done) break;\n if (readResult.value) {\n value = readResult.value;\n let tmp = new Uint8Array(accumulatedChunks.length + value.length);\n tmp.set(accumulatedChunks, 0);\n tmp.set(value, accumulatedChunks.length);\n accumulatedChunks = tmp;\n try {\n const dimensions = await imageMetadata(accumulatedChunks, url);\n if (dimensions) {\n await reader.cancel();\n return dimensions;\n }\n } catch {\n }\n }\n }\n throw new AstroError({\n ...AstroErrorData.NoImageMetadata,\n message: AstroErrorData.NoImageMetadata.message(url)\n });\n}\nexport {\n inferRemoteSize\n};\n","import { isRemotePath } from \"@astrojs/internal-helpers/path\";\nimport { AstroError, AstroErrorData } from \"../core/errors/index.js\";\nimport { DEFAULT_HASH_PROPS } from \"./consts.js\";\nimport { isLocalService } from \"./services/service.js\";\nimport {\n isImageMetadata\n} from \"./types.js\";\nimport { isESMImportedImage, isRemoteImage, resolveSrc } from \"./utils/imageKind.js\";\nimport { inferRemoteSize } from \"./utils/remoteProbe.js\";\nasync function getConfiguredImageService() {\n if (!globalThis?.astroAsset?.imageService) {\n const { default: service } = await import(\n // @ts-expect-error\n \"virtual:image-service\"\n ).catch((e) => {\n const error = new AstroError(AstroErrorData.InvalidImageService);\n error.cause = e;\n throw error;\n });\n if (!globalThis.astroAsset) globalThis.astroAsset = {};\n globalThis.astroAsset.imageService = service;\n return service;\n }\n return globalThis.astroAsset.imageService;\n}\nasync function getImage(options, imageConfig) {\n if (!options || typeof options !== \"object\") {\n throw new AstroError({\n ...AstroErrorData.ExpectedImageOptions,\n message: AstroErrorData.ExpectedImageOptions.message(JSON.stringify(options))\n });\n }\n if (typeof options.src === \"undefined\") {\n throw new AstroError({\n ...AstroErrorData.ExpectedImage,\n message: AstroErrorData.ExpectedImage.message(\n options.src,\n \"undefined\",\n JSON.stringify(options)\n )\n });\n }\n if (isImageMetadata(options)) {\n throw new AstroError(AstroErrorData.ExpectedNotESMImage);\n }\n const service = await getConfiguredImageService();\n const resolvedOptions = {\n ...options,\n src: await resolveSrc(options.src)\n };\n if (options.inferSize && isRemoteImage(resolvedOptions.src) && isRemotePath(resolvedOptions.src)) {\n const result = await inferRemoteSize(resolvedOptions.src);\n resolvedOptions.width ??= result.width;\n resolvedOptions.height ??= result.height;\n delete resolvedOptions.inferSize;\n }\n const originalFilePath = isESMImportedImage(resolvedOptions.src) ? resolvedOptions.src.fsPath : void 0;\n const clonedSrc = isESMImportedImage(resolvedOptions.src) ? (\n // @ts-expect-error - clone is a private, hidden prop\n resolvedOptions.src.clone ?? resolvedOptions.src\n ) : resolvedOptions.src;\n resolvedOptions.src = clonedSrc;\n const validatedOptions = service.validateOptions ? await service.validateOptions(resolvedOptions, imageConfig) : resolvedOptions;\n const srcSetTransforms = service.getSrcSet ? await service.getSrcSet(validatedOptions, imageConfig) : [];\n let imageURL = await service.getURL(validatedOptions, imageConfig);\n let srcSets = await Promise.all(\n srcSetTransforms.map(async (srcSet) => ({\n transform: srcSet.transform,\n url: await service.getURL(srcSet.transform, imageConfig),\n descriptor: srcSet.descriptor,\n attributes: srcSet.attributes\n }))\n );\n if (isLocalService(service) && globalThis.astroAsset.addStaticImage && !(isRemoteImage(validatedOptions.src) && imageURL === validatedOptions.src)) {\n const propsToHash = service.propertiesToHash ?? DEFAULT_HASH_PROPS;\n imageURL = globalThis.astroAsset.addStaticImage(\n validatedOptions,\n propsToHash,\n originalFilePath\n );\n srcSets = srcSetTransforms.map((srcSet) => ({\n transform: srcSet.transform,\n url: globalThis.astroAsset.addStaticImage(srcSet.transform, propsToHash, originalFilePath),\n descriptor: srcSet.descriptor,\n attributes: srcSet.attributes\n }));\n }\n return {\n rawOptions: resolvedOptions,\n options: validatedOptions,\n src: imageURL,\n srcSet: {\n values: srcSets,\n attribute: srcSets.map((srcSet) => `${srcSet.url} ${srcSet.descriptor}`).join(\", \")\n },\n attributes: service.getHTMLAttributes !== void 0 ? await service.getHTMLAttributes(validatedOptions, imageConfig) : {}\n };\n}\nexport {\n getConfiguredImageService,\n getImage\n};\n","import { AstroError, AstroErrorData } from \"../../core/errors/index.js\";\nfunction validateArgs(args) {\n if (args.length !== 3) return false;\n if (!args[0] || typeof args[0] !== \"object\") return false;\n return true;\n}\nfunction baseCreateComponent(cb, moduleId, propagation) {\n const name = moduleId?.split(\"/\").pop()?.replace(\".astro\", \"\") ?? \"\";\n const fn = (...args) => {\n if (!validateArgs(args)) {\n throw new AstroError({\n ...AstroErrorData.InvalidComponentArgs,\n message: AstroErrorData.InvalidComponentArgs.message(name)\n });\n }\n return cb(...args);\n };\n Object.defineProperty(fn, \"name\", { value: name, writable: false });\n fn.isAstroComponentFactory = true;\n fn.moduleId = moduleId;\n fn.propagation = propagation;\n return fn;\n}\nfunction createComponentWithOptions(opts) {\n const cb = baseCreateComponent(opts.factory, opts.moduleId, opts.propagation);\n return cb;\n}\nfunction createComponent(arg1, moduleId, propagation) {\n if (typeof arg1 === \"function\") {\n return baseCreateComponent(arg1, moduleId, propagation);\n } else {\n return createComponentWithOptions(arg1);\n }\n}\nexport {\n createComponent\n};\n","const ASTRO_VERSION = \"4.16.7\";\nconst REROUTE_DIRECTIVE_HEADER = \"X-Astro-Reroute\";\nconst REWRITE_DIRECTIVE_HEADER_KEY = \"X-Astro-Rewrite\";\nconst REWRITE_DIRECTIVE_HEADER_VALUE = \"yes\";\nconst ROUTE_TYPE_HEADER = \"X-Astro-Route-Type\";\nconst DEFAULT_404_COMPONENT = \"astro-default-404.astro\";\nconst DEFAULT_500_COMPONENT = \"astro-default-500.astro\";\nconst REDIRECT_STATUS_CODES = [301, 302, 303, 307, 308, 300, 304];\nconst REROUTABLE_STATUS_CODES = [404, 500];\nconst clientAddressSymbol = Symbol.for(\"astro.clientAddress\");\nconst clientLocalsSymbol = Symbol.for(\"astro.locals\");\nconst originPathnameSymbol = Symbol.for(\"astro.originPathname\");\nconst responseSentSymbol = Symbol.for(\"astro.responseSent\");\nconst SUPPORTED_MARKDOWN_FILE_EXTENSIONS = [\n \".markdown\",\n \".mdown\",\n \".mkdn\",\n \".mkd\",\n \".mdwn\",\n \".md\"\n];\nconst MIDDLEWARE_PATH_SEGMENT_NAME = \"middleware\";\nexport {\n ASTRO_VERSION,\n DEFAULT_404_COMPONENT,\n DEFAULT_500_COMPONENT,\n MIDDLEWARE_PATH_SEGMENT_NAME,\n REDIRECT_STATUS_CODES,\n REROUTABLE_STATUS_CODES,\n REROUTE_DIRECTIVE_HEADER,\n REWRITE_DIRECTIVE_HEADER_KEY,\n REWRITE_DIRECTIVE_HEADER_VALUE,\n ROUTE_TYPE_HEADER,\n SUPPORTED_MARKDOWN_FILE_EXTENSIONS,\n clientAddressSymbol,\n clientLocalsSymbol,\n originPathnameSymbol,\n responseSentSymbol\n};\n","import { ASTRO_VERSION } from \"../../core/constants.js\";\nimport { AstroError, AstroErrorData } from \"../../core/errors/index.js\";\nfunction createAstroGlobFn() {\n const globHandler = (importMetaGlobResult) => {\n if (typeof importMetaGlobResult === \"string\") {\n throw new AstroError({\n ...AstroErrorData.AstroGlobUsedOutside,\n message: AstroErrorData.AstroGlobUsedOutside.message(JSON.stringify(importMetaGlobResult))\n });\n }\n let allEntries = [...Object.values(importMetaGlobResult)];\n if (allEntries.length === 0) {\n throw new AstroError({\n ...AstroErrorData.AstroGlobNoMatch,\n message: AstroErrorData.AstroGlobNoMatch.message(JSON.stringify(importMetaGlobResult))\n });\n }\n return Promise.all(allEntries.map((fn) => fn()));\n };\n return globHandler;\n}\nfunction createAstro(site) {\n return {\n // TODO: this is no longer necessary for `Astro.site`\n // but it somehow allows working around caching issues in content collections for some tests\n site: site ? new URL(site) : void 0,\n generator: `Astro v${ASTRO_VERSION}`,\n glob: createAstroGlobFn()\n };\n}\nexport {\n createAstro\n};\n","let FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM, isTTY=true;\nif (typeof process !== 'undefined') {\n\t({ FORCE_COLOR, NODE_DISABLE_COLORS, NO_COLOR, TERM } = process.env || {});\n\tisTTY = process.stdout && process.stdout.isTTY;\n}\n\nexport const $ = {\n\tenabled: !NODE_DISABLE_COLORS && NO_COLOR == null && TERM !== 'dumb' && (\n\t\tFORCE_COLOR != null && FORCE_COLOR !== '0' || isTTY\n\t)\n}\n\nfunction init(x, y) {\n\tlet rgx = new RegExp(`\\\\x1b\\\\[${y}m`, 'g');\n\tlet open = `\\x1b[${x}m`, close = `\\x1b[${y}m`;\n\n\treturn function (txt) {\n\t\tif (!$.enabled || txt == null) return txt;\n\t\treturn open + (!!~(''+txt).indexOf(close) ? txt.replace(rgx, close + open) : txt) + close;\n\t};\n}\n\n// modifiers\nexport const reset = init(0, 0);\nexport const bold = init(1, 22);\nexport const dim = init(2, 22);\nexport const italic = init(3, 23);\nexport const underline = init(4, 24);\nexport const inverse = init(7, 27);\nexport const hidden = init(8, 28);\nexport const strikethrough = init(9, 29);\n\n// colors\nexport const black = init(30, 39);\nexport const red = init(31, 39);\nexport const green = init(32, 39);\nexport const yellow = init(33, 39);\nexport const blue = init(34, 39);\nexport const magenta = init(35, 39);\nexport const cyan = init(36, 39);\nexport const white = init(37, 39);\nexport const gray = init(90, 39);\nexport const grey = init(90, 39);\n\n// background colors\nexport const bgBlack = init(40, 49);\nexport const bgRed = init(41, 49);\nexport const bgGreen = init(42, 49);\nexport const bgYellow = init(43, 49);\nexport const bgBlue = init(44, 49);\nexport const bgMagenta = init(45, 49);\nexport const bgCyan = init(46, 49);\nexport const bgWhite = init(47, 49);\n","/**\n * Copyright (C) 2017-present by Andrea Giammarchi - @WebReflection\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\nconst {replace} = '';\n\n// escape\nconst es = /&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34);/g;\nconst ca = /[&<>'\"]/g;\n\nconst esca = {\n '&': '&',\n '<': '<',\n '>': '>',\n \"'\": ''',\n '\"': '"'\n};\nconst pe = m => esca[m];\n\n/**\n * Safely escape HTML entities such as `&`, `<`, `>`, `\"`, and `'`.\n * @param {string} es the input to safely escape\n * @returns {string} the escaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const escape = es => replace.call(es, ca, pe);\n\n\n// unescape\nconst unes = {\n '&': '&',\n '&': '&',\n '<': '<',\n '<': '<',\n '>': '>',\n '>': '>',\n ''': \"'\",\n ''': \"'\",\n '"': '\"',\n '"': '\"'\n};\nconst cape = m => unes[m];\n\n/**\n * Safely unescape previously escaped entities such as `&`, `<`, `>`, `\"`,\n * and `'`.\n * @param {string} un a previously escaped string\n * @returns {string} the unescaped input, and it **throws** an error if\n * the input type is unexpected, except for boolean and numbers,\n * converted as string.\n */\nexport const unescape = un => replace.call(un, es, cape);\n","function isPromise(value) {\n return !!value && typeof value === \"object\" && \"then\" in value && typeof value.then === \"function\";\n}\nasync function* streamAsyncIterator(stream) {\n const reader = stream.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) return;\n yield value;\n }\n } finally {\n reader.releaseLock();\n }\n}\nexport {\n isPromise,\n streamAsyncIterator\n};\n","import { escape } from \"html-escaper\";\nimport { streamAsyncIterator } from \"./util.js\";\nconst escapeHTML = escape;\nclass HTMLBytes extends Uint8Array {\n}\nObject.defineProperty(HTMLBytes.prototype, Symbol.toStringTag, {\n get() {\n return \"HTMLBytes\";\n }\n});\nclass HTMLString extends String {\n get [Symbol.toStringTag]() {\n return \"HTMLString\";\n }\n}\nconst markHTMLString = (value) => {\n if (value instanceof HTMLString) {\n return value;\n }\n if (typeof value === \"string\") {\n return new HTMLString(value);\n }\n return value;\n};\nfunction isHTMLString(value) {\n return Object.prototype.toString.call(value) === \"[object HTMLString]\";\n}\nfunction markHTMLBytes(bytes) {\n return new HTMLBytes(bytes);\n}\nfunction isHTMLBytes(value) {\n return Object.prototype.toString.call(value) === \"[object HTMLBytes]\";\n}\nfunction hasGetReader(obj) {\n return typeof obj.getReader === \"function\";\n}\nasync function* unescapeChunksAsync(iterable) {\n if (hasGetReader(iterable)) {\n for await (const chunk of streamAsyncIterator(iterable)) {\n yield unescapeHTML(chunk);\n }\n } else {\n for await (const chunk of iterable) {\n yield unescapeHTML(chunk);\n }\n }\n}\nfunction* unescapeChunks(iterable) {\n for (const chunk of iterable) {\n yield unescapeHTML(chunk);\n }\n}\nfunction unescapeHTML(str) {\n if (!!str && typeof str === \"object\") {\n if (str instanceof Uint8Array) {\n return markHTMLBytes(str);\n } else if (str instanceof Response && str.body) {\n const body = str.body;\n return unescapeChunksAsync(body);\n } else if (typeof str.then === \"function\") {\n return Promise.resolve(str).then((value) => {\n return unescapeHTML(value);\n });\n } else if (str[Symbol.for(\"astro:slot-string\")]) {\n return str;\n } else if (Symbol.iterator in str) {\n return unescapeChunks(str);\n } else if (Symbol.asyncIterator in str || hasGetReader(str)) {\n return unescapeChunksAsync(str);\n }\n }\n return markHTMLString(str);\n}\nexport {\n HTMLBytes,\n HTMLString,\n escapeHTML,\n isHTMLBytes,\n isHTMLString,\n markHTMLString,\n unescapeHTML\n};\n","const RenderInstructionSymbol = Symbol.for(\"astro:render\");\nfunction createRenderInstruction(instruction) {\n return Object.defineProperty(instruction, RenderInstructionSymbol, {\n value: true\n });\n}\nfunction isRenderInstruction(chunk) {\n return chunk && typeof chunk === \"object\" && chunk[RenderInstructionSymbol];\n}\nexport {\n createRenderInstruction,\n isRenderInstruction\n};\n","import { clsx } from \"clsx\";\nimport { HTMLString, markHTMLString } from \"../escape.js\";\nconst voidElementNames = /^(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/i;\nconst htmlBooleanAttributes = /^(?:allowfullscreen|async|autofocus|autoplay|controls|default|defer|disabled|disablepictureinpicture|disableremoteplayback|formnovalidate|hidden|loop|nomodule|novalidate|open|playsinline|readonly|required|reversed|scoped|seamless|selected|itemscope)$/i;\nconst htmlEnumAttributes = /^(?:contenteditable|draggable|spellcheck|value)$/i;\nconst svgEnumAttributes = /^(?:autoReverse|externalResourcesRequired|focusable|preserveAlpha)$/i;\nconst AMPERSAND_REGEX = /&/g;\nconst DOUBLE_QUOTE_REGEX = /\"/g;\nconst STATIC_DIRECTIVES = /* @__PURE__ */ new Set([\"set:html\", \"set:text\"]);\nconst toIdent = (k) => k.trim().replace(/(?!^)\\b\\w|\\s+|\\W+/g, (match, index) => {\n if (/\\W/.test(match)) return \"\";\n return index === 0 ? match : match.toUpperCase();\n});\nconst toAttributeString = (value, shouldEscape = true) => shouldEscape ? String(value).replace(AMPERSAND_REGEX, \"&\").replace(DOUBLE_QUOTE_REGEX, \""\") : value;\nconst kebab = (k) => k.toLowerCase() === k ? k : k.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\nconst toStyleString = (obj) => Object.entries(obj).filter(([_, v]) => typeof v === \"string\" && v.trim() || typeof v === \"number\").map(([k, v]) => {\n if (k[0] !== \"-\" && k[1] !== \"-\") return `${kebab(k)}:${v}`;\n return `${k}:${v}`;\n}).join(\";\");\nfunction defineScriptVars(vars) {\n let output = \"\";\n for (const [key, value] of Object.entries(vars)) {\n output += `const ${toIdent(key)} = ${JSON.stringify(value)?.replace(\n /<\\/script>/g,\n \"\\\\x3C/script>\"\n )};\n`;\n }\n return markHTMLString(output);\n}\nfunction formatList(values) {\n if (values.length === 1) {\n return values[0];\n }\n return `${values.slice(0, -1).join(\", \")} or ${values[values.length - 1]}`;\n}\nfunction addAttribute(value, key, shouldEscape = true) {\n if (value == null) {\n return \"\";\n }\n if (value === false) {\n if (htmlEnumAttributes.test(key) || svgEnumAttributes.test(key)) {\n return markHTMLString(` ${key}=\"false\"`);\n }\n return \"\";\n }\n if (STATIC_DIRECTIVES.has(key)) {\n console.warn(`[astro] The \"${key}\" directive cannot be applied dynamically at runtime. It will not be rendered as an attribute.\n\nMake sure to use the static attribute syntax (\\`${key}={value}\\`) instead of the dynamic spread syntax (\\`{...{ \"${key}\": value }}\\`).`);\n return \"\";\n }\n if (key === \"class:list\") {\n const listValue = toAttributeString(clsx(value), shouldEscape);\n if (listValue === \"\") {\n return \"\";\n }\n return markHTMLString(` ${key.slice(0, -5)}=\"${listValue}\"`);\n }\n if (key === \"style\" && !(value instanceof HTMLString)) {\n if (Array.isArray(value) && value.length === 2) {\n return markHTMLString(\n ` ${key}=\"${toAttributeString(`${toStyleString(value[0])};${value[1]}`, shouldEscape)}\"`\n );\n }\n if (typeof value === \"object\") {\n return markHTMLString(` ${key}=\"${toAttributeString(toStyleString(value), shouldEscape)}\"`);\n }\n }\n if (key === \"className\") {\n return markHTMLString(` class=\"${toAttributeString(value, shouldEscape)}\"`);\n }\n if (typeof value === \"string\" && value.includes(\"&\") && isHttpUrl(value)) {\n return markHTMLString(` ${key}=\"${toAttributeString(value, false)}\"`);\n }\n if (value === true && (key.startsWith(\"data-\") || htmlBooleanAttributes.test(key))) {\n return markHTMLString(` ${key}`);\n } else {\n return markHTMLString(` ${key}=\"${toAttributeString(value, shouldEscape)}\"`);\n }\n}\nfunction internalSpreadAttributes(values, shouldEscape = true) {\n let output = \"\";\n for (const [key, value] of Object.entries(values)) {\n output += addAttribute(value, key, shouldEscape);\n }\n return markHTMLString(output);\n}\nfunction renderElement(name, { props: _props, children = \"\" }, shouldEscape = true) {\n const { lang: _, \"data-astro-id\": astroId, \"define:vars\": defineVars, ...props } = _props;\n if (defineVars) {\n if (name === \"style\") {\n delete props[\"is:global\"];\n delete props[\"is:scoped\"];\n }\n if (name === \"script\") {\n delete props.hoist;\n children = defineScriptVars(defineVars) + \"\\n\" + children;\n }\n }\n if ((children == null || children == \"\") && voidElementNames.test(name)) {\n return `<${name}${internalSpreadAttributes(props, shouldEscape)}>`;\n }\n return `<${name}${internalSpreadAttributes(props, shouldEscape)}>${children}`;\n}\nconst noop = () => {\n};\nclass BufferedRenderer {\n chunks = [];\n renderPromise;\n destination;\n constructor(bufferRenderFunction) {\n this.renderPromise = bufferRenderFunction(this);\n Promise.resolve(this.renderPromise).catch(noop);\n }\n write(chunk) {\n if (this.destination) {\n this.destination.write(chunk);\n } else {\n this.chunks.push(chunk);\n }\n }\n async renderToFinalDestination(destination) {\n for (const chunk of this.chunks) {\n destination.write(chunk);\n }\n this.destination = destination;\n await this.renderPromise;\n }\n}\nfunction renderToBufferDestination(bufferRenderFunction) {\n const renderer = new BufferedRenderer(bufferRenderFunction);\n return renderer;\n}\nconst isNode = typeof process !== \"undefined\" && Object.prototype.toString.call(process) === \"[object process]\";\nconst isDeno = typeof Deno !== \"undefined\";\nfunction promiseWithResolvers() {\n let resolve, reject;\n const promise = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n return {\n promise,\n resolve,\n reject\n };\n}\nconst VALID_PROTOCOLS = [\"http:\", \"https:\"];\nfunction isHttpUrl(url) {\n try {\n const parsedUrl = new URL(url);\n return VALID_PROTOCOLS.includes(parsedUrl.protocol);\n } catch {\n return false;\n }\n}\nexport {\n addAttribute,\n defineScriptVars,\n formatList,\n internalSpreadAttributes,\n isDeno,\n isNode,\n promiseWithResolvers,\n renderElement,\n renderToBufferDestination,\n toAttributeString,\n voidElementNames\n};\n","import { markHTMLString } from \"../escape.js\";\nimport { createRenderInstruction } from \"./instruction.js\";\nimport { renderElement } from \"./util.js\";\nconst uniqueElements = (item, index, all) => {\n const props = JSON.stringify(item.props);\n const children = item.children;\n return index === all.findIndex((i) => JSON.stringify(i.props) === props && i.children == children);\n};\nfunction renderAllHeadContent(result) {\n result._metadata.hasRenderedHead = true;\n const styles = Array.from(result.styles).filter(uniqueElements).map(\n (style) => style.props.rel === \"stylesheet\" ? renderElement(\"link\", style) : renderElement(\"style\", style)\n );\n result.styles.clear();\n const scripts = Array.from(result.scripts).filter(uniqueElements).map((script) => {\n return renderElement(\"script\", script, false);\n });\n const links = Array.from(result.links).filter(uniqueElements).map((link) => renderElement(\"link\", link, false));\n let content = styles.join(\"\\n\") + links.join(\"\\n\") + scripts.join(\"\\n\");\n if (result._metadata.extraHead.length > 0) {\n for (const part of result._metadata.extraHead) {\n content += part;\n }\n }\n return markHTMLString(content);\n}\nfunction renderHead() {\n return createRenderInstruction({ type: \"head\" });\n}\nfunction maybeRenderHead() {\n return createRenderInstruction({ type: \"maybe-head\" });\n}\nexport {\n maybeRenderHead,\n renderAllHeadContent,\n renderHead\n};\n","import { markHTMLString } from \"../../escape.js\";\nimport { isPromise } from \"../../util.js\";\nimport { renderChild } from \"../any.js\";\nimport { renderToBufferDestination } from \"../util.js\";\nconst renderTemplateResultSym = Symbol.for(\"astro.renderTemplateResult\");\nclass RenderTemplateResult {\n [renderTemplateResultSym] = true;\n htmlParts;\n expressions;\n error;\n constructor(htmlParts, expressions) {\n this.htmlParts = htmlParts;\n this.error = void 0;\n this.expressions = expressions.map((expression) => {\n if (isPromise(expression)) {\n return Promise.resolve(expression).catch((err) => {\n if (!this.error) {\n this.error = err;\n throw err;\n }\n });\n }\n return expression;\n });\n }\n async render(destination) {\n const expRenders = this.expressions.map((exp) => {\n return renderToBufferDestination((bufferDestination) => {\n if (exp || exp === 0) {\n return renderChild(bufferDestination, exp);\n }\n });\n });\n for (let i = 0; i < this.htmlParts.length; i++) {\n const html = this.htmlParts[i];\n const expRender = expRenders[i];\n destination.write(markHTMLString(html));\n if (expRender) {\n await expRender.renderToFinalDestination(destination);\n }\n }\n }\n}\nfunction isRenderTemplateResult(obj) {\n return typeof obj === \"object\" && obj !== null && !!obj[renderTemplateResultSym];\n}\nfunction renderTemplate(htmlParts, ...expressions) {\n return new RenderTemplateResult(htmlParts, expressions);\n}\nexport {\n RenderTemplateResult,\n isRenderTemplateResult,\n renderTemplate\n};\n","import { renderTemplate } from \"./astro/render-template.js\";\nimport { HTMLString, markHTMLString, unescapeHTML } from \"../escape.js\";\nimport { renderChild } from \"./any.js\";\nimport { chunkToString } from \"./common.js\";\nconst slotString = Symbol.for(\"astro:slot-string\");\nclass SlotString extends HTMLString {\n instructions;\n [slotString];\n constructor(content, instructions) {\n super(content);\n this.instructions = instructions;\n this[slotString] = true;\n }\n}\nfunction isSlotString(str) {\n return !!str[slotString];\n}\nfunction renderSlot(result, slotted, fallback) {\n if (!slotted && fallback) {\n return renderSlot(result, fallback);\n }\n return {\n async render(destination) {\n await renderChild(destination, typeof slotted === \"function\" ? slotted(result) : slotted);\n }\n };\n}\nasync function renderSlotToString(result, slotted, fallback) {\n let content = \"\";\n let instructions = null;\n const temporaryDestination = {\n write(chunk) {\n if (chunk instanceof SlotString) {\n content += chunk;\n if (chunk.instructions) {\n instructions ??= [];\n instructions.push(...chunk.instructions);\n }\n } else if (chunk instanceof Response) return;\n else if (typeof chunk === \"object\" && \"type\" in chunk && typeof chunk.type === \"string\") {\n if (instructions === null) {\n instructions = [];\n }\n instructions.push(chunk);\n } else {\n content += chunkToString(result, chunk);\n }\n }\n };\n const renderInstance = renderSlot(result, slotted, fallback);\n await renderInstance.render(temporaryDestination);\n return markHTMLString(new SlotString(content, instructions));\n}\nasync function renderSlots(result, slots = {}) {\n let slotInstructions = null;\n let children = {};\n if (slots) {\n await Promise.all(\n Object.entries(slots).map(\n ([key, value]) => renderSlotToString(result, value).then((output) => {\n if (output.instructions) {\n if (slotInstructions === null) {\n slotInstructions = [];\n }\n slotInstructions.push(...output.instructions);\n }\n children[key] = output;\n })\n )\n );\n }\n return { slotInstructions, children };\n}\nfunction createSlotValueFromString(content) {\n return function() {\n return renderTemplate`${unescapeHTML(content)}`;\n };\n}\nexport {\n SlotString,\n createSlotValueFromString,\n isSlotString,\n renderSlot,\n renderSlotToString,\n renderSlots\n};\n","import { markHTMLString } from \"../escape.js\";\nimport {\n determineIfNeedsHydrationScript,\n determinesIfNeedsDirectiveScript,\n getPrescripts\n} from \"../scripts.js\";\nimport { renderAllHeadContent } from \"./head.js\";\nimport { isRenderInstruction } from \"./instruction.js\";\nimport { isSlotString } from \"./slot.js\";\nconst Fragment = Symbol.for(\"astro:fragment\");\nconst Renderer = Symbol.for(\"astro:renderer\");\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nfunction stringifyChunk(result, chunk) {\n if (isRenderInstruction(chunk)) {\n const instruction = chunk;\n switch (instruction.type) {\n case \"directive\": {\n const { hydration } = instruction;\n let needsHydrationScript = hydration && determineIfNeedsHydrationScript(result);\n let needsDirectiveScript = hydration && determinesIfNeedsDirectiveScript(result, hydration.directive);\n let prescriptType = needsHydrationScript ? \"both\" : needsDirectiveScript ? \"directive\" : null;\n if (prescriptType) {\n let prescripts = getPrescripts(result, prescriptType, hydration.directive);\n return markHTMLString(prescripts);\n } else {\n return \"\";\n }\n }\n case \"head\": {\n if (result._metadata.hasRenderedHead || result.partial) {\n return \"\";\n }\n return renderAllHeadContent(result);\n }\n case \"maybe-head\": {\n if (result._metadata.hasRenderedHead || result._metadata.headInTree || result.partial) {\n return \"\";\n }\n return renderAllHeadContent(result);\n }\n case \"renderer-hydration-script\": {\n const { rendererSpecificHydrationScripts } = result._metadata;\n const { rendererName } = instruction;\n if (!rendererSpecificHydrationScripts.has(rendererName)) {\n rendererSpecificHydrationScripts.add(rendererName);\n return instruction.render();\n }\n return \"\";\n }\n default: {\n throw new Error(`Unknown chunk type: ${chunk.type}`);\n }\n }\n } else if (chunk instanceof Response) {\n return \"\";\n } else if (isSlotString(chunk)) {\n let out = \"\";\n const c = chunk;\n if (c.instructions) {\n for (const instr of c.instructions) {\n out += stringifyChunk(result, instr);\n }\n }\n out += chunk.toString();\n return out;\n }\n return chunk.toString();\n}\nfunction chunkToString(result, chunk) {\n if (ArrayBuffer.isView(chunk)) {\n return decoder.decode(chunk);\n } else {\n return stringifyChunk(result, chunk);\n }\n}\nfunction chunkToByteArray(result, chunk) {\n if (ArrayBuffer.isView(chunk)) {\n return chunk;\n } else {\n const stringified = stringifyChunk(result, chunk);\n return encoder.encode(stringified.toString());\n }\n}\nfunction isRenderInstance(obj) {\n return !!obj && typeof obj === \"object\" && \"render\" in obj && typeof obj.render === \"function\";\n}\nexport {\n Fragment,\n Renderer,\n chunkToByteArray,\n chunkToString,\n decoder,\n encoder,\n isRenderInstance\n};\n","import { escapeHTML, isHTMLString, markHTMLString } from \"../escape.js\";\nimport { isPromise } from \"../util.js\";\nimport { isAstroComponentInstance, isRenderTemplateResult } from \"./astro/index.js\";\nimport { isRenderInstance } from \"./common.js\";\nimport { SlotString } from \"./slot.js\";\nimport { renderToBufferDestination } from \"./util.js\";\nasync function renderChild(destination, child) {\n if (isPromise(child)) {\n child = await child;\n }\n if (child instanceof SlotString) {\n destination.write(child);\n } else if (isHTMLString(child)) {\n destination.write(child);\n } else if (Array.isArray(child)) {\n const childRenders = child.map((c) => {\n return renderToBufferDestination((bufferDestination) => {\n return renderChild(bufferDestination, c);\n });\n });\n for (const childRender of childRenders) {\n if (!childRender) continue;\n await childRender.renderToFinalDestination(destination);\n }\n } else if (typeof child === \"function\") {\n await renderChild(destination, child());\n } else if (typeof child === \"string\") {\n destination.write(markHTMLString(escapeHTML(child)));\n } else if (!child && child !== 0) {\n } else if (isRenderInstance(child)) {\n await child.render(destination);\n } else if (isRenderTemplateResult(child)) {\n await child.render(destination);\n } else if (isAstroComponentInstance(child)) {\n await child.render(destination);\n } else if (ArrayBuffer.isView(child)) {\n destination.write(child);\n } else if (typeof child === \"object\" && (Symbol.asyncIterator in child || Symbol.iterator in child)) {\n for await (const value of child) {\n await renderChild(destination, value);\n }\n } else {\n destination.write(child);\n }\n}\nexport {\n renderChild\n};\n","import { isPromise } from \"../../util.js\";\nimport { renderChild } from \"../any.js\";\nimport { isAPropagatingComponent } from \"./factory.js\";\nimport { isHeadAndContent } from \"./head-and-content.js\";\nconst astroComponentInstanceSym = Symbol.for(\"astro.componentInstance\");\nclass AstroComponentInstance {\n [astroComponentInstanceSym] = true;\n result;\n props;\n slotValues;\n factory;\n returnValue;\n constructor(result, props, slots, factory) {\n this.result = result;\n this.props = props;\n this.factory = factory;\n this.slotValues = {};\n for (const name in slots) {\n let didRender = false;\n let value = slots[name](result);\n this.slotValues[name] = () => {\n if (!didRender) {\n didRender = true;\n return value;\n }\n return slots[name](result);\n };\n }\n }\n async init(result) {\n if (this.returnValue !== void 0) return this.returnValue;\n this.returnValue = this.factory(result, this.props, this.slotValues);\n if (isPromise(this.returnValue)) {\n this.returnValue.then((resolved) => {\n this.returnValue = resolved;\n }).catch(() => {\n });\n }\n return this.returnValue;\n }\n async render(destination) {\n const returnValue = await this.init(this.result);\n if (isHeadAndContent(returnValue)) {\n await returnValue.content.render(destination);\n } else {\n await renderChild(destination, returnValue);\n }\n }\n}\nfunction validateComponentProps(props, displayName) {\n if (props != null) {\n for (const prop of Object.keys(props)) {\n if (prop.startsWith(\"client:\")) {\n console.warn(\n `You are attempting to render <${displayName} ${prop} />, but ${displayName} is an Astro component. Astro components do not render in the client and should not have a hydration directive. Please use a framework component for client rendering.`\n );\n }\n }\n }\n}\nfunction createAstroComponentInstance(result, displayName, factory, props, slots = {}) {\n validateComponentProps(props, displayName);\n const instance = new AstroComponentInstance(result, props, slots, factory);\n if (isAPropagatingComponent(result, factory)) {\n result._metadata.propagators.add(instance);\n }\n return instance;\n}\nfunction isAstroComponentInstance(obj) {\n return typeof obj === \"object\" && obj !== null && !!obj[astroComponentInstanceSym];\n}\nexport {\n AstroComponentInstance,\n createAstroComponentInstance,\n isAstroComponentInstance\n};\n","export function encodeBase32UpperCase(bytes) {\n return encodeBase32_internal(bytes, base32UpperCaseAlphabet, EncodingPadding.Include);\n}\nexport function encodeBase32UpperCaseNoPadding(bytes) {\n return encodeBase32_internal(bytes, base32UpperCaseAlphabet, EncodingPadding.None);\n}\nexport function encodeBase32LowerCase(bytes) {\n return encodeBase32_internal(bytes, base32LowerCaseAlphabet, EncodingPadding.Include);\n}\nexport function encodeBase32LowerCaseNoPadding(bytes) {\n return encodeBase32_internal(bytes, base32LowerCaseAlphabet, EncodingPadding.None);\n}\n/** Replaced: Use encodeBase32UpperCase() instead. */\nexport function encodeBase32(bytes) {\n return encodeBase32UpperCase(bytes);\n}\n/** Replaced: Use encodeBase32UpperCaseNoPadding() instead. */\nexport function encodeBase32NoPadding(bytes) {\n return encodeBase32UpperCaseNoPadding(bytes);\n}\nfunction encodeBase32_internal(bytes, alphabet, padding) {\n let result = \"\";\n for (let i = 0; i < bytes.byteLength; i += 5) {\n let buffer = 0n;\n let bufferBitSize = 0;\n for (let j = 0; j < 5 && i + j < bytes.byteLength; j++) {\n buffer = (buffer << 8n) | BigInt(bytes[i + j]);\n bufferBitSize += 8;\n }\n if (bufferBitSize % 5 !== 0) {\n buffer = buffer << BigInt(5 - (bufferBitSize % 5));\n bufferBitSize += 5 - (bufferBitSize % 5);\n }\n for (let j = 0; j < 8; j++) {\n if (bufferBitSize >= 5) {\n result += alphabet[Number((buffer >> BigInt(bufferBitSize - 5)) & 0x1fn)];\n bufferBitSize -= 5;\n }\n else if (bufferBitSize > 0) {\n result += alphabet[Number((buffer << BigInt(6 - bufferBitSize)) & 0x3fn)];\n bufferBitSize = 0;\n }\n else if (padding === EncodingPadding.Include) {\n result += \"=\";\n }\n }\n }\n return result;\n}\nexport function decodeBase32(encoded) {\n return decodeBase32_internal(encoded, base32DecodeMap, DecodingPadding.Required);\n}\nexport function decodeBase32IgnorePadding(encoded) {\n return decodeBase32_internal(encoded, base32DecodeMap, DecodingPadding.Ignore);\n}\nfunction decodeBase32_internal(encoded, decodeMap, padding) {\n const result = new Uint8Array(Math.ceil(encoded.length / 8) * 5);\n let totalBytes = 0;\n for (let i = 0; i < encoded.length; i += 8) {\n let chunk = 0n;\n let bitsRead = 0;\n for (let j = 0; j < 8; j++) {\n if (padding === DecodingPadding.Required) {\n if (encoded[i + j] === \"=\") {\n continue;\n }\n if (i + j >= encoded.length) {\n throw new Error(\"Invalid padding\");\n }\n }\n if (padding === DecodingPadding.Ignore) {\n if (i + j >= encoded.length || encoded[i + j] === \"=\") {\n continue;\n }\n }\n if (j > 0 && encoded[i + j - 1] === \"=\") {\n throw new Error(\"Invalid padding\");\n }\n if (!(encoded[i + j] in decodeMap)) {\n throw new Error(\"Invalid character\");\n }\n chunk |= BigInt(decodeMap[encoded[i + j]]) << BigInt((7 - j) * 5);\n bitsRead += 5;\n }\n if (bitsRead < 40) {\n let unused;\n if (bitsRead === 10) {\n unused = chunk & 0xffffffffn;\n }\n else if (bitsRead === 20) {\n unused = chunk & 0xffffffn;\n }\n else if (bitsRead === 25) {\n unused = chunk & 0xffffn;\n }\n else if (bitsRead === 35) {\n unused = chunk & 0xffn;\n }\n else {\n throw new Error(\"Invalid padding\");\n }\n if (unused !== 0n) {\n throw new Error(\"Invalid padding\");\n }\n }\n const byteLength = Math.floor(bitsRead / 8);\n for (let i = 0; i < byteLength; i++) {\n result[totalBytes] = Number((chunk >> BigInt(32 - i * 8)) & 0xffn);\n totalBytes++;\n }\n }\n return result.slice(0, totalBytes);\n}\nconst base32UpperCaseAlphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\nconst base32LowerCaseAlphabet = \"abcdefghijklmnopqrstuvwxyz234567\";\nconst base32DecodeMap = {\n A: 0,\n B: 1,\n C: 2,\n D: 3,\n E: 4,\n F: 5,\n G: 6,\n H: 7,\n I: 8,\n J: 9,\n K: 10,\n L: 11,\n M: 12,\n N: 13,\n O: 14,\n P: 15,\n Q: 16,\n R: 17,\n S: 18,\n T: 19,\n U: 20,\n V: 21,\n W: 22,\n X: 23,\n Y: 24,\n Z: 25,\n a: 0,\n b: 1,\n c: 2,\n d: 3,\n e: 4,\n f: 5,\n g: 6,\n h: 7,\n i: 8,\n j: 9,\n k: 10,\n l: 11,\n m: 12,\n n: 13,\n o: 14,\n p: 15,\n q: 16,\n r: 17,\n s: 18,\n t: 19,\n u: 20,\n v: 21,\n w: 22,\n x: 23,\n y: 24,\n z: 25,\n \"2\": 26,\n \"3\": 27,\n \"4\": 28,\n \"5\": 29,\n \"6\": 30,\n \"7\": 31\n};\nvar EncodingPadding;\n(function (EncodingPadding) {\n EncodingPadding[EncodingPadding[\"Include\"] = 0] = \"Include\";\n EncodingPadding[EncodingPadding[\"None\"] = 1] = \"None\";\n})(EncodingPadding || (EncodingPadding = {}));\nvar DecodingPadding;\n(function (DecodingPadding) {\n DecodingPadding[DecodingPadding[\"Required\"] = 0] = \"Required\";\n DecodingPadding[DecodingPadding[\"Ignore\"] = 1] = \"Ignore\";\n})(DecodingPadding || (DecodingPadding = {}));\n","export function encodeBase64(bytes) {\n return encodeBase64_internal(bytes, base64Alphabet, EncodingPadding.Include);\n}\nexport function encodeBase64NoPadding(bytes) {\n return encodeBase64_internal(bytes, base64Alphabet, EncodingPadding.None);\n}\nexport function encodeBase64url(bytes) {\n return encodeBase64_internal(bytes, base64urlAlphabet, EncodingPadding.Include);\n}\nexport function encodeBase64urlNoPadding(bytes) {\n return encodeBase64_internal(bytes, base64urlAlphabet, EncodingPadding.None);\n}\nfunction encodeBase64_internal(bytes, alphabet, padding) {\n let result = \"\";\n for (let i = 0; i < bytes.byteLength; i += 3) {\n let buffer = 0;\n let bufferBitSize = 0;\n for (let j = 0; j < 3 && i + j < bytes.byteLength; j++) {\n buffer = (buffer << 8) | bytes[i + j];\n bufferBitSize += 8;\n }\n for (let j = 0; j < 4; j++) {\n if (bufferBitSize >= 6) {\n result += alphabet[(buffer >> (bufferBitSize - 6)) & 0x3f];\n bufferBitSize -= 6;\n }\n else if (bufferBitSize > 0) {\n result += alphabet[(buffer << (6 - bufferBitSize)) & 0x3f];\n bufferBitSize = 0;\n }\n else if (padding === EncodingPadding.Include) {\n result += \"=\";\n }\n }\n }\n return result;\n}\nconst base64Alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst base64urlAlphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\nexport function decodeBase64(encoded) {\n return decodeBase64_internal(encoded, base64DecodeMap, DecodingPadding.Required);\n}\nexport function decodeBase64IgnorePadding(encoded) {\n return decodeBase64_internal(encoded, base64DecodeMap, DecodingPadding.Ignore);\n}\nexport function decodeBase64url(encoded) {\n return decodeBase64_internal(encoded, base64urlDecodeMap, DecodingPadding.Required);\n}\nexport function decodeBase64urlIgnorePadding(encoded) {\n return decodeBase64_internal(encoded, base64urlDecodeMap, DecodingPadding.Ignore);\n}\nfunction decodeBase64_internal(encoded, decodeMap, padding) {\n const result = new Uint8Array(Math.ceil(encoded.length / 4) * 3);\n let totalBytes = 0;\n for (let i = 0; i < encoded.length; i += 4) {\n let chunk = 0;\n let bitsRead = 0;\n for (let j = 0; j < 4; j++) {\n if (padding === DecodingPadding.Required && encoded[i + j] === \"=\") {\n continue;\n }\n if (padding === DecodingPadding.Ignore &&\n (i + j >= encoded.length || encoded[i + j] === \"=\")) {\n continue;\n }\n if (j > 0 && encoded[i + j - 1] === \"=\") {\n throw new Error(\"Invalid padding\");\n }\n if (!(encoded[i + j] in decodeMap)) {\n throw new Error(\"Invalid character\");\n }\n chunk |= decodeMap[encoded[i + j]] << ((3 - j) * 6);\n bitsRead += 6;\n }\n if (bitsRead < 24) {\n let unused;\n if (bitsRead === 12) {\n unused = chunk & 0xffff;\n }\n else if (bitsRead === 18) {\n unused = chunk & 0xff;\n }\n else {\n throw new Error(\"Invalid padding\");\n }\n if (unused !== 0) {\n throw new Error(\"Invalid padding\");\n }\n }\n const byteLength = Math.floor(bitsRead / 8);\n for (let i = 0; i < byteLength; i++) {\n result[totalBytes] = (chunk >> (16 - i * 8)) & 0xff;\n totalBytes++;\n }\n }\n return result.slice(0, totalBytes);\n}\nvar EncodingPadding;\n(function (EncodingPadding) {\n EncodingPadding[EncodingPadding[\"Include\"] = 0] = \"Include\";\n EncodingPadding[EncodingPadding[\"None\"] = 1] = \"None\";\n})(EncodingPadding || (EncodingPadding = {}));\nvar DecodingPadding;\n(function (DecodingPadding) {\n DecodingPadding[DecodingPadding[\"Required\"] = 0] = \"Required\";\n DecodingPadding[DecodingPadding[\"Ignore\"] = 1] = \"Ignore\";\n})(DecodingPadding || (DecodingPadding = {}));\nconst base64DecodeMap = {\n \"0\": 52,\n \"1\": 53,\n \"2\": 54,\n \"3\": 55,\n \"4\": 56,\n \"5\": 57,\n \"6\": 58,\n \"7\": 59,\n \"8\": 60,\n \"9\": 61,\n A: 0,\n B: 1,\n C: 2,\n D: 3,\n E: 4,\n F: 5,\n G: 6,\n H: 7,\n I: 8,\n J: 9,\n K: 10,\n L: 11,\n M: 12,\n N: 13,\n O: 14,\n P: 15,\n Q: 16,\n R: 17,\n S: 18,\n T: 19,\n U: 20,\n V: 21,\n W: 22,\n X: 23,\n Y: 24,\n Z: 25,\n a: 26,\n b: 27,\n c: 28,\n d: 29,\n e: 30,\n f: 31,\n g: 32,\n h: 33,\n i: 34,\n j: 35,\n k: 36,\n l: 37,\n m: 38,\n n: 39,\n o: 40,\n p: 41,\n q: 42,\n r: 43,\n s: 44,\n t: 45,\n u: 46,\n v: 47,\n w: 48,\n x: 49,\n y: 50,\n z: 51,\n \"+\": 62,\n \"/\": 63\n};\nconst base64urlDecodeMap = {\n \"0\": 52,\n \"1\": 53,\n \"2\": 54,\n \"3\": 55,\n \"4\": 56,\n \"5\": 57,\n \"6\": 58,\n \"7\": 59,\n \"8\": 60,\n \"9\": 61,\n A: 0,\n B: 1,\n C: 2,\n D: 3,\n E: 4,\n F: 5,\n G: 6,\n H: 7,\n I: 8,\n J: 9,\n K: 10,\n L: 11,\n M: 12,\n N: 13,\n O: 14,\n P: 15,\n Q: 16,\n R: 17,\n S: 18,\n T: 19,\n U: 20,\n V: 21,\n W: 22,\n X: 23,\n Y: 24,\n Z: 25,\n a: 26,\n b: 27,\n c: 28,\n d: 29,\n e: 30,\n f: 31,\n g: 32,\n h: 33,\n i: 34,\n j: 35,\n k: 36,\n l: 37,\n m: 38,\n n: 39,\n o: 40,\n p: 41,\n q: 42,\n r: 43,\n s: 44,\n t: 45,\n u: 46,\n v: 47,\n w: 48,\n x: 49,\n y: 50,\n z: 51,\n \"-\": 62,\n _: 63\n};\n","import { decodeBase64, decodeHex, encodeBase64, encodeHexUpperCase } from \"@oslojs/encoding\";\nconst ALGORITHM = \"AES-GCM\";\nasync function createKey() {\n const key = await crypto.subtle.generateKey(\n {\n name: ALGORITHM,\n length: 256\n },\n true,\n [\"encrypt\", \"decrypt\"]\n );\n return key;\n}\nconst ENVIRONMENT_KEY_NAME = \"ASTRO_KEY\";\nfunction getEncodedEnvironmentKey() {\n return process.env[ENVIRONMENT_KEY_NAME] || \"\";\n}\nfunction hasEnvironmentKey() {\n return getEncodedEnvironmentKey() !== \"\";\n}\nasync function getEnvironmentKey() {\n if (!hasEnvironmentKey()) {\n throw new Error(\n `There is no environment key defined. If you see this error there is a bug in Astro.`\n );\n }\n const encodedKey = getEncodedEnvironmentKey();\n return decodeKey(encodedKey);\n}\nasync function importKey(bytes) {\n const key = await crypto.subtle.importKey(\"raw\", bytes, ALGORITHM, true, [\"encrypt\", \"decrypt\"]);\n return key;\n}\nasync function encodeKey(key) {\n const exported = await crypto.subtle.exportKey(\"raw\", key);\n const encodedKey = encodeBase64(new Uint8Array(exported));\n return encodedKey;\n}\nasync function decodeKey(encoded) {\n const bytes = decodeBase64(encoded);\n return crypto.subtle.importKey(\"raw\", bytes, ALGORITHM, true, [\"encrypt\", \"decrypt\"]);\n}\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nconst IV_LENGTH = 24;\nasync function encryptString(key, raw) {\n const iv = crypto.getRandomValues(new Uint8Array(IV_LENGTH / 2));\n const data = encoder.encode(raw);\n const buffer = await crypto.subtle.encrypt(\n {\n name: ALGORITHM,\n iv\n },\n key,\n data\n );\n return encodeHexUpperCase(iv) + encodeBase64(new Uint8Array(buffer));\n}\nasync function decryptString(key, encoded) {\n const iv = decodeHex(encoded.slice(0, IV_LENGTH));\n const dataArray = decodeBase64(encoded.slice(IV_LENGTH));\n const decryptedBuffer = await crypto.subtle.decrypt(\n {\n name: ALGORITHM,\n iv\n },\n key,\n dataArray\n );\n const decryptedString = decoder.decode(decryptedBuffer);\n return decryptedString;\n}\nexport {\n createKey,\n decodeKey,\n decryptString,\n encodeKey,\n encryptString,\n getEncodedEnvironmentKey,\n getEnvironmentKey,\n hasEnvironmentKey,\n importKey\n};\n","/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { … }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it’s not a printable ASCII character…\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It’s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It’s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they’re redundant. Note that this is only possible if the escape\n\t// sequence isn’t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It’s not safe to remove the space, so don’t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n","import cssesc from \"cssesc\";\nimport { fade, slide } from \"../../transitions/index.js\";\nimport { markHTMLString } from \"./escape.js\";\nconst transitionNameMap = /* @__PURE__ */ new WeakMap();\nfunction incrementTransitionNumber(result) {\n let num = 1;\n if (transitionNameMap.has(result)) {\n num = transitionNameMap.get(result) + 1;\n }\n transitionNameMap.set(result, num);\n return num;\n}\nfunction createTransitionScope(result, hash) {\n const num = incrementTransitionNumber(result);\n return `astro-${hash}-${num}`;\n}\nconst getAnimations = (name) => {\n if (name === \"fade\") return fade();\n if (name === \"slide\") return slide();\n if (typeof name === \"object\") return name;\n};\nconst addPairs = (animations, stylesheet) => {\n for (const [direction, images] of Object.entries(animations)) {\n for (const [image, rules] of Object.entries(images)) {\n stylesheet.addAnimationPair(direction, image, rules);\n }\n }\n};\nconst reEncodeValidChars = \"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_\".split(\"\").reduce((v, c) => (v[c.charCodeAt(0)] = c, v), []);\nconst reEncodeInValidStart = \"-0123456789_\".split(\"\").reduce((v, c) => (v[c.charCodeAt(0)] = c, v), []);\nfunction reEncode(s) {\n let result = \"\";\n let codepoint;\n for (let i = 0; i < s.length; i += (codepoint ?? 0) > 65535 ? 2 : 1) {\n codepoint = s.codePointAt(i);\n if (codepoint !== void 0) {\n result += codepoint < 128 ? codepoint === 95 ? \"__\" : reEncodeValidChars[codepoint] ?? \"_\" + codepoint.toString(16).padStart(2, \"0\") : String.fromCodePoint(codepoint);\n }\n }\n return reEncodeInValidStart[result.codePointAt(0) ?? 0] ? \"_\" + result : result;\n}\nfunction renderTransition(result, hash, animationName, transitionName) {\n if (typeof (transitionName ?? \"\") !== \"string\") {\n throw new Error(`Invalid transition name {${transitionName}}`);\n }\n if (!animationName) animationName = \"fade\";\n const scope = createTransitionScope(result, hash);\n const name = transitionName ? cssesc(reEncode(transitionName), { isIdentifier: true }) : scope;\n const sheet = new ViewTransitionStyleSheet(scope, name);\n const animations = getAnimations(animationName);\n if (animations) {\n addPairs(animations, sheet);\n } else if (animationName === \"none\") {\n sheet.addFallback(\"old\", \"animation: none; mix-blend-mode: normal;\");\n sheet.addModern(\"old\", \"animation: none; opacity: 0; mix-blend-mode: normal;\");\n sheet.addAnimationRaw(\"new\", \"animation: none; mix-blend-mode: normal;\");\n sheet.addModern(\"group\", \"animation: none\");\n }\n result._metadata.extraHead.push(markHTMLString(``));\n return scope;\n}\nfunction createAnimationScope(transitionName, animations) {\n const hash = Math.random().toString(36).slice(2, 8);\n const scope = `astro-${hash}`;\n const sheet = new ViewTransitionStyleSheet(scope, transitionName);\n addPairs(animations, sheet);\n return { scope, styles: sheet.toString().replaceAll('\"', \"\") };\n}\nclass ViewTransitionStyleSheet {\n constructor(scope, name) {\n this.scope = scope;\n this.name = name;\n }\n modern = [];\n fallback = [];\n toString() {\n const { scope, name } = this;\n const [modern, fallback] = [this.modern, this.fallback].map((rules) => rules.join(\"\"));\n return [\n `[data-astro-transition-scope=\"${scope}\"] { view-transition-name: ${name}; }`,\n this.layer(modern),\n fallback\n ].join(\"\");\n }\n layer(cssText) {\n return cssText ? `@layer astro { ${cssText} }` : \"\";\n }\n addRule(target, cssText) {\n this[target].push(cssText);\n }\n addAnimationRaw(image, animation) {\n this.addModern(image, animation);\n this.addFallback(image, animation);\n }\n addModern(image, animation) {\n const { name } = this;\n this.addRule(\"modern\", `::view-transition-${image}(${name}) { ${animation} }`);\n }\n addFallback(image, animation) {\n const { scope } = this;\n this.addRule(\n \"fallback\",\n // Two selectors here, the second in case there is an animation on the root.\n `[data-astro-transition-fallback=\"${image}\"] [data-astro-transition-scope=\"${scope}\"],\n\t\t\t[data-astro-transition-fallback=\"${image}\"][data-astro-transition-scope=\"${scope}\"] { ${animation} }`\n );\n }\n addAnimationPair(direction, image, rules) {\n const { scope, name } = this;\n const animation = stringifyAnimation(rules);\n const prefix = direction === \"backwards\" ? `[data-astro-transition=back]` : direction === \"forwards\" ? \"\" : `[data-astro-transition=${direction}]`;\n this.addRule(\"modern\", `${prefix}::view-transition-${image}(${name}) { ${animation} }`);\n this.addRule(\n \"fallback\",\n `${prefix}[data-astro-transition-fallback=\"${image}\"] [data-astro-transition-scope=\"${scope}\"],\n\t\t\t${prefix}[data-astro-transition-fallback=\"${image}\"][data-astro-transition-scope=\"${scope}\"] { ${animation} }`\n );\n }\n}\nfunction addAnimationProperty(builder, prop, value) {\n let arr = builder[prop];\n if (Array.isArray(arr)) {\n arr.push(value.toString());\n } else {\n builder[prop] = [value.toString()];\n }\n}\nfunction animationBuilder() {\n return {\n toString() {\n let out = \"\";\n for (let k in this) {\n let value = this[k];\n if (Array.isArray(value)) {\n out += `\n\t${k}: ${value.join(\", \")};`;\n }\n }\n return out;\n }\n };\n}\nfunction stringifyAnimation(anim) {\n if (Array.isArray(anim)) {\n return stringifyAnimations(anim);\n } else {\n return stringifyAnimations([anim]);\n }\n}\nfunction stringifyAnimations(anims) {\n const builder = animationBuilder();\n for (const anim of anims) {\n if (anim.duration) {\n addAnimationProperty(builder, \"animation-duration\", toTimeValue(anim.duration));\n }\n if (anim.easing) {\n addAnimationProperty(builder, \"animation-timing-function\", anim.easing);\n }\n if (anim.direction) {\n addAnimationProperty(builder, \"animation-direction\", anim.direction);\n }\n if (anim.delay) {\n addAnimationProperty(builder, \"animation-delay\", anim.delay);\n }\n if (anim.fillMode) {\n addAnimationProperty(builder, \"animation-fill-mode\", anim.fillMode);\n }\n addAnimationProperty(builder, \"animation-name\", anim.name);\n }\n return builder.toString();\n}\nfunction toTimeValue(num) {\n return typeof num === \"number\" ? num + \"ms\" : num;\n}\nexport {\n createAnimationScope,\n createTransitionScope,\n renderTransition\n};\n","import { createComponent } from \"./astro-component.js\";\nimport { createAstro } from \"./astro-global.js\";\nimport { renderEndpoint } from \"./endpoint.js\";\nimport {\n escapeHTML,\n HTMLBytes,\n HTMLString,\n isHTMLString,\n markHTMLString,\n unescapeHTML\n} from \"./escape.js\";\nimport { renderJSX } from \"./jsx.js\";\nimport {\n addAttribute,\n createHeadAndContent,\n defineScriptVars,\n Fragment,\n maybeRenderHead,\n renderTemplate,\n renderComponent,\n Renderer,\n renderHead,\n renderHTMLElement,\n renderPage,\n renderScript,\n renderScriptElement,\n renderSlot,\n renderSlotToString,\n renderTemplate as renderTemplate2,\n renderToString,\n renderUniqueStylesheet,\n voidElementNames\n} from \"./render/index.js\";\nimport { createTransitionScope, renderTransition } from \"./transition.js\";\nimport { markHTMLString as markHTMLString2 } from \"./escape.js\";\nimport { Renderer as Renderer2, addAttribute as addAttribute2 } from \"./render/index.js\";\nfunction mergeSlots(...slotted) {\n const slots = {};\n for (const slot of slotted) {\n if (!slot) continue;\n if (typeof slot === \"object\") {\n Object.assign(slots, slot);\n } else if (typeof slot === \"function\") {\n Object.assign(slots, mergeSlots(slot()));\n }\n }\n return slots;\n}\nfunction __astro_tag_component__(Component, rendererName) {\n if (!Component) return;\n if (typeof Component !== \"function\") return;\n Object.defineProperty(Component, Renderer2, {\n value: rendererName,\n enumerable: false,\n writable: false\n });\n}\nfunction spreadAttributes(values = {}, _name, { class: scopedClassName } = {}) {\n let output = \"\";\n if (scopedClassName) {\n if (typeof values.class !== \"undefined\") {\n values.class += ` ${scopedClassName}`;\n } else if (typeof values[\"class:list\"] !== \"undefined\") {\n values[\"class:list\"] = [values[\"class:list\"], scopedClassName];\n } else {\n values.class = scopedClassName;\n }\n }\n for (const [key, value] of Object.entries(values)) {\n output += addAttribute2(value, key, true);\n }\n return markHTMLString2(output);\n}\nfunction defineStyleVars(defs) {\n let output = \"\";\n let arr = !Array.isArray(defs) ? [defs] : defs;\n for (const vars of arr) {\n for (const [key, value] of Object.entries(vars)) {\n if (value || value === 0) {\n output += `--${key}: ${value};`;\n }\n }\n }\n return markHTMLString2(output);\n}\nexport {\n Fragment,\n HTMLBytes,\n HTMLString,\n Renderer,\n __astro_tag_component__,\n addAttribute,\n createAstro,\n createComponent,\n createHeadAndContent,\n createTransitionScope,\n defineScriptVars,\n defineStyleVars,\n escapeHTML,\n isHTMLString,\n markHTMLString,\n maybeRenderHead,\n mergeSlots,\n renderTemplate as render,\n renderComponent,\n renderEndpoint,\n renderHTMLElement,\n renderHead,\n renderJSX,\n renderPage,\n renderScript,\n renderScriptElement,\n renderSlot,\n renderSlotToString,\n renderTemplate2 as renderTemplate,\n renderToString,\n renderTransition,\n renderUniqueStylesheet,\n spreadAttributes,\n unescapeHTML,\n voidElementNames\n};\n","---\nimport { type LocalImageProps, type RemoteImageProps, getImage } from 'astro:assets';\nimport { AstroError, AstroErrorData } from '../dist/core/errors/index.js';\nimport type { HTMLAttributes } from '../types';\n\n// The TypeScript diagnostic for JSX props uses the last member of the union to suggest props, so it would be better for\n// LocalImageProps to be last. Unfortunately, when we do this the error messages that remote images get are complete nonsense\n// Not 100% sure how to fix this, seems to be a TypeScript issue. Unfortunate.\ntype Props = LocalImageProps | RemoteImageProps;\n\nconst props = Astro.props;\n\nif (props.alt === undefined || props.alt === null) {\n\tthrow new AstroError(AstroErrorData.ImageMissingAlt);\n}\n\n// As a convenience, allow width and height to be string with a number in them, to match HTML's native `img`.\nif (typeof props.width === 'string') {\n\tprops.width = parseInt(props.width);\n}\n\nif (typeof props.height === 'string') {\n\tprops.height = parseInt(props.height);\n}\n\nconst image = await getImage(props);\n\nconst additionalAttributes: HTMLAttributes<'img'> = {};\nif (image.srcSet.values.length > 0) {\n\tadditionalAttributes.srcset = image.srcSet.attribute;\n}\n\nif (import.meta.env.DEV) {\n\tadditionalAttributes['data-image-component'] = 'true';\n}\n---\n\n\n","const mimes = {\n \"3g2\": \"video/3gpp2\",\n \"3gp\": \"video/3gpp\",\n \"3gpp\": \"video/3gpp\",\n \"3mf\": \"model/3mf\",\n \"aac\": \"audio/aac\",\n \"ac\": \"application/pkix-attr-cert\",\n \"adp\": \"audio/adpcm\",\n \"adts\": \"audio/aac\",\n \"ai\": \"application/postscript\",\n \"aml\": \"application/automationml-aml+xml\",\n \"amlx\": \"application/automationml-amlx+zip\",\n \"amr\": \"audio/amr\",\n \"apng\": \"image/apng\",\n \"appcache\": \"text/cache-manifest\",\n \"appinstaller\": \"application/appinstaller\",\n \"appx\": \"application/appx\",\n \"appxbundle\": \"application/appxbundle\",\n \"asc\": \"application/pgp-keys\",\n \"atom\": \"application/atom+xml\",\n \"atomcat\": \"application/atomcat+xml\",\n \"atomdeleted\": \"application/atomdeleted+xml\",\n \"atomsvc\": \"application/atomsvc+xml\",\n \"au\": \"audio/basic\",\n \"avci\": \"image/avci\",\n \"avcs\": \"image/avcs\",\n \"avif\": \"image/avif\",\n \"aw\": \"application/applixware\",\n \"bdoc\": \"application/bdoc\",\n \"bin\": \"application/octet-stream\",\n \"bmp\": \"image/bmp\",\n \"bpk\": \"application/octet-stream\",\n \"btf\": \"image/prs.btif\",\n \"btif\": \"image/prs.btif\",\n \"buffer\": \"application/octet-stream\",\n \"ccxml\": \"application/ccxml+xml\",\n \"cdfx\": \"application/cdfx+xml\",\n \"cdmia\": \"application/cdmi-capability\",\n \"cdmic\": \"application/cdmi-container\",\n \"cdmid\": \"application/cdmi-domain\",\n \"cdmio\": \"application/cdmi-object\",\n \"cdmiq\": \"application/cdmi-queue\",\n \"cer\": \"application/pkix-cert\",\n \"cgm\": \"image/cgm\",\n \"cjs\": \"application/node\",\n \"class\": \"application/java-vm\",\n \"coffee\": \"text/coffeescript\",\n \"conf\": \"text/plain\",\n \"cpl\": \"application/cpl+xml\",\n \"cpt\": \"application/mac-compactpro\",\n \"crl\": \"application/pkix-crl\",\n \"css\": \"text/css\",\n \"csv\": \"text/csv\",\n \"cu\": \"application/cu-seeme\",\n \"cwl\": \"application/cwl\",\n \"cww\": \"application/prs.cww\",\n \"davmount\": \"application/davmount+xml\",\n \"dbk\": \"application/docbook+xml\",\n \"deb\": \"application/octet-stream\",\n \"def\": \"text/plain\",\n \"deploy\": \"application/octet-stream\",\n \"dib\": \"image/bmp\",\n \"disposition-notification\": \"message/disposition-notification\",\n \"dist\": \"application/octet-stream\",\n \"distz\": \"application/octet-stream\",\n \"dll\": \"application/octet-stream\",\n \"dmg\": \"application/octet-stream\",\n \"dms\": \"application/octet-stream\",\n \"doc\": \"application/msword\",\n \"dot\": \"application/msword\",\n \"dpx\": \"image/dpx\",\n \"drle\": \"image/dicom-rle\",\n \"dsc\": \"text/prs.lines.tag\",\n \"dssc\": \"application/dssc+der\",\n \"dtd\": \"application/xml-dtd\",\n \"dump\": \"application/octet-stream\",\n \"dwd\": \"application/atsc-dwd+xml\",\n \"ear\": \"application/java-archive\",\n \"ecma\": \"application/ecmascript\",\n \"elc\": \"application/octet-stream\",\n \"emf\": \"image/emf\",\n \"eml\": \"message/rfc822\",\n \"emma\": \"application/emma+xml\",\n \"emotionml\": \"application/emotionml+xml\",\n \"eps\": \"application/postscript\",\n \"epub\": \"application/epub+zip\",\n \"exe\": \"application/octet-stream\",\n \"exi\": \"application/exi\",\n \"exp\": \"application/express\",\n \"exr\": \"image/aces\",\n \"ez\": \"application/andrew-inset\",\n \"fdf\": \"application/fdf\",\n \"fdt\": \"application/fdt+xml\",\n \"fits\": \"image/fits\",\n \"g3\": \"image/g3fax\",\n \"gbr\": \"application/rpki-ghostbusters\",\n \"geojson\": \"application/geo+json\",\n \"gif\": \"image/gif\",\n \"glb\": \"model/gltf-binary\",\n \"gltf\": \"model/gltf+json\",\n \"gml\": \"application/gml+xml\",\n \"gpx\": \"application/gpx+xml\",\n \"gram\": \"application/srgs\",\n \"grxml\": \"application/srgs+xml\",\n \"gxf\": \"application/gxf\",\n \"gz\": \"application/gzip\",\n \"h261\": \"video/h261\",\n \"h263\": \"video/h263\",\n \"h264\": \"video/h264\",\n \"heic\": \"image/heic\",\n \"heics\": \"image/heic-sequence\",\n \"heif\": \"image/heif\",\n \"heifs\": \"image/heif-sequence\",\n \"hej2\": \"image/hej2k\",\n \"held\": \"application/atsc-held+xml\",\n \"hjson\": \"application/hjson\",\n \"hlp\": \"application/winhlp\",\n \"hqx\": \"application/mac-binhex40\",\n \"hsj2\": \"image/hsj2\",\n \"htm\": \"text/html\",\n \"html\": \"text/html\",\n \"ics\": \"text/calendar\",\n \"ief\": \"image/ief\",\n \"ifb\": \"text/calendar\",\n \"iges\": \"model/iges\",\n \"igs\": \"model/iges\",\n \"img\": \"application/octet-stream\",\n \"in\": \"text/plain\",\n \"ini\": \"text/plain\",\n \"ink\": \"application/inkml+xml\",\n \"inkml\": \"application/inkml+xml\",\n \"ipfix\": \"application/ipfix\",\n \"iso\": \"application/octet-stream\",\n \"its\": \"application/its+xml\",\n \"jade\": \"text/jade\",\n \"jar\": \"application/java-archive\",\n \"jhc\": \"image/jphc\",\n \"jls\": \"image/jls\",\n \"jp2\": \"image/jp2\",\n \"jpe\": \"image/jpeg\",\n \"jpeg\": \"image/jpeg\",\n \"jpf\": \"image/jpx\",\n \"jpg\": \"image/jpeg\",\n \"jpg2\": \"image/jp2\",\n \"jpgm\": \"image/jpm\",\n \"jpgv\": \"video/jpeg\",\n \"jph\": \"image/jph\",\n \"jpm\": \"image/jpm\",\n \"jpx\": \"image/jpx\",\n \"js\": \"text/javascript\",\n \"json\": \"application/json\",\n \"json5\": \"application/json5\",\n \"jsonld\": \"application/ld+json\",\n \"jsonml\": \"application/jsonml+json\",\n \"jsx\": \"text/jsx\",\n \"jt\": \"model/jt\",\n \"jxr\": \"image/jxr\",\n \"jxra\": \"image/jxra\",\n \"jxrs\": \"image/jxrs\",\n \"jxs\": \"image/jxs\",\n \"jxsc\": \"image/jxsc\",\n \"jxsi\": \"image/jxsi\",\n \"jxss\": \"image/jxss\",\n \"kar\": \"audio/midi\",\n \"ktx\": \"image/ktx\",\n \"ktx2\": \"image/ktx2\",\n \"less\": \"text/less\",\n \"lgr\": \"application/lgr+xml\",\n \"list\": \"text/plain\",\n \"litcoffee\": \"text/coffeescript\",\n \"log\": \"text/plain\",\n \"lostxml\": \"application/lost+xml\",\n \"lrf\": \"application/octet-stream\",\n \"m1v\": \"video/mpeg\",\n \"m21\": \"application/mp21\",\n \"m2a\": \"audio/mpeg\",\n \"m2v\": \"video/mpeg\",\n \"m3a\": \"audio/mpeg\",\n \"m4a\": \"audio/mp4\",\n \"m4p\": \"application/mp4\",\n \"m4s\": \"video/iso.segment\",\n \"ma\": \"application/mathematica\",\n \"mads\": \"application/mads+xml\",\n \"maei\": \"application/mmt-aei+xml\",\n \"man\": \"text/troff\",\n \"manifest\": \"text/cache-manifest\",\n \"map\": \"application/json\",\n \"mar\": \"application/octet-stream\",\n \"markdown\": \"text/markdown\",\n \"mathml\": \"application/mathml+xml\",\n \"mb\": \"application/mathematica\",\n \"mbox\": \"application/mbox\",\n \"md\": \"text/markdown\",\n \"mdx\": \"text/mdx\",\n \"me\": \"text/troff\",\n \"mesh\": \"model/mesh\",\n \"meta4\": \"application/metalink4+xml\",\n \"metalink\": \"application/metalink+xml\",\n \"mets\": \"application/mets+xml\",\n \"mft\": \"application/rpki-manifest\",\n \"mid\": \"audio/midi\",\n \"midi\": \"audio/midi\",\n \"mime\": \"message/rfc822\",\n \"mj2\": \"video/mj2\",\n \"mjp2\": \"video/mj2\",\n \"mjs\": \"text/javascript\",\n \"mml\": \"text/mathml\",\n \"mods\": \"application/mods+xml\",\n \"mov\": \"video/quicktime\",\n \"mp2\": \"audio/mpeg\",\n \"mp21\": \"application/mp21\",\n \"mp2a\": \"audio/mpeg\",\n \"mp3\": \"audio/mpeg\",\n \"mp4\": \"video/mp4\",\n \"mp4a\": \"audio/mp4\",\n \"mp4s\": \"application/mp4\",\n \"mp4v\": \"video/mp4\",\n \"mpd\": \"application/dash+xml\",\n \"mpe\": \"video/mpeg\",\n \"mpeg\": \"video/mpeg\",\n \"mpf\": \"application/media-policy-dataset+xml\",\n \"mpg\": \"video/mpeg\",\n \"mpg4\": \"video/mp4\",\n \"mpga\": \"audio/mpeg\",\n \"mpp\": \"application/dash-patch+xml\",\n \"mrc\": \"application/marc\",\n \"mrcx\": \"application/marcxml+xml\",\n \"ms\": \"text/troff\",\n \"mscml\": \"application/mediaservercontrol+xml\",\n \"msh\": \"model/mesh\",\n \"msi\": \"application/octet-stream\",\n \"msix\": \"application/msix\",\n \"msixbundle\": \"application/msixbundle\",\n \"msm\": \"application/octet-stream\",\n \"msp\": \"application/octet-stream\",\n \"mtl\": \"model/mtl\",\n \"musd\": \"application/mmt-usd+xml\",\n \"mxf\": \"application/mxf\",\n \"mxmf\": \"audio/mobile-xmf\",\n \"mxml\": \"application/xv+xml\",\n \"n3\": \"text/n3\",\n \"nb\": \"application/mathematica\",\n \"nq\": \"application/n-quads\",\n \"nt\": \"application/n-triples\",\n \"obj\": \"model/obj\",\n \"oda\": \"application/oda\",\n \"oga\": \"audio/ogg\",\n \"ogg\": \"audio/ogg\",\n \"ogv\": \"video/ogg\",\n \"ogx\": \"application/ogg\",\n \"omdoc\": \"application/omdoc+xml\",\n \"onepkg\": \"application/onenote\",\n \"onetmp\": \"application/onenote\",\n \"onetoc\": \"application/onenote\",\n \"onetoc2\": \"application/onenote\",\n \"opf\": \"application/oebps-package+xml\",\n \"opus\": \"audio/ogg\",\n \"otf\": \"font/otf\",\n \"owl\": \"application/rdf+xml\",\n \"oxps\": \"application/oxps\",\n \"p10\": \"application/pkcs10\",\n \"p7c\": \"application/pkcs7-mime\",\n \"p7m\": \"application/pkcs7-mime\",\n \"p7s\": \"application/pkcs7-signature\",\n \"p8\": \"application/pkcs8\",\n \"pdf\": \"application/pdf\",\n \"pfr\": \"application/font-tdpfr\",\n \"pgp\": \"application/pgp-encrypted\",\n \"pkg\": \"application/octet-stream\",\n \"pki\": \"application/pkixcmp\",\n \"pkipath\": \"application/pkix-pkipath\",\n \"pls\": \"application/pls+xml\",\n \"png\": \"image/png\",\n \"prc\": \"model/prc\",\n \"prf\": \"application/pics-rules\",\n \"provx\": \"application/provenance+xml\",\n \"ps\": \"application/postscript\",\n \"pskcxml\": \"application/pskc+xml\",\n \"pti\": \"image/prs.pti\",\n \"qt\": \"video/quicktime\",\n \"raml\": \"application/raml+yaml\",\n \"rapd\": \"application/route-apd+xml\",\n \"rdf\": \"application/rdf+xml\",\n \"relo\": \"application/p2p-overlay+xml\",\n \"rif\": \"application/reginfo+xml\",\n \"rl\": \"application/resource-lists+xml\",\n \"rld\": \"application/resource-lists-diff+xml\",\n \"rmi\": \"audio/midi\",\n \"rnc\": \"application/relax-ng-compact-syntax\",\n \"rng\": \"application/xml\",\n \"roa\": \"application/rpki-roa\",\n \"roff\": \"text/troff\",\n \"rq\": \"application/sparql-query\",\n \"rs\": \"application/rls-services+xml\",\n \"rsat\": \"application/atsc-rsat+xml\",\n \"rsd\": \"application/rsd+xml\",\n \"rsheet\": \"application/urc-ressheet+xml\",\n \"rss\": \"application/rss+xml\",\n \"rtf\": \"text/rtf\",\n \"rtx\": \"text/richtext\",\n \"rusd\": \"application/route-usd+xml\",\n \"s3m\": \"audio/s3m\",\n \"sbml\": \"application/sbml+xml\",\n \"scq\": \"application/scvp-cv-request\",\n \"scs\": \"application/scvp-cv-response\",\n \"sdp\": \"application/sdp\",\n \"senmlx\": \"application/senml+xml\",\n \"sensmlx\": \"application/sensml+xml\",\n \"ser\": \"application/java-serialized-object\",\n \"setpay\": \"application/set-payment-initiation\",\n \"setreg\": \"application/set-registration-initiation\",\n \"sgi\": \"image/sgi\",\n \"sgm\": \"text/sgml\",\n \"sgml\": \"text/sgml\",\n \"shex\": \"text/shex\",\n \"shf\": \"application/shf+xml\",\n \"shtml\": \"text/html\",\n \"sieve\": \"application/sieve\",\n \"sig\": \"application/pgp-signature\",\n \"sil\": \"audio/silk\",\n \"silo\": \"model/mesh\",\n \"siv\": \"application/sieve\",\n \"slim\": \"text/slim\",\n \"slm\": \"text/slim\",\n \"sls\": \"application/route-s-tsid+xml\",\n \"smi\": \"application/smil+xml\",\n \"smil\": \"application/smil+xml\",\n \"snd\": \"audio/basic\",\n \"so\": \"application/octet-stream\",\n \"spdx\": \"text/spdx\",\n \"spp\": \"application/scvp-vp-response\",\n \"spq\": \"application/scvp-vp-request\",\n \"spx\": \"audio/ogg\",\n \"sql\": \"application/sql\",\n \"sru\": \"application/sru+xml\",\n \"srx\": \"application/sparql-results+xml\",\n \"ssdl\": \"application/ssdl+xml\",\n \"ssml\": \"application/ssml+xml\",\n \"stk\": \"application/hyperstudio\",\n \"stl\": \"model/stl\",\n \"stpx\": \"model/step+xml\",\n \"stpxz\": \"model/step-xml+zip\",\n \"stpz\": \"model/step+zip\",\n \"styl\": \"text/stylus\",\n \"stylus\": \"text/stylus\",\n \"svg\": \"image/svg+xml\",\n \"svgz\": \"image/svg+xml\",\n \"swidtag\": \"application/swid+xml\",\n \"t\": \"text/troff\",\n \"t38\": \"image/t38\",\n \"td\": \"application/urc-targetdesc+xml\",\n \"tei\": \"application/tei+xml\",\n \"teicorpus\": \"application/tei+xml\",\n \"text\": \"text/plain\",\n \"tfi\": \"application/thraud+xml\",\n \"tfx\": \"image/tiff-fx\",\n \"tif\": \"image/tiff\",\n \"tiff\": \"image/tiff\",\n \"toml\": \"application/toml\",\n \"tr\": \"text/troff\",\n \"trig\": \"application/trig\",\n \"ts\": \"video/mp2t\",\n \"tsd\": \"application/timestamped-data\",\n \"tsv\": \"text/tab-separated-values\",\n \"ttc\": \"font/collection\",\n \"ttf\": \"font/ttf\",\n \"ttl\": \"text/turtle\",\n \"ttml\": \"application/ttml+xml\",\n \"txt\": \"text/plain\",\n \"u3d\": \"model/u3d\",\n \"u8dsn\": \"message/global-delivery-status\",\n \"u8hdr\": \"message/global-headers\",\n \"u8mdn\": \"message/global-disposition-notification\",\n \"u8msg\": \"message/global\",\n \"ubj\": \"application/ubjson\",\n \"uri\": \"text/uri-list\",\n \"uris\": \"text/uri-list\",\n \"urls\": \"text/uri-list\",\n \"vcard\": \"text/vcard\",\n \"vrml\": \"model/vrml\",\n \"vtt\": \"text/vtt\",\n \"vxml\": \"application/voicexml+xml\",\n \"war\": \"application/java-archive\",\n \"wasm\": \"application/wasm\",\n \"wav\": \"audio/wav\",\n \"weba\": \"audio/webm\",\n \"webm\": \"video/webm\",\n \"webmanifest\": \"application/manifest+json\",\n \"webp\": \"image/webp\",\n \"wgsl\": \"text/wgsl\",\n \"wgt\": \"application/widget\",\n \"wif\": \"application/watcherinfo+xml\",\n \"wmf\": \"image/wmf\",\n \"woff\": \"font/woff\",\n \"woff2\": \"font/woff2\",\n \"wrl\": \"model/vrml\",\n \"wsdl\": \"application/wsdl+xml\",\n \"wspolicy\": \"application/wspolicy+xml\",\n \"x3d\": \"model/x3d+xml\",\n \"x3db\": \"model/x3d+fastinfoset\",\n \"x3dbz\": \"model/x3d+binary\",\n \"x3dv\": \"model/x3d-vrml\",\n \"x3dvz\": \"model/x3d+vrml\",\n \"x3dz\": \"model/x3d+xml\",\n \"xaml\": \"application/xaml+xml\",\n \"xav\": \"application/xcap-att+xml\",\n \"xca\": \"application/xcap-caps+xml\",\n \"xcs\": \"application/calendar+xml\",\n \"xdf\": \"application/xcap-diff+xml\",\n \"xdssc\": \"application/dssc+xml\",\n \"xel\": \"application/xcap-el+xml\",\n \"xenc\": \"application/xenc+xml\",\n \"xer\": \"application/patch-ops-error+xml\",\n \"xfdf\": \"application/xfdf\",\n \"xht\": \"application/xhtml+xml\",\n \"xhtml\": \"application/xhtml+xml\",\n \"xhvml\": \"application/xv+xml\",\n \"xlf\": \"application/xliff+xml\",\n \"xm\": \"audio/xm\",\n \"xml\": \"text/xml\",\n \"xns\": \"application/xcap-ns+xml\",\n \"xop\": \"application/xop+xml\",\n \"xpl\": \"application/xproc+xml\",\n \"xsd\": \"application/xml\",\n \"xsf\": \"application/prs.xsf+xml\",\n \"xsl\": \"application/xml\",\n \"xslt\": \"application/xml\",\n \"xspf\": \"application/xspf+xml\",\n \"xvm\": \"application/xv+xml\",\n \"xvml\": \"application/xv+xml\",\n \"yaml\": \"text/yaml\",\n \"yang\": \"application/yang\",\n \"yin\": \"application/yin+xml\",\n \"yml\": \"text/yaml\",\n \"zip\": \"application/zip\"\n};\n\nfunction lookup(extn) {\n\tlet tmp = ('' + extn).trim().toLowerCase();\n\tlet idx = tmp.lastIndexOf('.');\n\treturn mimes[!~idx ? tmp : tmp.substring(++idx)];\n}\n\nexport { mimes, lookup };\n","---\nimport { type LocalImageProps, type RemoteImageProps, getImage } from 'astro:assets';\nimport * as mime from 'mrmime';\nimport type { GetImageResult, ImageOutputFormat } from '../dist/@types/astro';\nimport { isESMImportedImage, resolveSrc } from '../dist/assets/utils/imageKind';\nimport { AstroError, AstroErrorData } from '../dist/core/errors/index.js';\nimport type { HTMLAttributes } from '../types';\n\ntype Props = (LocalImageProps | RemoteImageProps) & {\n\tformats?: ImageOutputFormat[];\n\tfallbackFormat?: ImageOutputFormat;\n\tpictureAttributes?: HTMLAttributes<'picture'>;\n};\n\nconst defaultFormats = ['webp'] as const;\nconst defaultFallbackFormat = 'png' as const;\n\n// Certain formats don't want PNG fallbacks:\n// - GIF will typically want to stay as a gif, either for animation or for the lower amount of colors\n// - SVGs can't be converted to raster formats in most cases\n// - JPEGs compress photographs and high-noise images better than PNG in most cases\n// For those, we'll use the original format as the fallback instead.\nconst specialFormatsFallback = ['gif', 'svg', 'jpg', 'jpeg'] as const;\n\nconst { formats = defaultFormats, pictureAttributes = {}, fallbackFormat, ...props } = Astro.props;\n\nif (props.alt === undefined || props.alt === null) {\n\tthrow new AstroError(AstroErrorData.ImageMissingAlt);\n}\n\n// Picture attribute inherit scoped styles from class and attributes\nconst scopedStyleClass = props.class?.match(/\\bastro-\\w{8}\\b/)?.[0];\nif (scopedStyleClass) {\n\tif (pictureAttributes.class) {\n\t\tpictureAttributes.class = `${pictureAttributes.class} ${scopedStyleClass}`;\n\t} else {\n\t\tpictureAttributes.class = scopedStyleClass;\n\t}\n}\nfor (const key in props) {\n\tif (key.startsWith('data-astro-cid')) {\n\t\tpictureAttributes[key] = props[key];\n\t}\n}\n\nconst originalSrc = await resolveSrc(props.src);\nconst optimizedImages: GetImageResult[] = await Promise.all(\n\tformats.map(\n\t\tasync (format) =>\n\t\t\tawait getImage({\n\t\t\t\t...props,\n\t\t\t\tsrc: originalSrc,\n\t\t\t\tformat: format,\n\t\t\t\twidths: props.widths,\n\t\t\t\tdensities: props.densities,\n\t\t\t}),\n\t),\n);\n\nlet resultFallbackFormat = fallbackFormat ?? defaultFallbackFormat;\nif (\n\t!fallbackFormat &&\n\tisESMImportedImage(originalSrc) &&\n\t(specialFormatsFallback as ReadonlyArray).includes(originalSrc.format)\n) {\n\tresultFallbackFormat = originalSrc.format;\n}\n\nconst fallbackImage = await getImage({\n\t...props,\n\tformat: resultFallbackFormat,\n\twidths: props.widths,\n\tdensities: props.densities,\n});\n\nconst imgAdditionalAttributes: HTMLAttributes<'img'> = {};\nconst sourceAdditionalAttributes: HTMLAttributes<'source'> = {};\n\n// Propagate the `sizes` attribute to the `source` elements\nif (props.sizes) {\n\tsourceAdditionalAttributes.sizes = props.sizes;\n}\n\nif (fallbackImage.srcSet.values.length > 0) {\n\timgAdditionalAttributes.srcset = fallbackImage.srcSet.attribute;\n}\n\nif (import.meta.env.DEV) {\n\timgAdditionalAttributes['data-image-component'] = 'true';\n}\n---\n\n\n\t{\n\t\tObject.entries(optimizedImages).map(([_, image]) => {\n\t\t\tconst srcsetAttribute =\n\t\t\t\tprops.densities || (!props.densities && !props.widths)\n\t\t\t\t\t? `${image.src}${image.srcSet.values.length > 0 ? ', ' + image.srcSet.attribute : ''}`\n\t\t\t\t\t: image.srcSet.attribute;\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t})\n\t}\n\t\n\n","import { getImage } from 'astro:assets'\nimport type { ProcessedImages, ImageConfig } from './image'\n\nconst getConvertedImageUrl = async ({\n img,\n format\n}: {\n img: ImageMetadata\n format: 'png' | 'webp'\n}): Promise => {\n if (format !== 'png' && format !== 'webp') {\n throw new Error(`Invalid format: ${format}`)\n }\n\n const assetPrefix = (import.meta.env.ASSETS_PREFIX as string) || ''\n\n // The image src is the full path to the image containing the asset prefix.\n // For some reason, the image server doesn't work if we pass in the full path.\n // So we need to remove the asset prefix from the src.\n const pathedImageMetadata = {\n ...img,\n src: img.src.replace(assetPrefix, '')\n }\n \n const path = (await getImage({ src: pathedImageMetadata, format })).src\n\n return `${assetPrefix}${path}`\n}\n\nconst processImage = async (img: ImageMetadata): Promise => {\n const pngSrc = img.format === 'png' ? img.src : await getConvertedImageUrl({ img, format: 'png' })\n const webpSrc =\n img.format === 'webp' ? img.src : await getConvertedImageUrl({ img, format: 'webp' })\n\n return {\n originalSrc: img.src,\n pngSrc: pngSrc,\n webpSrc: webpSrc\n }\n}\n\nconst processImages = async (images: ImageMetadata[]): Promise => {\n const imageConfigs = await Promise.all(images.map(processImage))\n return {\n images: imageConfigs\n }\n}\n\nexport { processImage, processImages }\n","import { processImages } from '@lib/image-server'\n\nimport residentBenefitsBestImage from './resident-benefits-best-image.webp'\nimport residentBenefitsGoodImage from './resident-benefits-good-image.webp'\nimport residentBenefitsBasicImage from './resident-benefits-basic-image.webp'\nimport residentBenefitsEmptyImage from './resident-benefits-empty-image.webp'\n\nexport const processedResidentBenefitsImages = await processImages([\n residentBenefitsBestImage,\n residentBenefitsGoodImage,\n residentBenefitsBasicImage,\n residentBenefitsEmptyImage\n])\n","import { RatingPlanCard, type PlanRatingPlanCard } from '@components/rating-plan-card/rating-plan-card'\nimport { processedResidentBenefitsImages } from '@components/resident-benefits/processed-resident-benefits-images'\n\nexport const PlanList = ({ plans }: { plans: PlanRatingPlanCard[] }) => {\n if (plans.length === 0) return null\n\n return (\n
\n
    \n {plans.map((plan) => (\n
  • \n \n
  • \n ))}\n
\n
\n )\n}\n","import { useState, useEffect } from 'react'\n\nimport ArrowLeftIcon from '@components/ui/icons/arrow-left-icon'\nimport { type PlanRatingPlanCard } from '@components/rating-plan-card/rating-plan-card'\nimport { getStateFromIp, type USState } from '@lib/us-states'\nimport { USMap } from '@components/us-map/us-map'\nimport { type RatedPlan } from '@/schema/plans-model'\nimport { type PlanSelectionWizardState } from '@lib/fetch-plans-for-rate-card'\n\nimport { PlanList } from './plan-list'\n\ntype PlanSelectionWizardPageProps = {\n planSelectionWizardStatesById: Map\n featuredPlans: RatedPlan[]\n}\n\nexport const PlanSelectionWizardPage = ({ planSelectionWizardStatesById, featuredPlans }: PlanSelectionWizardPageProps) => {\n const [userStateId, setUserStateId] = useState(undefined)\n const [state, setState] = useState(null)\n const [statePlans, setStatePlans] = useState([])\n const [featuredFirst, setFeaturedFirst] = useState(false)\n\n // Fetch the user's state from IP\n useEffect(() => {\n const fetchState = async () => {\n const stateFromIp = await getStateFromIp()\n setUserStateId(() => stateFromIp?.id)\n }\n\n fetchState()\n }, [])\n\n useEffect(() => {\n if (state) {\n const stateWithPlans = planSelectionWizardStatesById.get(state.abbr)\n if (stateWithPlans) {\n setStatePlans(stateWithPlans.plans)\n setFeaturedFirst(showFeaturedPlansFirst(stateWithPlans))\n }\n }\n }, [state])\n\n return (\n
\n {!state && }\n\n {!!state && (\n
\n setState(null)}\n className=\"flex text-body-main-bold justify-center tablet:justify-start mb-[10px] gap-[5px] link-variant-blue\"\n >\n \n Back to map\n \n\n {featuredFirst && }\n\n {}\n\n {!featuredFirst && }\n
\n )}\n
\n )\n}\n\nfunction showFeaturedPlansFirst(state: PlanSelectionWizardState) {\n const statePlansHaveEnrollNow = state.plans.some((plan) => plan.has_enroll_now)\n\n if (statePlansHaveEnrollNow) return false\n if (state.has_state_tax_parity) return true\n if (!state.has_state_benefits) return true\n\n return false\n}\n\ntype StepMapProps = {\n userStateId: string | undefined\n setState: (state: USState) => void\n}\n\nfunction StepMap({ userStateId, setState }: StepMapProps) {\n return (\n
\n
\n

Find a 529 plan

\n

Select your state below

\n
\n \n
\n )\n}\n\nfunction StatePlansSection({ usState, statePlans }: { usState: USState, statePlans: PlanRatingPlanCard[] }) {\n if (statePlans.length === 0) return null\n\n return (\n
\n

{usState.name} plans

\n {statePlans.length > 0 && (\n

\n Some states offer multiple 529 plans. Below are the best plans in your state.\n

\n )}\n \n
\n )\n}\n\nfunction FeaturedPlansSection({ featuredPlans }: { featuredPlans: PlanRatingPlanCard[] }) {\n return (\n
\n

Featured plans

\n

\n Your state's 529 plan isn't your only option. Here are some highly rated national plans to consider:\n

\n \n
\n )\n}"],"file":"_astro/plan-selection-wizard-page.xHsUeb9v.js"}