diff --git a/UPDATES.md b/UPDATES.md index e4673ca..506bced 100644 --- a/UPDATES.md +++ b/UPDATES.md @@ -1,9 +1,13 @@ --- -updatedAt: 2026-10-07T08:23:52.000Z +updatedAt: 2026-10-07T12:57:51.000Z --- ## 2026년 10월 7일 +### 악곡 목록에 재킷 함께 복사 + +`IMPROVED` 악곡 목록의 ‘목록 복사’에 곡 재킷을 추가했습니다. 번호·재킷·제목 순서로 복사하며, 재킷은 작은 이미지로, 번호와 제목은 편집 가능한 텍스트로 유지합니다. 난이도·레벨은 검색 결과, 선택 목록, 복사 내용에서 제외하고 난이도 선택 항목을 제거했습니다. 일반 텍스트 입력란에는 번호·제목만 붙여넣고, 자동 복사를 사용할 수 없으면 재킷과 텍스트가 있는 복사용 목록을 직접 선택해 복사할 수 있습니다. + ### 카드·의상 효과 메뉴 분리 `NEW` 카드 목록 상단에 ‘카드 / 의상 효과’ 서브 메뉴를 추가했습니다. ★4·★5 리더 의상을 발동 조건의 속성·기수, 강화 효과, 획득 카드 등급·이격, 멤버 기수로 필터링할 수 있습니다. 스탯 증가율과 스코어 서포트 수치를 각각 정렬하며, 두 효과가 함께 있는 의상도 각각 표시합니다. 강화 효과의 스탯은 마크와 이름을 함께 표시합니다. 여러 의상의 상세를 동시에 펼쳐 비교할 수 있고 필터·정렬 설정은 다음 방문에도 유지합니다. 카드 상세의 의상 효과에서 해당 의상으로 바로 이동해 상세를 펼칠 수 있습니다. diff --git a/docs/game-data-source.md b/docs/game-data-source.md index bdfd058..d3f1148 100644 --- a/docs/game-data-source.md +++ b/docs/game-data-source.md @@ -38,6 +38,12 @@ | 과거 이벤트 기간·배율 | `src/lib/data/events.ts`의 기존 수동 기록. 당시 외부 출처 주석을 유지. 현재 DB에서 이벤트별 설정을 찾지 못함. 기존 기록의 기간·배율은 그대로 보존 | | 카드 별칭·표시명 | `data/card-overrides.csv`의 사용자 편집 설정 | +### 악곡 재킷 이미지 + +`src/lib/data/song-jackets.json`은 현재 앱 악곡 카탈로그의 곡 ID를 해시가 고정된 Android `Music.json`의 `jacketAssetId`에 연결합니다. 이미지는 별도 공식 게임 CDN의 `img_music_jacket_` 번들에서 추출했으며, DB에서 추출한 이미지로 표시하지 않습니다. + +2026-10-07 Octo revision 97에서 앱에 포함된 214곡의 번들 MD5를 확인하고 Texture2D를 최대 128px WebP로 변환했습니다. `static/images/song-jackets/`에 저장하고, 메타데이터에 번들 이름·MD5와 생성 이미지 SHA-256을 기록합니다. 재킷 추가·변경 시 현재 앱 카탈로그와 같은 DB 스냅샷의 매핑 및 공식 CDN 번들 해시를 다시 확인해야 합니다. 미래 공개 악곡과 카탈로그 밖의 자산은 포함하지 않습니다. + 이번 전환에서 기존 200곡/800채보를 로컬 게임 파일로 다시 생성하고, 공식 게임 CDN의 Octo revision 93에서 신규·누락 9곡의 SUS 36개를 확보했습니다. 현재 공개된 209곡/836채보를 생성했습니다. 아직 공개되지 않은 2곡은 DB 스냅샷에만 보관합니다. 공식 게임 자산과 서버의 이벤트 설정까지 DB 하나에 들어 있는 것은 아닙니다. HolodoriDB 원격 저장소나 다른 계산기 사이트 접속은 기본 수집 과정에서 필요하지 않습니다. diff --git a/src/lib/data/song-jackets.json b/src/lib/data/song-jackets.json new file mode 100644 index 0000000..fcd1945 --- /dev/null +++ b/src/lib/data/song-jackets.json @@ -0,0 +1,1941 @@ +{ + "schemaVersion": 1, + "source": "Official game CDN image assets; jacket IDs from captured Android game DB", + "masterDataSource": { + "kind": "android-master-db", + "masterDataVersion": "65badf8533aacbc04382f97f0f5f56740e761e6f5be6172d8440ae9061deebe7", + "locale": "kor", + "capturedAt": "2026-10-06T10:14:26.683Z", + "manifestSha256": "17a2e6ca556d415684917875670248a6ac6b8c9b65d4384998b3aa03f6bd787c" + }, + "catalogRevision": 97, + "collectedAt": "2026-10-07T12:39:25.187801+00:00", + "jackets": { + "m0001": { + "jacketAssetId": "m0001", + "assetName": "img_music_jacket_m0001", + "assetMd5": "068e87d1ce368f3d59235bb4acd4fbde", + "path": "/images/song-jackets/m0001.webp", + "sha256": "9f00adffc1b002b6511b35fc7aaaaf90afb0ba6b1cf364630c5fb965c1e761be", + "width": 128, + "height": 128 + }, + "m0002": { + "jacketAssetId": "m0002", + "assetName": "img_music_jacket_m0002", + "assetMd5": "c70edd352aa49c60836aa3f5967fb56d", + "path": "/images/song-jackets/m0002.webp", + "sha256": "c21d1a922f25470144e928973ad3f1254c04462b91836fcdbecd65cd6adbb686", + "width": 128, + "height": 128 + }, + "m0003": { + "jacketAssetId": "m0003", + "assetName": "img_music_jacket_m0003", + "assetMd5": "7b1fbb6daad9b442b4f5a50178c0c1ec", + "path": "/images/song-jackets/m0003.webp", + "sha256": "9989e84de46bb74d40f6c190552a0cd1ed75a27749c23703bbe6a91f738f67e1", + "width": 128, + "height": 128 + }, + "m0004": { + "jacketAssetId": "m0004", + "assetName": "img_music_jacket_m0004", + "assetMd5": "45d120f81bd88a9658a7105b7c3fb57f", + "path": "/images/song-jackets/m0004.webp", + "sha256": "70bfc01b0feb8369b832b2d5f186704e845d1a9e15b3209202f189fcb4f9ec58", + "width": 128, + "height": 128 + }, + "m0005": { + "jacketAssetId": "m0005", + "assetName": "img_music_jacket_m0005", + "assetMd5": "66b3d3cbba2a69c41e96156f017a80c2", + "path": "/images/song-jackets/m0005.webp", + "sha256": "21c47929a2b9b731e717c8e81fbdb07e1ca08aba17d32ab0fe7a72acdd60d29c", + "width": 128, + "height": 128 + }, + "m0006": { + "jacketAssetId": "m0006", + "assetName": "img_music_jacket_m0006", + "assetMd5": "3553173edfc4522471e4499ebaf114bb", + "path": "/images/song-jackets/m0006.webp", + "sha256": "839368c94972c271f21fc6d5ab6344196ca1021f87853d7ac620874ad7af6af6", + "width": 128, + "height": 128 + }, + "m0007": { + "jacketAssetId": "m0007", + "assetName": "img_music_jacket_m0007", + "assetMd5": "af0fff94b4b061cbd037564e0ea15412", + "path": "/images/song-jackets/m0007.webp", + "sha256": "4516798bd42fbbdf173beb0256668f6bd3dc1962509bca95b0b38fbc73422527", + "width": 128, + "height": 128 + }, + "m0008": { + "jacketAssetId": "m0008", + "assetName": "img_music_jacket_m0008", + "assetMd5": "d53c36883fd6e694a56baefef571035e", + "path": "/images/song-jackets/m0008.webp", + "sha256": "a13e6bb0c0510053922dc4842d15fc3663a382c25e3b4041b005adacda8f0d7c", + "width": 128, + "height": 128 + }, + "m0009": { + "jacketAssetId": "m0009", + "assetName": "img_music_jacket_m0009", + "assetMd5": "b2f3d747ccf03b5141d82b539cf91a4f", + "path": "/images/song-jackets/m0009.webp", + "sha256": "3bd6a17cf82c5d6538beb9e6220945101c5ea1a27ae739687fdda61064f71b54", + "width": 128, + "height": 128 + }, + "m0010": { + "jacketAssetId": "m0010", + "assetName": "img_music_jacket_m0010", + "assetMd5": "2ed3ee96aa3b798973afe7c4c964cc80", + "path": "/images/song-jackets/m0010.webp", + "sha256": "a5c969a434cd6adb7af4963bc31203ba8bf28659c2aef099db7f6a9e9e72e239", + "width": 128, + "height": 128 + }, + "m0012": { + "jacketAssetId": "m0012", + "assetName": "img_music_jacket_m0012", + "assetMd5": "5b472add23e37ac6489d72d4c219f61d", + "path": "/images/song-jackets/m0012.webp", + "sha256": "a6cce0bbca55b2ba40362c5c09a773eaae735e9c7f2a98c9a0b61582e8bf7fdb", + "width": 128, + "height": 128 + }, + "m0014": { + "jacketAssetId": "m0014", + "assetName": "img_music_jacket_m0014", + "assetMd5": "c102fa9d4423542c6e8bf2709aedfcf5", + "path": "/images/song-jackets/m0014.webp", + "sha256": "fb00c58d064c30ae0a3771933a0348b90ac891961bef34cc166615210c29fc85", + "width": 128, + "height": 128 + }, + "m0017": { + "jacketAssetId": "m0017", + "assetName": "img_music_jacket_m0017", + "assetMd5": "5033e3878438d998636ad01f5bd033a9", + "path": "/images/song-jackets/m0017.webp", + "sha256": "eaa6b20a28120b36240b12900100481e2e417a9e3adb14b7df669c929c5c72d4", + "width": 128, + "height": 128 + }, + "m0018": { + "jacketAssetId": "m0018", + "assetName": "img_music_jacket_m0018", + "assetMd5": "bf8ba01e6a520f5e24849ba00797e7a5", + "path": "/images/song-jackets/m0018.webp", + "sha256": "b7e0d1aa7bce1b5a748864ca7369d761b0b99f98d3ff0854444a3d2d007d3415", + "width": 128, + "height": 128 + }, + "m0020": { + "jacketAssetId": "m0020", + "assetName": "img_music_jacket_m0020", + "assetMd5": "7760f7a48350d8a4fd02b83bbbf0176a", + "path": "/images/song-jackets/m0020.webp", + "sha256": "03a8ebc878895fef1b955e60a971118aa523aaa89bb0bf260214a412a956abb1", + "width": 128, + "height": 128 + }, + "m0021": { + "jacketAssetId": "m0021", + "assetName": "img_music_jacket_m0021", + "assetMd5": "c4bc6283b59f56fd3bf395a9e32cc796", + "path": "/images/song-jackets/m0021.webp", + "sha256": "b69816c15b0188ff958009c1d25dbe969bc4c68fbb575a25b8058797d67cb53f", + "width": 128, + "height": 128 + }, + "m0022": { + "jacketAssetId": "m0022", + "assetName": "img_music_jacket_m0022", + "assetMd5": "d9ae12548644fb5b30d25c9c8887b6be", + "path": "/images/song-jackets/m0022.webp", + "sha256": "c5c2142a9f2e3fd3d9da00c524bb001dae824ce6a7bbc50ed3c0038f1022e708", + "width": 128, + "height": 128 + }, + "m0023": { + "jacketAssetId": "m0023", + "assetName": "img_music_jacket_m0023", + "assetMd5": "866cdb197bc94d35cdc2f19236b6d139", + "path": "/images/song-jackets/m0023.webp", + "sha256": "04f1d096edd44762d96bdab0bee5aa1e46e6f66fdb2cb294ee1f7f3cd57d2d2e", + "width": 128, + "height": 128 + }, + "m0026": { + "jacketAssetId": "m0026", + "assetName": "img_music_jacket_m0026", + "assetMd5": "1c028d9475f4d8e3c0ac2c8563a05028", + "path": "/images/song-jackets/m0026.webp", + "sha256": "e735dd5ce5c801f8eeb7d66bab734cd45232019ef99ecdec30b576c839583323", + "width": 128, + "height": 128 + }, + "m0028": { + "jacketAssetId": "m0028", + "assetName": "img_music_jacket_m0028", + "assetMd5": "2e40a86be109f5ea750c9b79b21c7cb0", + "path": "/images/song-jackets/m0028.webp", + "sha256": "e04ad3c484602d93079f73582365ea1919ca42ccf40168c727426b38113b5aba", + "width": 128, + "height": 128 + }, + "m0031": { + "jacketAssetId": "m0031", + "assetName": "img_music_jacket_m0031", + "assetMd5": "bd9bbb53ec83f97dbc64a59c17907ee6", + "path": "/images/song-jackets/m0031.webp", + "sha256": "a39b9c325c66b16247d86726caf6e47186cd11d8325adc011448115c8ab91c6e", + "width": 128, + "height": 128 + }, + "m0032": { + "jacketAssetId": "m0032", + "assetName": "img_music_jacket_m0032", + "assetMd5": "ed67c1561827fd6ab39dca5120e51b66", + "path": "/images/song-jackets/m0032.webp", + "sha256": "9e691754ab91550fd0db04438e3400565c2bea0fc45ed7b95f4f0faeb76d866b", + "width": 128, + "height": 128 + }, + "m0033": { + "jacketAssetId": "m0033", + "assetName": "img_music_jacket_m0033", + "assetMd5": "5476c110079e961e76a15a14304f471f", + "path": "/images/song-jackets/m0033.webp", + "sha256": "6226c98a072a927243af5abd898c86bf167b1f66dfa8c2102b384fa9058e0e5d", + "width": 128, + "height": 128 + }, + "m0034": { + "jacketAssetId": "m0034", + "assetName": "img_music_jacket_m0034", + "assetMd5": "9cf7004c799f1e2f4776d1a25e4f598c", + "path": "/images/song-jackets/m0034.webp", + "sha256": "2252d9cee32d8fae127248fdf3ad2ba026f869fe23bde79a8d30999ae9ed86a4", + "width": 128, + "height": 128 + }, + "m0035": { + "jacketAssetId": "m0035", + "assetName": "img_music_jacket_m0035", + "assetMd5": "7bab01cf4f11dea3abacacd7822c0846", + "path": "/images/song-jackets/m0035.webp", + "sha256": "cb457557cd020131d74294587573143bda96d69d9400b3fee8c85cd683c53361", + "width": 128, + "height": 128 + }, + "m0037": { + "jacketAssetId": "m0037", + "assetName": "img_music_jacket_m0037", + "assetMd5": "040869a324bc6b14f55de5a7331b0373", + "path": "/images/song-jackets/m0037.webp", + "sha256": "ade1231a8fea296c938283bce4a2d88e7ccc7cb52f24ef02c78b0a5cac5c2c4e", + "width": 128, + "height": 128 + }, + "m0038": { + "jacketAssetId": "m0038", + "assetName": "img_music_jacket_m0038", + "assetMd5": "06889130019428e1c1f20d4e3160a284", + "path": "/images/song-jackets/m0038.webp", + "sha256": "228ab2753703828657062a1957fb2d5523be6f226693775fc3697a2044cd6e86", + "width": 128, + "height": 128 + }, + "m0040": { + "jacketAssetId": "m0040", + "assetName": "img_music_jacket_m0040", + "assetMd5": "7c4b43532d867f87b269f4ba1ea64457", + "path": "/images/song-jackets/m0040.webp", + "sha256": "9a0f4d2e8fd271891215df31c88c8180b035a18f5bea5ed9fbe3016d2a74681d", + "width": 128, + "height": 128 + }, + "m0041": { + "jacketAssetId": "m0041", + "assetName": "img_music_jacket_m0041", + "assetMd5": "53882a2c983ef8652aaa7b66f1da973e", + "path": "/images/song-jackets/m0041.webp", + "sha256": "a915c05a072f2260dabdf8b81ff51e7a8b315427b20803674bf62417a2fbc515", + "width": 128, + "height": 128 + }, + "m0042": { + "jacketAssetId": "m0042", + "assetName": "img_music_jacket_m0042", + "assetMd5": "4ead8799d34bba5fbc8bc95bfd33a1fa", + "path": "/images/song-jackets/m0042.webp", + "sha256": "8a6eda71ebfaf1ee27467b68fb9d640de024761511e60782f88a69413eaa645c", + "width": 128, + "height": 128 + }, + "m0044": { + "jacketAssetId": "m0044", + "assetName": "img_music_jacket_m0044", + "assetMd5": "57c03705c7f6b420c72a2ebbd4a697d9", + "path": "/images/song-jackets/m0044.webp", + "sha256": "ea35450ab9d09c0e3b21f9c23633ebaae04b18c992e28213b99a2175b947945c", + "width": 128, + "height": 128 + }, + "m0046": { + "jacketAssetId": "m0046", + "assetName": "img_music_jacket_m0046", + "assetMd5": "f91515ed753be49d5481ef53efd38b2a", + "path": "/images/song-jackets/m0046.webp", + "sha256": "686520a5be34e1e7e469157c21b5f1223637376b566594e3e51b0418e017d63c", + "width": 128, + "height": 128 + }, + "m0047": { + "jacketAssetId": "m0047", + "assetName": "img_music_jacket_m0047", + "assetMd5": "fe12115d4e01bf426bfc9647cd88f531", + "path": "/images/song-jackets/m0047.webp", + "sha256": "8fdecdf1fdbba820aa502a27dc7764d013bce0a5af7873657658698b48863a94", + "width": 128, + "height": 128 + }, + "m0048": { + "jacketAssetId": "m0048", + "assetName": "img_music_jacket_m0048", + "assetMd5": "3b39b9cdc36d61ad3c8ada48b1ed9ac7", + "path": "/images/song-jackets/m0048.webp", + "sha256": "e512190177ac8c5765618b1dcb703069d87fe7132421fdb3114bd7e226e1bafc", + "width": 128, + "height": 128 + }, + "m0049": { + "jacketAssetId": "m0049", + "assetName": "img_music_jacket_m0049", + "assetMd5": "3787697932849e6e2126993514a31a94", + "path": "/images/song-jackets/m0049.webp", + "sha256": "f134c8357af8330257ad4b416cc9df1ab694b0ff22cb0300b99bac2a29521d25", + "width": 128, + "height": 128 + }, + "m0050": { + "jacketAssetId": "m0050", + "assetName": "img_music_jacket_m0050", + "assetMd5": "77073f6c36e19c339e3b797f7b96e5b4", + "path": "/images/song-jackets/m0050.webp", + "sha256": "7922551ac3221d7c40b9bcb42b0cd3701896c64ba07ed13f92cc999d3fdd80f3", + "width": 128, + "height": 128 + }, + "m0052": { + "jacketAssetId": "m0052", + "assetName": "img_music_jacket_m0052", + "assetMd5": "7dc3b98f9aeff1bd4f5f59dcd289933c", + "path": "/images/song-jackets/m0052.webp", + "sha256": "56fb1028b65ddff25bc93b513d8c664725fb6315b4c8221ee21dfe5fd7aec215", + "width": 128, + "height": 128 + }, + "m0053": { + "jacketAssetId": "m0053", + "assetName": "img_music_jacket_m0053", + "assetMd5": "0140dae26cabb576aeac38c23c5b6dfe", + "path": "/images/song-jackets/m0053.webp", + "sha256": "7a42af16f180428ba193190500f0aa5e86733ecfbd2a0c23945d41eb9a7868ac", + "width": 128, + "height": 128 + }, + "m0054": { + "jacketAssetId": "m0054", + "assetName": "img_music_jacket_m0054", + "assetMd5": "d76a6c625981ea3df4cbf3fff59cf229", + "path": "/images/song-jackets/m0054.webp", + "sha256": "a36126ec0edea8bdef3493439e5a42884ef4908dd247096556174267e31dcba7", + "width": 128, + "height": 128 + }, + "m0058": { + "jacketAssetId": "m0058", + "assetName": "img_music_jacket_m0058", + "assetMd5": "677f8e3be4eed2b31cfd047e73acb91e", + "path": "/images/song-jackets/m0058.webp", + "sha256": "552ca09f6077517dd1a2d62c200febc3bd18e4aa887e83d10307a7115a24691b", + "width": 128, + "height": 128 + }, + "m0060": { + "jacketAssetId": "m0060", + "assetName": "img_music_jacket_m0060", + "assetMd5": "b15ffde608e2d505f6f341d97129dbe8", + "path": "/images/song-jackets/m0060.webp", + "sha256": "c5fd8e36d8afc3b159d45a37a730f2337e3429bb6c27c365c2a46bb8d54ffbc6", + "width": 128, + "height": 128 + }, + "m0062": { + "jacketAssetId": "m0062", + "assetName": "img_music_jacket_m0062", + "assetMd5": "4cbec26ef798fc1176d70c00b0360d38", + "path": "/images/song-jackets/m0062.webp", + "sha256": "af48cb7cd6451581165b1fb0f8022496322531fb0e60fee853b6c020662bfd81", + "width": 128, + "height": 128 + }, + "m0063": { + "jacketAssetId": "m0063", + "assetName": "img_music_jacket_m0063", + "assetMd5": "a48005fef12107bd6b85d7e004be0b82", + "path": "/images/song-jackets/m0063.webp", + "sha256": "bbe854659c26cf903e0fbc3f4aafb3d9e4a73c963a7683e283cb404407205496", + "width": 128, + "height": 128 + }, + "m0064": { + "jacketAssetId": "m0064", + "assetName": "img_music_jacket_m0064", + "assetMd5": "d7fde2da26e0abc186f4dc1778cf234a", + "path": "/images/song-jackets/m0064.webp", + "sha256": "5e99ba988af4c585e1d30ee1f9062bff30560aa5aee276da676487e06e91b519", + "width": 128, + "height": 128 + }, + "m0065": { + "jacketAssetId": "m0065", + "assetName": "img_music_jacket_m0065", + "assetMd5": "3fc7849152f1c31da2bd988da4b7c67c", + "path": "/images/song-jackets/m0065.webp", + "sha256": "d84ed2fc6271d0c6d919a0686536e25cfdf2bcdb00bef4ae292b82d6b746d3fd", + "width": 128, + "height": 128 + }, + "m0066": { + "jacketAssetId": "m0066", + "assetName": "img_music_jacket_m0066", + "assetMd5": "9f666b07877c9d4f7fce365adc94adb9", + "path": "/images/song-jackets/m0066.webp", + "sha256": "678c82401743350cc68c7fe5a9a6aa6db95d7d78592b60acdf237dbc088d00e9", + "width": 128, + "height": 128 + }, + "m0068": { + "jacketAssetId": "m0068", + "assetName": "img_music_jacket_m0068", + "assetMd5": "369afa619fd214626939db379cf84897", + "path": "/images/song-jackets/m0068.webp", + "sha256": "553ae312ca89d7731c61c77fea8e95564d6aedcc86186d4ccde661a27794795b", + "width": 128, + "height": 128 + }, + "m0069": { + "jacketAssetId": "m0069", + "assetName": "img_music_jacket_m0069", + "assetMd5": "5dd063d07822e47b7927344303d02c0c", + "path": "/images/song-jackets/m0069.webp", + "sha256": "38ac725e833c05c4d34bfb19b2fdaf1f3a37fa1cb83c30af0476596899e7447b", + "width": 128, + "height": 128 + }, + "m0070": { + "jacketAssetId": "m0070", + "assetName": "img_music_jacket_m0070", + "assetMd5": "f6a6918865df061ddb9c1838bc6c0361", + "path": "/images/song-jackets/m0070.webp", + "sha256": "8ef6f646c66713a990eef29c2ed66cb07dd833a24a904ba0f444eaae875348ad", + "width": 128, + "height": 128 + }, + "m0071": { + "jacketAssetId": "m0071", + "assetName": "img_music_jacket_m0071", + "assetMd5": "9ff075544137ca796045efef3bc2be73", + "path": "/images/song-jackets/m0071.webp", + "sha256": "982036c1f5107030d86d65e46ad5c07a5ee3ec1b8d5b8362b0c6d1a6e38de6e0", + "width": 128, + "height": 128 + }, + "m0072": { + "jacketAssetId": "m0072", + "assetName": "img_music_jacket_m0072", + "assetMd5": "63c325cf6c04e46cc84adb777d8664da", + "path": "/images/song-jackets/m0072.webp", + "sha256": "3cf6c8583ab9e7985eff175310f27ec072c97ccb980172dbf021280684aff893", + "width": 128, + "height": 128 + }, + "m0073": { + "jacketAssetId": "m0073", + "assetName": "img_music_jacket_m0073", + "assetMd5": "405bcf192f2b880ca73e0241b6401cd4", + "path": "/images/song-jackets/m0073.webp", + "sha256": "b25b4136febce799005885f14e1658de0f5794933da8f84430753346bae0f4dd", + "width": 128, + "height": 128 + }, + "m0074": { + "jacketAssetId": "m0074", + "assetName": "img_music_jacket_m0074", + "assetMd5": "4cf2cd460c2572739936a64955d38954", + "path": "/images/song-jackets/m0074.webp", + "sha256": "a84078e45c8d92a1d7fbcac9b244e226f2597a87277dc8fefdb6faa8bde1ae11", + "width": 128, + "height": 128 + }, + "m0075": { + "jacketAssetId": "m0075", + "assetName": "img_music_jacket_m0075", + "assetMd5": "4f2837052e9c5c7fa049118fe44c2faf", + "path": "/images/song-jackets/m0075.webp", + "sha256": "303c4b652b4634cc0845f19248282c8100995da0afc466fc28c891dd49fc4566", + "width": 128, + "height": 128 + }, + "m0076": { + "jacketAssetId": "m0076", + "assetName": "img_music_jacket_m0076", + "assetMd5": "670d05ef92b58dd5f4aaf4dea71b2462", + "path": "/images/song-jackets/m0076.webp", + "sha256": "203e8ea45815b1cbef37c809042f6d6718342714e9d97759d26d7d4f146006d4", + "width": 128, + "height": 128 + }, + "m0077": { + "jacketAssetId": "m0077", + "assetName": "img_music_jacket_m0077", + "assetMd5": "3dd76ad5e3a47ae59d46217e51fc7b01", + "path": "/images/song-jackets/m0077.webp", + "sha256": "4ab206718c37be483bfebb2547fbe47d83429e3ae2e58211188bb801564853cc", + "width": 128, + "height": 128 + }, + "m0078": { + "jacketAssetId": "m0078", + "assetName": "img_music_jacket_m0078", + "assetMd5": "8661a50cfaf421886d4c37a1d7c2e5a9", + "path": "/images/song-jackets/m0078.webp", + "sha256": "f0f9e086d6f8684fee416907c698ae6814f8aad2b7a54d4eeaa07ee7c7a796fb", + "width": 128, + "height": 128 + }, + "m0079": { + "jacketAssetId": "m0079", + "assetName": "img_music_jacket_m0079", + "assetMd5": "1f9876b56f3545dca4cc8e281672b876", + "path": "/images/song-jackets/m0079.webp", + "sha256": "334d8543c39daec47ddcb0fe35a6eb61f2935ecf7208740b5d89d5a9388c4465", + "width": 128, + "height": 128 + }, + "m0080": { + "jacketAssetId": "m0080", + "assetName": "img_music_jacket_m0080", + "assetMd5": "0f0989225a728c9cb7feb129917ef694", + "path": "/images/song-jackets/m0080.webp", + "sha256": "1d82f6da4de2960d3559ba4f9f2f596d1c04b1acaa7a6276f66649aa058837e8", + "width": 128, + "height": 128 + }, + "m0083": { + "jacketAssetId": "m0083", + "assetName": "img_music_jacket_m0083", + "assetMd5": "e989c668889247973430dd491beaf26b", + "path": "/images/song-jackets/m0083.webp", + "sha256": "e3495222ebfc475783db7e03000c079823f4684e1a2c846c1c13a6e429ab0f26", + "width": 128, + "height": 128 + }, + "m0084": { + "jacketAssetId": "m0084", + "assetName": "img_music_jacket_m0084", + "assetMd5": "e8aa6b2e7cb2f5c31aa618e9a85dc24f", + "path": "/images/song-jackets/m0084.webp", + "sha256": "16754df41715da1641099706ce556594d0ed86e88347d5b18c7dd4211a411c3b", + "width": 128, + "height": 128 + }, + "m0085": { + "jacketAssetId": "m0085", + "assetName": "img_music_jacket_m0085", + "assetMd5": "265323babf3ed6013bcb11a52d7a46d9", + "path": "/images/song-jackets/m0085.webp", + "sha256": "52b377f42365c44966b02836c73f719ee94235296ae3db055148d03893434f8b", + "width": 128, + "height": 128 + }, + "m0086": { + "jacketAssetId": "m0086", + "assetName": "img_music_jacket_m0086", + "assetMd5": "d4aa7afb56c04f4ff0b316f29b35cd89", + "path": "/images/song-jackets/m0086.webp", + "sha256": "ba092346c886b74114850709f8145f216b1cb0571eede31d538324296e1f24e4", + "width": 128, + "height": 128 + }, + "m0087": { + "jacketAssetId": "m0087", + "assetName": "img_music_jacket_m0087", + "assetMd5": "54dacd929e6e8be460bd61001d64f6cd", + "path": "/images/song-jackets/m0087.webp", + "sha256": "add8678a63bd80157a6b0b64f05903494ee5d6fe6efe046c6d92cfebb1b9671c", + "width": 128, + "height": 128 + }, + "m0089": { + "jacketAssetId": "m0089", + "assetName": "img_music_jacket_m0089", + "assetMd5": "1a10dad59f04b1dcccd9c46692d7cb83", + "path": "/images/song-jackets/m0089.webp", + "sha256": "bf0bf952ac909c6330c8dda42ef0f2d4630f5b27ef051a9baec325d7891483b3", + "width": 128, + "height": 128 + }, + "m0090": { + "jacketAssetId": "m0090", + "assetName": "img_music_jacket_m0090", + "assetMd5": "98bff2a034ae778e6dfdc2379a055fea", + "path": "/images/song-jackets/m0090.webp", + "sha256": "0cf0d93cf6f06e240906c281b7b9b37f72effa610673027aa0718d4cd0ca706e", + "width": 128, + "height": 128 + }, + "m0091": { + "jacketAssetId": "m0091", + "assetName": "img_music_jacket_m0091", + "assetMd5": "4ec141a332827c5c0f52480536c223f3", + "path": "/images/song-jackets/m0091.webp", + "sha256": "4d797bab7e2f43660b6b51f385180234935c5b0d4b1eec020415b4b4fd561143", + "width": 128, + "height": 128 + }, + "m0092": { + "jacketAssetId": "m0092", + "assetName": "img_music_jacket_m0092", + "assetMd5": "306517bc9cbe86177c28d06a2fd86dba", + "path": "/images/song-jackets/m0092.webp", + "sha256": "bdd6d4c368c6c67834bf50177a11c981d3e7433d7dfb2b45d9c7b622601f683a", + "width": 128, + "height": 128 + }, + "m0094": { + "jacketAssetId": "m0094", + "assetName": "img_music_jacket_m0094", + "assetMd5": "39f0024225f1833adf1b2060e73ec6a7", + "path": "/images/song-jackets/m0094.webp", + "sha256": "e3959b368cb3ba025d6eb16aadb48c52c42db12e113b6cc4861c679b353396b2", + "width": 128, + "height": 128 + }, + "m0095": { + "jacketAssetId": "m0095", + "assetName": "img_music_jacket_m0095", + "assetMd5": "07cb95dde86b4f3cd1c841620609c68e", + "path": "/images/song-jackets/m0095.webp", + "sha256": "dc559a7ef68992732b8db681289ad7b2a52450c0fdf7de617ec8ee1fdc02a2a6", + "width": 128, + "height": 128 + }, + "m0097": { + "jacketAssetId": "m0097", + "assetName": "img_music_jacket_m0097", + "assetMd5": "1ddbf8af4a194c56aa677da7bbfce7dc", + "path": "/images/song-jackets/m0097.webp", + "sha256": "224d75b0e6b8bf4d17882c1f2bb6a7c5b0062679c11a5b3711e2ccaeef3fa265", + "width": 128, + "height": 128 + }, + "m0098": { + "jacketAssetId": "m0098", + "assetName": "img_music_jacket_m0098", + "assetMd5": "2abfb480d7961539820b414fa63ff37c", + "path": "/images/song-jackets/m0098.webp", + "sha256": "1ce1ad56ce393d9e8f5649c33c2df4219489ba920cd501aa7133e2aff669b513", + "width": 128, + "height": 128 + }, + "m0099": { + "jacketAssetId": "m0099", + "assetName": "img_music_jacket_m0099", + "assetMd5": "dc0c58e116d9b588b9be8d488604c94f", + "path": "/images/song-jackets/m0099.webp", + "sha256": "3bce85efab3940db8113b1d286961a8ee6bd013e28646ebc25b637c134a2bc9d", + "width": 128, + "height": 128 + }, + "m0100": { + "jacketAssetId": "m0100", + "assetName": "img_music_jacket_m0100", + "assetMd5": "b0ab8012e87bffbd395bf977c44f2557", + "path": "/images/song-jackets/m0100.webp", + "sha256": "2085e1aae2e0366799d6a7407ffa30a450b44f1fe129d28f68a27c5d8cf254f9", + "width": 128, + "height": 128 + }, + "m0101": { + "jacketAssetId": "m0101", + "assetName": "img_music_jacket_m0101", + "assetMd5": "5359350b25f25d96e90754611ad87e5b", + "path": "/images/song-jackets/m0101.webp", + "sha256": "07be0f9fa858989caddef40956f2ce09c2179821f23cf92dbbb9f9dbbe68f5e7", + "width": 128, + "height": 128 + }, + "m0102": { + "jacketAssetId": "m0102", + "assetName": "img_music_jacket_m0102", + "assetMd5": "a0ef77925cb49d5fafaf6acb9fe00ef6", + "path": "/images/song-jackets/m0102.webp", + "sha256": "76bf25fe1f6e46d794698a86200540765fd35dbb43a7378f17bab8b6acb5c5c2", + "width": 128, + "height": 128 + }, + "m0104": { + "jacketAssetId": "m0104", + "assetName": "img_music_jacket_m0104", + "assetMd5": "b4bcbcdbd02dd268988c2ec8b7f236ff", + "path": "/images/song-jackets/m0104.webp", + "sha256": "7fa534eecd82fc8c50b74927ef5b7b784fecf634c2fc28a09f11ec171bb1facb", + "width": 128, + "height": 128 + }, + "m0105": { + "jacketAssetId": "m0105", + "assetName": "img_music_jacket_m0105", + "assetMd5": "000e43b90996ef974cb362394dbcd5f0", + "path": "/images/song-jackets/m0105.webp", + "sha256": "d7f174f980a046cf0116c46f016c5671e4010e49405704eefdb973ab47b24bce", + "width": 128, + "height": 128 + }, + "m0106": { + "jacketAssetId": "m0106", + "assetName": "img_music_jacket_m0106", + "assetMd5": "a2d76161b980cb99a4dda068ce8800a0", + "path": "/images/song-jackets/m0106.webp", + "sha256": "7b93346740326bdf334cbd69994c92eb11707ceedbbd4913bba9b536cd1aaf4d", + "width": 128, + "height": 128 + }, + "m0107": { + "jacketAssetId": "m0107", + "assetName": "img_music_jacket_m0107", + "assetMd5": "d661d554b994cdc4ecfd24184084e5b9", + "path": "/images/song-jackets/m0107.webp", + "sha256": "d80e66144cbd58d4257d971788ba981b6529ac59881e6d7b2d3c5e6df5d86603", + "width": 128, + "height": 128 + }, + "m0108": { + "jacketAssetId": "m0108", + "assetName": "img_music_jacket_m0108", + "assetMd5": "ef7d326cdef393c09c73ea32ca8ffc10", + "path": "/images/song-jackets/m0108.webp", + "sha256": "bce55409709d58e42f9d51aed95991c1f0fa783a08cd8262b90906a3d2025997", + "width": 128, + "height": 128 + }, + "m0109": { + "jacketAssetId": "m0109", + "assetName": "img_music_jacket_m0109", + "assetMd5": "f7e70edc3cf9b025fac09b92ee77bd3d", + "path": "/images/song-jackets/m0109.webp", + "sha256": "fcef5eb6e4870abe6f71a4f0c622f4020fd3611004dd8983b75e047e2d603fff", + "width": 128, + "height": 128 + }, + "m0111": { + "jacketAssetId": "m0111", + "assetName": "img_music_jacket_m0111", + "assetMd5": "2215834eb6820c0c4d62f80c60e2af6a", + "path": "/images/song-jackets/m0111.webp", + "sha256": "35a6d22157f9f6b15f1c070acadcfa9d8d344a9805d46d77382742fe5c957d86", + "width": 128, + "height": 128 + }, + "m0112": { + "jacketAssetId": "m0112", + "assetName": "img_music_jacket_m0112", + "assetMd5": "b14e447349ec5833214ba3fd5d3673ed", + "path": "/images/song-jackets/m0112.webp", + "sha256": "f4d406c5390973ff67115f085b9ed54229f9e046d5879ef12af1b957a8108bc0", + "width": 128, + "height": 128 + }, + "m0114": { + "jacketAssetId": "m0114", + "assetName": "img_music_jacket_m0114", + "assetMd5": "e8c26063275c58db0e276e92c95d5aa1", + "path": "/images/song-jackets/m0114.webp", + "sha256": "811fc9fcde5e6a9087fcd9b7abeea1dca0b1c71b03eae8372f91ee9fc27651b1", + "width": 128, + "height": 128 + }, + "m0115": { + "jacketAssetId": "m0115", + "assetName": "img_music_jacket_m0115", + "assetMd5": "6a080a3584444050ee387d2e27f656b3", + "path": "/images/song-jackets/m0115.webp", + "sha256": "cdfc969ed65b845ce460f7328143e06187e27f26468bca2f713066ecb931c5fc", + "width": 128, + "height": 128 + }, + "m0116": { + "jacketAssetId": "m0116", + "assetName": "img_music_jacket_m0116", + "assetMd5": "2313536b9e74b991e7b5b15c02c87d69", + "path": "/images/song-jackets/m0116.webp", + "sha256": "f561afdc20e320d18f63e99b5d81d48d65dca23ff718b888ced49b771b470695", + "width": 128, + "height": 128 + }, + "m0117": { + "jacketAssetId": "m0117", + "assetName": "img_music_jacket_m0117", + "assetMd5": "fdd7e39fb8b1e2db1fb775add4484409", + "path": "/images/song-jackets/m0117.webp", + "sha256": "865799b0d41fbc28a5fece3685fdd8e34b4bf19174c7659c6bcb46b70221412c", + "width": 128, + "height": 128 + }, + "m0120": { + "jacketAssetId": "m0120", + "assetName": "img_music_jacket_m0120", + "assetMd5": "c958db7dd078247da886c8363f735976", + "path": "/images/song-jackets/m0120.webp", + "sha256": "efb003afbc192da8c384093c57ac5ac9f01e5f7ae0c4a751255867967bf736fe", + "width": 128, + "height": 128 + }, + "m0121": { + "jacketAssetId": "m0121", + "assetName": "img_music_jacket_m0121", + "assetMd5": "2085c4065267197abad8477b67b2d1f7", + "path": "/images/song-jackets/m0121.webp", + "sha256": "f24f2feac87988b85bfaf7f1b5777357e214903ffa4efc177011cbd080086d5d", + "width": 128, + "height": 128 + }, + "m0122": { + "jacketAssetId": "m0122", + "assetName": "img_music_jacket_m0122", + "assetMd5": "000dd8d80906067d6cac00edabe3baf9", + "path": "/images/song-jackets/m0122.webp", + "sha256": "f6a6914d1fed748668c246b25ec002f07eaaa11747f39ae94aa6a2d3ae2a66c4", + "width": 128, + "height": 128 + }, + "m0123": { + "jacketAssetId": "m0123", + "assetName": "img_music_jacket_m0123", + "assetMd5": "ac17fbd01cb64ecb0aba502e7d4b95d4", + "path": "/images/song-jackets/m0123.webp", + "sha256": "e0e98076abe6ef8d923695c2b22f1e2cdf723c3a791e46f838648429baf65dde", + "width": 128, + "height": 128 + }, + "m0124": { + "jacketAssetId": "m0124", + "assetName": "img_music_jacket_m0124", + "assetMd5": "927cd3500464ce7f675a1cda9e5f339e", + "path": "/images/song-jackets/m0124.webp", + "sha256": "3902afa789bdafe057c6ffae64b2e50f1ec6a3ef7a927482de40636a749bc555", + "width": 128, + "height": 128 + }, + "m0127": { + "jacketAssetId": "m0127", + "assetName": "img_music_jacket_m0127", + "assetMd5": "eb3d505b4c3a31eac68e89f7d662d73f", + "path": "/images/song-jackets/m0127.webp", + "sha256": "15550067dd18074f056fb4e6ef55edf88140b76b7994fc4c85bf66087611f7ce", + "width": 128, + "height": 128 + }, + "m0128": { + "jacketAssetId": "m0128", + "assetName": "img_music_jacket_m0128", + "assetMd5": "01549bd7100e284b1b3a29a245dd57de", + "path": "/images/song-jackets/m0128.webp", + "sha256": "5aa6ae92d9a7fe17b30914f47e289f94d9b9acb6b02fd4942b64c38b9f4741e4", + "width": 128, + "height": 128 + }, + "m0129": { + "jacketAssetId": "m0129", + "assetName": "img_music_jacket_m0129", + "assetMd5": "4c67c687a7c951c5363cbc1abe94635e", + "path": "/images/song-jackets/m0129.webp", + "sha256": "b1f882ff80084b0b3b53855a8a0f490eec20bb252899a8e8c0fc5cf31a867a01", + "width": 128, + "height": 128 + }, + "m0131": { + "jacketAssetId": "m0131", + "assetName": "img_music_jacket_m0131", + "assetMd5": "5a02d5eaf779e2b5c0f624a571ca7cf6", + "path": "/images/song-jackets/m0131.webp", + "sha256": "5fefa8f2568c617b8e5f961dfcc45cf62dba9947f5a3fa7843c514fa9916664f", + "width": 128, + "height": 128 + }, + "m0133": { + "jacketAssetId": "m0133", + "assetName": "img_music_jacket_m0133", + "assetMd5": "ad3c9c88c0017d778ec535983c38c365", + "path": "/images/song-jackets/m0133.webp", + "sha256": "49fbf674a27073044bb990cfdd04ad4d8f4a30f0af61b863bec09e3aae91fdf9", + "width": 128, + "height": 128 + }, + "m0134": { + "jacketAssetId": "m0134", + "assetName": "img_music_jacket_m0134", + "assetMd5": "333f09e0ab08350d09cb4f570347da84", + "path": "/images/song-jackets/m0134.webp", + "sha256": "a6387205b332ae4cd51ea031151089b8561d232c325f6dc5d754dd194565778b", + "width": 128, + "height": 128 + }, + "m0135": { + "jacketAssetId": "m0135", + "assetName": "img_music_jacket_m0135", + "assetMd5": "5de28da2cb84f926ccbfcbdaf3eccd45", + "path": "/images/song-jackets/m0135.webp", + "sha256": "e627164b9d34cc7961d2abbf433297f4f71a174440ee126acac0fceaad3ced6a", + "width": 128, + "height": 128 + }, + "m0136": { + "jacketAssetId": "m0136", + "assetName": "img_music_jacket_m0136", + "assetMd5": "080274d7027207da3d3f456bb70827f0", + "path": "/images/song-jackets/m0136.webp", + "sha256": "2a90cafee0d5a7579fa737d8e4294e5435dc3d79d9647ff0fa745520fe7840b6", + "width": 128, + "height": 128 + }, + "m0137": { + "jacketAssetId": "m0137", + "assetName": "img_music_jacket_m0137", + "assetMd5": "45659a33ce3c0a65fb15c5ba049e63fb", + "path": "/images/song-jackets/m0137.webp", + "sha256": "6fb566a010a1a1a89289ddd3a5e1581d389367d651d1bd11af3ee9bba3b26359", + "width": 128, + "height": 128 + }, + "m0138": { + "jacketAssetId": "m0138", + "assetName": "img_music_jacket_m0138", + "assetMd5": "6d3bca29e083fa930fea45c749c45dcf", + "path": "/images/song-jackets/m0138.webp", + "sha256": "fc2f84591c648079fe5bb6fdb8e727d7b3af4afb9c20ac52a4475467c98fc042", + "width": 128, + "height": 128 + }, + "m0139": { + "jacketAssetId": "m0139", + "assetName": "img_music_jacket_m0139", + "assetMd5": "50f1592cfa0ec850106466c766fc7d9a", + "path": "/images/song-jackets/m0139.webp", + "sha256": "37e403cb5d60a3edddabf17e5bb029d348aa4f4590824ce1d3ed5792b50f55ff", + "width": 128, + "height": 128 + }, + "m0140": { + "jacketAssetId": "m0140", + "assetName": "img_music_jacket_m0140", + "assetMd5": "01b92787bfb131edc228d1cd9da14b3f", + "path": "/images/song-jackets/m0140.webp", + "sha256": "239cc8e6c626f361b622c3e4a0ab5f3a83b3b37a4be7a3580ef6950e8e293607", + "width": 128, + "height": 128 + }, + "m0141": { + "jacketAssetId": "m0141", + "assetName": "img_music_jacket_m0141", + "assetMd5": "8867d6356ca445f3f284c397a7d4bcda", + "path": "/images/song-jackets/m0141.webp", + "sha256": "4168b398d8838db5bc4adfef8dfafab0ff4bf1dcf5ab2dfba23fdcff7d78c952", + "width": 128, + "height": 128 + }, + "m0142": { + "jacketAssetId": "m0142", + "assetName": "img_music_jacket_m0142", + "assetMd5": "e7d220a35abd0121e028b32b6977346b", + "path": "/images/song-jackets/m0142.webp", + "sha256": "ae701fb31c9fe8326a34d4be1f382f235d67145144bb5f75414f9269503c0302", + "width": 128, + "height": 128 + }, + "m0144": { + "jacketAssetId": "m0144", + "assetName": "img_music_jacket_m0144", + "assetMd5": "f6dc62e29aaec4d9595ffced90efc99f", + "path": "/images/song-jackets/m0144.webp", + "sha256": "12742211b6d31ad3dc68af4fc0caeae1d1a4db4d8d022be18be61b6315f09e7c", + "width": 128, + "height": 128 + }, + "m0145": { + "jacketAssetId": "m0145", + "assetName": "img_music_jacket_m0145", + "assetMd5": "8eddad884e0dcd7050ba60ad21d71b6c", + "path": "/images/song-jackets/m0145.webp", + "sha256": "70ef09c89c82ea8676811c330065d134fdecfe6e5a9b241fd9fa0de94a9818db", + "width": 128, + "height": 128 + }, + "m0146": { + "jacketAssetId": "m0146", + "assetName": "img_music_jacket_m0146", + "assetMd5": "01219e7331529df9d90f7dd23b87cec0", + "path": "/images/song-jackets/m0146.webp", + "sha256": "4d451b76a41b0b0bfb0650d5a1068576d4fb6c6cceaad57a149854fa84664479", + "width": 128, + "height": 128 + }, + "m0147": { + "jacketAssetId": "m0147", + "assetName": "img_music_jacket_m0147", + "assetMd5": "26bf55fea8b84ab4519ba7b0fa750ca4", + "path": "/images/song-jackets/m0147.webp", + "sha256": "b6df5b786268327aaff41f50920d675d7f7a9cf87c0204ee1966b76d3cf4b3c2", + "width": 128, + "height": 128 + }, + "m0148": { + "jacketAssetId": "m0148", + "assetName": "img_music_jacket_m0148", + "assetMd5": "d9079bd4f38ad3322577507304ba627e", + "path": "/images/song-jackets/m0148.webp", + "sha256": "e8fa693d5f9e85677f91abdf5e69dad2f0a2f0611a25984cf49995243feca100", + "width": 128, + "height": 128 + }, + "m0149": { + "jacketAssetId": "m0149", + "assetName": "img_music_jacket_m0149", + "assetMd5": "e550b83b99e346946ca7ff2becd1db25", + "path": "/images/song-jackets/m0149.webp", + "sha256": "35dc0bf74121ff619a912aa6d2a6784caa657df183abb55ba99e687609e74b94", + "width": 128, + "height": 128 + }, + "m0150": { + "jacketAssetId": "m0150", + "assetName": "img_music_jacket_m0150", + "assetMd5": "fa6e6647dac5a9fc58efdee7acef6afb", + "path": "/images/song-jackets/m0150.webp", + "sha256": "af33f3f1ba57fa1698103005ed29b1aff584831211c84d36ae45948fe523e122", + "width": 128, + "height": 128 + }, + "m0153": { + "jacketAssetId": "m0153", + "assetName": "img_music_jacket_m0153", + "assetMd5": "99761d770111e6936e98ac3999317c47", + "path": "/images/song-jackets/m0153.webp", + "sha256": "ce3ab0e5f4028c8f46b91d9721c80448634e6ac07b68cf209db599cd15dde719", + "width": 128, + "height": 128 + }, + "m0154": { + "jacketAssetId": "m0154", + "assetName": "img_music_jacket_m0154", + "assetMd5": "bb3977ecb80f715f0705657975f046ec", + "path": "/images/song-jackets/m0154.webp", + "sha256": "6c2e79726034bcb6507c7c589285661bfdc95b4059968a3a903bbbf260749374", + "width": 128, + "height": 128 + }, + "m0155": { + "jacketAssetId": "m0155", + "assetName": "img_music_jacket_m0155", + "assetMd5": "52f24df24f4ebda7a4a72e8d5ba969fe", + "path": "/images/song-jackets/m0155.webp", + "sha256": "4457595fecd1fa65d3f3fdd35ed7a36e9f6cf400f9f59981e18a47364088ba84", + "width": 128, + "height": 128 + }, + "m0156": { + "jacketAssetId": "m0156", + "assetName": "img_music_jacket_m0156", + "assetMd5": "76253599067e4ebdadfd9cd22f42ea01", + "path": "/images/song-jackets/m0156.webp", + "sha256": "f0b052a2a22fad580cdd0d64eaa2282247673fd060f292e2eff05454676c6f92", + "width": 128, + "height": 128 + }, + "m0157": { + "jacketAssetId": "m0157", + "assetName": "img_music_jacket_m0157", + "assetMd5": "9a0f7ecace7b308d69aea04131c84a4f", + "path": "/images/song-jackets/m0157.webp", + "sha256": "90841be1d1918b8c022e560dc44f045364123cd5ec521867ecc72319fb5b37d6", + "width": 128, + "height": 128 + }, + "m0158": { + "jacketAssetId": "m0158", + "assetName": "img_music_jacket_m0158", + "assetMd5": "2786fe3d90301983ad68b59bc700346d", + "path": "/images/song-jackets/m0158.webp", + "sha256": "b979b532774df5a1f3528e4fb3efa188f66bca06a0a183ae895bcfc4ad645f1c", + "width": 128, + "height": 128 + }, + "m0159": { + "jacketAssetId": "m0159", + "assetName": "img_music_jacket_m0159", + "assetMd5": "50d85ee4f3bd60b278ea5ecd9eb85d66", + "path": "/images/song-jackets/m0159.webp", + "sha256": "658e098208e34668c62a3c343360268af64454a890676884266cf6ef5c88e0be", + "width": 128, + "height": 128 + }, + "m0160": { + "jacketAssetId": "m0160", + "assetName": "img_music_jacket_m0160", + "assetMd5": "6c9b39361cb763fbcbb435c02ac33d40", + "path": "/images/song-jackets/m0160.webp", + "sha256": "52b2eb6c65f8bea5b2ac96d028fca7c60a80271a7775596ef53b71e449e24621", + "width": 128, + "height": 128 + }, + "m0161": { + "jacketAssetId": "m0161", + "assetName": "img_music_jacket_m0161", + "assetMd5": "084dee075ce6104dd585dbf401c6068f", + "path": "/images/song-jackets/m0161.webp", + "sha256": "866beaa7bcc2b23346e9e606cdd9e2ad1d08bdbc4988a8c3d46aea24718fd1f4", + "width": 128, + "height": 128 + }, + "m0162": { + "jacketAssetId": "m0162", + "assetName": "img_music_jacket_m0162", + "assetMd5": "817d0d828b63ed68e9545b424ee2e6e8", + "path": "/images/song-jackets/m0162.webp", + "sha256": "376292eb29e4e37527523014cfb9a724a3c57970e04f604577ea6bae573ae15b", + "width": 128, + "height": 128 + }, + "m0163": { + "jacketAssetId": "m0163", + "assetName": "img_music_jacket_m0163", + "assetMd5": "04eaa66c3b38c26b7d2241ef9a5eb01d", + "path": "/images/song-jackets/m0163.webp", + "sha256": "5ac30fa397fc0e932d5619a947436cd9186b3b89a26aa088ace788df3ede15a4", + "width": 128, + "height": 128 + }, + "m0164": { + "jacketAssetId": "m0164", + "assetName": "img_music_jacket_m0164", + "assetMd5": "a11e02a8a43d12edf9d0a1ee7b5ed9f9", + "path": "/images/song-jackets/m0164.webp", + "sha256": "e62c852258a3aa31dbccd9344e8e627e6fe07744b1890d8a54c9b2ca1f2b618e", + "width": 128, + "height": 128 + }, + "m0165": { + "jacketAssetId": "m0165", + "assetName": "img_music_jacket_m0165", + "assetMd5": "0eaeb39b87497524c10a43650ff209ba", + "path": "/images/song-jackets/m0165.webp", + "sha256": "12efe28fa94b92f588bda5633a588e061b5aa9c96b32b962186d44fbc0e12449", + "width": 128, + "height": 128 + }, + "m0166": { + "jacketAssetId": "m0166", + "assetName": "img_music_jacket_m0166", + "assetMd5": "0e6ed371d00c35298e499c4ba26a1b0d", + "path": "/images/song-jackets/m0166.webp", + "sha256": "15beaef2137ad660febe0a16a34bb1a05af070e61b80c7502e5ec9d2044679b7", + "width": 128, + "height": 128 + }, + "m0167": { + "jacketAssetId": "m0167", + "assetName": "img_music_jacket_m0167", + "assetMd5": "6fd241326d2f6ec02c22dc833f119dd7", + "path": "/images/song-jackets/m0167.webp", + "sha256": "2d08828a229d4b3bc103680dad0a0bcbd5f105628416d811ef734c4395b5a25f", + "width": 128, + "height": 128 + }, + "m0168": { + "jacketAssetId": "m0168", + "assetName": "img_music_jacket_m0168", + "assetMd5": "244489b4b3fdcf4a2fa216d8fefb858a", + "path": "/images/song-jackets/m0168.webp", + "sha256": "729fdc8650a3093dd27203d5786e64765af9c18b4a0cce7f49f5e8b06dc82d29", + "width": 128, + "height": 128 + }, + "m0171": { + "jacketAssetId": "m0171", + "assetName": "img_music_jacket_m0171", + "assetMd5": "a852a07693a03810f0dd1224cb572984", + "path": "/images/song-jackets/m0171.webp", + "sha256": "92464e99ae55211d5bf8a971d85a958b260e1dbee83158bf2274499580687408", + "width": 128, + "height": 128 + }, + "m0176": { + "jacketAssetId": "m0176", + "assetName": "img_music_jacket_m0176", + "assetMd5": "62b5a660a615d78d3a439970551aa4fc", + "path": "/images/song-jackets/m0176.webp", + "sha256": "aff6975598a28a84bf8a16d332db197b620e8e750c8703334a4d6c69ff749678", + "width": 128, + "height": 128 + }, + "m0177": { + "jacketAssetId": "m0177", + "assetName": "img_music_jacket_m0177", + "assetMd5": "2b65ba1c82dc8d4fb26b876f15f35f1c", + "path": "/images/song-jackets/m0177.webp", + "sha256": "19bec55af264a5efeccde321ffd0cd84f40ac3911565cd6826cd993757000651", + "width": 128, + "height": 128 + }, + "m0179": { + "jacketAssetId": "m0179", + "assetName": "img_music_jacket_m0179", + "assetMd5": "0fa7ed2280e61287928fa49f514dfef1", + "path": "/images/song-jackets/m0179.webp", + "sha256": "a84c9f174f1cf9061a9da2bd6da28996618bdb75da8f87b2315ae22cb5d5f4f1", + "width": 128, + "height": 128 + }, + "m0180": { + "jacketAssetId": "m0180", + "assetName": "img_music_jacket_m0180", + "assetMd5": "99e84f5bb06a8e3dbea894136f35f91a", + "path": "/images/song-jackets/m0180.webp", + "sha256": "2cb4a7c288c63ebedeeaa598c7a2ba789d4838c23faaea5c71de525ac579a704", + "width": 128, + "height": 128 + }, + "m0181": { + "jacketAssetId": "m0181", + "assetName": "img_music_jacket_m0181", + "assetMd5": "b3d2f19ff5ca5ef45e637d1de623aac7", + "path": "/images/song-jackets/m0181.webp", + "sha256": "5cd04e107b8a450550a50918041e600b17c9597e719fcecde74d7c6bb1de4596", + "width": 128, + "height": 128 + }, + "m0182": { + "jacketAssetId": "m0182", + "assetName": "img_music_jacket_m0182", + "assetMd5": "2b2ae435da9783ee6b5c287566aecc0c", + "path": "/images/song-jackets/m0182.webp", + "sha256": "e450def5071a65ed22faf9179970afbb5f8739b61e7059ed62a4b5d41379b70b", + "width": 128, + "height": 128 + }, + "m0183": { + "jacketAssetId": "m0183", + "assetName": "img_music_jacket_m0183", + "assetMd5": "8df5345c80fdc84d44742d8d36940297", + "path": "/images/song-jackets/m0183.webp", + "sha256": "390bf781564773bb524ab37bf4ae38bab823166cdab24f90390e6da3a737d8db", + "width": 128, + "height": 128 + }, + "m0184": { + "jacketAssetId": "m0184", + "assetName": "img_music_jacket_m0184", + "assetMd5": "3628618583fe3ae620509a4e90e73cf0", + "path": "/images/song-jackets/m0184.webp", + "sha256": "ad22640a5d4491faffdd913328f4b670480059361e08691e3bb8337ad086e3f2", + "width": 128, + "height": 128 + }, + "m0185": { + "jacketAssetId": "m0185", + "assetName": "img_music_jacket_m0185", + "assetMd5": "40eb8e1cd5b5de6de492a752dc3073ab", + "path": "/images/song-jackets/m0185.webp", + "sha256": "7eac2742d2d8d3d6d8ad295f320925d01c67f27fb8c8403c7b64a1a2dc527ac4", + "width": 128, + "height": 128 + }, + "m0186": { + "jacketAssetId": "m0186", + "assetName": "img_music_jacket_m0186", + "assetMd5": "80302ec0cf8fdfd6ae025b9e3945e7b7", + "path": "/images/song-jackets/m0186.webp", + "sha256": "8b5e437932371b5746579398586629c94bbcc7acca6794c28c08a55a35205deb", + "width": 128, + "height": 128 + }, + "m0187": { + "jacketAssetId": "m0187", + "assetName": "img_music_jacket_m0187", + "assetMd5": "109c351d44a9873f52669b95b796aee0", + "path": "/images/song-jackets/m0187.webp", + "sha256": "36917d1c44468be32de1250bcfe7e5c17f9966e3524afcee4e1ca78886706490", + "width": 128, + "height": 128 + }, + "m0188": { + "jacketAssetId": "m0188", + "assetName": "img_music_jacket_m0188", + "assetMd5": "678c9ce7f322709a579fa6a662b94500", + "path": "/images/song-jackets/m0188.webp", + "sha256": "27d6a7deb62c3990259cf7cd896227b9b5b763983abfec65357152e329641b5f", + "width": 128, + "height": 128 + }, + "m0189": { + "jacketAssetId": "m0189", + "assetName": "img_music_jacket_m0189", + "assetMd5": "af31dab48934296871c3930980157798", + "path": "/images/song-jackets/m0189.webp", + "sha256": "730885c3ebe8868b8a374dc211d3243c779108b3971cbfea82cf12895cb2509d", + "width": 128, + "height": 128 + }, + "m0190": { + "jacketAssetId": "m0190", + "assetName": "img_music_jacket_m0190", + "assetMd5": "dfd75b046fd974de187fb56214d89e83", + "path": "/images/song-jackets/m0190.webp", + "sha256": "2080dfe4e817c1125be91e6d8b0afc0d4e43ab1dd00bd42d91b13515c22f51b1", + "width": 128, + "height": 128 + }, + "m0191": { + "jacketAssetId": "m0191", + "assetName": "img_music_jacket_m0191", + "assetMd5": "d8652bcba4fe3057fa30117040e8ba29", + "path": "/images/song-jackets/m0191.webp", + "sha256": "d497cf6f588f87f0f3d525b9713c4f1857c4feda71746680e3fb4f8cee2cf26d", + "width": 128, + "height": 128 + }, + "m0192": { + "jacketAssetId": "m0192", + "assetName": "img_music_jacket_m0192", + "assetMd5": "2075dd725ae51f3a9cd84c8d0261d87d", + "path": "/images/song-jackets/m0192.webp", + "sha256": "f0fdb4099a940b3a8b2aec3db84700676d8bca6e2dbd8959da23dedef590f73f", + "width": 128, + "height": 128 + }, + "m0193": { + "jacketAssetId": "m0193", + "assetName": "img_music_jacket_m0193", + "assetMd5": "d40b47ce7567989847909db021ab2d9b", + "path": "/images/song-jackets/m0193.webp", + "sha256": "bcdf6b23b1b1c2ff47cf25012be271aa1560cb283b93b83940b8584824d121f6", + "width": 128, + "height": 128 + }, + "m0196": { + "jacketAssetId": "m0196", + "assetName": "img_music_jacket_m0196", + "assetMd5": "65020f06bcec73d55a53bdf9e7803bf7", + "path": "/images/song-jackets/m0196.webp", + "sha256": "799fba47035debe5553efa23121af60a89194e1d86977cc03fcea944847659bf", + "width": 128, + "height": 128 + }, + "m0197": { + "jacketAssetId": "m0197", + "assetName": "img_music_jacket_m0197", + "assetMd5": "41fe66b86411479c58277b98e69874df", + "path": "/images/song-jackets/m0197.webp", + "sha256": "90812b89b9f78e7dd65b8002f97d9e7ca18f1f7b9ac865b745e4749ffbb6555e", + "width": 128, + "height": 128 + }, + "m0198": { + "jacketAssetId": "m0198", + "assetName": "img_music_jacket_m0198", + "assetMd5": "87534a42a7f92f7fa02bb56043fa37ab", + "path": "/images/song-jackets/m0198.webp", + "sha256": "ab545803e477914ce99cbd51d2581813dd6d92c6d528e9e061758e04ee614dfe", + "width": 128, + "height": 128 + }, + "m0201": { + "jacketAssetId": "m0201", + "assetName": "img_music_jacket_m0201", + "assetMd5": "b41140d66a6d2751e07b675252b5e697", + "path": "/images/song-jackets/m0201.webp", + "sha256": "21686c61997e8830c752589d8cf7dcabb178fd23340f6aeeedd5b40c7e4fb343", + "width": 128, + "height": 128 + }, + "m0206": { + "jacketAssetId": "m0206", + "assetName": "img_music_jacket_m0206", + "assetMd5": "d0dd20bc92ac2b0eaf892df4f0e184fe", + "path": "/images/song-jackets/m0206.webp", + "sha256": "1440cc57514033d6fc21e44931e8cbf653b3f48e907d1099edc8a298d37ba625", + "width": 128, + "height": 128 + }, + "m0300": { + "jacketAssetId": "m0300", + "assetName": "img_music_jacket_m0300", + "assetMd5": "ff00364053b12569d58de4a35589117d", + "path": "/images/song-jackets/m0300.webp", + "sha256": "d7f0a100ee5f73a7d116b49c6688990f592c5d488a66249a0fc8cf00609bd503", + "width": 128, + "height": 128 + }, + "m0301": { + "jacketAssetId": "m0301", + "assetName": "img_music_jacket_m0301", + "assetMd5": "5231431f8197e243471b5deee1ccc950", + "path": "/images/song-jackets/m0301.webp", + "sha256": "dc389c2fd6e0b8e1690c13bf1a83d138c0cc816543c73d98dab36b1cdc8dfce0", + "width": 128, + "height": 128 + }, + "m0302": { + "jacketAssetId": "m0302", + "assetName": "img_music_jacket_m0302", + "assetMd5": "812a5048879a9e5bb018d5bd1b9c1159", + "path": "/images/song-jackets/m0302.webp", + "sha256": "d63d0085e7535427ff40d90e10d919df4fed093e37f92cd3754d3979ac7981a6", + "width": 128, + "height": 128 + }, + "m0303": { + "jacketAssetId": "m0303", + "assetName": "img_music_jacket_m0303", + "assetMd5": "7d61afb2515207cd5d3b4123df4df84c", + "path": "/images/song-jackets/m0303.webp", + "sha256": "5ff320a70099faecdff7ea265c8481cd5bc84ea336efa4ad5d56e5e6f8a6d3db", + "width": 128, + "height": 128 + }, + "m0304": { + "jacketAssetId": "m0304", + "assetName": "img_music_jacket_m0304", + "assetMd5": "8f9967763780b5d629ad11a4b9446492", + "path": "/images/song-jackets/m0304.webp", + "sha256": "b0c1b19649dcdb2e9e0fed1382ce6ca4505c57c1dbab71e595617c6410cca364", + "width": 128, + "height": 128 + }, + "m0306": { + "jacketAssetId": "m0306", + "assetName": "img_music_jacket_m0306", + "assetMd5": "2d65814c1e3a2205f4979e51e5a0ef5f", + "path": "/images/song-jackets/m0306.webp", + "sha256": "a789991d2763bcc1b0c2a3a28190342484ac328a3c749b54f8a0ed81ba010cc2", + "width": 128, + "height": 128 + }, + "m0307": { + "jacketAssetId": "m0307", + "assetName": "img_music_jacket_m0307", + "assetMd5": "c3e6b3b2fd2e02bb55737f5facf4b46f", + "path": "/images/song-jackets/m0307.webp", + "sha256": "cd7466f692400978ac372cde61a7a08206b9e32ecaafd7bb5a9033c96328ad12", + "width": 128, + "height": 128 + }, + "m0308": { + "jacketAssetId": "m0308", + "assetName": "img_music_jacket_m0308", + "assetMd5": "bc1767460e36b69674a68f6a8d771eef", + "path": "/images/song-jackets/m0308.webp", + "sha256": "e8aeb155d82faff69f7ee6959f17bbe10821cab1057d6c8e99dd56ec771b0b31", + "width": 128, + "height": 128 + }, + "m0309": { + "jacketAssetId": "m0309", + "assetName": "img_music_jacket_m0309", + "assetMd5": "6487935cd6718a8d4cae91b6133fb222", + "path": "/images/song-jackets/m0309.webp", + "sha256": "7d66a60f46cca3945555e8d051e6030a526dad2bfaf8b1070ba8a8b861191692", + "width": 128, + "height": 128 + }, + "m0310": { + "jacketAssetId": "m0310", + "assetName": "img_music_jacket_m0310", + "assetMd5": "0b3d361eb9a8173575cd834c0d2401a3", + "path": "/images/song-jackets/m0310.webp", + "sha256": "17fedf186c6267e6e750b0c1550916ca167c00d459002b00b00b9a8b531c70f9", + "width": 128, + "height": 128 + }, + "m0311": { + "jacketAssetId": "m0311", + "assetName": "img_music_jacket_m0311", + "assetMd5": "8fb809c3b52d0ae969f2acae7d35a81a", + "path": "/images/song-jackets/m0311.webp", + "sha256": "ab5c99f47823adbe72010f0bd00794a1e23838257eed4f8c1069ba466a00448d", + "width": 128, + "height": 128 + }, + "m0312": { + "jacketAssetId": "m0312", + "assetName": "img_music_jacket_m0312", + "assetMd5": "fabc7f60368d75ca97b71ecff25829b6", + "path": "/images/song-jackets/m0312.webp", + "sha256": "50fd59ff7837fd6f5dd113d6ab6552b7f810e976539f3e1a52b43ff59ec55511", + "width": 128, + "height": 128 + }, + "m0317": { + "jacketAssetId": "m0317", + "assetName": "img_music_jacket_m0317", + "assetMd5": "25f81270945eba65bbf77edee4e407b7", + "path": "/images/song-jackets/m0317.webp", + "sha256": "32154ed4d4f1eb2394b38f0ed22eb7476c3264e4daacc26dfc88a12a73134060", + "width": 128, + "height": 128 + }, + "m0318": { + "jacketAssetId": "m0318", + "assetName": "img_music_jacket_m0318", + "assetMd5": "13fc1109fc07fd849929dfe45c8ebef9", + "path": "/images/song-jackets/m0318.webp", + "sha256": "0b7ce28f71ee1e313fe2d77e0a2b99b829b80f5b38f7f6e4a49279c50b212ee1", + "width": 128, + "height": 128 + }, + "m0319": { + "jacketAssetId": "m0319", + "assetName": "img_music_jacket_m0319", + "assetMd5": "b72af05b3ef788ccaab0f238c3e28855", + "path": "/images/song-jackets/m0319.webp", + "sha256": "6f0775ccd70a96956a097adaa01daa8a111809a3a690aebd640eb8696ad68158", + "width": 128, + "height": 128 + }, + "m0321": { + "jacketAssetId": "m0321", + "assetName": "img_music_jacket_m0321", + "assetMd5": "310d3ea8bc5a9c1a767fca52b22ecc66", + "path": "/images/song-jackets/m0321.webp", + "sha256": "fe4019ee3d4db828625f0b2df704622c63495055d742bcbfa3dab87a117cf029", + "width": 128, + "height": 128 + }, + "m0323": { + "jacketAssetId": "m0323", + "assetName": "img_music_jacket_m0323", + "assetMd5": "1c3f8975e45d072a53e1dc8d3415cb9d", + "path": "/images/song-jackets/m0323.webp", + "sha256": "c14d6933ac2fc836f8f178d881c758aa8bad40c07f44ab2c0cc2b57f7907ebd7", + "width": 128, + "height": 128 + }, + "m0324": { + "jacketAssetId": "m0324", + "assetName": "img_music_jacket_m0324", + "assetMd5": "0a66cf050b0fd64cf5fc030410f7183d", + "path": "/images/song-jackets/m0324.webp", + "sha256": "c4065a03fb9b90b94b10024e7f846e691b7c8c99a02ade24efbf4bf6dd2d114d", + "width": 128, + "height": 128 + }, + "m0325": { + "jacketAssetId": "m0325", + "assetName": "img_music_jacket_m0325", + "assetMd5": "558fe9ee28cea7569ec5a184e8040ec2", + "path": "/images/song-jackets/m0325.webp", + "sha256": "b3826c8049616265c3534b0884599219c5d09d85ad5f6834869fdcdbc1c9b810", + "width": 128, + "height": 128 + }, + "m0326": { + "jacketAssetId": "m0326", + "assetName": "img_music_jacket_m0326", + "assetMd5": "bf5b68ee7d603dca1a2fd8d51f18a77f", + "path": "/images/song-jackets/m0326.webp", + "sha256": "8d64c7c64e2f8e10096fb8ee4882051aced56afc300e65cc2d3c0eacbddcb2b5", + "width": 128, + "height": 128 + }, + "m0327": { + "jacketAssetId": "m0327", + "assetName": "img_music_jacket_m0327", + "assetMd5": "f84788a88404db2cbca841035736db62", + "path": "/images/song-jackets/m0327.webp", + "sha256": "545537b9cf3c2b3474ae4e1159dd3c6d93896b6bd30ca2aeae5019fb99fc58b9", + "width": 128, + "height": 128 + }, + "m0329": { + "jacketAssetId": "m0329", + "assetName": "img_music_jacket_m0329", + "assetMd5": "0eb27aa79c7aecb5bcd403eb689ec673", + "path": "/images/song-jackets/m0329.webp", + "sha256": "58f98987742b4be7e0e8c999ff4e7fc27a8b255e4038b679c6ced7d3058b5290", + "width": 128, + "height": 128 + }, + "m0330": { + "jacketAssetId": "m0330", + "assetName": "img_music_jacket_m0330", + "assetMd5": "035d2f3d53cb71c838a9f01a8a6982d8", + "path": "/images/song-jackets/m0330.webp", + "sha256": "b9f1110931394126589f4702fff0b9cab31e3b24e126aac092003961e4263bba", + "width": 128, + "height": 128 + }, + "m0331": { + "jacketAssetId": "m0331", + "assetName": "img_music_jacket_m0331", + "assetMd5": "e594730d6a3361b41fff9e603d99c1d0", + "path": "/images/song-jackets/m0331.webp", + "sha256": "e5d28f5a85cc15c1b72cdb0701b84f09778056f9676056acf5796c4aaa7d18b6", + "width": 128, + "height": 128 + }, + "m0332": { + "jacketAssetId": "m0332", + "assetName": "img_music_jacket_m0332", + "assetMd5": "1a9ba4479543cc6dac38d06b146e363c", + "path": "/images/song-jackets/m0332.webp", + "sha256": "0904dd8d3d065509bbdb1aa6a031c31ce7ebf2ef3e5d0f5f4958dc41e8d061ba", + "width": 128, + "height": 128 + }, + "m0333": { + "jacketAssetId": "m0333", + "assetName": "img_music_jacket_m0333", + "assetMd5": "612a8016d0eb193e25d4e98c27841b0e", + "path": "/images/song-jackets/m0333.webp", + "sha256": "61a3c64b0620a1aecda9e3f667e6c833e0cda079a2724b4817d175a65bceb076", + "width": 128, + "height": 128 + }, + "m0334": { + "jacketAssetId": "m0334", + "assetName": "img_music_jacket_m0334", + "assetMd5": "b1c8e07ca5852c3d3aba0ce152dec49a", + "path": "/images/song-jackets/m0334.webp", + "sha256": "e6b7d781193252548179dc67a415ec35bf448cd1ecce3acaf0a3eada9cdff66e", + "width": 128, + "height": 128 + }, + "m0335": { + "jacketAssetId": "m0335", + "assetName": "img_music_jacket_m0335", + "assetMd5": "a07906a9e8db4f00fff2c20d8ff504ed", + "path": "/images/song-jackets/m0335.webp", + "sha256": "1536a5d3ca730c0e34f3f8a6d68c653ef5dea5f4b9f92afe3b42ef376f9cef46", + "width": 128, + "height": 128 + }, + "m0336": { + "jacketAssetId": "m0336", + "assetName": "img_music_jacket_m0336", + "assetMd5": "aa1445a511e35f228f6b8d4f96448daa", + "path": "/images/song-jackets/m0336.webp", + "sha256": "9e1acf2c26f9b2ec40f61acd6d0e6afb91ff4b005bc7da898fcd444e2cf23eba", + "width": 128, + "height": 128 + }, + "m0337": { + "jacketAssetId": "m0337", + "assetName": "img_music_jacket_m0337", + "assetMd5": "36f0e15fc69f9138684a2adefdcf2352", + "path": "/images/song-jackets/m0337.webp", + "sha256": "f0bea44d7eda161f60fbb7efa090e722236aa884bb9e3570610eae47e52ff392", + "width": 128, + "height": 128 + }, + "m0338": { + "jacketAssetId": "m0338", + "assetName": "img_music_jacket_m0338", + "assetMd5": "c8d4b47d2c0d5b2d6dd0154cd0ff38b3", + "path": "/images/song-jackets/m0338.webp", + "sha256": "146bd08d8b8fb35c9be3804fd40a993a0af5906d5d8c079a4e3bcf2b4af7c1b3", + "width": 128, + "height": 128 + }, + "m0339": { + "jacketAssetId": "m0339", + "assetName": "img_music_jacket_m0339", + "assetMd5": "547019fc437a02b00ea8e295a5e6cfe6", + "path": "/images/song-jackets/m0339.webp", + "sha256": "fd78ac4fc68e98c9c11c076b203af680fb134e4aa69b45536c7824cb5ee94aad", + "width": 128, + "height": 128 + }, + "m0340": { + "jacketAssetId": "m0340", + "assetName": "img_music_jacket_m0340", + "assetMd5": "badb2d7b446474fec37f8f21ce93c8b4", + "path": "/images/song-jackets/m0340.webp", + "sha256": "f5c418c03307326673a8bd1105d2e62c488afad8f3f5e7937a67b638694fbc47", + "width": 128, + "height": 128 + }, + "m0341": { + "jacketAssetId": "m0341", + "assetName": "img_music_jacket_m0341", + "assetMd5": "4de4fc4576c119d118b9d82a3477ac14", + "path": "/images/song-jackets/m0341.webp", + "sha256": "3577dd675b7fbcc6c9835b2a8c434baebe1b2a2d9b1305d8627b6921b5aadc72", + "width": 128, + "height": 128 + }, + "m0342": { + "jacketAssetId": "m0342", + "assetName": "img_music_jacket_m0342", + "assetMd5": "695ace656735fe9684dd4fc1fd9f751e", + "path": "/images/song-jackets/m0342.webp", + "sha256": "bf38a352d868e2d2d039b631d7e27fce534f390acb048ccbb1ad864d93e98104", + "width": 128, + "height": 128 + }, + "m0344": { + "jacketAssetId": "m0344", + "assetName": "img_music_jacket_m0344", + "assetMd5": "c702ddc0ec06dcab72a5ec422a808fc3", + "path": "/images/song-jackets/m0344.webp", + "sha256": "4e4ef5495848d141ca58e3c26dd9c0a651edb280b9235954bcf2fa878db86b13", + "width": 128, + "height": 128 + }, + "m0346": { + "jacketAssetId": "m0346", + "assetName": "img_music_jacket_m0346", + "assetMd5": "df871832db5c08c9292b1f53624f8ce1", + "path": "/images/song-jackets/m0346.webp", + "sha256": "5b50aaa6ad5d73709cc1d67da962ca46f4f0efa78331dd9de744f0e3a8a6b5a8", + "width": 128, + "height": 128 + }, + "m0347": { + "jacketAssetId": "m0347", + "assetName": "img_music_jacket_m0347", + "assetMd5": "6dee0065a954da3f38d2c1eaf1519490", + "path": "/images/song-jackets/m0347.webp", + "sha256": "0a62f6d9b0a45f6207f963613ab1c6bdc151938b8a1c79ff1004daf315d962fa", + "width": 128, + "height": 128 + }, + "m0348": { + "jacketAssetId": "m0348", + "assetName": "img_music_jacket_m0348", + "assetMd5": "2c11ab2717647051883bea3974f0e80d", + "path": "/images/song-jackets/m0348.webp", + "sha256": "646423633800cc39690fa4cee584442138b58b22992e5a25f2d7e55052046993", + "width": 128, + "height": 128 + }, + "m0349": { + "jacketAssetId": "m0349", + "assetName": "img_music_jacket_m0349", + "assetMd5": "b5ba035679d249f217106f8e9fcf6f8b", + "path": "/images/song-jackets/m0349.webp", + "sha256": "1994b869de421e41ff7ad6a0a8c3dcc8933305c1e774b839f9dc569db259bf2a", + "width": 128, + "height": 128 + }, + "m0350": { + "jacketAssetId": "m0350", + "assetName": "img_music_jacket_m0350", + "assetMd5": "8a588ad5648a6ca6b76e6fb2d4b05a30", + "path": "/images/song-jackets/m0350.webp", + "sha256": "f512caf2ec7ec1cc64feb288344554ca9b229c6d33dc8705b4abad7cb6536d55", + "width": 128, + "height": 128 + }, + "m0351": { + "jacketAssetId": "m0351", + "assetName": "img_music_jacket_m0351", + "assetMd5": "e26e2215156af862423eccd8b80399a4", + "path": "/images/song-jackets/m0351.webp", + "sha256": "15a8d4756237249681f7049d3de86c136416d7883637bc8d252af0c387643b3f", + "width": 128, + "height": 128 + }, + "m0352": { + "jacketAssetId": "m0352", + "assetName": "img_music_jacket_m0352", + "assetMd5": "4caa52ef3d96506a7bbf637a474082e5", + "path": "/images/song-jackets/m0352.webp", + "sha256": "57df2f87a38135c0067dad39c49c51c8c65cb4e8a2adef6849d632ca8f18b076", + "width": 128, + "height": 128 + }, + "m0353": { + "jacketAssetId": "m0353", + "assetName": "img_music_jacket_m0353", + "assetMd5": "2a689f88c567f1939a3f71ce4522d9af", + "path": "/images/song-jackets/m0353.webp", + "sha256": "94a82ca60d9a15907645e7c4a7396d4f4cb68acc4a533e15c56120b541921dd5", + "width": 128, + "height": 128 + }, + "m0354": { + "jacketAssetId": "m0354", + "assetName": "img_music_jacket_m0354", + "assetMd5": "7745f2e17b6929ac26aea877985e050c", + "path": "/images/song-jackets/m0354.webp", + "sha256": "548b224bdcdb9a2dbb7bbd2180116b4560c9f46471b52e448a198b503007d19c", + "width": 128, + "height": 128 + }, + "m0357": { + "jacketAssetId": "m0357", + "assetName": "img_music_jacket_m0357", + "assetMd5": "1ee686de037396353add79e9695a4c09", + "path": "/images/song-jackets/m0357.webp", + "sha256": "5e1b954e3544098cde64b718e2308058410ecfa381bdb930e184beeca0e8dbdf", + "width": 128, + "height": 128 + }, + "m0358": { + "jacketAssetId": "m0358", + "assetName": "img_music_jacket_m0358", + "assetMd5": "9cfbcead3eedfca0e671d31a0d2e8ca1", + "path": "/images/song-jackets/m0358.webp", + "sha256": "01ebd69260bbee6dc453ba8b31f050e4c60d970519b5df9cfdf1c143270bef80", + "width": 128, + "height": 128 + }, + "m0359": { + "jacketAssetId": "m0359", + "assetName": "img_music_jacket_m0359", + "assetMd5": "75ead1be6cb9ea94fe35b4f485aea63e", + "path": "/images/song-jackets/m0359.webp", + "sha256": "f8ef25fcf0f6420753f835d9d58c6cc21fd541f2290f5a1bd99b1d326742384d", + "width": 128, + "height": 128 + }, + "m0360": { + "jacketAssetId": "m0360", + "assetName": "img_music_jacket_m0360", + "assetMd5": "91c638d640ff856d58c818a01713f87c", + "path": "/images/song-jackets/m0360.webp", + "sha256": "af607728c87aceec7297ac38d48252e173e9c852b59bd726eaacf2215f92fa2c", + "width": 128, + "height": 128 + }, + "m0361": { + "jacketAssetId": "m0361", + "assetName": "img_music_jacket_m0361", + "assetMd5": "1dd8a028d3c28f938eb9deba61769b87", + "path": "/images/song-jackets/m0361.webp", + "sha256": "37c0bd531aa56450b0e6384ca8dc4d46ae4112707e3f8bbc966f86e77236a000", + "width": 128, + "height": 128 + }, + "m0362": { + "jacketAssetId": "m0362", + "assetName": "img_music_jacket_m0362", + "assetMd5": "27838f812f84cfcbe2710c7e6b228724", + "path": "/images/song-jackets/m0362.webp", + "sha256": "81ba1ffbff5ebd45e47643dc5677a5923583f753ae2a618d45f0bc85968ddc33", + "width": 128, + "height": 128 + }, + "m0363": { + "jacketAssetId": "m0363", + "assetName": "img_music_jacket_m0363", + "assetMd5": "2633e655c4d2316c19ce613c392ca727", + "path": "/images/song-jackets/m0363.webp", + "sha256": "9b0dbbc684b320a6c2b152a69a91c7d61d1308d7e5c4fed3bdbe0376ccb4849b", + "width": 128, + "height": 128 + }, + "m0375": { + "jacketAssetId": "m0375", + "assetName": "img_music_jacket_m0375", + "assetMd5": "515efb86b0b1291d4dc6fa394deed306", + "path": "/images/song-jackets/m0375.webp", + "sha256": "c30609a87a1c6a96427b94d36633f25bac041b77f8d02551f31b7a7ef8df618c", + "width": 128, + "height": 128 + }, + "m0376": { + "jacketAssetId": "m0376", + "assetName": "img_music_jacket_m0376", + "assetMd5": "dfb88ada28b32a4d2ac46a9ec402ccfc", + "path": "/images/song-jackets/m0376.webp", + "sha256": "f9a127910620309c231ac8118952815c4ff58b6e335e71732a73b5420159c6ce", + "width": 128, + "height": 128 + }, + "m0413": { + "jacketAssetId": "m0413", + "assetName": "img_music_jacket_m0413", + "assetMd5": "f4f8ae1b0cce4f13f2530968c75c5978", + "path": "/images/song-jackets/m0413.webp", + "sha256": "fe6cb709c5a7998cd8a6e6d2f03f5170ee5dd6ac07173f160d7c2f5e269a7333", + "width": 128, + "height": 128 + }, + "m0459": { + "jacketAssetId": "m0459", + "assetName": "img_music_jacket_m0459", + "assetMd5": "a4630532ed4a601328047bd723ea8fc6", + "path": "/images/song-jackets/m0459.webp", + "sha256": "13e142a2a1610603572dfd21af5533b4ba8a687333976310f5ce20e1ad7d78de", + "width": 128, + "height": 128 + }, + "m0524": { + "jacketAssetId": "m0524", + "assetName": "img_music_jacket_m0524", + "assetMd5": "be652d3d979aa301b99b719573411361", + "path": "/images/song-jackets/m0524.webp", + "sha256": "388f49e9922cb1ef256452a2b1a1324fc8a63dc186e7a62959ce8652689f2cb4", + "width": 128, + "height": 128 + }, + "m0525": { + "jacketAssetId": "m0525", + "assetName": "img_music_jacket_m0525", + "assetMd5": "d7a3efc989a921e6e82898c7092bfaee", + "path": "/images/song-jackets/m0525.webp", + "sha256": "529a6078588c267a7b102721effca1996295d8e1b712eafa4515ba167700cedd", + "width": 128, + "height": 128 + }, + "m0527": { + "jacketAssetId": "m0527", + "assetName": "img_music_jacket_m0527", + "assetMd5": "a835368571d0fbb7096edbda17479ce5", + "path": "/images/song-jackets/m0527.webp", + "sha256": "311b4ce7a9a72b7b03bf00598bc0dbbd3e6306d6d1629c8ae5756ce92d8656c6", + "width": 128, + "height": 128 + }, + "m0548": { + "jacketAssetId": "m0548", + "assetName": "img_music_jacket_m0548", + "assetMd5": "4081b549ae00fa26a6452384ebcf17e7", + "path": "/images/song-jackets/m0548.webp", + "sha256": "77767ee8de7d991c9e75c2d5a9186fd78050d164d31d9c8f2ccb1362b249a2c4", + "width": 128, + "height": 128 + }, + "m9999": { + "jacketAssetId": "m9999", + "assetName": "img_music_jacket_m9999", + "assetMd5": "695eed979ec3d9eba8fd9920059dbc1f", + "path": "/images/song-jackets/m9999.webp", + "sha256": "9f00adffc1b002b6511b35fc7aaaaf90afb0ba6b1cf364630c5fb965c1e761be", + "width": 128, + "height": 128 + } + } +} diff --git a/src/lib/engine/song-list-copy.test.ts b/src/lib/engine/song-list-copy.test.ts new file mode 100644 index 0000000..e20fa2a --- /dev/null +++ b/src/lib/engine/song-list-copy.test.ts @@ -0,0 +1,42 @@ +import assert from 'node:assert/strict'; +import test from 'node:test'; +import { readFileSync, existsSync } from 'node:fs'; +import { createHash } from 'node:crypto'; +import { formatSongListClipboard } from './song-list-copy.ts'; + +test('복사 목록은 중복·선택 순서를 보존하고 번호·곡명만 텍스트로 제공한다', () => { + const songs = [{ songId: 'm0001', title: ' A\nB ', difficulty: 'expert', difficultyLevel: 30 }]; + const result = formatSongListClipboard([...songs, ...songs], { m0001: { path: '/images/song-jackets/m0001.webp' } }, 'https://doricalc-holo.live'); + assert.equal(result.text, '1. A B\n2. A B'); + assert.equal(result.html.match(/A B')); + assert.ok(result.html.indexOf('>1.') < result.html.indexOf('A B')); + assert.ok(!result.html.includes('expert')); + assert.equal(result.missingJackets, 0); +}); + +test('곡명은 HTML을 이스케이프하고 재킷은 검증된 로컬 이미지 경로만 사용한다', () => { + const result = formatSongListClipboard([{ songId: 'm0001', title: '' }], { m0001: { path: 'https://example.com/evil.webp' } }, 'https://doricalc-holo.live'); + assert.ok(result.html.includes('<script>"A" & B</script>')); + assert.ok(!result.html.includes(' { + assert.deepEqual(formatSongListClipboard([], {}, 'https://doricalc-holo.live'), { text: '', html: '', missingJackets: 0 }); +}); + +test('현재 악곡 카탈로그 전체의 재킷 파일과 출처 해시를 검증한다', () => { + const metadata = JSON.parse(readFileSync('src/lib/data/song-jackets.json', 'utf8')); + const charts = JSON.parse(readFileSync('src/lib/data/exact-chart-catalog.json', 'utf8')).charts; + for (const songId of new Set(charts.map((chart: { songId: string }) => chart.songId))) { + const jacket = metadata.jackets[songId]; + assert.ok(jacket, `Missing jacket: ${songId}`); + assert.match(jacket.assetName, /^img_music_jacket_m\d{4}$/); + assert.match(jacket.path, /^\/images\/song-jackets\/m\d{4}\.webp$/); + assert.ok(existsSync(`static${jacket.path}`)); + assert.equal(createHash('sha256').update(readFileSync(`static${jacket.path}`)).digest('hex'), jacket.sha256); + } +}); diff --git a/src/lib/engine/song-list-copy.ts b/src/lib/engine/song-list-copy.ts new file mode 100644 index 0000000..f63ee19 --- /dev/null +++ b/src/lib/engine/song-list-copy.ts @@ -0,0 +1,30 @@ +import type { SongChartSummary } from '../data/song-catalog.ts'; + +type Song = Pick; +type Jackets = Readonly>; + +function escapeHtml(value: string): string { + return value.replace(/[&<>"']/g, character => ({ + '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' + })[character]!); +} + +/** Rich editors receive jacket images and editable text; plain editors receive the same numbered titles. */ +export function formatSongListClipboard(songs: readonly Song[], jackets: Jackets, origin: string) { + let missingJackets = 0; + const titles = songs.map(song => song.title.replace(/\s+/g, ' ').trim()); + const rows = songs.map((song, index) => { + const path = jackets[song.songId]?.path; + // Only allow our generated static assets, never arbitrary markup or external image URLs. + const src = path && /^\/images\/song-jackets\/m\d{4}\.webp$/.test(path) + ? new URL(path, origin).href : undefined; + if (!src) missingJackets++; + const image = src ? `` : ''; + return `${index + 1}.${image}${escapeHtml(titles[index])}`; + }); + return { + text: titles.map((title, index) => `${index + 1}. ${title}`).join('\n'), + html: songs.length ? `${rows.join('')}
` : '', + missingJackets + }; +} diff --git a/src/routes/tools/song-list/+page.svelte b/src/routes/tools/song-list/+page.svelte index 133364c..9cbf692 100644 --- a/src/routes/tools/song-list/+page.svelte +++ b/src/routes/tools/song-list/+page.svelte @@ -3,35 +3,34 @@ import { page } from '$app/stores'; import ToolsNav from '$lib/components/ToolsNav.svelte'; import exactChartCatalog from '$lib/data/exact-chart-catalog.json'; - import { difficulties, difficultyLabel } from '$lib/data/difficulty.ts'; + import songJackets from '$lib/data/song-jackets.json'; import { createInitialReleaseClock, synchronizeReleaseClock } from '$lib/data/release-clock.ts'; import { songOptions } from '$lib/data/song-catalog.ts'; import { releasedSongCharts } from '$lib/data/song-release.ts'; - import { formatRandomSongResults } from '$lib/engine/random-song.ts'; + import { formatSongListClipboard } from '$lib/engine/song-list-copy.ts'; import { SONG_LIST_STORAGE_KEY, parseSavedSongList, serializeSongList } from '$lib/storage/song-list.ts'; type Chart = (typeof exactChartCatalog.charts)[number]; let releaseClock = createInitialReleaseClock($page.data?.serverNow); let releaseNow = releaseClock.now(); let query = ''; - let difficulty: string = 'expert'; let selections: { id: number; chart: Chart }[] = []; let nextId = 0; let announcement = ''; let copying = false; let copyStatus = ''; - let showCopyText = false; - let copyTextArea: HTMLTextAreaElement | undefined; + let showCopyPreview = false; + let copyPreview: HTMLDivElement | undefined; + let copyOrigin = 'https://doricalc.cc'; let storageNotice = ''; $: charts = releasedSongCharts(exactChartCatalog.charts, releaseNow); - $: difficultyCharts = charts.filter((chart) => chart.difficulty === difficulty); - $: options = songOptions(difficultyCharts, difficulty, query); - $: resultsText = formatRandomSongResults(selections.map(({ chart }) => chart)); + $: options = songOptions(charts, '', query); + $: resultsClipboard = formatSongListClipboard(selections.map(({ chart }) => chart), songJackets.jackets, copyOrigin); function resetCopyStatus() { copyStatus = ''; - showCopyText = false; + showCopyPreview = false; } function saveSongs() { @@ -48,12 +47,12 @@ } function addSong(songId: string) { - const chart = difficultyCharts.find((chart) => chart.songId === songId); + const chart = charts.find((chart) => chart.songId === songId); if (!chart) return; selections = [...selections, { id: nextId++, chart }]; saveSongs(); resetCopyStatus(); - announcement = `${selections.length}번째에 ${chart.title}, ${difficultyLabel(chart.difficulty)}를 추가했습니다.`; + announcement = `${selections.length}번째에 ${chart.title}를 추가했습니다.`; } function removeSong(id: number) { @@ -74,26 +73,39 @@ async function copySongs() { if (!selections.length || copying) return; const snapshot = selections; - const text = resultsText; + const content = resultsClipboard; copying = true; resetCopyStatus(); try { - if (!navigator.clipboard?.writeText) throw new Error('Clipboard unavailable'); - await navigator.clipboard.writeText(text); - if (selections === snapshot) copyStatus = `${snapshot.length}개 악곡을 선택 순서대로 복사했습니다.`; + if (!navigator.clipboard?.write || typeof ClipboardItem === 'undefined') throw new Error('Rich clipboard unavailable'); + await navigator.clipboard.write([new ClipboardItem({ + 'text/html': new Blob([content.html], { type: 'text/html' }), + 'text/plain': new Blob([content.text], { type: 'text/plain' }) + })]); + if (selections === snapshot) { + copyStatus = `${snapshot.length}개 악곡의 번호·재킷·제목을 선택 순서대로 복사했습니다.`; + if (content.missingJackets) copyStatus += ` 재킷 정보가 없는 ${content.missingJackets}개는 번호·곡명만 포함했습니다.`; + } } catch { if (selections !== snapshot) return; - copyStatus = '자동 복사를 사용할 수 없습니다. 아래 텍스트를 선택해 복사해 주세요.'; - showCopyText = true; + copyStatus = '자동 복사를 사용할 수 없습니다. 아래 선택된 목록을 직접 복사해 주세요.'; + showCopyPreview = true; await tick(); - copyTextArea?.focus(); - copyTextArea?.select(); + if (copyPreview) { + copyPreview.focus(); + const range = document.createRange(); + range.selectNodeContents(copyPreview); + const selection = window.getSelection(); + selection?.removeAllRanges(); + selection?.addRange(range); + } } finally { copying = false; } } onMount(() => { + copyOrigin = window.location.origin; try { const text = localStorage.getItem(SONG_LIST_STORAGE_KEY); if (text) { @@ -117,7 +129,7 @@ 악곡 목록 · 도구 · 갤산기 - +
@@ -136,26 +148,20 @@ - {#if options.length}
    {#each options as song (song.id)}
  • -
  • {/each}
{:else} -

검색 결과가 없습니다. 검색어나 난이도를 변경해 주세요.

+

검색 결과가 없습니다. 검색어를 변경해 주세요.

{/if} @@ -170,10 +176,10 @@ {#if storageNotice}

{storageNotice}

{/if}

{copyStatus}

- {#if showCopyText} - + {#if showCopyPreview} +
+ {@html resultsClipboard.html} +
{/if} {#if selections.length}
    @@ -181,8 +187,6 @@
  1. {entry.chart.title} - {difficultyLabel(entry.chart.difficulty)} - {entry.chart.difficultyLevel == null ? '레벨 정보 없음' : `Lv. ${entry.chart.difficultyLevel}`}
  2. {/each} @@ -202,21 +206,19 @@ h2 span { margin-left: 6px; color: #a4adba; font-size: 14px; font-weight: 500; } .panel, .result { margin-top: 26px; padding: 26px; border: 1px solid #343c49; border-radius: 16px; background: #151a22; } .panel { padding: 20px; } - .filters { display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 14px; } + .filters { display: grid; grid-template-columns: minmax(0, 1fr); } label { display: grid; gap: 8px; min-width: 0; color: #a4adba; font-size: 14px; } - input, select, textarea { width: 100%; min-width: 0; padding: 12px; border: 1px solid #414b5b; border-radius: 9px; background: #101319; color: #e8ebf1; font: inherit; } - input, select { height: 44px; } + input { width: 100%; min-width: 0; height: 44px; padding: 12px; border: 1px solid #414b5b; border-radius: 9px; background: #101319; color: #e8ebf1; font: inherit; } .placeholder { color: #a4adba; line-height: 1.7; } .song-options { max-height: 200px; overflow-y: auto; overscroll-behavior: contain; margin: 12px 0 0; padding: 3px; list-style: none; } .song-options li + li { margin-top: 4px; } button { min-height: 44px; border: 1px solid #343c49; border-radius: 9px; background: #101319; color: #e8ebf1; font: inherit; cursor: pointer; } button:hover:not(:disabled) { border-color: #a76b87; background: #302331; } button:disabled { color: #87909e; cursor: not-allowed; } - button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 3px solid #ed8bb5; outline-offset: 2px; } - .song-option { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 10px; width: 100%; min-height: 36px; padding: 6px 10px; border-radius: 7px; text-align: left; } + button:focus-visible, input:focus-visible, .copy-preview:focus-visible { outline: 3px solid #ed8bb5; outline-offset: 2px; } + .song-option { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-height: 36px; padding: 6px 10px; border-radius: 7px; text-align: left; } .song-title { min-width: 0; overflow-wrap: anywhere; line-height: 1.6; } .song-option .song-title { font-size: 14px; line-height: 1.35; } - .level { color: #a4adba; font-size: 13px; } .add-label { color: #f3b4d0; font-size: 13px; font-weight: 800; white-space: nowrap; } .result { padding: 20px; } .results-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; } @@ -227,26 +229,21 @@ .copy-status { margin: 12px 0 0; color: #f3b4d0; font-size: 13px; line-height: 1.6; } .copy-status:empty { margin: 0; } .storage-notice { color: #f3b4d0; font-size: 13px; line-height: 1.7; } - .copy-text { margin-top: 12px; } - textarea { min-height: 88px; resize: vertical; line-height: 1.7; } + .copy-preview { margin-top: 12px; max-height: 320px; overflow: auto; padding: 12px; border-radius: 9px; background: #fff; color: #222; font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; } .results-list { margin: 12px 0 0; padding: 0; list-style: none; } - .results-list li { display: grid; grid-template-columns: 24px minmax(0, 1fr) 52px 46px auto; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid #2c3441; } + .results-list li { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid #2c3441; } .results-list li:last-child { border-bottom: 0; } .selection-number { color: #a4adba; font-size: 13px; font-variant-numeric: tabular-nums; } .selected-title { font-size: 14px; line-height: 1.4; } - .selected-difficulty, .selected-level { color: #a4adba; font-size: 12px; } - .selected-level { font-variant-numeric: tabular-nums; } .remove-button { min-height: 32px; padding: 4px 8px; font-size: 12px; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } @media (max-width: 520px) { .panel, .result { padding: 20px; } .result { padding: 16px; } - .filters { grid-template-columns: minmax(0, 1fr) 110px; gap: 10px; } .song-option { gap: 8px; padding-inline: 8px; } .song-option .song-title { font-size: 13px; } - .level, .add-label { font-size: 11px; } - .results-list li { grid-template-columns: 18px minmax(0, 1fr) 42px 36px auto; gap: 6px; } + .add-label { font-size: 11px; } + .results-list li { grid-template-columns: 18px minmax(0, 1fr) auto; gap: 6px; } .selected-title { font-size: 13px; } - .selected-difficulty, .selected-level { font-size: 11px; } } diff --git a/static/images/song-jackets/m0001.webp b/static/images/song-jackets/m0001.webp new file mode 100644 index 0000000..97250a6 Binary files /dev/null and b/static/images/song-jackets/m0001.webp differ diff --git a/static/images/song-jackets/m0002.webp b/static/images/song-jackets/m0002.webp new file mode 100644 index 0000000..39cd535 Binary files /dev/null and b/static/images/song-jackets/m0002.webp differ diff --git a/static/images/song-jackets/m0003.webp b/static/images/song-jackets/m0003.webp new file mode 100644 index 0000000..23da52f Binary files /dev/null and b/static/images/song-jackets/m0003.webp differ diff --git a/static/images/song-jackets/m0004.webp b/static/images/song-jackets/m0004.webp new file mode 100644 index 0000000..18ae45d Binary files /dev/null and b/static/images/song-jackets/m0004.webp differ diff --git a/static/images/song-jackets/m0005.webp b/static/images/song-jackets/m0005.webp new file mode 100644 index 0000000..59f63b6 Binary files /dev/null and b/static/images/song-jackets/m0005.webp differ diff --git a/static/images/song-jackets/m0006.webp b/static/images/song-jackets/m0006.webp new file mode 100644 index 0000000..9ca72da Binary files /dev/null and b/static/images/song-jackets/m0006.webp differ diff --git a/static/images/song-jackets/m0007.webp b/static/images/song-jackets/m0007.webp new file mode 100644 index 0000000..86ba5ef Binary files /dev/null and b/static/images/song-jackets/m0007.webp differ diff --git a/static/images/song-jackets/m0008.webp b/static/images/song-jackets/m0008.webp new file mode 100644 index 0000000..300fedf Binary files /dev/null and b/static/images/song-jackets/m0008.webp differ diff --git a/static/images/song-jackets/m0009.webp b/static/images/song-jackets/m0009.webp new file mode 100644 index 0000000..acbdbdb Binary files /dev/null and b/static/images/song-jackets/m0009.webp differ diff --git a/static/images/song-jackets/m0010.webp b/static/images/song-jackets/m0010.webp new file mode 100644 index 0000000..46585d5 Binary files /dev/null and b/static/images/song-jackets/m0010.webp differ diff --git a/static/images/song-jackets/m0012.webp b/static/images/song-jackets/m0012.webp new file mode 100644 index 0000000..84fc8bd Binary files /dev/null and b/static/images/song-jackets/m0012.webp differ diff --git a/static/images/song-jackets/m0014.webp b/static/images/song-jackets/m0014.webp new file mode 100644 index 0000000..970c08b Binary files /dev/null and b/static/images/song-jackets/m0014.webp differ diff --git a/static/images/song-jackets/m0017.webp b/static/images/song-jackets/m0017.webp new file mode 100644 index 0000000..4ddae07 Binary files /dev/null and b/static/images/song-jackets/m0017.webp differ diff --git a/static/images/song-jackets/m0018.webp b/static/images/song-jackets/m0018.webp new file mode 100644 index 0000000..32326c6 Binary files /dev/null and b/static/images/song-jackets/m0018.webp differ diff --git a/static/images/song-jackets/m0020.webp b/static/images/song-jackets/m0020.webp new file mode 100644 index 0000000..43ed147 Binary files /dev/null and b/static/images/song-jackets/m0020.webp differ diff --git a/static/images/song-jackets/m0021.webp b/static/images/song-jackets/m0021.webp new file mode 100644 index 0000000..9927afd Binary files /dev/null and b/static/images/song-jackets/m0021.webp differ diff --git a/static/images/song-jackets/m0022.webp b/static/images/song-jackets/m0022.webp new file mode 100644 index 0000000..449117e Binary files /dev/null and b/static/images/song-jackets/m0022.webp differ diff --git a/static/images/song-jackets/m0023.webp b/static/images/song-jackets/m0023.webp new file mode 100644 index 0000000..90a69b4 Binary files /dev/null and b/static/images/song-jackets/m0023.webp differ diff --git a/static/images/song-jackets/m0026.webp b/static/images/song-jackets/m0026.webp new file mode 100644 index 0000000..77b9c1e Binary files /dev/null and b/static/images/song-jackets/m0026.webp differ diff --git a/static/images/song-jackets/m0028.webp b/static/images/song-jackets/m0028.webp new file mode 100644 index 0000000..7a27ba0 Binary files /dev/null and b/static/images/song-jackets/m0028.webp differ diff --git a/static/images/song-jackets/m0031.webp b/static/images/song-jackets/m0031.webp new file mode 100644 index 0000000..f146cb4 Binary files /dev/null and b/static/images/song-jackets/m0031.webp differ diff --git a/static/images/song-jackets/m0032.webp b/static/images/song-jackets/m0032.webp new file mode 100644 index 0000000..f400b2f Binary files /dev/null and b/static/images/song-jackets/m0032.webp differ diff --git a/static/images/song-jackets/m0033.webp b/static/images/song-jackets/m0033.webp new file mode 100644 index 0000000..4f59e52 Binary files /dev/null and b/static/images/song-jackets/m0033.webp differ diff --git a/static/images/song-jackets/m0034.webp b/static/images/song-jackets/m0034.webp new file mode 100644 index 0000000..ad15d33 Binary files /dev/null and b/static/images/song-jackets/m0034.webp differ diff --git a/static/images/song-jackets/m0035.webp b/static/images/song-jackets/m0035.webp new file mode 100644 index 0000000..e2f6a12 Binary files /dev/null and b/static/images/song-jackets/m0035.webp differ diff --git a/static/images/song-jackets/m0037.webp b/static/images/song-jackets/m0037.webp new file mode 100644 index 0000000..5806103 Binary files /dev/null and b/static/images/song-jackets/m0037.webp differ diff --git a/static/images/song-jackets/m0038.webp b/static/images/song-jackets/m0038.webp new file mode 100644 index 0000000..1d62e7e Binary files /dev/null and b/static/images/song-jackets/m0038.webp differ diff --git a/static/images/song-jackets/m0040.webp b/static/images/song-jackets/m0040.webp new file mode 100644 index 0000000..02daad2 Binary files /dev/null and b/static/images/song-jackets/m0040.webp differ diff --git a/static/images/song-jackets/m0041.webp b/static/images/song-jackets/m0041.webp new file mode 100644 index 0000000..f761e84 Binary files /dev/null and b/static/images/song-jackets/m0041.webp differ diff --git a/static/images/song-jackets/m0042.webp b/static/images/song-jackets/m0042.webp new file mode 100644 index 0000000..28b93b4 Binary files /dev/null and b/static/images/song-jackets/m0042.webp differ diff --git a/static/images/song-jackets/m0044.webp b/static/images/song-jackets/m0044.webp new file mode 100644 index 0000000..db91d65 Binary files /dev/null and b/static/images/song-jackets/m0044.webp differ diff --git a/static/images/song-jackets/m0046.webp b/static/images/song-jackets/m0046.webp new file mode 100644 index 0000000..bb42392 Binary files /dev/null and b/static/images/song-jackets/m0046.webp differ diff --git a/static/images/song-jackets/m0047.webp b/static/images/song-jackets/m0047.webp new file mode 100644 index 0000000..e7867c2 Binary files /dev/null and b/static/images/song-jackets/m0047.webp differ diff --git a/static/images/song-jackets/m0048.webp b/static/images/song-jackets/m0048.webp new file mode 100644 index 0000000..44a8300 Binary files /dev/null and b/static/images/song-jackets/m0048.webp differ diff --git a/static/images/song-jackets/m0049.webp b/static/images/song-jackets/m0049.webp new file mode 100644 index 0000000..6a704ea Binary files /dev/null and b/static/images/song-jackets/m0049.webp differ diff --git a/static/images/song-jackets/m0050.webp b/static/images/song-jackets/m0050.webp new file mode 100644 index 0000000..2d89b50 Binary files /dev/null and b/static/images/song-jackets/m0050.webp differ diff --git a/static/images/song-jackets/m0052.webp b/static/images/song-jackets/m0052.webp new file mode 100644 index 0000000..75938c3 Binary files /dev/null and b/static/images/song-jackets/m0052.webp differ diff --git a/static/images/song-jackets/m0053.webp b/static/images/song-jackets/m0053.webp new file mode 100644 index 0000000..8c4c1cb Binary files /dev/null and b/static/images/song-jackets/m0053.webp differ diff --git a/static/images/song-jackets/m0054.webp b/static/images/song-jackets/m0054.webp new file mode 100644 index 0000000..8d72ed9 Binary files /dev/null and b/static/images/song-jackets/m0054.webp differ diff --git a/static/images/song-jackets/m0058.webp b/static/images/song-jackets/m0058.webp new file mode 100644 index 0000000..df57685 Binary files /dev/null and b/static/images/song-jackets/m0058.webp differ diff --git a/static/images/song-jackets/m0060.webp b/static/images/song-jackets/m0060.webp new file mode 100644 index 0000000..5cfb4f0 Binary files /dev/null and b/static/images/song-jackets/m0060.webp differ diff --git a/static/images/song-jackets/m0062.webp b/static/images/song-jackets/m0062.webp new file mode 100644 index 0000000..2e01b06 Binary files /dev/null and b/static/images/song-jackets/m0062.webp differ diff --git a/static/images/song-jackets/m0063.webp b/static/images/song-jackets/m0063.webp new file mode 100644 index 0000000..f8fed67 Binary files /dev/null and b/static/images/song-jackets/m0063.webp differ diff --git a/static/images/song-jackets/m0064.webp b/static/images/song-jackets/m0064.webp new file mode 100644 index 0000000..a876ad7 Binary files /dev/null and b/static/images/song-jackets/m0064.webp differ diff --git a/static/images/song-jackets/m0065.webp b/static/images/song-jackets/m0065.webp new file mode 100644 index 0000000..c4ca46a Binary files /dev/null and b/static/images/song-jackets/m0065.webp differ diff --git a/static/images/song-jackets/m0066.webp b/static/images/song-jackets/m0066.webp new file mode 100644 index 0000000..29ff491 Binary files /dev/null and b/static/images/song-jackets/m0066.webp differ diff --git a/static/images/song-jackets/m0068.webp b/static/images/song-jackets/m0068.webp new file mode 100644 index 0000000..60b5bee Binary files /dev/null and b/static/images/song-jackets/m0068.webp differ diff --git a/static/images/song-jackets/m0069.webp b/static/images/song-jackets/m0069.webp new file mode 100644 index 0000000..25fde99 Binary files /dev/null and b/static/images/song-jackets/m0069.webp differ diff --git a/static/images/song-jackets/m0070.webp b/static/images/song-jackets/m0070.webp new file mode 100644 index 0000000..f2caaf3 Binary files /dev/null and b/static/images/song-jackets/m0070.webp differ diff --git a/static/images/song-jackets/m0071.webp b/static/images/song-jackets/m0071.webp new file mode 100644 index 0000000..7b9c15b Binary files /dev/null and b/static/images/song-jackets/m0071.webp differ diff --git a/static/images/song-jackets/m0072.webp b/static/images/song-jackets/m0072.webp new file mode 100644 index 0000000..2ebe48a Binary files /dev/null and b/static/images/song-jackets/m0072.webp differ diff --git a/static/images/song-jackets/m0073.webp b/static/images/song-jackets/m0073.webp new file mode 100644 index 0000000..13a8b0f Binary files /dev/null and b/static/images/song-jackets/m0073.webp differ diff --git a/static/images/song-jackets/m0074.webp b/static/images/song-jackets/m0074.webp new file mode 100644 index 0000000..b95c68a Binary files /dev/null and b/static/images/song-jackets/m0074.webp differ diff --git a/static/images/song-jackets/m0075.webp b/static/images/song-jackets/m0075.webp new file mode 100644 index 0000000..3faf1df Binary files /dev/null and b/static/images/song-jackets/m0075.webp differ diff --git a/static/images/song-jackets/m0076.webp b/static/images/song-jackets/m0076.webp new file mode 100644 index 0000000..59734a4 Binary files /dev/null and b/static/images/song-jackets/m0076.webp differ diff --git a/static/images/song-jackets/m0077.webp b/static/images/song-jackets/m0077.webp new file mode 100644 index 0000000..3ff4ca8 Binary files /dev/null and b/static/images/song-jackets/m0077.webp differ diff --git a/static/images/song-jackets/m0078.webp b/static/images/song-jackets/m0078.webp new file mode 100644 index 0000000..4a3c0a3 Binary files /dev/null and b/static/images/song-jackets/m0078.webp differ diff --git a/static/images/song-jackets/m0079.webp b/static/images/song-jackets/m0079.webp new file mode 100644 index 0000000..a2b6690 Binary files /dev/null and b/static/images/song-jackets/m0079.webp differ diff --git a/static/images/song-jackets/m0080.webp b/static/images/song-jackets/m0080.webp new file mode 100644 index 0000000..0a2a80f Binary files /dev/null and b/static/images/song-jackets/m0080.webp differ diff --git a/static/images/song-jackets/m0083.webp b/static/images/song-jackets/m0083.webp new file mode 100644 index 0000000..502094f Binary files /dev/null and b/static/images/song-jackets/m0083.webp differ diff --git a/static/images/song-jackets/m0084.webp b/static/images/song-jackets/m0084.webp new file mode 100644 index 0000000..ee62294 Binary files /dev/null and b/static/images/song-jackets/m0084.webp differ diff --git a/static/images/song-jackets/m0085.webp b/static/images/song-jackets/m0085.webp new file mode 100644 index 0000000..91531e3 Binary files /dev/null and b/static/images/song-jackets/m0085.webp differ diff --git a/static/images/song-jackets/m0086.webp b/static/images/song-jackets/m0086.webp new file mode 100644 index 0000000..a57b9e3 Binary files /dev/null and b/static/images/song-jackets/m0086.webp differ diff --git a/static/images/song-jackets/m0087.webp b/static/images/song-jackets/m0087.webp new file mode 100644 index 0000000..924a329 Binary files /dev/null and b/static/images/song-jackets/m0087.webp differ diff --git a/static/images/song-jackets/m0089.webp b/static/images/song-jackets/m0089.webp new file mode 100644 index 0000000..4ad230c Binary files /dev/null and b/static/images/song-jackets/m0089.webp differ diff --git a/static/images/song-jackets/m0090.webp b/static/images/song-jackets/m0090.webp new file mode 100644 index 0000000..b5b01f9 Binary files /dev/null and b/static/images/song-jackets/m0090.webp differ diff --git a/static/images/song-jackets/m0091.webp b/static/images/song-jackets/m0091.webp new file mode 100644 index 0000000..4a55f5e Binary files /dev/null and b/static/images/song-jackets/m0091.webp differ diff --git a/static/images/song-jackets/m0092.webp b/static/images/song-jackets/m0092.webp new file mode 100644 index 0000000..553f971 Binary files /dev/null and b/static/images/song-jackets/m0092.webp differ diff --git a/static/images/song-jackets/m0094.webp b/static/images/song-jackets/m0094.webp new file mode 100644 index 0000000..a1ccf9e Binary files /dev/null and b/static/images/song-jackets/m0094.webp differ diff --git a/static/images/song-jackets/m0095.webp b/static/images/song-jackets/m0095.webp new file mode 100644 index 0000000..891b312 Binary files /dev/null and b/static/images/song-jackets/m0095.webp differ diff --git a/static/images/song-jackets/m0097.webp b/static/images/song-jackets/m0097.webp new file mode 100644 index 0000000..a21dd05 Binary files /dev/null and b/static/images/song-jackets/m0097.webp differ diff --git a/static/images/song-jackets/m0098.webp b/static/images/song-jackets/m0098.webp new file mode 100644 index 0000000..f25605e Binary files /dev/null and b/static/images/song-jackets/m0098.webp differ diff --git a/static/images/song-jackets/m0099.webp b/static/images/song-jackets/m0099.webp new file mode 100644 index 0000000..674444c Binary files /dev/null and b/static/images/song-jackets/m0099.webp differ diff --git a/static/images/song-jackets/m0100.webp b/static/images/song-jackets/m0100.webp new file mode 100644 index 0000000..2700bc3 Binary files /dev/null and b/static/images/song-jackets/m0100.webp differ diff --git a/static/images/song-jackets/m0101.webp b/static/images/song-jackets/m0101.webp new file mode 100644 index 0000000..a0c92bf Binary files /dev/null and b/static/images/song-jackets/m0101.webp differ diff --git a/static/images/song-jackets/m0102.webp b/static/images/song-jackets/m0102.webp new file mode 100644 index 0000000..e537a4e Binary files /dev/null and b/static/images/song-jackets/m0102.webp differ diff --git a/static/images/song-jackets/m0104.webp b/static/images/song-jackets/m0104.webp new file mode 100644 index 0000000..a9295f7 Binary files /dev/null and b/static/images/song-jackets/m0104.webp differ diff --git a/static/images/song-jackets/m0105.webp b/static/images/song-jackets/m0105.webp new file mode 100644 index 0000000..a22ce93 Binary files /dev/null and b/static/images/song-jackets/m0105.webp differ diff --git a/static/images/song-jackets/m0106.webp b/static/images/song-jackets/m0106.webp new file mode 100644 index 0000000..e6bc0bc Binary files /dev/null and b/static/images/song-jackets/m0106.webp differ diff --git a/static/images/song-jackets/m0107.webp b/static/images/song-jackets/m0107.webp new file mode 100644 index 0000000..d3ebc1d Binary files /dev/null and b/static/images/song-jackets/m0107.webp differ diff --git a/static/images/song-jackets/m0108.webp b/static/images/song-jackets/m0108.webp new file mode 100644 index 0000000..93fc3be Binary files /dev/null and b/static/images/song-jackets/m0108.webp differ diff --git a/static/images/song-jackets/m0109.webp b/static/images/song-jackets/m0109.webp new file mode 100644 index 0000000..b4c4c99 Binary files /dev/null and b/static/images/song-jackets/m0109.webp differ diff --git a/static/images/song-jackets/m0111.webp b/static/images/song-jackets/m0111.webp new file mode 100644 index 0000000..0e7427c Binary files /dev/null and b/static/images/song-jackets/m0111.webp differ diff --git a/static/images/song-jackets/m0112.webp b/static/images/song-jackets/m0112.webp new file mode 100644 index 0000000..a89e0ba Binary files /dev/null and b/static/images/song-jackets/m0112.webp differ diff --git a/static/images/song-jackets/m0114.webp b/static/images/song-jackets/m0114.webp new file mode 100644 index 0000000..dd3efb1 Binary files /dev/null and b/static/images/song-jackets/m0114.webp differ diff --git a/static/images/song-jackets/m0115.webp b/static/images/song-jackets/m0115.webp new file mode 100644 index 0000000..3b466b1 Binary files /dev/null and b/static/images/song-jackets/m0115.webp differ diff --git a/static/images/song-jackets/m0116.webp b/static/images/song-jackets/m0116.webp new file mode 100644 index 0000000..599c713 Binary files /dev/null and b/static/images/song-jackets/m0116.webp differ diff --git a/static/images/song-jackets/m0117.webp b/static/images/song-jackets/m0117.webp new file mode 100644 index 0000000..b97a229 Binary files /dev/null and b/static/images/song-jackets/m0117.webp differ diff --git a/static/images/song-jackets/m0120.webp b/static/images/song-jackets/m0120.webp new file mode 100644 index 0000000..2af3073 Binary files /dev/null and b/static/images/song-jackets/m0120.webp differ diff --git a/static/images/song-jackets/m0121.webp b/static/images/song-jackets/m0121.webp new file mode 100644 index 0000000..8aadbf9 Binary files /dev/null and b/static/images/song-jackets/m0121.webp differ diff --git a/static/images/song-jackets/m0122.webp b/static/images/song-jackets/m0122.webp new file mode 100644 index 0000000..7988b6a Binary files /dev/null and b/static/images/song-jackets/m0122.webp differ diff --git a/static/images/song-jackets/m0123.webp b/static/images/song-jackets/m0123.webp new file mode 100644 index 0000000..cbe7288 Binary files /dev/null and b/static/images/song-jackets/m0123.webp differ diff --git a/static/images/song-jackets/m0124.webp b/static/images/song-jackets/m0124.webp new file mode 100644 index 0000000..b1e7e6c Binary files /dev/null and b/static/images/song-jackets/m0124.webp differ diff --git a/static/images/song-jackets/m0127.webp b/static/images/song-jackets/m0127.webp new file mode 100644 index 0000000..89d1054 Binary files /dev/null and b/static/images/song-jackets/m0127.webp differ diff --git a/static/images/song-jackets/m0128.webp b/static/images/song-jackets/m0128.webp new file mode 100644 index 0000000..2cda598 Binary files /dev/null and b/static/images/song-jackets/m0128.webp differ diff --git a/static/images/song-jackets/m0129.webp b/static/images/song-jackets/m0129.webp new file mode 100644 index 0000000..42e0ce3 Binary files /dev/null and b/static/images/song-jackets/m0129.webp differ diff --git a/static/images/song-jackets/m0131.webp b/static/images/song-jackets/m0131.webp new file mode 100644 index 0000000..d03f73f Binary files /dev/null and b/static/images/song-jackets/m0131.webp differ diff --git a/static/images/song-jackets/m0133.webp b/static/images/song-jackets/m0133.webp new file mode 100644 index 0000000..d6be13d Binary files /dev/null and b/static/images/song-jackets/m0133.webp differ diff --git a/static/images/song-jackets/m0134.webp b/static/images/song-jackets/m0134.webp new file mode 100644 index 0000000..76a38c6 Binary files /dev/null and b/static/images/song-jackets/m0134.webp differ diff --git a/static/images/song-jackets/m0135.webp b/static/images/song-jackets/m0135.webp new file mode 100644 index 0000000..9faab99 Binary files /dev/null and b/static/images/song-jackets/m0135.webp differ diff --git a/static/images/song-jackets/m0136.webp b/static/images/song-jackets/m0136.webp new file mode 100644 index 0000000..fd8f35c Binary files /dev/null and b/static/images/song-jackets/m0136.webp differ diff --git a/static/images/song-jackets/m0137.webp b/static/images/song-jackets/m0137.webp new file mode 100644 index 0000000..1cf3851 Binary files /dev/null and b/static/images/song-jackets/m0137.webp differ diff --git a/static/images/song-jackets/m0138.webp b/static/images/song-jackets/m0138.webp new file mode 100644 index 0000000..4b82460 Binary files /dev/null and b/static/images/song-jackets/m0138.webp differ diff --git a/static/images/song-jackets/m0139.webp b/static/images/song-jackets/m0139.webp new file mode 100644 index 0000000..3d7a6c1 Binary files /dev/null and b/static/images/song-jackets/m0139.webp differ diff --git a/static/images/song-jackets/m0140.webp b/static/images/song-jackets/m0140.webp new file mode 100644 index 0000000..8749cf4 Binary files /dev/null and b/static/images/song-jackets/m0140.webp differ diff --git a/static/images/song-jackets/m0141.webp b/static/images/song-jackets/m0141.webp new file mode 100644 index 0000000..9e6ad71 Binary files /dev/null and b/static/images/song-jackets/m0141.webp differ diff --git a/static/images/song-jackets/m0142.webp b/static/images/song-jackets/m0142.webp new file mode 100644 index 0000000..3529bf3 Binary files /dev/null and b/static/images/song-jackets/m0142.webp differ diff --git a/static/images/song-jackets/m0144.webp b/static/images/song-jackets/m0144.webp new file mode 100644 index 0000000..00a4c8e Binary files /dev/null and b/static/images/song-jackets/m0144.webp differ diff --git a/static/images/song-jackets/m0145.webp b/static/images/song-jackets/m0145.webp new file mode 100644 index 0000000..3d7a2cc Binary files /dev/null and b/static/images/song-jackets/m0145.webp differ diff --git a/static/images/song-jackets/m0146.webp b/static/images/song-jackets/m0146.webp new file mode 100644 index 0000000..8f57d93 Binary files /dev/null and b/static/images/song-jackets/m0146.webp differ diff --git a/static/images/song-jackets/m0147.webp b/static/images/song-jackets/m0147.webp new file mode 100644 index 0000000..bc29d2b Binary files /dev/null and b/static/images/song-jackets/m0147.webp differ diff --git a/static/images/song-jackets/m0148.webp b/static/images/song-jackets/m0148.webp new file mode 100644 index 0000000..6990d4f Binary files /dev/null and b/static/images/song-jackets/m0148.webp differ diff --git a/static/images/song-jackets/m0149.webp b/static/images/song-jackets/m0149.webp new file mode 100644 index 0000000..13ac985 Binary files /dev/null and b/static/images/song-jackets/m0149.webp differ diff --git a/static/images/song-jackets/m0150.webp b/static/images/song-jackets/m0150.webp new file mode 100644 index 0000000..169dac7 Binary files /dev/null and b/static/images/song-jackets/m0150.webp differ diff --git a/static/images/song-jackets/m0153.webp b/static/images/song-jackets/m0153.webp new file mode 100644 index 0000000..f921bdf Binary files /dev/null and b/static/images/song-jackets/m0153.webp differ diff --git a/static/images/song-jackets/m0154.webp b/static/images/song-jackets/m0154.webp new file mode 100644 index 0000000..84be23d Binary files /dev/null and b/static/images/song-jackets/m0154.webp differ diff --git a/static/images/song-jackets/m0155.webp b/static/images/song-jackets/m0155.webp new file mode 100644 index 0000000..6c64fa8 Binary files /dev/null and b/static/images/song-jackets/m0155.webp differ diff --git a/static/images/song-jackets/m0156.webp b/static/images/song-jackets/m0156.webp new file mode 100644 index 0000000..447917c Binary files /dev/null and b/static/images/song-jackets/m0156.webp differ diff --git a/static/images/song-jackets/m0157.webp b/static/images/song-jackets/m0157.webp new file mode 100644 index 0000000..39b3a14 Binary files /dev/null and b/static/images/song-jackets/m0157.webp differ diff --git a/static/images/song-jackets/m0158.webp b/static/images/song-jackets/m0158.webp new file mode 100644 index 0000000..0458ccd Binary files /dev/null and b/static/images/song-jackets/m0158.webp differ diff --git a/static/images/song-jackets/m0159.webp b/static/images/song-jackets/m0159.webp new file mode 100644 index 0000000..c86b120 Binary files /dev/null and b/static/images/song-jackets/m0159.webp differ diff --git a/static/images/song-jackets/m0160.webp b/static/images/song-jackets/m0160.webp new file mode 100644 index 0000000..d355c68 Binary files /dev/null and b/static/images/song-jackets/m0160.webp differ diff --git a/static/images/song-jackets/m0161.webp b/static/images/song-jackets/m0161.webp new file mode 100644 index 0000000..24e6694 Binary files /dev/null and b/static/images/song-jackets/m0161.webp differ diff --git a/static/images/song-jackets/m0162.webp b/static/images/song-jackets/m0162.webp new file mode 100644 index 0000000..5860054 Binary files /dev/null and b/static/images/song-jackets/m0162.webp differ diff --git a/static/images/song-jackets/m0163.webp b/static/images/song-jackets/m0163.webp new file mode 100644 index 0000000..b08d996 Binary files /dev/null and b/static/images/song-jackets/m0163.webp differ diff --git a/static/images/song-jackets/m0164.webp b/static/images/song-jackets/m0164.webp new file mode 100644 index 0000000..fd3fedd Binary files /dev/null and b/static/images/song-jackets/m0164.webp differ diff --git a/static/images/song-jackets/m0165.webp b/static/images/song-jackets/m0165.webp new file mode 100644 index 0000000..9052e6a Binary files /dev/null and b/static/images/song-jackets/m0165.webp differ diff --git a/static/images/song-jackets/m0166.webp b/static/images/song-jackets/m0166.webp new file mode 100644 index 0000000..ab31e98 Binary files /dev/null and b/static/images/song-jackets/m0166.webp differ diff --git a/static/images/song-jackets/m0167.webp b/static/images/song-jackets/m0167.webp new file mode 100644 index 0000000..cf0e4a2 Binary files /dev/null and b/static/images/song-jackets/m0167.webp differ diff --git a/static/images/song-jackets/m0168.webp b/static/images/song-jackets/m0168.webp new file mode 100644 index 0000000..1220843 Binary files /dev/null and b/static/images/song-jackets/m0168.webp differ diff --git a/static/images/song-jackets/m0171.webp b/static/images/song-jackets/m0171.webp new file mode 100644 index 0000000..9d7998d Binary files /dev/null and b/static/images/song-jackets/m0171.webp differ diff --git a/static/images/song-jackets/m0176.webp b/static/images/song-jackets/m0176.webp new file mode 100644 index 0000000..52a8f51 Binary files /dev/null and b/static/images/song-jackets/m0176.webp differ diff --git a/static/images/song-jackets/m0177.webp b/static/images/song-jackets/m0177.webp new file mode 100644 index 0000000..853ec9e Binary files /dev/null and b/static/images/song-jackets/m0177.webp differ diff --git a/static/images/song-jackets/m0179.webp b/static/images/song-jackets/m0179.webp new file mode 100644 index 0000000..973628c Binary files /dev/null and b/static/images/song-jackets/m0179.webp differ diff --git a/static/images/song-jackets/m0180.webp b/static/images/song-jackets/m0180.webp new file mode 100644 index 0000000..3395647 Binary files /dev/null and b/static/images/song-jackets/m0180.webp differ diff --git a/static/images/song-jackets/m0181.webp b/static/images/song-jackets/m0181.webp new file mode 100644 index 0000000..b243811 Binary files /dev/null and b/static/images/song-jackets/m0181.webp differ diff --git a/static/images/song-jackets/m0182.webp b/static/images/song-jackets/m0182.webp new file mode 100644 index 0000000..cc36133 Binary files /dev/null and b/static/images/song-jackets/m0182.webp differ diff --git a/static/images/song-jackets/m0183.webp b/static/images/song-jackets/m0183.webp new file mode 100644 index 0000000..ed023b7 Binary files /dev/null and b/static/images/song-jackets/m0183.webp differ diff --git a/static/images/song-jackets/m0184.webp b/static/images/song-jackets/m0184.webp new file mode 100644 index 0000000..95bb46c Binary files /dev/null and b/static/images/song-jackets/m0184.webp differ diff --git a/static/images/song-jackets/m0185.webp b/static/images/song-jackets/m0185.webp new file mode 100644 index 0000000..37d08aa Binary files /dev/null and b/static/images/song-jackets/m0185.webp differ diff --git a/static/images/song-jackets/m0186.webp b/static/images/song-jackets/m0186.webp new file mode 100644 index 0000000..2812e0a Binary files /dev/null and b/static/images/song-jackets/m0186.webp differ diff --git a/static/images/song-jackets/m0187.webp b/static/images/song-jackets/m0187.webp new file mode 100644 index 0000000..2f919e2 Binary files /dev/null and b/static/images/song-jackets/m0187.webp differ diff --git a/static/images/song-jackets/m0188.webp b/static/images/song-jackets/m0188.webp new file mode 100644 index 0000000..75683b2 Binary files /dev/null and b/static/images/song-jackets/m0188.webp differ diff --git a/static/images/song-jackets/m0189.webp b/static/images/song-jackets/m0189.webp new file mode 100644 index 0000000..0ec6b01 Binary files /dev/null and b/static/images/song-jackets/m0189.webp differ diff --git a/static/images/song-jackets/m0190.webp b/static/images/song-jackets/m0190.webp new file mode 100644 index 0000000..ef72d49 Binary files /dev/null and b/static/images/song-jackets/m0190.webp differ diff --git a/static/images/song-jackets/m0191.webp b/static/images/song-jackets/m0191.webp new file mode 100644 index 0000000..1372ad9 Binary files /dev/null and b/static/images/song-jackets/m0191.webp differ diff --git a/static/images/song-jackets/m0192.webp b/static/images/song-jackets/m0192.webp new file mode 100644 index 0000000..0cea8fa Binary files /dev/null and b/static/images/song-jackets/m0192.webp differ diff --git a/static/images/song-jackets/m0193.webp b/static/images/song-jackets/m0193.webp new file mode 100644 index 0000000..ee93b0f Binary files /dev/null and b/static/images/song-jackets/m0193.webp differ diff --git a/static/images/song-jackets/m0196.webp b/static/images/song-jackets/m0196.webp new file mode 100644 index 0000000..9601afe Binary files /dev/null and b/static/images/song-jackets/m0196.webp differ diff --git a/static/images/song-jackets/m0197.webp b/static/images/song-jackets/m0197.webp new file mode 100644 index 0000000..d989171 Binary files /dev/null and b/static/images/song-jackets/m0197.webp differ diff --git a/static/images/song-jackets/m0198.webp b/static/images/song-jackets/m0198.webp new file mode 100644 index 0000000..933ca31 Binary files /dev/null and b/static/images/song-jackets/m0198.webp differ diff --git a/static/images/song-jackets/m0201.webp b/static/images/song-jackets/m0201.webp new file mode 100644 index 0000000..4f9bdb4 Binary files /dev/null and b/static/images/song-jackets/m0201.webp differ diff --git a/static/images/song-jackets/m0206.webp b/static/images/song-jackets/m0206.webp new file mode 100644 index 0000000..d5fcaf6 Binary files /dev/null and b/static/images/song-jackets/m0206.webp differ diff --git a/static/images/song-jackets/m0300.webp b/static/images/song-jackets/m0300.webp new file mode 100644 index 0000000..57df131 Binary files /dev/null and b/static/images/song-jackets/m0300.webp differ diff --git a/static/images/song-jackets/m0301.webp b/static/images/song-jackets/m0301.webp new file mode 100644 index 0000000..a29e391 Binary files /dev/null and b/static/images/song-jackets/m0301.webp differ diff --git a/static/images/song-jackets/m0302.webp b/static/images/song-jackets/m0302.webp new file mode 100644 index 0000000..f151239 Binary files /dev/null and b/static/images/song-jackets/m0302.webp differ diff --git a/static/images/song-jackets/m0303.webp b/static/images/song-jackets/m0303.webp new file mode 100644 index 0000000..9db2881 Binary files /dev/null and b/static/images/song-jackets/m0303.webp differ diff --git a/static/images/song-jackets/m0304.webp b/static/images/song-jackets/m0304.webp new file mode 100644 index 0000000..96b43c4 Binary files /dev/null and b/static/images/song-jackets/m0304.webp differ diff --git a/static/images/song-jackets/m0306.webp b/static/images/song-jackets/m0306.webp new file mode 100644 index 0000000..97134b0 Binary files /dev/null and b/static/images/song-jackets/m0306.webp differ diff --git a/static/images/song-jackets/m0307.webp b/static/images/song-jackets/m0307.webp new file mode 100644 index 0000000..48b3e0a Binary files /dev/null and b/static/images/song-jackets/m0307.webp differ diff --git a/static/images/song-jackets/m0308.webp b/static/images/song-jackets/m0308.webp new file mode 100644 index 0000000..0e98034 Binary files /dev/null and b/static/images/song-jackets/m0308.webp differ diff --git a/static/images/song-jackets/m0309.webp b/static/images/song-jackets/m0309.webp new file mode 100644 index 0000000..54e17ff Binary files /dev/null and b/static/images/song-jackets/m0309.webp differ diff --git a/static/images/song-jackets/m0310.webp b/static/images/song-jackets/m0310.webp new file mode 100644 index 0000000..39353b8 Binary files /dev/null and b/static/images/song-jackets/m0310.webp differ diff --git a/static/images/song-jackets/m0311.webp b/static/images/song-jackets/m0311.webp new file mode 100644 index 0000000..a225578 Binary files /dev/null and b/static/images/song-jackets/m0311.webp differ diff --git a/static/images/song-jackets/m0312.webp b/static/images/song-jackets/m0312.webp new file mode 100644 index 0000000..b11df7a Binary files /dev/null and b/static/images/song-jackets/m0312.webp differ diff --git a/static/images/song-jackets/m0317.webp b/static/images/song-jackets/m0317.webp new file mode 100644 index 0000000..71caf25 Binary files /dev/null and b/static/images/song-jackets/m0317.webp differ diff --git a/static/images/song-jackets/m0318.webp b/static/images/song-jackets/m0318.webp new file mode 100644 index 0000000..e769abb Binary files /dev/null and b/static/images/song-jackets/m0318.webp differ diff --git a/static/images/song-jackets/m0319.webp b/static/images/song-jackets/m0319.webp new file mode 100644 index 0000000..e533c1b Binary files /dev/null and b/static/images/song-jackets/m0319.webp differ diff --git a/static/images/song-jackets/m0321.webp b/static/images/song-jackets/m0321.webp new file mode 100644 index 0000000..e5b349d Binary files /dev/null and b/static/images/song-jackets/m0321.webp differ diff --git a/static/images/song-jackets/m0323.webp b/static/images/song-jackets/m0323.webp new file mode 100644 index 0000000..b82b572 Binary files /dev/null and b/static/images/song-jackets/m0323.webp differ diff --git a/static/images/song-jackets/m0324.webp b/static/images/song-jackets/m0324.webp new file mode 100644 index 0000000..17744b2 Binary files /dev/null and b/static/images/song-jackets/m0324.webp differ diff --git a/static/images/song-jackets/m0325.webp b/static/images/song-jackets/m0325.webp new file mode 100644 index 0000000..f1de2e6 Binary files /dev/null and b/static/images/song-jackets/m0325.webp differ diff --git a/static/images/song-jackets/m0326.webp b/static/images/song-jackets/m0326.webp new file mode 100644 index 0000000..e3cbce0 Binary files /dev/null and b/static/images/song-jackets/m0326.webp differ diff --git a/static/images/song-jackets/m0327.webp b/static/images/song-jackets/m0327.webp new file mode 100644 index 0000000..e2c7bc1 Binary files /dev/null and b/static/images/song-jackets/m0327.webp differ diff --git a/static/images/song-jackets/m0329.webp b/static/images/song-jackets/m0329.webp new file mode 100644 index 0000000..366fb92 Binary files /dev/null and b/static/images/song-jackets/m0329.webp differ diff --git a/static/images/song-jackets/m0330.webp b/static/images/song-jackets/m0330.webp new file mode 100644 index 0000000..27de6ca Binary files /dev/null and b/static/images/song-jackets/m0330.webp differ diff --git a/static/images/song-jackets/m0331.webp b/static/images/song-jackets/m0331.webp new file mode 100644 index 0000000..ac4ccac Binary files /dev/null and b/static/images/song-jackets/m0331.webp differ diff --git a/static/images/song-jackets/m0332.webp b/static/images/song-jackets/m0332.webp new file mode 100644 index 0000000..d584997 Binary files /dev/null and b/static/images/song-jackets/m0332.webp differ diff --git a/static/images/song-jackets/m0333.webp b/static/images/song-jackets/m0333.webp new file mode 100644 index 0000000..7a53937 Binary files /dev/null and b/static/images/song-jackets/m0333.webp differ diff --git a/static/images/song-jackets/m0334.webp b/static/images/song-jackets/m0334.webp new file mode 100644 index 0000000..78e5cc6 Binary files /dev/null and b/static/images/song-jackets/m0334.webp differ diff --git a/static/images/song-jackets/m0335.webp b/static/images/song-jackets/m0335.webp new file mode 100644 index 0000000..f4dd563 Binary files /dev/null and b/static/images/song-jackets/m0335.webp differ diff --git a/static/images/song-jackets/m0336.webp b/static/images/song-jackets/m0336.webp new file mode 100644 index 0000000..8896448 Binary files /dev/null and b/static/images/song-jackets/m0336.webp differ diff --git a/static/images/song-jackets/m0337.webp b/static/images/song-jackets/m0337.webp new file mode 100644 index 0000000..4bb7402 Binary files /dev/null and b/static/images/song-jackets/m0337.webp differ diff --git a/static/images/song-jackets/m0338.webp b/static/images/song-jackets/m0338.webp new file mode 100644 index 0000000..4a79536 Binary files /dev/null and b/static/images/song-jackets/m0338.webp differ diff --git a/static/images/song-jackets/m0339.webp b/static/images/song-jackets/m0339.webp new file mode 100644 index 0000000..e464aa2 Binary files /dev/null and b/static/images/song-jackets/m0339.webp differ diff --git a/static/images/song-jackets/m0340.webp b/static/images/song-jackets/m0340.webp new file mode 100644 index 0000000..95bc507 Binary files /dev/null and b/static/images/song-jackets/m0340.webp differ diff --git a/static/images/song-jackets/m0341.webp b/static/images/song-jackets/m0341.webp new file mode 100644 index 0000000..5b8b755 Binary files /dev/null and b/static/images/song-jackets/m0341.webp differ diff --git a/static/images/song-jackets/m0342.webp b/static/images/song-jackets/m0342.webp new file mode 100644 index 0000000..0308d37 Binary files /dev/null and b/static/images/song-jackets/m0342.webp differ diff --git a/static/images/song-jackets/m0344.webp b/static/images/song-jackets/m0344.webp new file mode 100644 index 0000000..02b6b3e Binary files /dev/null and b/static/images/song-jackets/m0344.webp differ diff --git a/static/images/song-jackets/m0346.webp b/static/images/song-jackets/m0346.webp new file mode 100644 index 0000000..57f3030 Binary files /dev/null and b/static/images/song-jackets/m0346.webp differ diff --git a/static/images/song-jackets/m0347.webp b/static/images/song-jackets/m0347.webp new file mode 100644 index 0000000..817dda3 Binary files /dev/null and b/static/images/song-jackets/m0347.webp differ diff --git a/static/images/song-jackets/m0348.webp b/static/images/song-jackets/m0348.webp new file mode 100644 index 0000000..d1c2b6b Binary files /dev/null and b/static/images/song-jackets/m0348.webp differ diff --git a/static/images/song-jackets/m0349.webp b/static/images/song-jackets/m0349.webp new file mode 100644 index 0000000..960584a Binary files /dev/null and b/static/images/song-jackets/m0349.webp differ diff --git a/static/images/song-jackets/m0350.webp b/static/images/song-jackets/m0350.webp new file mode 100644 index 0000000..110c28c Binary files /dev/null and b/static/images/song-jackets/m0350.webp differ diff --git a/static/images/song-jackets/m0351.webp b/static/images/song-jackets/m0351.webp new file mode 100644 index 0000000..cb698c5 Binary files /dev/null and b/static/images/song-jackets/m0351.webp differ diff --git a/static/images/song-jackets/m0352.webp b/static/images/song-jackets/m0352.webp new file mode 100644 index 0000000..d7f6354 Binary files /dev/null and b/static/images/song-jackets/m0352.webp differ diff --git a/static/images/song-jackets/m0353.webp b/static/images/song-jackets/m0353.webp new file mode 100644 index 0000000..c6e5b71 Binary files /dev/null and b/static/images/song-jackets/m0353.webp differ diff --git a/static/images/song-jackets/m0354.webp b/static/images/song-jackets/m0354.webp new file mode 100644 index 0000000..f306669 Binary files /dev/null and b/static/images/song-jackets/m0354.webp differ diff --git a/static/images/song-jackets/m0357.webp b/static/images/song-jackets/m0357.webp new file mode 100644 index 0000000..86466e6 Binary files /dev/null and b/static/images/song-jackets/m0357.webp differ diff --git a/static/images/song-jackets/m0358.webp b/static/images/song-jackets/m0358.webp new file mode 100644 index 0000000..924a491 Binary files /dev/null and b/static/images/song-jackets/m0358.webp differ diff --git a/static/images/song-jackets/m0359.webp b/static/images/song-jackets/m0359.webp new file mode 100644 index 0000000..893b794 Binary files /dev/null and b/static/images/song-jackets/m0359.webp differ diff --git a/static/images/song-jackets/m0360.webp b/static/images/song-jackets/m0360.webp new file mode 100644 index 0000000..985c59b Binary files /dev/null and b/static/images/song-jackets/m0360.webp differ diff --git a/static/images/song-jackets/m0361.webp b/static/images/song-jackets/m0361.webp new file mode 100644 index 0000000..0628e01 Binary files /dev/null and b/static/images/song-jackets/m0361.webp differ diff --git a/static/images/song-jackets/m0362.webp b/static/images/song-jackets/m0362.webp new file mode 100644 index 0000000..2111876 Binary files /dev/null and b/static/images/song-jackets/m0362.webp differ diff --git a/static/images/song-jackets/m0363.webp b/static/images/song-jackets/m0363.webp new file mode 100644 index 0000000..155bcb3 Binary files /dev/null and b/static/images/song-jackets/m0363.webp differ diff --git a/static/images/song-jackets/m0375.webp b/static/images/song-jackets/m0375.webp new file mode 100644 index 0000000..67ce261 Binary files /dev/null and b/static/images/song-jackets/m0375.webp differ diff --git a/static/images/song-jackets/m0376.webp b/static/images/song-jackets/m0376.webp new file mode 100644 index 0000000..be70b26 Binary files /dev/null and b/static/images/song-jackets/m0376.webp differ diff --git a/static/images/song-jackets/m0413.webp b/static/images/song-jackets/m0413.webp new file mode 100644 index 0000000..7a5b909 Binary files /dev/null and b/static/images/song-jackets/m0413.webp differ diff --git a/static/images/song-jackets/m0459.webp b/static/images/song-jackets/m0459.webp new file mode 100644 index 0000000..b9ee353 Binary files /dev/null and b/static/images/song-jackets/m0459.webp differ diff --git a/static/images/song-jackets/m0524.webp b/static/images/song-jackets/m0524.webp new file mode 100644 index 0000000..d699a65 Binary files /dev/null and b/static/images/song-jackets/m0524.webp differ diff --git a/static/images/song-jackets/m0525.webp b/static/images/song-jackets/m0525.webp new file mode 100644 index 0000000..78de425 Binary files /dev/null and b/static/images/song-jackets/m0525.webp differ diff --git a/static/images/song-jackets/m0527.webp b/static/images/song-jackets/m0527.webp new file mode 100644 index 0000000..84d54eb Binary files /dev/null and b/static/images/song-jackets/m0527.webp differ diff --git a/static/images/song-jackets/m0548.webp b/static/images/song-jackets/m0548.webp new file mode 100644 index 0000000..6a799ff Binary files /dev/null and b/static/images/song-jackets/m0548.webp differ diff --git a/static/images/song-jackets/m9999.webp b/static/images/song-jackets/m9999.webp new file mode 100644 index 0000000..97250a6 Binary files /dev/null and b/static/images/song-jackets/m9999.webp differ