1async function renderUpcomingConcerts(){const t=document.querySelector(".concert_list");if(t)try{const e=await fetch("/event/concert/data_list.xml"),a=await e.text(),n=new DOMParser,r=n.parseFromString(a,"application/xml"),c=Array.from(r.querySelectorAll("data_list > item")),i=c.map(t=>{const e=t.getAttribute("time")||"",a=new Date(e.replace(/-/g,"/")),n=t.getAttribute("content")||"",r=n.split(","),c=r[4]?r[4].trim():"";return{path:t.getAttribute("path")||"",title:t.getAttribute("title")||"",date:a,place:c}}).filter(t=>!isNaN(t.date.getTime())),l=new Date;l.setHours(0,0,0,0);const o=i.filter(t=>t.date>=l).sort((t,e)=>t.date-e.date).slice(0,4);t.innerHTML="";const s=document.createDocumentFragment();o.forEach(t=>{const e=document.createElement("li"),a=t.date.getFullYear(),n=String(t.date.getMonth()+1).padStart(2,"0"),r=String(t.date.getDate()).padStart(2,"0"),c=`${a}-${n}-${r}`;e.innerHTML=`\n <div class="concert_list_date">\n <time datetime="${c}">${a}<br />${n}.${r}</time>\n </div>\n <div class="concert_list_place">${escapeHtml(t.place)}</div>\n <div class="concert_list_title">\n <a href="${escapeHtml(t.path)}">${escapeHtml(t.title)}</a>\n </div>\n `,s.appendChild(e)}),t.appendChild(s)}catch(t){console.error("ã¤ãã³ãæ
å ±ã®åå¾ã«å¤±æãã¾ãã:",t)}}function escapeHtml(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}document.addEventListener("DOMContentLoaded",renderUpcomingConcerts);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.