1"use strict"; 2(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[3145],{ 3 4/***/ 33145: 5/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 6 7/* harmony export */ __webpack_require__.d(__webpack_exports__, { 8/* harmony export */ "default": function() { return /* reexport default from dynamic */ _shared_lib_image_external__WEBPACK_IMPORTED_MODULE_0___default.a; } 9/* harmony export */ }); 10/* harmony import */ var _shared_lib_image_external__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(48461); 11/* harmony import */ var _shared_lib_image_external__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_shared_lib_image_external__WEBPACK_IMPORTED_MODULE_0__); 12 13 14 15//# sourceMappingURL=image.js.map 16 17/***/ }), 18 19/***/ 65878: 20/***/ (function(module, exports, __webpack_require__) { 21 22/* __next_internal_client_entry_do_not_use__ cjs */ 23Object.defineProperty(exports, "__esModule", ({ 24 value: true 25})); 26Object.defineProperty(exports, "Image", ({ 27 enumerable: true, 28 get: function() { 29 return Image; 30 } 31})); 32const _interop_require_default = __webpack_require__(47043); 33const _interop_require_wildcard = __webpack_require__(53099); 34const _jsxruntime = __webpack_require__(57437); 35const _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(2265)); 36const _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(54887)); 37const _head = /*#__PURE__*/ _interop_require_default._(__webpack_require__(38293)); 38const _getimgprops = __webpack_require__(55346); 39const _imageconfig = __webpack_require__(90128); 40const _imageconfigcontextsharedruntime = __webpack_require__(62589); 41const _warnonce = __webpack_require__(31765); 42const _routercontextsharedruntime = __webpack_require__(25523); 43const _imageloader = /*#__PURE__*/ _interop_require_default._(__webpack_require__(5084)); 44// This is replaced by webpack define plugin 45const configEnv = {"deviceSizes":[640,750,828,1080,1200,1920],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","dangerouslyAllowSVG":false,"unoptimized":true}; 46if (typeof window === "undefined") { 47 globalThis.__NEXT_IMAGE_IMPORTED = true; 48} 49// See https://stackoverflow.com/q/39777833/266535 for why we use this ref 50// handler instead of the img's onLoad attribute. 51function handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput) { 52 const src = img == null ? void 0 : img.src; 53 if (!img || img["data-loaded-src"] === src) { 54 return; 55 } 56 img["data-loaded-src"] = src; 57 const p = "decode" in img ? img.decode() : Promise.resolve(); 58 p.catch(()=>{}).then(()=>{ 59 if (!img.parentElement || !img.isConnected) { 60 // Exit early in case of race condition: 61 // - onload() is called 62 // - decode() is called but incomplete 63 // - unmount is called 64 // - decode() completes 65 return; 66 } 67 if (placeholder !== "empty") { 68 setBlurComplete(true); 69 } 70 if (onLoadRef == null ? void 0 : onLoadRef.current) { 71 // Since we don't have the SyntheticEvent here, 72 // we must create one with the same shape. 73 // See https://reactjs.org/docs/events.html 74 const event = new Event("load"); 75 Object.defineProperty(event, "target", { 76 writable: false, 77 value: img 78 }); 79 let prevented = false; 80 let stopped = false; 81 onLoadRef.current({ 82 ...event, 83 nativeEvent: event, 84 currentTarget: img, 85 target: img, 86 isDefaultPrevented: ()=>prevented, 87 isPropagationStopped: ()=>stopped, 88 persist: ()=>{}, 89 preventDefault: ()=>{ 90 prevented = true; 91 event.preventDefault(); 92 }, 93 stopPropagation: ()=>{ 94 stopped = true; 95 event.stopPropagation(); 96 } 97 }); 98 } 99 if (onLoadingCompleteRef == null ? void 0 : onLoadingCompleteRef.current) { 100 onLoadingCompleteRef.current(img); 101 } 102 if (false) {} 103 }); 104} 105function getDynamicProps(fetchPriority) { 106 if (Boolean(_react.use)) { 107 // In React 19.0.0 or newer, we must use camelCase 108 // prop to avoid "Warning: Invalid DOM property". 109 // See https://github.com/facebook/react/pull/25927 110 return { 111 fetchPriority 112 }; 113 } 114 // In React 18.2.0 or older, we must use lowercase prop 115 // to avoid "Warning: Invalid DOM property". 116 return { 117 fetchpriority: fetchPriority 118 }; 119} 120const ImageElement = /*#__PURE__*/ (0, _react.forwardRef)((param, forwardedRef)=>{ 121 let { src, srcSet, sizes, height, width, decoding, className, style, fetchPriority, placeholder, loading, unoptimized, fill, onLoadRef, onLoadingCompleteRef, setBlurComplete, setShowAltText, sizesInput, onLoad, onError, ...rest } = param; 122 return /*#__PURE__*/ (0, _jsxruntime.jsx)("img", { 123 ...rest, 124 ...getDynamicProps(fetchPriority), 125 // It's intended to keep `loading` before `src` because React updates 126 // props in order which causes Safari/Firefox to not lazy load properly. 127 // See https://github.com/facebook/react/issues/25883 128 loading: loading, 129 width: width, 130 height: height, 131 decoding: decoding, 132 "data-nimg": fill ? "fill" : "1", 133 className: className, 134 style: style, 135 // It's intended to keep `src` the last attribute because React updates 136 // attributes in order. If we keep `src` the first one, Safari will 137 // immediately start to fetch `src`, before `sizes` and `srcSet` are even 138 // updated by React. That causes multiple unnecessary requests if `srcSet` 139 // and `sizes` are defined. 140 // This bug cannot be reproduced in Chrome or Firefox. 141 sizes: sizes, 142 srcSet: srcSet, 143 src: src, 144 ref: (0, _react.useCallback)((img)=>{ 145 if (forwardedRef) { 146 if (typeof forwardedRef === "function") forwardedRef(img); 147 else if (typeof forwardedRef === "object") { 148 // @ts-ignore - .current is read only it's usually assigned by react internally 149 forwardedRef.current = img; 150 } 151 } 152 if (!img) { 153 return; 154 } 155 if (onError) { 156 // If the image has an error before react hydrates, then the error is lost. 157 // The workaround is to wait until the image is mounted which is after hydration, 158 // then we set the src again to trigger the error handler (if there was an error). 159 // eslint-disable-next-line no-self-assign 160 img.src = img.src; 161 } 162 if (false) {} 163 if (img.complete) { 164 handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput); 165 } 166 }, [ 167 src, 168 placeholder, 169 onLoadRef, 170 onLoadingCompleteRef, 171 setBlurComplete, 172 onError, 173 unoptimized, 174 sizesInput, 175 forwardedRef 176 ]), 177 onLoad: (event)=>{ 178 const img = event.currentTarget; 179 handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput); 180 }, 181 onError: (event)=>{ 182 // if the real image fails to load, this will ensure "alt" is visible 183 setShowAltText(true); 184 if (placeholder !== "empty") { 185 // If the real image fails to load, this will still remove the placeholder. 186 setBlurComplete(true); 187 } 188 if (onError) { 189 onError(event); 190 } 191 } 192 }); 193}); 194function ImagePreload(param) { 195 let { isAppRouter, imgAttributes } = param; 196 const opts = { 197 as: "image", 198 imageSrcSet: imgAttributes.srcSet, 199 imageSizes: imgAttributes.sizes, 200 crossOrigin: imgAttributes.crossOrigin, 201 referrerPolicy: imgAttributes.referrerPolicy, 202 ...getDynamicProps(imgAttributes.fetchPriority) 203 }; 204 if (isAppRouter && _reactdom.default.preload) { 205 // See https://github.com/facebook/react/pull/26940 206 _reactdom.default.preload(imgAttributes.src, opts); 207 return null; 208 } 209 return /*#__PURE__*/ (0, _jsxruntime.jsx)(_head.default, { 210 children: /*#__PURE__*/ (0, _jsxruntime.jsx)("link", { 211 rel: "preload", 212 // Note how we omit the `href` attribute, as it would only be relevant 213 // for browsers that do not support `imagesrcset`, and in those cases 214 // it would cause the incorrect image to be preloaded. 215 // 216 // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset 217 href: imgAttributes.srcSet ? undefined : imgAttributes.src, 218 ...opts 219 }, "__nimg-" + imgAttributes.src + imgAttributes.srcSet + imgAttributes.sizes) 220 }); 221} 222const Image = /*#__PURE__*/ (0, _react.forwardRef)((props, forwardedRef)=>{ 223 const pagesRouter = (0, _react.useContext)(_routercontextsharedruntime.RouterContext); 224 // We're in the app directory if there is no pages router. 225 const isAppRouter = !pagesRouter; 226 const configContext = (0, _react.useContext)(_imageconfigcontextsharedruntime.ImageConfigContext); 227 const config = (0, _react.useMemo)(()=>{ 228 var _c_qualities; 229 const c = configEnv || configContext || _imageconfig.imageConfigDefault; 230 const allSizes = [ 231 ...c.deviceSizes, 232 ...c.imageSizes 233 ].sort((a, b)=>a - b); 234 const deviceSizes = c.deviceSizes.sort((a, b)=>a - b); 235 const qualities = (_c_qualities = c.qualities) == null ? void 0 : _c_qualities.sort((a, b)=>a - b); 236 return { 237 ...c, 238 allSizes, 239 deviceSizes, 240 qualities 241 }; 242 }, [ 243 configContext 244 ]); 245 const { onLoad, onLoadingComplete } = props; 246 const onLoadRef = (0, _react.useRef)(onLoad); 247 (0, _react.useEffect)(()=>{ 248 onLoadRef.current = onLoad; 249 }, [ 250 onLoad 251 ]); 252 const onLoadingCompleteRef = (0, _react.useRef)(onLoadingComplete); 253 (0, _react.useEffect)(()=>{ 254 onLoadingCompleteRef.current = onLoadingComplete; 255 }, [ 256 onLoadingComplete 257 ]); 258 const [blurComplete, setBlurComplete] = (0, _react.useState)(false); 259 const [showAltText, setShowAltText] = (0, _react.useState)(false); 260 const { props: imgAttributes, meta: imgMeta } = (0, _getimgprops.getImgProps)(props, { 261 defaultLoader: _imageloader.default, 262 imgConf: config, 263 blurComplete, 264 showAltText 265 }); 266 return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, { 267 children: [ 268 /*#__PURE__*/ (0, _jsxruntime.jsx)(ImageElement, { 269 ...imgAttributes, 270 unoptimized: imgMeta.unoptimized, 271 placeholder: imgMeta.placeholder, 272 fill: imgMeta.fill, 273 onLoadRef: onLoadRef, 274 onLoadingCompleteRef: onLoadingCompleteRef, 275 setBlurComplete: setBlurComplete, 276 setShowAltText: setShowAltText, 277 sizesInput: props.sizes, 278 ref: forwardedRef 279 }), 280 imgMeta.priority ? /*#__PURE__*/ (0, _jsxruntime.jsx)(ImagePreload, { 281 isAppRouter: isAppRouter, 282 imgAttributes: imgAttributes 283 }) : null 284 ] 285 }); 286}); 287if ((typeof exports.default === "function" || typeof exports.default === "object" && exports.default !== null) && typeof exports.default.__esModule === "undefined") { 288 Object.defineProperty(exports.default, "__esModule", { 289 value: true 290 });
291 Object.assign(exports.default, exports); 292 module.exports = exports.default; 293} //# sourceMappingURL=image-component.js.map 294 295 296/***/ }), 297 298/***/ 91436: 299/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 300 301 302Object.defineProperty(exports, "__esModule", ({ 303 value: true 304})); 305Object.defineProperty(exports, "AmpStateContext", ({ 306 enumerable: true, 307 get: function() { 308 return AmpStateContext; 309 } 310})); 311const _interop_require_default = __webpack_require__(47043); 312const _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(2265)); 313const AmpStateContext = _react.default.createContext({}); 314if (false) {} //# sourceMappingURL=amp-context.shared-runtime.js.map 315 316 317/***/ }), 318 319/***/ 23964: 320/***/ (function(__unused_webpack_module, exports) { 321 322 323Object.defineProperty(exports, "__esModule", ({ 324 value: true 325})); 326Object.defineProperty(exports, "isInAmpMode", ({ 327 enumerable: true, 328 get: function() { 329 return isInAmpMode; 330 } 331})); 332function isInAmpMode(param) { 333 let { ampFirst = false, hybrid = false, hasQuery = false } = param === void 0 ? {} : param; 334 return ampFirst || hybrid && hasQuery; 335} //# sourceMappingURL=amp-mode.js.map 336 337 338/***/ }), 339 340/***/ 55346: 341/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 342 343 344Object.defineProperty(exports, "__esModule", ({ 345 value: true 346})); 347Object.defineProperty(exports, "getImgProps", ({ 348 enumerable: true, 349 get: function() { 350 return getImgProps; 351 } 352})); 353const _warnonce = __webpack_require__(31765); 354const _imageblursvg = __webpack_require__(96496); 355const _imageconfig = __webpack_require__(90128); 356const VALID_LOADING_VALUES = (/* unused pure expression or super */ null && ([ 357 "lazy", 358 "eager", 359 undefined 360])); 361function isStaticRequire(src) { 362 return src.default !== undefined; 363} 364function isStaticImageData(src) { 365 return src.src !== undefined; 366} 367function isStaticImport(src) { 368 return typeof src === "object" && (isStaticRequire(src) || isStaticImageData(src)); 369} 370const allImgs = new Map(); 371let perfObserver; 372function getInt(x) { 373 if (typeof x === "undefined") { 374 return x; 375 } 376 if (typeof x === "number") { 377 return Number.isFinite(x) ? x : NaN; 378 } 379 if (typeof x === "string" && /^[0-9]+$/.test(x)) { 380 return parseInt(x, 10); 381 } 382 return NaN; 383} 384function getWidths(param, width, sizes) { 385 let { deviceSizes, allSizes } = param; 386 if (sizes) { 387 // Find all the "vw" percent sizes used in the sizes prop 388 const viewportWidthRe = /(^|\s)(1?\d?\d)vw/g; 389 const percentSizes = []; 390 for(let match; match = viewportWidthRe.exec(sizes); match){ 391 percentSizes.push(parseInt(match[2])); 392 } 393 if (percentSizes.length) { 394 const smallestRatio = Math.min(...percentSizes) * 0.01; 395 return { 396 widths: allSizes.filter((s)=>s >= deviceSizes[0] * smallestRatio), 397 kind: "w" 398 }; 399 } 400 return { 401 widths: allSizes, 402 kind: "w" 403 }; 404 } 405 if (typeof width !== "number") { 406 return { 407 widths: deviceSizes, 408 kind: "w" 409 }; 410 } 411 const widths = [ 412 ...new Set(// > are actually 3x in the green color, but only 1.5x in the red and 413 // > blue colors. Showing a 3x resolution image in the app vs a 2x 414 // > resolution image will be visually the same, though the 3x image 415 // > takes significantly more data. Even true 3x resolution screens are 416 // > wasteful as the human eye cannot see that level of detail without 417 // > something like a magnifying glass. 418 // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html 419 [ 420 width, 421 width * 2 /*, width * 3*/ 422 ].map((w)=>allSizes.find((p)=>p >= w) || allSizes[allSizes.length - 1])) 423 ]; 424 return { 425 widths, 426 kind: "x" 427 }; 428} 429function generateImgAttrs(param) { 430 let { config, src, unoptimized, width, quality, sizes, loader } = param;
431 if (unoptimized) { 432 return { 433 src, 434 srcSet: undefined, 435 sizes: undefined 436 }; 437 } 438 const { widths, kind } = getWidths(config, width, sizes); 439 const last = widths.length - 1; 440 return { 441 sizes: !sizes && kind === "w" ? "100vw" : sizes, 442 srcSet: widths.map((w, i)=>loader({ 443 config, 444 src, 445 quality, 446 width: w 447 }) + " " + (kind === "w" ? w : i + 1) + kind).join(", "), 448 // It's intended to keep `src` the last attribute because React updates 449 // attributes in order. If we keep `src` the first one, Safari will 450 // immediately start to fetch `src`, before `sizes` and `srcSet` are even 451 // updated by React. That causes multiple unnecessary requests if `srcSet` 452 // and `sizes` are defined. 453 // This bug cannot be reproduced in Chrome or Firefox. 454 src: loader({ 455 config, 456 src, 457 quality, 458 width: widths[last] 459 }) 460 }; 461} 462function getImgProps(param, _state) { 463 let { src, sizes, unoptimized = false, priority = false, loading, className, quality, width, height, fill = false, style, overrideSrc, onLoad, onLoadingComplete, placeholder = "empty", blurDataURL, fetchPriority, decoding = "async", layout, objectFit, objectPosition, lazyBoundary, lazyRoot, ...rest } = param; 464 const { imgConf, showAltText, blurComplete, defaultLoader } = _state; 465 let config;
466 let c = imgConf || _imageconfig.imageConfigDefault; 467 if ("allSizes" in c) { 468 config = c; 469 } else { 470 var _c_qualities; 471 const allSizes = [ 472 ...c.deviceSizes, 473 ...c.imageSizes 474 ].sort((a, b)=>a - b); 475 const deviceSizes = c.deviceSizes.sort((a, b)=>a - b); 476 const qualities = (_c_qualities = c.qualities) == null ? void 0 : _c_qualities.sort((a, b)=>a - b); 477 config = { 478 ...c, 479 allSizes, 480 deviceSizes, 481 qualities 482 }; 483 } 484 if (typeof defaultLoader === "undefined") { 485 throw new Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"); 486 } 487 let loader = rest.loader || defaultLoader; 488 // Remove property so it's not spread on <img> element 489 delete rest.loader; 490 delete rest.srcSet; 491 // This special value indicates that the user 492 // didn't define a "loader" prop or "loader" config. 493 const isDefaultLoader = "__next_img_default" in loader; 494 if (isDefaultLoader) { 495 if (config.loader === "custom") { 496 throw new Error('Image with src "' + src + '" is missing "loader" prop.' + "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader"); 497 } 498 } else { 499 // The user defined a "loader" prop or config. 500 // Since the config object is internal only, we 501 // must not pass it to the user-defined "loader". 502 const customImageLoader = loader; 503 loader = (obj)=>{ 504 const { config: _, ...opts } = obj; 505 return customImageLoader(opts); 506 }; 507 } 508 if (layout) { 509 if (layout === "fill") { 510 fill = true; 511 } 512 const layoutToStyle = { 513 intrinsic: { 514 maxWidth: "100%", 515 height: "auto" 516 }, 517 responsive: { 518 width: "100%", 519 height: "auto" 520 } 521 }; 522 const layoutToSizes = { 523 responsive: "100vw", 524 fill: "100vw" 525 }; 526 const layoutStyle = layoutToStyle[layout]; 527 if (layoutStyle) { 528 style = { 529 ...style, 530 ...layoutStyle 531 }; 532 } 533 const layoutSizes = layoutToSizes[layout]; 534 if (layoutSizes && !sizes) { 535 sizes = layoutSizes; 536 } 537 } 538 let staticSrc = ""; 539 let widthInt = getInt(width); 540 let heightInt = getInt(height); 541 let blurWidth; 542 let blurHeight; 543 if (isStaticImport(src)) { 544 const staticImageData = isStaticRequire(src) ? src.default : src; 545 if (!staticImageData.src) { 546 throw new Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received " + JSON.stringify(staticImageData)); 547 } 548 if (!staticImageData.height || !staticImageData.width) { 549 throw new Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received " + JSON.stringify(staticImageData)); 550 } 551 blurWidth = staticImageData.blurWidth; 552 blurHeight = staticImageData.blurHeight; 553 blurDataURL = blurDataURL || staticImageData.blurDataURL; 554 staticSrc = staticImageData.src; 555 if (!fill) { 556 if (!widthInt && !heightInt) { 557 widthInt = staticImageData.width; 558 heightInt = staticImageData.height; 559 } else if (widthInt && !heightInt) { 560 const ratio = widthInt / staticImageData.width; 561 heightInt = Math.round(staticImageData.height * ratio); 562 } else if (!widthInt && heightInt) { 563 const ratio = heightInt / staticImageData.height; 564 widthInt = Math.round(staticImageData.width * ratio); 565 } 566 } 567 } 568 src = typeof src === "string" ? src : staticSrc; 569 let isLazy = !priority && (loading === "lazy" || typeof loading === "undefined"); 570 if (!src || src.startsWith("data:") || src.startsWith("blob:")) { 571 // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs 572 unoptimized = true; 573 isLazy = false;
574 } 575 if (config.unoptimized) { 576 unoptimized = true; 577 } 578 if (isDefaultLoader && src.endsWith(".svg") && !config.dangerouslyAllowSVG) { 579 // Special case to make svg serve as-is to avoid proxying 580 // through the built-in Image Optimization API. 581 unoptimized = true; 582 } 583 if (priority) { 584 fetchPriority = "high"; 585 } 586 const qualityInt = getInt(quality); 587 if (false) {} 588 const imgStyle = Object.assign(fill ? { 589 position: "absolute", 590 height: "100%", 591 width: "100%", 592 left: 0, 593 top: 0, 594 right: 0, 595 bottom: 0, 596 objectFit, 597 objectPosition 598 } : {}, showAltText ? {} : { 599 color: "transparent" 600 }, style); 601 const backgroundImage = !blurComplete && placeholder !== "empty" ? placeholder === "blur" ? 'url("data:image/svg+xml;charset=utf-8,' + (0, _imageblursvg.getImageBlurSvg)({ 602 widthInt, 603 heightInt, 604 blurWidth, 605 blurHeight, 606 blurDataURL: blurDataURL || "", 607 objectFit: imgStyle.objectFit 608 }) + '")' : 'url("' + placeholder + '")' // assume `data:image/` 609 : null; 610 let placeholderStyle = backgroundImage ? { 611 backgroundSize: imgStyle.objectFit || "cover", 612 backgroundPosition: imgStyle.objectPosition || "50% 50%", 613 backgroundRepeat: "no-repeat", 614 backgroundImage 615 } : {}; 616 if (false) {} 617 const imgAttributes = generateImgAttrs({ 618 config, 619 src, 620 unoptimized, 621 width: widthInt, 622 quality: qualityInt, 623 sizes, 624 loader 625 }); 626 if (false) {} 627 const props = { 628 ...rest, 629 loading: isLazy ? "lazy" : loading, 630 fetchPriority, 631 width: widthInt, 632 height: heightInt, 633 decoding, 634 className, 635 style: { 636 ...imgStyle, 637 ...placeholderStyle 638 }, 639 sizes: imgAttributes.sizes, 640 srcSet: imgAttributes.srcSet, 641 src: overrideSrc || imgAttributes.src 642 }; 643 const meta = { 644 unoptimized, 645 priority, 646 placeholder, 647 fill 648 }; 649 return { 650 props, 651 meta 652 }; 653} //# sourceMappingURL=get-img-props.js.map 654 655 656/***/ }), 657 658/***/ 38293: 659/***/ (function(module, exports, __webpack_require__) { 660 661/* __next_internal_client_entry_do_not_use__ cjs */ 662Object.defineProperty(exports, "__esModule", ({ 663 value: true 664})); 6650 && (0); 666function _export(target, all) { 667 for(var name in all)Object.defineProperty(target, name, { 668 enumerable: true, 669 get: all[name] 670 }); 671} 672_export(exports, { 673 default: function() { 674 return _default; 675 }, 676 defaultHead: function() { 677 return defaultHead; 678 } 679}); 680const _interop_require_default = __webpack_require__(47043); 681const _interop_require_wildcard = __webpack_require__(53099); 682const _jsxruntime = __webpack_require__(57437); 683const _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(2265)); 684const _sideeffect = /*#__PURE__*/ _interop_require_default._(__webpack_require__(17421)); 685const _ampcontextsharedruntime = __webpack_require__(91436); 686const _headmanagercontextsharedruntime = __webpack_require__(48701); 687const _ampmode = __webpack_require__(23964); 688const _warnonce = __webpack_require__(31765); 689function defaultHead(inAmpMode) { 690 if (inAmpMode === void 0) inAmpMode = false; 691 const head = [ 692 /*#__PURE__*/ (0, _jsxruntime.jsx)("meta", { 693 charSet: "utf-8" 694 }) 695 ]; 696 if (!inAmpMode) { 697 head.push(/*#__PURE__*/ (0, _jsxruntime.jsx)("meta", { 698 name: "viewport", 699 content: "width=device-width" 700 })); 701 } 702 return head; 703} 704function onlyReactElement(list, child) { 705 // React children can be "string" or "number" in this case we ignore them for backwards compat 706 if (typeof child === "string" || typeof child === "number") { 707 return list; 708 } 709 // Adds support for React.Fragment 710 if (child.type === _react.default.Fragment) { 711 return list.concat(_react.default.Children.toArray(child.props.children).reduce((fragmentList, fragmentChild)=>{ 712 if (typeof fragmentChild === "string" || typeof fragmentChild === "number") { 713 return fragmentList; 714 } 715 return fragmentList.concat(fragmentChild); 716 }, [])); 717 } 718 return list.concat(child); 719} 720const METATYPES = [ 721 "name", 722 "httpEquiv", 723 "charSet", 724 "itemProp" 725]; 726/* 727 returns a function for filtering head child elements 728 which shouldn't be duplicated, like <title/> 729 Also adds support for deduplicated `key` properties 730*/ function unique() {
731 const keys = new Set(); 732 const tags = new Set(); 733 const metaTypes = new Set(); 734 const metaCategories = {}; 735 return (h)=>{ 736 let isUnique = true; 737 let hasKey = false; 738 if (h.key && typeof h.key !== "number" && h.key.indexOf("$") > 0) { 739 hasKey = true; 740 const key = h.key.slice(h.key.indexOf("$") + 1); 741 if (keys.has(key)) { 742 isUnique = false; 743 } else { 744 keys.add(key); 745 } 746 } 747 // eslint-disable-next-line default-case 748 switch(h.type){ 749 case "title": 750 case "base": 751 if (tags.has(h.type)) { 752 isUnique = false; 753 } else { 754 tags.add(h.type); 755 } 756 break; 757 case "meta": 758 for(let i = 0, len = METATYPES.length; i < len; i++){ 759 const metatype = METATYPES[i]; 760 if (!h.props.hasOwnProperty(metatype)) continue; 761 if (metatype === "charSet") { 762 if (metaTypes.has(metatype)) { 763 isUnique = false; 764 } else { 765 metaTypes.add(metatype); 766 } 767 } else { 768 const category = h.props[metatype]; 769 const categories = metaCategories[metatype] || new Set(); 770 if ((metatype !== "name" || !hasKey) && categories.has(category)) { 771 isUnique = false; 772 } else { 773 categories.add(category); 774 metaCategories[metatype] = categories; 775 } 776 } 777 } 778 break; 779 } 780 return isUnique; 781 }; 782} 783/** 784 * 785 * @param headChildrenElements List of children of <Head> 786 */ function reduceComponents(headChildrenElements, props) { 787 const { inAmpMode } = props; 788 return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead(inAmpMode).reverse()).filter(unique()).reverse().map((c, i)=>{ 789 const key = c.key || i; 790 if ( true && !inAmpMode) { 791 if (c.type === "link" && c.props["href"] && // TODO(prateekbh@): Replace this with const from `constants` when the tree shaking works. 792 [ 793 "https://fonts.googleapis.com/css", 794 "https://use.typekit.net/" 795 ].some((url)=>c.props["href"].startsWith(url))) { 796 const newProps = { 797 ...c.props || {} 798 }; 799 newProps["data-href"] = newProps["href"]; 800 newProps["href"] = undefined; 801 // Add this attribute to make it easy to identify optimized tags 802 newProps["data-optimized-fonts"] = true; 803 return /*#__PURE__*/ _react.default.cloneElement(c, newProps); 804 } 805 } 806 if (false) {} 807 return /*#__PURE__*/ _react.default.cloneElement(c, { 808 key 809 }); 810 }); 811} 812/** 813 * This component injects elements to `<head>` of your page. 814 * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once. 815 */ function Head(param) { 816 let { children } = param; 817 const ampState = (0, _react.useContext)(_ampcontextsharedruntime.AmpStateContext); 818 const headManager = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext); 819 return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, { 820 reduceComponentsToState: reduceComponents, 821 headManager: headManager, 822 inAmpMode: (0, _ampmode.isInAmpMode)(ampState), 823 children: children 824 }); 825} 826const _default = Head; 827if ((typeof exports.default === "function" || typeof exports.default === "object" && exports.default !== null) && typeof exports.default.__esModule === "undefined") { 828 Object.defineProperty(exports.default, "__esModule", { 829 value: true 830 });
831 Object.assign(exports.default, exports); 832 module.exports = exports.default; 833} //# sourceMappingURL=head.js.map 834 835 836/***/ }), 837 838/***/ 96496: 839/***/ (function(__unused_webpack_module, exports) { 840 841/** 842 * A shared function, used on both client and server, to generate a SVG blur placeholder. 843 */ 844Object.defineProperty(exports, "__esModule", ({ 845 value: true 846})); 847Object.defineProperty(exports, "getImageBlurSvg", ({ 848 enumerable: true, 849 get: function() { 850 return getImageBlurSvg; 851 } 852})); 853function getImageBlurSvg(param) { 854 let { widthInt, heightInt, blurWidth, blurHeight, blurDataURL, objectFit } = param; 855 const std = 20; 856 const svgWidth = blurWidth ? blurWidth * 40 : widthInt; 857 const svgHeight = blurHeight ? blurHeight * 40 : heightInt; 858 const viewBox = svgWidth && svgHeight ? "viewBox='0 0 " + svgWidth + " " + svgHeight + "'" : ""; 859 const preserveAspectRatio = viewBox ? "none" : objectFit === "contain" ? "xMidYMid" : objectFit === "cover" ? "xMidYMid slice" : "none"; 860 return "%3Csvg xmlns='http://www.w3.org/2000/svg' " + viewBox + "%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='" + std + "'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='" + std + "'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='" + preserveAspectRatio + "' style='filter: url(%23b);' href='" + blurDataURL + "'/%3E%3C/svg%3E"; 861} //# sourceMappingURL=image-blur-svg.js.map 862 863 864/***/ }), 865 866/***/ 62589: 867/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 868 869 870Object.defineProperty(exports, "__esModule", ({ 871 value: true 872})); 873Object.defineProperty(exports, "ImageConfigContext", ({ 874 enumerable: true, 875 get: function() { 876 return ImageConfigContext; 877 } 878})); 879const _interop_require_default = __webpack_require__(47043); 880const _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(2265)); 881const _imageconfig = __webpack_require__(90128); 882const ImageConfigContext = _react.default.createContext(_imageconfig.imageConfigDefault); 883if (false) {} //# sourceMappingURL=image-config-context.shared-runtime.js.map 884 885 886/***/ }), 887 888/***/ 90128: 889/***/ (function(__unused_webpack_module, exports) { 890 891 892Object.defineProperty(exports, "__esModule", ({ 893 value: true 894})); 8950 && (0); 896function _export(target, all) { 897 for(var name in all)Object.defineProperty(target, name, { 898 enumerable: true, 899 get: all[name] 900 }); 901} 902_export(exports, { 903 VALID_LOADERS: function() { 904 return VALID_LOADERS; 905 }, 906 imageConfigDefault: function() { 907 return imageConfigDefault; 908 } 909}); 910const VALID_LOADERS = [ 911 "default", 912 "imgix", 913 "cloudinary", 914 "akamai", 915 "custom" 916]; 917const imageConfigDefault = { 918 deviceSizes: [ 919 640, 920 750, 921 828, 922 1080, 923 1200, 924 1920, 925 2048, 926 3840 927 ], 928 imageSizes: [ 929 16, 930 32, 931 48, 932 64, 933 96, 934 128, 935 256, 936 384 937 ], 938 path: "/_next/image", 939 loader: "default", 940 loaderFile: "", 941 domains: [], 942 disableStaticImages: false, 943 minimumCacheTTL: 60, 944 formats: [ 945 "image/webp" 946 ], 947 dangerouslyAllowSVG: false, 948 contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;", 949 contentDispositionType: "inline", 950 localPatterns: undefined, 951 remotePatterns: [], 952 qualities: undefined, 953 unoptimized: false 954}; //# sourceMappingURL=image-config.js.map 955 956 957/***/ }), 958 959/***/ 48461: 960/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 961 962 963Object.defineProperty(exports, "__esModule", ({ 964 value: true 965})); 9660 && (0); 967function _export(target, all) { 968 for(var name in all)Object.defineProperty(target, name, { 969 enumerable: true, 970 get: all[name] 971 }); 972} 973_export(exports, { 974 default: function() { 975 return _default; 976 }, 977 getImageProps: function() { 978 return getImageProps; 979 } 980}); 981const _interop_require_default = __webpack_require__(47043); 982const _getimgprops = __webpack_require__(55346); 983const _imagecomponent = __webpack_require__(65878); 984const _imageloader = /*#__PURE__*/ _interop_require_default._(__webpack_require__(5084)); 985function getImageProps(imgProps) { 986 const { props } = (0, _getimgprops.getImgProps)(imgProps, { 987 defaultLoader: _imageloader.default, 988 // This is replaced by webpack define plugin 989 imgConf: {"deviceSizes":[640,750,828,1080,1200,1920],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","dangerouslyAllowSVG":false,"unoptimized":true} 990 }); 991 // Normally we don't care about undefined props because we pass to JSX, 992 // but this exported function could be used by the end user for anything 993 // so we delete undefined props to clean it up a little. 994 for (const [key, value] of Object.entries(props)){ 995 if (value === undefined) { 996 delete props[key]; 997 } 998 } 999 return { 1000 props 1001 }; 1002} 1003const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map 1004 1005 1006/***/ }), 1007 1008/***/ 5084:
1009/***/ (function(__unused_webpack_module, exports) { 1010 1011 1012Object.defineProperty(exports, "__esModule", ({ 1013 value: true 1014})); 1015Object.defineProperty(exports, "default", ({ 1016 enumerable: true, 1017 get: function() { 1018 return _default; 1019 } 1020})); 1021const DEFAULT_Q = 75; 1022function defaultLoader(param) { 1023 let { config, src, width, quality } = param; 1024 var _config_qualities; 1025 if (false) {} 1026 const q = quality || ((_config_qualities = config.qualities) == null ? void 0 : _config_qualities.reduce((prev, cur)=>Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q) ? cur : prev)) || DEFAULT_Q; 1027 return config.path + "?url=" + encodeURIComponent(src) + "&w=" + width + "&q=" + q + ( false ? 0 : ""); 1028} 1029// We use this to determine if the import is the default loader 1030// or a custom loader defined by the user in next.config.js 1031defaultLoader.__next_img_default = true; 1032const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map 1033 1034 1035/***/ }), 1036 1037/***/ 17421: 1038/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 1039 1040 1041Object.defineProperty(exports, "__esModule", ({ 1042 value: true 1043})); 1044Object.defineProperty(exports, "default", ({ 1045 enumerable: true, 1046 get: function() { 1047 return SideEffect; 1048 } 1049})); 1050const _react = __webpack_require__(2265); 1051const isServer = typeof window === "undefined"; 1052const useClientOnlyLayoutEffect = isServer ? ()=>{} : _react.useLayoutEffect; 1053const useClientOnlyEffect = isServer ? ()=>{} : _react.useEffect; 1054function SideEffect(props) { 1055 const { headManager, reduceComponentsToState } = props; 1056 function emitChange() { 1057 if (headManager && headManager.mountedInstances) { 1058 const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean)); 1059 headManager.updateHead(reduceComponentsToState(headElements, props)); 1060 } 1061 } 1062 if (isServer) { 1063 var _headManager_mountedInstances; 1064 headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children); 1065 emitChange(); 1066 } 1067 useClientOnlyLayoutEffect(()=>{ 1068 var _headManager_mountedInstances; 1069 headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children); 1070 return ()=>{ 1071 var _headManager_mountedInstances; 1072 headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.delete(props.children); 1073 }; 1074 }); 1075 // We need to call `updateHead` method whenever the `SideEffect` is trigger in all 1076 // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s 1077 // being rendered, we only trigger the method from the last one. 1078 // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate` 1079 // singleton in the layout effect pass, and actually trigger it in the effect pass. 1080 useClientOnlyLayoutEffect(()=>{ 1081 if (headManager) { 1082 headManager._pendingUpdate = emitChange; 1083 } 1084 return ()=>{ 1085 if (headManager) { 1086 headManager._pendingUpdate = emitChange; 1087 } 1088 }; 1089 }); 1090 useClientOnlyEffect(()=>{ 1091 if (headManager && headManager._pendingUpdate) { 1092 headManager._pendingUpdate(); 1093 headManager._pendingUpdate = null; 1094 } 1095 return ()=>{ 1096 if (headManager && headManager._pendingUpdate) { 1097 headManager._pendingUpdate(); 1098 headManager._pendingUpdate = null; 1099 } 1100 }; 1101 }); 1102 return null; 1103} //# sourceMappingURL=side-effect.js.map 1104 1105 1106/***/ }) 1107 1108}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.