1<!doctype html> 2<html lang="ko"> 3 <head> 4 <meta charset="UTF-8" /> 5 <!-- CSP â XSS ë°ì ìì ìí층 (Fable.md ë³´ì finding). 6 ì¤ì© ì ì± : íµì¬ì ì¸ë¶ ì¶ì² ì¤í¬ë¦½í¸ ì°¨ë¨(youtube iframe_apië§ íì©)ê³¼ 7 frame/object ì í. 'unsafe-inline' scriptë Vite devì react-refresh 8 preamble ë문ì íìíê³ , connect-src https:/wss:ë ê°ë³ RAG í°ë 9 (*.trycloudflare.com)·smplr ì¬ì´ëí°í¸ CDN·백ìë를 í¬ê´íë¤. 10 accounts.google.com ì Google ë¡ê·¸ì¸(GIS) ë문ì script/style/frame ì ë¤ 11 íìíë¤ â ì¤í¬ë¦½í¸ë§ íì©íë©´ ë²í¼ì´ iframe ì´ë¼ ë ëëì§ ìëë¤. 12 'wasm-unsafe-eval' ì 기기 OCR(tesseract.js, public/tesseract/)ê³¼ pdf.js ì JBIG2·JPEG2000 13 ëì½ë(public/pdfjs-wasm/) ë문 â ë´ ë¦¬ì¼ë¶ 곡 ê°ì§ê° WebAssembly ë¡ ëë¤(2026-09-20). eval ì ì¬ì í ë§íë¤. --> 14 <meta http-equiv="Content-Security-Policy" content=" 15 default-src 'self'; 16 script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval' https://www.youtube.com https://s.ytimg.com https://accounts.google.com; 17 style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.jsdelivr.net https://accounts.google.com; 18 font-src 'self' data: https://fonts.gstatic.com https://cdn.jsdelivr.net; 19 img-src 'self' data: blob: https:; 20 media-src 'self' blob: https:; 21 connect-src 'self' https: wss: ws: blob: data:; 22 frame-src https://www.youtube.com https://www.youtube-nocookie.com https://accounts.google.com; 23 worker-src 'self' blob:; 24 object-src 'none'; 25 base-uri 'self'"> 26 <!-- íë¹ì½ â ì± ë¡ê³ (public/logo/LOGO_Jazzify.png)ìì ìì±. ìì ì ììí° ì´ëª¨ì§ë¥¼ ë£ì 27 SVG ë¼ ë¸ë¼ì°ì ·OS ë§ë¤ ë¤ë¥¸ 모ìì¼ë¡ ê·¸ë ¤ì¡ë¤(ì´ëª¨ì§ í°í¸ ìì¡´). 28 .ico ë 16~256px ë¤ì¤ í´ìëë¼ í·ë¶ë§í¬Â·ì¦ê²¨ì°¾ê¸°ìì ê°ê° ì ëª íë¤. --> 29 <link rel="icon" href="/favicon.ico" sizes="any" /> 30 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" /> 31 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" /> 32 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no" /> 33 <meta name="mobile-web-app-capable" content="yes" /> 34 <meta name="apple-mobile-web-app-capable" content="yes" /> 35 <meta name="apple-mobile-web-app-status-bar-style" content="default" /> 36 <!-- JS ë¶í ì ê¸°ë³¸ê° â ë¼ì´í¸ ìë¨ ë°(barTop) ì. ë¶í ë¤ìë Root ê° 37 ì§ê¸ í ë§ì ë§ì¶° ê°±ì íë¤(useThemeColorMeta). ìì ì #ffffff ë¡ ê³ ì ì´ë¼ 38 ë¤í¬ë¡ ì°ë©´ 주ì창·ìíë°ë§ í° ë ë¡ ë¨ìë¤(2026-09-02). --> 39 <meta name="theme-color" content="#F8F8F8" /> 40 <title>Jazzify</title> 41 <link rel="preconnect" href="https://fonts.googleapis.com"> 42 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 43 <!-- Google ë¡ê·¸ì¸(GIS) â ì°ê²°ë§ 미리 ì´ì´ ëë¤. ì¤í¬ë¦½í¸ ìì²´(266KB)ë ë¡ê·¸ì¸ì´ 44 íìí´ì§ ë ë°ì§ë§, DNS+TLS ê° ì¤ì¸¡ 0.73ì´ë¼ ê·¸ë§í¼ì ë기ìì ëºë¤. --> 45 <link rel="preconnect" href="https://accounts.google.com" crossorigin> 46 <!-- ë¸ëë ì´ë¯¸ì§ â <img> ë JS ë¶í íìì¼ ì겨ì ë¡ê³ ê° ëª ì´ ë¦ê² 47 'ë¿ ' íê³ ë´ë¤(2026-09-01 ì ê³ ). HTML ë¨ê³ìì 미리 ë°ì ëë©´ React ê° 48 그릴 ëë ì´ë¯¸ ìºìì ìë¤. webp ì¶ìí(33KB)ì´ë¼ ëë¹ë¼ë 무ìí ìì¤. 49 ì±í ë¹ íë©´ì© LOGO_Jazzify@256 ì preload ìì ëºë¤ â ëë¶ë¶ íë©´ì´ ëª ì´ 50 ìì ì ì¨ì ë¸ë¼ì°ì ê° ë§¤ íì´ì§ ê²½ê³ ë¥¼ ëë¤(2026-09-06 ì ê² B4). 51 ì본 PNG ë PDF ë´ë³´ë´ê¸° ì ì©ì¼ë¡ ë¨ì ìë¤ â ì§ì°ì§ ë§ ê². --> 52 <link rel="preload" as="image" href="/[email protected]"> 53 <!-- Preload the chord font at top priority so it's already downloaded by 54 the time React renders the lead-sheet â eliminates the brief flash of 55 DM Sans where chord symbols look broken. crossorigin matches the 56 @font-face request so the browser actually uses the preloaded copy. --> 57 <link rel="preload" as="font" type="font/otf" href="/MuseJazzText.otf" crossorigin> 58 <!-- Bravura: SMuFL íì¤ ìì í°í¸. íë í¸Â·í´ë° ë²í¼ì ì ë³´ 기í¸(ììí· 59 ìí°íë ì´ì ·ìì리í·ì¸ë¨/ì½ë¤ â¦)를 ì¤ì ì ë³´ì ê°ì ê¸ë¦¬íë¡ ì°ëë¤.
60 (PDF ë´ë³´ë´ê¸°(scoreToPdf)ììë ê°ì íì¼ì ìë² ëíë¤) 61 62 fetchpriority=low: ë ë¤ 468KBì¸ë° **ì ë³´ íë©´ììë§** ì°ì¸ë¤(í·ì±í ì 63 ê¸ë¦¬íê° ìë¤). 미리 ë°ë ê² ìì²´ë ê·¸ëë¡ ëë â 빼면 첫 ì ë³´ìì 64 font-display:block ì´ ê·¸ëë¡ ë¹ì¹¸ì¼ë¡ ëê°ë¤ â 첫 íë©´ JS ë¤ë¡ ììë§ 65 물린ë¤. ì§ì ì íë ë¸ë¼ì°ì ë ìì±ì 무ìí´ ìì ëì ê·¸ëë¡ë¤. --> 66 <link rel="preload" as="font" type="font/woff2" href="/bravura.woff2" crossorigin fetchpriority="low"> 67 <link rel="preload" as="font" type="font/woff2" href="/petaluma.woff2" crossorigin fetchpriority="low"> 68 <style> 69 /* Petaluma(Steinberg, OFL) â ìê¸ì¨ ì¬ì¦ ìì í°í¸. **ìì리íë§** ì´ í°í¸ë¡ 70 그린ë¤(ì¬ì©ì ì§ì 2026-08-25: 리ì¼ë¶í ëììì리í). SMuFL íì¤ì´ë¼ 71 Bravura ì ê°ì ì½ëí¬ì¸í¸(U+E050 ë±)를 ì´ë¤ â VexFlow ë²ë¤ìì ì¶ì¶. */ 72 @font-face { 73 font-family: 'Petaluma'; 74 src: url('/petaluma.woff2') format('woff2'); 75 font-weight: normal; 76 font-style: normal; 77 /* block â SMuFL ì ì¬ì¤ìì(U+E0xx) ì½ëí¬ì¸í¸ë¼ í´ë°± í°í¸ì ê¸ë¦¬íê° 78 **ìì ìë¤**. swap ì´ë©´ 첫 íì¸í¸ê° ëë¶(tofu)·ë¹ì¹¸ì¼ë¡ ëê°ê³ í°í¸ê° 79 ì¨ ë¤ìì¼ ìíê° ì겨 "ìíê° ê¹¨ì ¸ ë³´ì¸ë¤"ê° ëë¤(2026-08-25 ì¤ì¸¡: 80 첫 ë¡ë ì document.fonts.check('40px Petaluma') === false). 81 Bravura ì ê°ì block ì¼ë¡ ë§ì¶ë¤. */ 82 font-display: block; 83 } 84 @font-face { 85 font-family: 'Bravura'; 86 src: url('/bravura.woff2') format('woff2'); 87 font-weight: normal; 88 font-style: normal; 89 font-display: block; 90 } 91 @font-face { 92 font-family: 'MuseJazz Text'; 93 src: url('/MuseJazzText.otf') format('opentype'); 94 font-weight: normal; 95 font-style: normal; 96 /* `block` over `swap`: keeps chord text invisible for up to 3s so it 97 never paints with the wrong (DM Sans) glyphs in SVG, where browsers 98 don't always re-flow after a font swap. Combined with the preload 99 above, the wait is typically <100ms in practice. */ 100 font-display: block; 101 } 102 /* Caveat(OFL) â 리ëìí¸ A/B ì¹ì ë¼ë²¨ì í기체. Google Fonts CDN ì´ ìëë¼ 103 **ìì²´ í¸ì¤í **ì´ë¤: (1) ë¤ì´í°ë¸ ì ¸Â·ì¤íë¼ì¸ìì CDN í°í¸ë 깨ì§ë¤ 104 (scoreFont.ts ì Finale Ash ì ê°ì ì´ì ), (2) A4 PDF ë´ë³´ë´ê¸°ê° 105 `chartToA4Pdf` ì LOCAL_FONTS ë¡ ê°ì íì¼ì ìë² ëí´ì¼ ì¸ì물ì ë¼ë²¨ì´ 106 íë©´ê³¼ ê°ì ìì²´ë¡ ëì¨ë¤. latin ìë¸ì ë§ ë°ì 51KB. */ 107 @font-face { 108 font-family: 'Caveat'; 109 src: url('/caveat.woff2') format('woff2'); 110 font-weight: 700; 111 font-style: normal; 112 /* swap â í´ë°±(MuseJazzâPretendard)ìë A/B/C ê¸ë¦¬íê° ìì´ ë¹ì¹¸ì´ ëì§ 113 ìëë¤. ìì í°í¸ë¤ê³¼ ë¬ë¦¬ block ì¼ë¡ ë§ì ì´ì ê° ìë¤. */ 114 font-display: swap; 115 } 116 </style> 117 <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;700&family=Noto+Serif+KR:wght@400;600&family=Noto+Serif:ital,wght@0,400;0,600;0,700;1,400;1,600;1,700&family=Oswald:wght@600;700&display=swap" rel="stylesheet"> 118 <link href="https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css" rel="stylesheet"> 119
119<script type="module" crossorigin src="/assets/index-BuBZ3kKc.js"></script>
119 120 <link rel="modulepreload" crossorigin href="/assets/chunk-CMxvf4Kt.js"> 121 <link rel="modulepreload" crossorigin href="/assets/preload-helper-zJ_50EbN.js"> 122 <link rel="modulepreload" crossorigin href="/assets/dist-DE1p5HKj.js"> 123 <link rel="modulepreload" crossorigin href="/assets/react-DAHyUmas.js"> 124 <link rel="modulepreload" crossorigin href="/assets/chunk-6CSD65Y2-C2C_Tdf3.js"> 125 <link rel="modulepreload" crossorigin href="/assets/jsx-runtime-sLPvdpSW.js"> 126 <link rel="modulepreload" crossorigin href="/assets/styled-components.browser.esm-Txv4jtxo.js"> 127 <link rel="modulepreload" crossorigin href="/assets/auth-BwDQ6cyA.js"> 128 <link rel="modulepreload" crossorigin href="/assets/apiError-D_7tBKNE.js"> 129 <link rel="modulepreload" crossorigin href="/assets/sheetStaves-BxOI0gww.js"> 130 <link rel="modulepreload" crossorigin href="/assets/licks-DrllvYWo.js"> 131 <link rel="modulepreload" crossorigin href="/assets/publicOrigin-DZPeZN2k.js"> 132 <link rel="modulepreload" crossorigin href="/assets/sessions-C6c6cJG-.js"> 133 <link rel="modulepreload" crossorigin href="/assets/platform-Btlt7Ur2.js"> 134 <link rel="modulepreload" crossorigin href="/assets/nativeSheet-C9KrhAKC.js"> 135 <link rel="modulepreload" crossorigin href="/assets/GlassSquare-B49-Jdjg.js"> 136 <link rel="modulepreload" crossorigin href="/assets/notifications-Db1r7PwO.js"> 137 <link rel="modulepreload" crossorigin href="/assets/spelling-D184s6u9.js"> 138 <link rel="modulepreload" crossorigin href="/assets/leadSheetChordEdit-BqH1MXmC.js"> 139 <link rel="modulepreload" crossorigin href="/assets/theme-DhDuWyCj.js"> 140 <link rel="modulepreload" crossorigin href="/assets/AppPreviewContext-CkWtYgry.js"> 141 <link rel="modulepreload" crossorigin href="/assets/useDialogKeys-Cc7PNGat.js"> 142 <link rel="modulepreload" crossorigin href="/assets/jazz-harmony-CLONuMqd.js"> 143 <link rel="modulepreload" crossorigin href="/assets/playerSettings-BfZEV5Zn.js"> 144 <link rel="modulepreload" crossorigin href="/assets/swing-Bx1pL2bX.js"> 145 <link rel="modulepreload" crossorigin href="/assets/engine-CGgsgEMp.js"> 146 <link rel="modulepreload" crossorigin href="/assets/parseChordParts-C8VdbgWG.js"> 147 <link rel="modulepreload" crossorigin href="/assets/omrImageStore-qQAc2obu.js"> 148 <link rel="modulepreload" crossorigin href="/assets/prefsStore-EwSU00I2.js"> 149 <link rel="modulepreload" crossorigin href="/assets/pagePrefs-DUs9wWQZ.js"> 150 </head> 151 <body> 152 <div id="root"></div> 153 </body> 154</html>
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.