Fix
This commit is contained in:
		
							parent
							
								
									6bdd6dcdcf
								
							
						
					
					
						commit
						67098fb748
					
				| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
baseURL: "http://blog.morgan.kr"
 | 
					baseURL: "http://blog.morgan.kr"
 | 
				
			||||||
title: Morgan's Blog
 | 
					title: Morgan's Blog
 | 
				
			||||||
theme: "oldtheme"
 | 
					theme: "mytheme"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
buildDrafts: false
 | 
					buildDrafts: false
 | 
				
			||||||
buildFuture: false
 | 
					buildFuture: false
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,7 +60,7 @@
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.post-entry:active {
 | 
					.post-entry:active {
 | 
				
			||||||
    transform: scale(0.96);
 | 
					    transform: scale(0.99);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.tag-entry .entry-cover {
 | 
					.tag-entry .entry-cover {
 | 
				
			||||||
| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
console.log('This site was generated by Hugo.');
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,16 +1,23 @@
 | 
				
			||||||
<!DOCTYPE html>
 | 
					<!DOCTYPE html>
 | 
				
			||||||
<html>
 | 
					<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<head>
 | 
					<head>
 | 
				
			||||||
  {{ partial "head.html" . }}
 | 
					    {{- partial "head.html" . }}
 | 
				
			||||||
</head>
 | 
					</head>
 | 
				
			||||||
<body class="bg-gray-100 py-24 px-6 mx-auto ">
 | 
					
 | 
				
			||||||
  <header>
 | 
					<body class="
 | 
				
			||||||
  </header>
 | 
					{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
 | 
				
			||||||
  <main class="max-w-7xl mx-auto overflow-hidden">
 | 
					{{- print "list" -}}
 | 
				
			||||||
    {{ block "main" . }}{{ end }}
 | 
					{{- end -}}
 | 
				
			||||||
  </main>
 | 
					{{- if eq site.Params.defaultTheme `dark` -}}
 | 
				
			||||||
  <footer>
 | 
					{{- print " dark" }}
 | 
				
			||||||
    {{ partial "footer.html" . }}
 | 
					{{- end -}}
 | 
				
			||||||
  </footer>
 | 
					" id="top">
 | 
				
			||||||
 | 
					    {{- partialCached "header.html" . .Page -}}
 | 
				
			||||||
 | 
					    <main class="main">
 | 
				
			||||||
 | 
					        {{- block "main" . }}{{ end }}
 | 
				
			||||||
 | 
					    </main>
 | 
				
			||||||
 | 
					    {{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}}
 | 
				
			||||||
</body>
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</html>
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,32 +1,114 @@
 | 
				
			||||||
{{ define "main" }}
 | 
					{{- define "main" }}
 | 
				
			||||||
<div class="max-w-6xl mx-auto">
 | 
					 | 
				
			||||||
<div class="mb-20 text-center">
 | 
					 | 
				
			||||||
  <h1 class="text-4xl font-bold mb-2 text-black">{{ .Title }}</h1>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
<div class="grid grid-cols-1 gap-8 auto-rows-max">
 | 
					 | 
				
			||||||
  {{- $pages := union .RegularPages .Sections }}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  {{- if .IsHome }}
 | 
					{{- if (and site.Params.profileMode.enabled .IsHome) }}
 | 
				
			||||||
  {{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
 | 
					{{- partial "index_profile.html" . }}
 | 
				
			||||||
  {{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true"  }}
 | 
					{{- else }} {{/* if not profileMode */}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if not .IsHome | and .Title }}
 | 
				
			||||||
 | 
					<header class="page-header post-title-header">
 | 
				
			||||||
 | 
					  {{- partial "breadcrumbs.html" . }}
 | 
				
			||||||
 | 
					  <h1>
 | 
				
			||||||
 | 
					    {{ .Title }}
 | 
				
			||||||
 | 
					    {{- if and (or (eq .Kind `term`) (eq .Kind `section`)) (.Param "ShowRssButtonInSectionTermList") }}
 | 
				
			||||||
 | 
					    <a href="index.xml" title="RSS" aria-label="RSS">
 | 
				
			||||||
 | 
					      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 | 
				
			||||||
 | 
					        stroke-linecap="round" stroke-linejoin="round" height="23">
 | 
				
			||||||
 | 
					        <path d="M4 11a9 9 0 0 1 9 9" />
 | 
				
			||||||
 | 
					        <path d="M4 4a16 16 0 0 1 16 16" />
 | 
				
			||||||
 | 
					        <circle cx="5" cy="19" r="1" />
 | 
				
			||||||
 | 
					      </svg>
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					  </h1>
 | 
				
			||||||
 | 
					  {{- if .Description }}
 | 
				
			||||||
 | 
					  <div class="post-description">
 | 
				
			||||||
 | 
					    {{ .Description | markdownify }}
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
  {{- end }}
 | 
					  {{- end }}
 | 
				
			||||||
    {{ range $pages }}
 | 
					</header>
 | 
				
			||||||
    <div class="bg-white shadow-lg rounded-lg p-10">
 | 
					{{- end }}
 | 
				
			||||||
        <div class="text-[18px] font-semibold pb-2">
 | 
					
 | 
				
			||||||
            <a href="{{ .RelPermalink }}" class="text-bold hover:underline">
 | 
					{{- if .Content }}
 | 
				
			||||||
                {{ .LinkTitle }}
 | 
					<div class="post-content">
 | 
				
			||||||
            </a>
 | 
					  {{- if not (.Param "disableAnchoredHeadings") }}
 | 
				
			||||||
          </div>
 | 
					  {{- partial "anchored_headings.html" .Content -}}
 | 
				
			||||||
        <div class="font-light pb-2">{{ .Date | time.Format ":date_long" }}</div>
 | 
					  {{- else }}{{ .Content }}{{ end }}
 | 
				
			||||||
        <div class="text-[14px] rounded-md line-clamp-3">
 | 
					 | 
				
			||||||
            {{ .Summary }}
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    {{ end }}
 | 
					 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- $pages := union .RegularPages .Sections }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if .IsHome }}
 | 
				
			||||||
 | 
					{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
 | 
				
			||||||
 | 
					{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true"  }}
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- $paginator := .Paginate $pages }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
 | 
				
			||||||
 | 
					{{- partial "home_info.html" . }}
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div class="posts-entry-div">
 | 
				
			||||||
 | 
					{{- $term := .Data.Term }}
 | 
				
			||||||
 | 
					{{- range $index, $page := $paginator.Pages }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- $class := "post-entry" }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- $user_preferred := or site.Params.disableSpecial1stPost site.Params.homeInfoParams }}
 | 
				
			||||||
 | 
					{{- if (and $.IsHome (eq $paginator.PageNumber 1) (eq $index 0) (not $user_preferred)) }}
 | 
				
			||||||
 | 
					{{- $class = "first-entry" }}
 | 
				
			||||||
 | 
					{{- else if $term }}
 | 
				
			||||||
 | 
					{{- $class = "post-entry tag-entry" }}
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<article class="{{ $class }}">
 | 
				
			||||||
 | 
					  {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}
 | 
				
			||||||
 | 
					  {{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
 | 
				
			||||||
 | 
					  <header class="entry-header">
 | 
				
			||||||
 | 
					    <h2>
 | 
				
			||||||
 | 
					      {{- .Title }}
 | 
				
			||||||
 | 
					      {{- if .Draft }}<sup><span class="entry-isdraft">  [draft]</span></sup>{{- end }}
 | 
				
			||||||
 | 
					    </h2>
 | 
				
			||||||
 | 
					  </header>
 | 
				
			||||||
 | 
					  {{- if (ne (.Param "hideSummary") true) }}
 | 
				
			||||||
 | 
					  <div class="entry-content">
 | 
				
			||||||
 | 
					    <p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					  {{- end }}
 | 
				
			||||||
 | 
					  {{- if not (.Param "hideMeta") }}
 | 
				
			||||||
 | 
					  <footer class="entry-footer">
 | 
				
			||||||
 | 
					    {{- partial "post_meta.html" . -}}
 | 
				
			||||||
 | 
					  </footer>
 | 
				
			||||||
 | 
					  {{- end }}
 | 
				
			||||||
 | 
					  <a class="entry-link" aria-label="post link to {{ .Title | plainify }}" href="{{ .Permalink }}"></a>
 | 
				
			||||||
 | 
					</article>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if gt $paginator.TotalPages 1 }}
 | 
				
			||||||
 | 
					<footer class="page-footer">
 | 
				
			||||||
 | 
					  <nav class="pagination">
 | 
				
			||||||
 | 
					    {{- if $paginator.HasPrev }}
 | 
				
			||||||
 | 
					    <a class="prev" href="{{ $paginator.Prev.URL | absURL }}">
 | 
				
			||||||
 | 
					      « {{ i18n "prev_page" }} 
 | 
				
			||||||
 | 
					      {{- if (.Param "ShowPageNums") }}
 | 
				
			||||||
 | 
					      {{- sub $paginator.PageNumber 1 }}/{{ $paginator.TotalPages }}
 | 
				
			||||||
 | 
					      {{- end }}
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					    {{- if $paginator.HasNext }}
 | 
				
			||||||
 | 
					    <a class="next" href="{{ $paginator.Next.URL | absURL }}">
 | 
				
			||||||
 | 
					      {{- i18n "next_page" }} 
 | 
				
			||||||
 | 
					      {{- if (.Param "ShowPageNums") }}
 | 
				
			||||||
 | 
					      {{- add 1 $paginator.PageNumber }}/{{ $paginator.TotalPages }}
 | 
				
			||||||
 | 
					      {{- end }} »
 | 
				
			||||||
 | 
					    </a>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					  </nav>
 | 
				
			||||||
 | 
					</footer>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- end }}{{/* end profileMode */}}
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
<div class="flex space-x-12 justify-center mt-24 text-2xl">
 | 
					
 | 
				
			||||||
    <div class=""><a href="/posts/">Posts</a></div>
 | 
					{{- end }}{{- /* end main */ -}}
 | 
				
			||||||
    <div class=""><a href="/daily/">Daily</a></div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
{{ end }}
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,22 +1,56 @@
 | 
				
			||||||
{{ define "main" }}
 | 
					{{- define "main" }}
 | 
				
			||||||
<div class="mx-auto bg-white p-4 sm:p-10 pt-8 sm:pt-16 rounded-lg shadow-xl sm:max-w-7xl">
 | 
					
 | 
				
			||||||
  <div class="mb-6 sm:mb-10 text-center">
 | 
					<article class="post-single">
 | 
				
			||||||
    <h1 class="text-2xl sm:text-3xl font-bold mb-4 sm:mb-6 text-black">{{ .Title }}</h1>
 | 
					
 | 
				
			||||||
    <div class="text-base sm:text-lg md:text-2xl">
 | 
					  <header class="post-header">
 | 
				
			||||||
      {{  .Date | time.Format ":date_long" }}
 | 
					    <h1 class="post-title">
 | 
				
			||||||
 | 
					      {{ .Title }}
 | 
				
			||||||
 | 
					    </h1>
 | 
				
			||||||
 | 
					    {{- if .Description }}
 | 
				
			||||||
 | 
					    <div class="post-description">
 | 
				
			||||||
 | 
					      {{ .Description }}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <div class="post-meta">
 | 
				
			||||||
 | 
					      {{- if not .Date.IsZero -}}
 | 
				
			||||||
 | 
					      <span title='{{ .Date }}'>
 | 
				
			||||||
 | 
					        {{.Date | time.Format (default "January 2, 2006" site.Params.DateFormat) }}
 | 
				
			||||||
 | 
					      </span>
 | 
				
			||||||
 | 
					      {{- end }}
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </header>
 | 
				
			||||||
 | 
					  <div class="post-divider"></div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  {{- if .Content }}
 | 
				
			||||||
 | 
					  <div class="post-content">
 | 
				
			||||||
 | 
					    {{- if not (.Param "disableAnchoredHeadings") }}
 | 
				
			||||||
 | 
					    {{- partial "anchored_headings.html" .Content -}}
 | 
				
			||||||
 | 
					    {{- else }}{{ .Content }}{{ end }}
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
  <div class="bg-gray-400 h-[1px] mb-4 sm:mb-8"></div>
 | 
					  {{- end }}
 | 
				
			||||||
  <div class="content prose prose-sm sm:prose-lg lg:prose-xl max-w-none prose-a:text-blue-800 prose-a:no-underline hover:prose-a:text-blue-600 hover:prose-a:underline">
 | 
					 | 
				
			||||||
    {{ .Content }}
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<button class="m-4 sm:m-8 p-2 sm:p-3 rounded-full bg-gray-200 hover:ring-2 hover:ring-blue-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" onclick="window.history.back()">
 | 
					  <footer class="post-footer">
 | 
				
			||||||
  <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 sm:h-6 sm:w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
 | 
					    {{- $tags := .Language.Params.Taxonomies.tag | default "tags" }}
 | 
				
			||||||
    <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7" />
 | 
					    <ul class="post-tags">
 | 
				
			||||||
  </svg>
 | 
					      {{- range ($.GetTerms $tags) }}
 | 
				
			||||||
</button>
 | 
					      <li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
 | 
				
			||||||
 | 
					      {{- end }}
 | 
				
			||||||
 | 
					    </ul>
 | 
				
			||||||
 | 
					    <nav class="pag-back">
 | 
				
			||||||
 | 
					      <a href="#back" onclick="window.history.back()">
 | 
				
			||||||
 | 
					      <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;" fill="currentColor" stroke="white" stroke-width="1"><polygon points="11.65,3.50 3.80,11.35 11.65,19.20 12.36,18.50 5.71,11.85 20.15,11.85 20.15,10.85 5.71,10.85 12.36,4.20"></polygon></svg>
 | 
				
			||||||
 | 
					      </a>
 | 
				
			||||||
 | 
					    </nav>
 | 
				
			||||||
 | 
					    <br/>
 | 
				
			||||||
 | 
					    {{- if (and (and site.Params.ShowShareButtons (ne .Params.disableShare true)) false) }}
 | 
				
			||||||
 | 
					    {{- partial "share_icons.html" . -}}
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					  </footer>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{ end }}
 | 
					  {{- if (.Param "comments") }}
 | 
				
			||||||
 | 
					  {{- partial "comments.html" . }}
 | 
				
			||||||
 | 
					  {{- end }}
 | 
				
			||||||
 | 
					</article>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- end }}{{/* end main */}}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,139 @@
 | 
				
			||||||
 | 
					{{- if not (.IsPage) }}
 | 
				
			||||||
 | 
					<footer class="footer">
 | 
				
			||||||
 | 
					    {{- if site.Copyright }}
 | 
				
			||||||
 | 
					    <span>{{ site.Copyright | markdownify }}</span>
 | 
				
			||||||
 | 
					    {{- else }}
 | 
				
			||||||
 | 
					    <a href="/admin/" style="text-decoration: none;">©</a> <span><a href="{{ "" | absLangURL }}">Morgan</a> · PaperMod</span>
 | 
				
			||||||
 | 
					    <div style="font-size: 10px;">
 | 
				
			||||||
 | 
					    <span style="">Ver.{{ site.Params.buildDate }} </span>
 | 
				
			||||||
 | 
					    <a href="#" id="theme-toggle">Toggle Dark Mode</a>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					</footer>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if (not site.Params.disableScrollToTop) }}
 | 
				
			||||||
 | 
					<button id="top-link" class="top-link" onclick="window.scrollTo({top: 0, behavior: 'smooth'})">
 | 
				
			||||||
 | 
					    <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;" fill="currentColor" stroke="white" stroke-width="1"><polygon points="19.35,11.5 11.5,3.65 3.65,11.5 4.35,12.21 11,5.56 11,20 12,20 12,5.56 18.65,12.21"></polygon></svg>
 | 
				
			||||||
 | 
					</button>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- partial "extend_footer.html" . }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    let menu = document.getElementById('menu')
 | 
				
			||||||
 | 
					    if (menu) {
 | 
				
			||||||
 | 
					        menu.scrollLeft = localStorage.getItem("menu-scroll-position");
 | 
				
			||||||
 | 
					        menu.onscroll = function () {
 | 
				
			||||||
 | 
					            localStorage.setItem("menu-scroll-position", menu.scrollLeft);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    document.querySelectorAll('a[href^="#"]').forEach(anchor => {
 | 
				
			||||||
 | 
					        anchor.addEventListener("click", function (e) {
 | 
				
			||||||
 | 
					            e.preventDefault();
 | 
				
			||||||
 | 
					            var id = this.getAttribute("href").substr(1);
 | 
				
			||||||
 | 
					            if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
 | 
				
			||||||
 | 
					                document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
 | 
				
			||||||
 | 
					                    behavior: "smooth"
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (id === "top") {
 | 
				
			||||||
 | 
					                history.replaceState(null, null, " ");
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                history.pushState(null, null, `#${id}`);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if (not site.Params.disableScrollToTop) }}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    var mybutton = document.getElementById("top-link");
 | 
				
			||||||
 | 
					    window.onscroll = function () {
 | 
				
			||||||
 | 
					        if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
 | 
				
			||||||
 | 
					            mybutton.style.visibility = "visible";
 | 
				
			||||||
 | 
					            mybutton.style.opacity = "1";
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            mybutton.style.visibility = "hidden";
 | 
				
			||||||
 | 
					            mybutton.style.opacity = "0";
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if (not site.Params.disableThemeToggle) }}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    document.getElementById("theme-toggle").addEventListener("click", () => {
 | 
				
			||||||
 | 
					        if (document.body.className.includes("dark")) {
 | 
				
			||||||
 | 
					            document.body.classList.remove('dark');
 | 
				
			||||||
 | 
					            localStorage.setItem("pref-theme", 'light');
 | 
				
			||||||
 | 
					            {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					                document.getElementById('main-logo').src = "{{site.Params.label.icon_inv}}";
 | 
				
			||||||
 | 
					            {{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            document.body.classList.add('dark');
 | 
				
			||||||
 | 
					            localStorage.setItem("pref-theme", 'dark');
 | 
				
			||||||
 | 
					            {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					                document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
				
			||||||
 | 
					            {{- end }}
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    document.querySelectorAll('pre > code').forEach((codeblock) => {
 | 
				
			||||||
 | 
					        const container = codeblock.parentNode.parentNode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const copybutton = document.createElement('button');
 | 
				
			||||||
 | 
					        copybutton.classList.add('copy-code');
 | 
				
			||||||
 | 
					        copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        function copyingDone() {
 | 
				
			||||||
 | 
					            copybutton.innerHTML = '{{- i18n "code_copied" | default "copied!" }}';
 | 
				
			||||||
 | 
					            setTimeout(() => {
 | 
				
			||||||
 | 
					                copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
 | 
				
			||||||
 | 
					            }, 2000);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        copybutton.addEventListener('click', (cb) => {
 | 
				
			||||||
 | 
					            if ('clipboard' in navigator) {
 | 
				
			||||||
 | 
					                navigator.clipboard.writeText(codeblock.textContent);
 | 
				
			||||||
 | 
					                copyingDone();
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const range = document.createRange();
 | 
				
			||||||
 | 
					            range.selectNodeContents(codeblock);
 | 
				
			||||||
 | 
					            const selection = window.getSelection();
 | 
				
			||||||
 | 
					            selection.removeAllRanges();
 | 
				
			||||||
 | 
					            selection.addRange(range);
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                document.execCommand('copy');
 | 
				
			||||||
 | 
					                copyingDone();
 | 
				
			||||||
 | 
					            } catch (e) { };
 | 
				
			||||||
 | 
					            selection.removeRange(range);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (container.classList.contains("highlight")) {
 | 
				
			||||||
 | 
					            container.appendChild(copybutton);
 | 
				
			||||||
 | 
					        } else if (container.parentNode.firstChild == container) {
 | 
				
			||||||
 | 
					            // td containing LineNos
 | 
				
			||||||
 | 
					        } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
 | 
				
			||||||
 | 
					            // table containing LineNos and code
 | 
				
			||||||
 | 
					            codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            // code blocks not having highlight as parent class
 | 
				
			||||||
 | 
					            codeblock.parentNode.appendChild(copybutton);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
| 
						 | 
					@ -1,25 +1,110 @@
 | 
				
			||||||
<meta charset="utf-8">
 | 
					<meta charset="utf-8">
 | 
				
			||||||
<meta name="viewport" content="width=device-width">
 | 
					<meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
<meta name="buildDate" content="{{ site.Params.buildDate }}">
 | 
					<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
 | 
				
			||||||
<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}</title>
 | 
					{{- if hugo.IsProduction | or (eq site.Params.env "production") | and (ne .Params.robotsNoIndex true) }}
 | 
				
			||||||
 | 
					<meta name="robots" content="index, follow">
 | 
				
			||||||
 | 
					{{- else }}
 | 
				
			||||||
 | 
					<meta name="robots" content="noindex, nofollow">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					<meta name="apple-mobile-web-app-capable" content="yes">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script src="https://cdn.tailwindcss.com?plugins=forms,typography,aspect-ratio,line-clamp"></script>
 | 
					{{- /* Title */}}
 | 
				
			||||||
<style>
 | 
					<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }}</title>
 | 
				
			||||||
  @import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.8/dist/web/static/pretendard.css");
 | 
					 | 
				
			||||||
  @import url('https://fonts.googleapis.com/css2?family=Gowun+Batang:wght@400;700&family=Gowun+Dodum&family=JetBrains+Mono&family=Source+Sans+3:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=Source+Serif+4:ital,opsz,wght@0,8..60,300;0,8..60,400;0,8..60,500;0,8..60,600;0,8..60,700;1,8..60,400&display=swap');
 | 
					 | 
				
			||||||
  @font-face {
 | 
					 | 
				
			||||||
    font-family: "Line Sans"; src: url("/LINESeedKR-Rg.woff2");
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  @font-face {
 | 
					 | 
				
			||||||
    font-family: "Line Sans"; src: url("/LINESeedKR-Bd.woff2"); font-weight: bold;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  @font-face {
 | 
					 | 
				
			||||||
    font-family: "Line Sans"; src: url("/LINESeedKR-Th.woff2"); font-weight: 300;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
</style>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* Meta */}}
 | 
				
			||||||
 | 
					{{- if .IsHome }}
 | 
				
			||||||
 | 
					{{ with site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}">{{ end }}
 | 
				
			||||||
 | 
					{{- else }}
 | 
				
			||||||
 | 
					<meta name="keywords" content="{{ if .Params.keywords -}}
 | 
				
			||||||
 | 
					    {{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }}
 | 
				
			||||||
 | 
					    {{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}}
 | 
				
			||||||
 | 
					    {{- .Summary | default (printf "%s - %s" .Title  site.Title) }}{{- else }}
 | 
				
			||||||
 | 
					    {{- with site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
 | 
				
			||||||
 | 
					<meta name="author" content="{{ (partial "author.html" . ) }}">
 | 
				
			||||||
 | 
					<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}">
 | 
				
			||||||
 | 
					{{- if site.Params.analytics.google.SiteVerificationTag }}
 | 
				
			||||||
 | 
					<meta name="google-site-verification" content="{{ site.Params.analytics.google.SiteVerificationTag }}">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					{{- if site.Params.analytics.yandex.SiteVerificationTag }}
 | 
				
			||||||
 | 
					<meta name="yandex-verification" content="{{ site.Params.analytics.yandex.SiteVerificationTag }}">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					{{- if site.Params.analytics.bing.SiteVerificationTag }}
 | 
				
			||||||
 | 
					<meta name="msvalidate.01" content="{{ site.Params.analytics.bing.SiteVerificationTag }}">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					{{- if site.Params.analytics.naver.SiteVerificationTag }}
 | 
				
			||||||
 | 
					<meta name="naver-site-verification" content="{{ site.Params.analytics.naver.SiteVerificationTag }}">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{{ if .IsPage }}
 | 
					{{- /* Styles */}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* includes */}}
 | 
				
			||||||
 | 
					{{- $includes := slice }}
 | 
				
			||||||
 | 
					{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if not (eq site.Params.assets.disableScrollBarStyle true) }}
 | 
				
			||||||
 | 
					    {{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }}
 | 
				
			||||||
 | 
					    {{- $includes = (append $ScrollStyle $includes) }}
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }}
 | 
				
			||||||
 | 
					{{- $reset := (resources.Get "css/core/reset.css") }}
 | 
				
			||||||
 | 
					{{- $media := (resources.Get "css/core/zmedia.css") }}
 | 
				
			||||||
 | 
					{{- $license_css := (resources.Get "css/core/license.css") }}
 | 
				
			||||||
 | 
					{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* include `an-old-hope` if hljs is on */}}
 | 
				
			||||||
 | 
					{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default false) }}
 | 
				
			||||||
 | 
					{{- $hljs := (cond ($isHLJSdisabled) (".chroma { background-color: unset !important;}" | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* order is important */}}
 | 
				
			||||||
 | 
					{{- $core := (slice $theme_vars $reset $common $hljs $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
 | 
				
			||||||
 | 
					{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* bundle all required css */}}
 | 
				
			||||||
 | 
					{{- /* Add extended css after theme style */ -}}
 | 
				
			||||||
 | 
					{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css"  }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- if not site.Params.assets.disableFingerprinting }}
 | 
				
			||||||
 | 
					{{- $stylesheet := $stylesheet | fingerprint }}
 | 
				
			||||||
 | 
					<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style">
 | 
				
			||||||
 | 
					{{- else }}
 | 
				
			||||||
 | 
					<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* Search */}}
 | 
				
			||||||
 | 
					{{- if (eq .Layout `search`) -}}
 | 
				
			||||||
 | 
					<link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
 | 
				
			||||||
 | 
					{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }}
 | 
				
			||||||
 | 
					{{- $fusejs := resources.Get "js/fuse.basic.min.js" }}
 | 
				
			||||||
 | 
					{{- $license_js := resources.Get "js/license.js" }}
 | 
				
			||||||
 | 
					{{- if not site.Params.assets.disableFingerprinting }}
 | 
				
			||||||
 | 
					{{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }}
 | 
				
			||||||
 | 
					<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
 | 
				
			||||||
 | 
					{{- else }}
 | 
				
			||||||
 | 
					{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }}
 | 
				
			||||||
 | 
					<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					{{- end -}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* Highlight.js */}}
 | 
				
			||||||
 | 
					{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
 | 
				
			||||||
 | 
					{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
 | 
				
			||||||
 | 
					{{- if not site.Params.assets.disableFingerprinting }}
 | 
				
			||||||
 | 
					{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | fingerprint }}
 | 
				
			||||||
 | 
					<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
 | 
				
			||||||
 | 
					    onload="hljs.initHighlightingOnLoad();"></script>
 | 
				
			||||||
 | 
					{{- else }}
 | 
				
			||||||
 | 
					{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" }}
 | 
				
			||||||
 | 
					<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* KaTeX */}}
 | 
				
			||||||
 | 
					{{ if or .Params.math true}}
 | 
				
			||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
 | 
					<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
 | 
				
			||||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
 | 
					<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
 | 
				
			||||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
 | 
					<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
 | 
				
			||||||
| 
						 | 
					@ -35,54 +120,72 @@
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
{{ end }}
 | 
					{{ end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script>
 | 
					{{- /* Favicons */}}
 | 
				
			||||||
    tailwind.config = {
 | 
					<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
 | 
				
			||||||
      theme: {
 | 
					<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
 | 
				
			||||||
        fontFamily: {
 | 
					<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
 | 
				
			||||||
            'sans': ["'Source Sans 3'", "'Line Sans'", "Pretendard", 'sans-serif'],
 | 
					<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
 | 
				
			||||||
            'mono': ["'JetBrains Mono'", "monospace"],
 | 
					<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
 | 
				
			||||||
        },
 | 
					<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
 | 
				
			||||||
        extend: {
 | 
					<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
 | 
				
			||||||
          lineHeight: {
 | 
					
 | 
				
			||||||
            'extra-loose': '3',
 | 
					{{- /* RSS */}}
 | 
				
			||||||
            'seperate': '4'
 | 
					{{ range .AlternativeOutputFormats -}}
 | 
				
			||||||
          }
 | 
					<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
 | 
				
			||||||
 | 
					{{ end -}}
 | 
				
			||||||
 | 
					{{- range .AllTranslations -}}
 | 
				
			||||||
 | 
					<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
 | 
				
			||||||
 | 
					{{ end -}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<noscript>
 | 
				
			||||||
 | 
					    <style>
 | 
				
			||||||
 | 
					        #theme-toggle,
 | 
				
			||||||
 | 
					        .top-link {
 | 
				
			||||||
 | 
					            display: none;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style type="text/tailwindcss">
 | 
					    </style>
 | 
				
			||||||
    @layer base {
 | 
					    {{- if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark")) }}
 | 
				
			||||||
      h1 {
 | 
					    <style>
 | 
				
			||||||
        @apply text-3xl;
 | 
					        @media (prefers-color-scheme: dark) {
 | 
				
			||||||
      }
 | 
					            :root {
 | 
				
			||||||
      h2 {
 | 
					                --theme: rgb(29, 30, 32);
 | 
				
			||||||
        @apply text-3xl;
 | 
					                --entry: rgb(46, 46, 51);
 | 
				
			||||||
      }
 | 
					                --primary: rgb(218, 218, 219);
 | 
				
			||||||
      h3 {
 | 
					                --secondary: rgb(155, 156, 157);
 | 
				
			||||||
        @apply text-2xl;
 | 
					                --tertiary: rgb(65, 66, 68);
 | 
				
			||||||
      }
 | 
					                --content: rgb(196, 196, 197);
 | 
				
			||||||
      h4 {
 | 
					                --hljs-bg: rgb(46, 46, 51);
 | 
				
			||||||
        @apply text-xl;
 | 
					                --code-bg: rgb(55, 56, 62);
 | 
				
			||||||
      }
 | 
					                --border: rgb(51, 51, 51);
 | 
				
			||||||
      h5 {
 | 
					            }
 | 
				
			||||||
        @apply text-xl;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      h6 { @apply text-lg; }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      h1, h2, h3, h4, h5, h6 {
 | 
					            .list {
 | 
				
			||||||
        @apply font-semibold;
 | 
					                background: var(--theme);
 | 
				
			||||||
        @apply leading-[4rem];
 | 
					            }
 | 
				
			||||||
        @apply mb-4 mt-4;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      p { @apply mb-6; }
 | 
					 | 
				
			||||||
      .katex-display {
 | 
					 | 
				
			||||||
        @apply m-8;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
      .content a {
 | 
					            .list:not(.dark)::-webkit-scrollbar-track {
 | 
				
			||||||
        @apply text-blue-800 hover:text-blue-600 hover:underline
 | 
					                background: 0 0;
 | 
				
			||||||
      }
 | 
					            }
 | 
				
			||||||
    }
 | 
					
 | 
				
			||||||
  </style>
 | 
					            .list:not(.dark)::-webkit-scrollbar-thumb {
 | 
				
			||||||
 | 
					                border-color: var(--theme);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    </style>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					</noscript>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- partial "extend_head.html" . -}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* Misc */}}
 | 
				
			||||||
 | 
					{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
 | 
				
			||||||
 | 
					{{- template "_internal/google_analytics.html" . }}
 | 
				
			||||||
 | 
					{{- template "partials/templates/opengraph.html" . }}
 | 
				
			||||||
 | 
					{{- template "partials/templates/twitter_cards.html" . }}
 | 
				
			||||||
 | 
					{{- template "partials/templates/schema_json.html" . }}
 | 
				
			||||||
 | 
					{{- end -}}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,150 @@
 | 
				
			||||||
 | 
					<header class="header">
 | 
				
			||||||
 | 
					    {{- if false }}
 | 
				
			||||||
 | 
					    <nav class="nav{{- if .IsHome }} nav-home{{- else if (not .IsPage) }} nav-nonpost{{- else if .IsPage }} nav-post{{- end }}">
 | 
				
			||||||
 | 
					        <div class="logo">
 | 
				
			||||||
 | 
					            {{- $label_text := (site.Params.label.text | default site.Title) }}
 | 
				
			||||||
 | 
					            {{- if site.Title }}
 | 
				
			||||||
 | 
					            <a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }}">
 | 
				
			||||||
 | 
					                {{- if site.Params.label.icon }}
 | 
				
			||||||
 | 
					                <img id="main-logo" src="{{- site.Params.label.icon | absURL -}}" alt="" aria-label="logo"
 | 
				
			||||||
 | 
					                    height="{{- site.Params.label.iconHeight | default "24" -}}">
 | 
				
			||||||
 | 
					                {{- end -}}
 | 
				
			||||||
 | 
					                {{- else  }}
 | 
				
			||||||
 | 
					                    {{- $label_text -}}
 | 
				
			||||||
 | 
					                {{- end -}}
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					            <div class="logo-switches">
 | 
				
			||||||
 | 
					                {{- if (not site.Params.disableThemeToggle) }}
 | 
				
			||||||
 | 
					                <button id="theme-toggle" accesskey="t"  aria-label="Toggle Darkmode">
 | 
				
			||||||
 | 
					                    <svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
 | 
				
			||||||
 | 
					                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
 | 
				
			||||||
 | 
					                        stroke-linejoin="round">
 | 
				
			||||||
 | 
					                        <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
 | 
				
			||||||
 | 
					                    </svg>
 | 
				
			||||||
 | 
					                    <svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
 | 
				
			||||||
 | 
					                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
 | 
				
			||||||
 | 
					                        stroke-linejoin="round">
 | 
				
			||||||
 | 
					                        <circle cx="12" cy="12" r="5"></circle>
 | 
				
			||||||
 | 
					                        <line x1="12" y1="1" x2="12" y2="3"></line>
 | 
				
			||||||
 | 
					                        <line x1="12" y1="21" x2="12" y2="23"></line>
 | 
				
			||||||
 | 
					                        <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
 | 
				
			||||||
 | 
					                        <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
 | 
				
			||||||
 | 
					                        <line x1="1" y1="12" x2="3" y2="12"></line>
 | 
				
			||||||
 | 
					                        <line x1="21" y1="12" x2="23" y2="12"></line>
 | 
				
			||||||
 | 
					                        <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
 | 
				
			||||||
 | 
					                        <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
 | 
				
			||||||
 | 
					                    </svg>
 | 
				
			||||||
 | 
					                </button>
 | 
				
			||||||
 | 
					                {{- end }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                {{- $lang := .Lang}}
 | 
				
			||||||
 | 
					                {{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
 | 
				
			||||||
 | 
					                {{- with site.Home.AllTranslations }}
 | 
				
			||||||
 | 
					                <ul class="lang-switch">
 | 
				
			||||||
 | 
					                    {{- if $separator }}<li>|</li>{{ end }}
 | 
				
			||||||
 | 
					                    {{- range . -}}
 | 
				
			||||||
 | 
					                    {{- if ne $lang .Lang }}
 | 
				
			||||||
 | 
					                    <li>
 | 
				
			||||||
 | 
					                        <a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
 | 
				
			||||||
 | 
					                            aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
 | 
				
			||||||
 | 
					                            {{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
 | 
				
			||||||
 | 
					                            {{- .Language.LanguageName | emojify -}}
 | 
				
			||||||
 | 
					                            {{- else }}
 | 
				
			||||||
 | 
					                            {{- .Lang | title -}}
 | 
				
			||||||
 | 
					                            {{- end -}}
 | 
				
			||||||
 | 
					                        </a>
 | 
				
			||||||
 | 
					                    </li>
 | 
				
			||||||
 | 
					                    {{- end -}}
 | 
				
			||||||
 | 
					                    {{- end}}
 | 
				
			||||||
 | 
					                </ul>
 | 
				
			||||||
 | 
					                {{- end }}
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        {{- $currentPage := . }}
 | 
				
			||||||
 | 
					        <ul id="menu">
 | 
				
			||||||
 | 
					            {{- range site.Menus.main }}
 | 
				
			||||||
 | 
					            {{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
 | 
				
			||||||
 | 
					            {{- $page_url:= $currentPage.Permalink | absLangURL }}
 | 
				
			||||||
 | 
					            {{- $is_search := eq (site.GetPage .KeyName).Layout `search` }}
 | 
				
			||||||
 | 
					            <li>
 | 
				
			||||||
 | 
					                <a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
 | 
				
			||||||
 | 
					                {{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
 | 
				
			||||||
 | 
					                    <span {{- if eq $menu_item_url $page_url }} class="active" {{- end }}>
 | 
				
			||||||
 | 
					                        {{- .Pre }}
 | 
				
			||||||
 | 
					                        {{- .Name -}}
 | 
				
			||||||
 | 
					                        {{ .Post -}}
 | 
				
			||||||
 | 
					                    </span>
 | 
				
			||||||
 | 
					                    {{- if (findRE "://" .URL) }} 
 | 
				
			||||||
 | 
					                    <svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
 | 
				
			||||||
 | 
					                        stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
 | 
				
			||||||
 | 
					                        <path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
 | 
				
			||||||
 | 
					                        <path d="M15 3h6v6"></path>
 | 
				
			||||||
 | 
					                        <path d="M10 14L21 3"></path>
 | 
				
			||||||
 | 
					                    </svg>
 | 
				
			||||||
 | 
					                    {{- end }}
 | 
				
			||||||
 | 
					                </a>
 | 
				
			||||||
 | 
					            </li>
 | 
				
			||||||
 | 
					            {{- end }}
 | 
				
			||||||
 | 
					        </ul>
 | 
				
			||||||
 | 
					    </nav>
 | 
				
			||||||
 | 
					    {{- end }}
 | 
				
			||||||
 | 
					</header>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{- /* theme-toggle is enabled */}}
 | 
				
			||||||
 | 
					{{- if (not site.Params.disableThemeToggle) }}
 | 
				
			||||||
 | 
					{{- /* theme is light */}}
 | 
				
			||||||
 | 
					{{- if (eq site.Params.defaultTheme "light") }}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    if (localStorage.getItem("pref-theme") === "dark") {
 | 
				
			||||||
 | 
					        document.body.classList.add('dark');
 | 
				
			||||||
 | 
					        {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
				
			||||||
 | 
					        {{- end }}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- /* theme is dark */}}
 | 
				
			||||||
 | 
					{{- else if (eq site.Params.defaultTheme "dark") }}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    if (localStorage.getItem("pref-theme") === "light") {
 | 
				
			||||||
 | 
					        document.body.classList.remove('dark')
 | 
				
			||||||
 | 
					        {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					            document.getElementById('main-logo').src = "{{site.Params.label.icon_inv}}";
 | 
				
			||||||
 | 
					        {{- end }}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- else }}
 | 
				
			||||||
 | 
					{{- /* theme is auto */}}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    if (localStorage.getItem("pref-theme") === "dark") {
 | 
				
			||||||
 | 
					        document.body.classList.add('dark');
 | 
				
			||||||
 | 
					        {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
				
			||||||
 | 
					        {{- end }}
 | 
				
			||||||
 | 
					    } else if (localStorage.getItem("pref-theme") === "light") {
 | 
				
			||||||
 | 
					        document.body.classList.remove('dark')
 | 
				
			||||||
 | 
					        {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					            document.getElementById('main-logo').src = "{{site.Params.label.icon_inv}}";
 | 
				
			||||||
 | 
					        {{- end }}
 | 
				
			||||||
 | 
					    } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
 | 
				
			||||||
 | 
					        document.body.classList.add('dark');
 | 
				
			||||||
 | 
					        {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
				
			||||||
 | 
					        {{- end }}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
 | 
					{{- /* theme-toggle is disabled and theme is auto */}}
 | 
				
			||||||
 | 
					{{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}}
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					    if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
 | 
				
			||||||
 | 
					        document.body.classList.add('dark');
 | 
				
			||||||
 | 
					        {{- if site.Params.label.icon_inv }}
 | 
				
			||||||
 | 
					            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
				
			||||||
 | 
					        {{- end }}
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					{{- end }}
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 15 KiB  | 
| 
						 | 
					@ -1 +1 @@
 | 
				
			||||||
name: 'newtheme'
 | 
					name: oldtheme
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,23 +0,0 @@
 | 
				
			||||||
<!DOCTYPE html>
 | 
					 | 
				
			||||||
<html lang="{{ site.Language }}" dir="{{ .Language.LanguageDirection | default "auto" }}">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<head>
 | 
					 | 
				
			||||||
    {{- partial "head.html" . }}
 | 
					 | 
				
			||||||
</head>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<body class="
 | 
					 | 
				
			||||||
{{- if (or (ne .Kind `page` ) (eq .Layout `archives`) (eq .Layout `search`)) -}}
 | 
					 | 
				
			||||||
{{- print "list" -}}
 | 
					 | 
				
			||||||
{{- end -}}
 | 
					 | 
				
			||||||
{{- if eq site.Params.defaultTheme `dark` -}}
 | 
					 | 
				
			||||||
{{- print " dark" }}
 | 
					 | 
				
			||||||
{{- end -}}
 | 
					 | 
				
			||||||
" id="top">
 | 
					 | 
				
			||||||
    {{- partialCached "header.html" . .Page -}}
 | 
					 | 
				
			||||||
    <main class="main">
 | 
					 | 
				
			||||||
        {{- block "main" . }}{{ end }}
 | 
					 | 
				
			||||||
    </main>
 | 
					 | 
				
			||||||
    {{ partialCached "footer.html" . .Layout .Kind (.Param "hideFooter") (.Param "ShowCodeCopyButtons") -}}
 | 
					 | 
				
			||||||
</body>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,114 +0,0 @@
 | 
				
			||||||
{{- define "main" }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if (and site.Params.profileMode.enabled .IsHome) }}
 | 
					 | 
				
			||||||
{{- partial "index_profile.html" . }}
 | 
					 | 
				
			||||||
{{- else }} {{/* if not profileMode */}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if not .IsHome | and .Title }}
 | 
					 | 
				
			||||||
<header class="page-header post-title-header">
 | 
					 | 
				
			||||||
  {{- partial "breadcrumbs.html" . }}
 | 
					 | 
				
			||||||
  <h1>
 | 
					 | 
				
			||||||
    {{ .Title }}
 | 
					 | 
				
			||||||
    {{- if and (or (eq .Kind `term`) (eq .Kind `section`)) (.Param "ShowRssButtonInSectionTermList") }}
 | 
					 | 
				
			||||||
    <a href="index.xml" title="RSS" aria-label="RSS">
 | 
					 | 
				
			||||||
      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
 | 
					 | 
				
			||||||
        stroke-linecap="round" stroke-linejoin="round" height="23">
 | 
					 | 
				
			||||||
        <path d="M4 11a9 9 0 0 1 9 9" />
 | 
					 | 
				
			||||||
        <path d="M4 4a16 16 0 0 1 16 16" />
 | 
					 | 
				
			||||||
        <circle cx="5" cy="19" r="1" />
 | 
					 | 
				
			||||||
      </svg>
 | 
					 | 
				
			||||||
    </a>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
  </h1>
 | 
					 | 
				
			||||||
  {{- if .Description }}
 | 
					 | 
				
			||||||
  <div class="post-description">
 | 
					 | 
				
			||||||
    {{ .Description | markdownify }}
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
  {{- end }}
 | 
					 | 
				
			||||||
</header>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if .Content }}
 | 
					 | 
				
			||||||
<div class="post-content">
 | 
					 | 
				
			||||||
  {{- if not (.Param "disableAnchoredHeadings") }}
 | 
					 | 
				
			||||||
  {{- partial "anchored_headings.html" .Content -}}
 | 
					 | 
				
			||||||
  {{- else }}{{ .Content }}{{ end }}
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- $pages := union .RegularPages .Sections }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if .IsHome }}
 | 
					 | 
				
			||||||
{{- $pages = where site.RegularPages "Type" "in" site.Params.mainSections }}
 | 
					 | 
				
			||||||
{{- $pages = where $pages "Params.hiddenInHomeList" "!=" "true"  }}
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- $paginator := .Paginate $pages }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if and .IsHome site.Params.homeInfoParams (eq $paginator.PageNumber 1) }}
 | 
					 | 
				
			||||||
{{- partial "home_info.html" . }}
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<div class="posts-entry-div">
 | 
					 | 
				
			||||||
{{- $term := .Data.Term }}
 | 
					 | 
				
			||||||
{{- range $index, $page := $paginator.Pages }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- $class := "post-entry" }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- $user_preferred := or site.Params.disableSpecial1stPost site.Params.homeInfoParams }}
 | 
					 | 
				
			||||||
{{- if (and $.IsHome (eq $paginator.PageNumber 1) (eq $index 0) (not $user_preferred)) }}
 | 
					 | 
				
			||||||
{{- $class = "first-entry" }}
 | 
					 | 
				
			||||||
{{- else if $term }}
 | 
					 | 
				
			||||||
{{- $class = "post-entry tag-entry" }}
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<article class="{{ $class }}">
 | 
					 | 
				
			||||||
  {{- $isHidden := (site.Params.cover.hidden | default site.Params.cover.hiddenInList) }}
 | 
					 | 
				
			||||||
  {{- partial "cover.html" (dict "cxt" . "IsHome" true "isHidden" $isHidden) }}
 | 
					 | 
				
			||||||
  <header class="entry-header">
 | 
					 | 
				
			||||||
    <h2>
 | 
					 | 
				
			||||||
      {{- .Title }}
 | 
					 | 
				
			||||||
      {{- if .Draft }}<sup><span class="entry-isdraft">  [draft]</span></sup>{{- end }}
 | 
					 | 
				
			||||||
    </h2>
 | 
					 | 
				
			||||||
  </header>
 | 
					 | 
				
			||||||
  {{- if (ne (.Param "hideSummary") true) }}
 | 
					 | 
				
			||||||
  <div class="entry-content">
 | 
					 | 
				
			||||||
    <p>{{ .Summary | plainify | htmlUnescape }}{{ if .Truncated }}...{{ end }}</p>
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
  {{- end }}
 | 
					 | 
				
			||||||
  {{- if not (.Param "hideMeta") }}
 | 
					 | 
				
			||||||
  <footer class="entry-footer">
 | 
					 | 
				
			||||||
    {{- partial "post_meta.html" . -}}
 | 
					 | 
				
			||||||
  </footer>
 | 
					 | 
				
			||||||
  {{- end }}
 | 
					 | 
				
			||||||
  <a class="entry-link" aria-label="post link to {{ .Title | plainify }}" href="{{ .Permalink }}"></a>
 | 
					 | 
				
			||||||
</article>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if gt $paginator.TotalPages 1 }}
 | 
					 | 
				
			||||||
<footer class="page-footer">
 | 
					 | 
				
			||||||
  <nav class="pagination">
 | 
					 | 
				
			||||||
    {{- if $paginator.HasPrev }}
 | 
					 | 
				
			||||||
    <a class="prev" href="{{ $paginator.Prev.URL | absURL }}">
 | 
					 | 
				
			||||||
      « {{ i18n "prev_page" }} 
 | 
					 | 
				
			||||||
      {{- if (.Param "ShowPageNums") }}
 | 
					 | 
				
			||||||
      {{- sub $paginator.PageNumber 1 }}/{{ $paginator.TotalPages }}
 | 
					 | 
				
			||||||
      {{- end }}
 | 
					 | 
				
			||||||
    </a>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
    {{- if $paginator.HasNext }}
 | 
					 | 
				
			||||||
    <a class="next" href="{{ $paginator.Next.URL | absURL }}">
 | 
					 | 
				
			||||||
      {{- i18n "next_page" }} 
 | 
					 | 
				
			||||||
      {{- if (.Param "ShowPageNums") }}
 | 
					 | 
				
			||||||
      {{- add 1 $paginator.PageNumber }}/{{ $paginator.TotalPages }}
 | 
					 | 
				
			||||||
      {{- end }} »
 | 
					 | 
				
			||||||
    </a>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
  </nav>
 | 
					 | 
				
			||||||
</footer>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- end }}{{/* end profileMode */}}
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- end }}{{- /* end main */ -}}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,56 +0,0 @@
 | 
				
			||||||
{{- define "main" }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<article class="post-single">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <header class="post-header">
 | 
					 | 
				
			||||||
    <h1 class="post-title">
 | 
					 | 
				
			||||||
      {{ .Title }}
 | 
					 | 
				
			||||||
    </h1>
 | 
					 | 
				
			||||||
    {{- if .Description }}
 | 
					 | 
				
			||||||
    <div class="post-description">
 | 
					 | 
				
			||||||
      {{ .Description }}
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <div class="post-meta">
 | 
					 | 
				
			||||||
      {{- if not .Date.IsZero -}}
 | 
					 | 
				
			||||||
      <span title='{{ .Date }}'>
 | 
					 | 
				
			||||||
        {{.Date | time.Format (default "January 2, 2006" site.Params.DateFormat) }}
 | 
					 | 
				
			||||||
      </span>
 | 
					 | 
				
			||||||
      {{- end }}
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
  </header>
 | 
					 | 
				
			||||||
  <div class="post-divider"></div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  {{- if .Content }}
 | 
					 | 
				
			||||||
  <div class="post-content">
 | 
					 | 
				
			||||||
    {{- if not (.Param "disableAnchoredHeadings") }}
 | 
					 | 
				
			||||||
    {{- partial "anchored_headings.html" .Content -}}
 | 
					 | 
				
			||||||
    {{- else }}{{ .Content }}{{ end }}
 | 
					 | 
				
			||||||
  </div>
 | 
					 | 
				
			||||||
  {{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <footer class="post-footer">
 | 
					 | 
				
			||||||
    {{- $tags := .Language.Params.Taxonomies.tag | default "tags" }}
 | 
					 | 
				
			||||||
    <ul class="post-tags">
 | 
					 | 
				
			||||||
      {{- range ($.GetTerms $tags) }}
 | 
					 | 
				
			||||||
      <li><a href="{{ .Permalink }}">{{ .LinkTitle }}</a></li>
 | 
					 | 
				
			||||||
      {{- end }}
 | 
					 | 
				
			||||||
    </ul>
 | 
					 | 
				
			||||||
    <nav class="pag-back">
 | 
					 | 
				
			||||||
      <a href="#back" onclick="window.history.back()">
 | 
					 | 
				
			||||||
      <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;" fill="currentColor" stroke="white" stroke-width="1"><polygon points="11.65,3.50 3.80,11.35 11.65,19.20 12.36,18.50 5.71,11.85 20.15,11.85 20.15,10.85 5.71,10.85 12.36,4.20"></polygon></svg>
 | 
					 | 
				
			||||||
      </a>
 | 
					 | 
				
			||||||
    </nav>
 | 
					 | 
				
			||||||
    <br/>
 | 
					 | 
				
			||||||
    {{- if (and (and site.Params.ShowShareButtons (ne .Params.disableShare true)) false) }}
 | 
					 | 
				
			||||||
    {{- partial "share_icons.html" . -}}
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
  </footer>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  {{- if (.Param "comments") }}
 | 
					 | 
				
			||||||
  {{- partial "comments.html" . }}
 | 
					 | 
				
			||||||
  {{- end }}
 | 
					 | 
				
			||||||
</article>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- end }}{{/* end main */}}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,139 +0,0 @@
 | 
				
			||||||
{{- if not (.IsPage) }}
 | 
					 | 
				
			||||||
<footer class="footer">
 | 
					 | 
				
			||||||
    {{- if site.Copyright }}
 | 
					 | 
				
			||||||
    <span>{{ site.Copyright | markdownify }}</span>
 | 
					 | 
				
			||||||
    {{- else }}
 | 
					 | 
				
			||||||
    <a href="/admin/" style="text-decoration: none;">©</a> <span><a href="{{ "" | absLangURL }}">Morgan</a> · PaperMod</span>
 | 
					 | 
				
			||||||
    <div style="font-size: 10px;">
 | 
					 | 
				
			||||||
    <span style="">Ver.{{ site.Params.buildDate }} </span>
 | 
					 | 
				
			||||||
    <a href="#" id="theme-toggle">Toggle Dark Mode</a>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
</footer>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if (not site.Params.disableScrollToTop) }}
 | 
					 | 
				
			||||||
<button id="top-link" class="top-link" onclick="window.scrollTo({top: 0, behavior: 'smooth'})">
 | 
					 | 
				
			||||||
    <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;" fill="currentColor" stroke="white" stroke-width="1"><polygon points="19.35,11.5 11.5,3.65 3.65,11.5 4.35,12.21 11,5.56 11,20 12,20 12,5.56 18.65,12.21"></polygon></svg>
 | 
					 | 
				
			||||||
</button>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- partial "extend_footer.html" . }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    let menu = document.getElementById('menu')
 | 
					 | 
				
			||||||
    if (menu) {
 | 
					 | 
				
			||||||
        menu.scrollLeft = localStorage.getItem("menu-scroll-position");
 | 
					 | 
				
			||||||
        menu.onscroll = function () {
 | 
					 | 
				
			||||||
            localStorage.setItem("menu-scroll-position", menu.scrollLeft);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    document.querySelectorAll('a[href^="#"]').forEach(anchor => {
 | 
					 | 
				
			||||||
        anchor.addEventListener("click", function (e) {
 | 
					 | 
				
			||||||
            e.preventDefault();
 | 
					 | 
				
			||||||
            var id = this.getAttribute("href").substr(1);
 | 
					 | 
				
			||||||
            if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
 | 
					 | 
				
			||||||
                document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
 | 
					 | 
				
			||||||
                    behavior: "smooth"
 | 
					 | 
				
			||||||
                });
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            if (id === "top") {
 | 
					 | 
				
			||||||
                history.replaceState(null, null, " ");
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                history.pushState(null, null, `#${id}`);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if (not site.Params.disableScrollToTop) }}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    var mybutton = document.getElementById("top-link");
 | 
					 | 
				
			||||||
    window.onscroll = function () {
 | 
					 | 
				
			||||||
        if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
 | 
					 | 
				
			||||||
            mybutton.style.visibility = "visible";
 | 
					 | 
				
			||||||
            mybutton.style.opacity = "1";
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            mybutton.style.visibility = "hidden";
 | 
					 | 
				
			||||||
            mybutton.style.opacity = "0";
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if (not site.Params.disableThemeToggle) }}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    document.getElementById("theme-toggle").addEventListener("click", () => {
 | 
					 | 
				
			||||||
        if (document.body.className.includes("dark")) {
 | 
					 | 
				
			||||||
            document.body.classList.remove('dark');
 | 
					 | 
				
			||||||
            localStorage.setItem("pref-theme", 'light');
 | 
					 | 
				
			||||||
            {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
                document.getElementById('main-logo').src = "{{site.Params.label.icon_inv}}";
 | 
					 | 
				
			||||||
            {{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            document.body.classList.add('dark');
 | 
					 | 
				
			||||||
            localStorage.setItem("pref-theme", 'dark');
 | 
					 | 
				
			||||||
            {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
                document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
					 | 
				
			||||||
            {{- end }}
 | 
					 | 
				
			||||||
            
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    })
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (.Param "ShowCodeCopyButtons")) }}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    document.querySelectorAll('pre > code').forEach((codeblock) => {
 | 
					 | 
				
			||||||
        const container = codeblock.parentNode.parentNode;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        const copybutton = document.createElement('button');
 | 
					 | 
				
			||||||
        copybutton.classList.add('copy-code');
 | 
					 | 
				
			||||||
        copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        function copyingDone() {
 | 
					 | 
				
			||||||
            copybutton.innerHTML = '{{- i18n "code_copied" | default "copied!" }}';
 | 
					 | 
				
			||||||
            setTimeout(() => {
 | 
					 | 
				
			||||||
                copybutton.innerHTML = '{{- i18n "code_copy" | default "copy" }}';
 | 
					 | 
				
			||||||
            }, 2000);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        copybutton.addEventListener('click', (cb) => {
 | 
					 | 
				
			||||||
            if ('clipboard' in navigator) {
 | 
					 | 
				
			||||||
                navigator.clipboard.writeText(codeblock.textContent);
 | 
					 | 
				
			||||||
                copyingDone();
 | 
					 | 
				
			||||||
                return;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            const range = document.createRange();
 | 
					 | 
				
			||||||
            range.selectNodeContents(codeblock);
 | 
					 | 
				
			||||||
            const selection = window.getSelection();
 | 
					 | 
				
			||||||
            selection.removeAllRanges();
 | 
					 | 
				
			||||||
            selection.addRange(range);
 | 
					 | 
				
			||||||
            try {
 | 
					 | 
				
			||||||
                document.execCommand('copy');
 | 
					 | 
				
			||||||
                copyingDone();
 | 
					 | 
				
			||||||
            } catch (e) { };
 | 
					 | 
				
			||||||
            selection.removeRange(range);
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (container.classList.contains("highlight")) {
 | 
					 | 
				
			||||||
            container.appendChild(copybutton);
 | 
					 | 
				
			||||||
        } else if (container.parentNode.firstChild == container) {
 | 
					 | 
				
			||||||
            // td containing LineNos
 | 
					 | 
				
			||||||
        } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
 | 
					 | 
				
			||||||
            // table containing LineNos and code
 | 
					 | 
				
			||||||
            codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            // code blocks not having highlight as parent class
 | 
					 | 
				
			||||||
            codeblock.parentNode.appendChild(copybutton);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,191 +0,0 @@
 | 
				
			||||||
<meta charset="utf-8">
 | 
					 | 
				
			||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
					 | 
				
			||||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
 | 
					 | 
				
			||||||
{{- if hugo.IsProduction | or (eq site.Params.env "production") | and (ne .Params.robotsNoIndex true) }}
 | 
					 | 
				
			||||||
<meta name="robots" content="index, follow">
 | 
					 | 
				
			||||||
{{- else }}
 | 
					 | 
				
			||||||
<meta name="robots" content="noindex, nofollow">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
<meta name="apple-mobile-web-app-capable" content="yes">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Title */}}
 | 
					 | 
				
			||||||
<title>{{ if .IsHome }}{{ else }}{{ if .Title }}{{ .Title }} | {{ end }}{{ end }}{{ site.Title }}</title>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Meta */}}
 | 
					 | 
				
			||||||
{{- if .IsHome }}
 | 
					 | 
				
			||||||
{{ with site.Params.keywords -}}<meta name="keywords" content="{{- range $i, $e := . }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}">{{ end }}
 | 
					 | 
				
			||||||
{{- else }}
 | 
					 | 
				
			||||||
<meta name="keywords" content="{{ if .Params.keywords -}}
 | 
					 | 
				
			||||||
    {{- range $i, $e := .Params.keywords }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- else }}
 | 
					 | 
				
			||||||
    {{- range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }} {{- end -}}">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
<meta name="description" content="{{- with .Description }}{{ . }}{{- else }}{{- if or .IsPage .IsSection}}
 | 
					 | 
				
			||||||
    {{- .Summary | default (printf "%s - %s" .Title  site.Title) }}{{- else }}
 | 
					 | 
				
			||||||
    {{- with site.Params.description }}{{ . }}{{- end }}{{- end }}{{- end -}}">
 | 
					 | 
				
			||||||
<meta name="author" content="{{ (partial "author.html" . ) }}">
 | 
					 | 
				
			||||||
<link rel="canonical" href="{{ if .Params.canonicalURL -}} {{ trim .Params.canonicalURL " " }} {{- else -}} {{ .Permalink }} {{- end }}">
 | 
					 | 
				
			||||||
{{- if site.Params.analytics.google.SiteVerificationTag }}
 | 
					 | 
				
			||||||
<meta name="google-site-verification" content="{{ site.Params.analytics.google.SiteVerificationTag }}">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
{{- if site.Params.analytics.yandex.SiteVerificationTag }}
 | 
					 | 
				
			||||||
<meta name="yandex-verification" content="{{ site.Params.analytics.yandex.SiteVerificationTag }}">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
{{- if site.Params.analytics.bing.SiteVerificationTag }}
 | 
					 | 
				
			||||||
<meta name="msvalidate.01" content="{{ site.Params.analytics.bing.SiteVerificationTag }}">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
{{- if site.Params.analytics.naver.SiteVerificationTag }}
 | 
					 | 
				
			||||||
<meta name="naver-site-verification" content="{{ site.Params.analytics.naver.SiteVerificationTag }}">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Styles */}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* includes */}}
 | 
					 | 
				
			||||||
{{- $includes := slice }}
 | 
					 | 
				
			||||||
{{- $includes = $includes | append (" " | resources.FromString "assets/css/includes-blank.css")}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if not (eq site.Params.assets.disableScrollBarStyle true) }}
 | 
					 | 
				
			||||||
    {{- $ScrollStyle := (resources.Get "css/includes/scroll-bar.css") }}
 | 
					 | 
				
			||||||
    {{- $includes = (append $ScrollStyle $includes) }}
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- $includes_all := $includes | resources.Concat "assets/css/includes.css" }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- $theme_vars := (resources.Get "css/core/theme-vars.css") }}
 | 
					 | 
				
			||||||
{{- $reset := (resources.Get "css/core/reset.css") }}
 | 
					 | 
				
			||||||
{{- $media := (resources.Get "css/core/zmedia.css") }}
 | 
					 | 
				
			||||||
{{- $license_css := (resources.Get "css/core/license.css") }}
 | 
					 | 
				
			||||||
{{- $common := (resources.Match "css/common/*.css") | resources.Concat "assets/css/common.css" }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* include `an-old-hope` if hljs is on */}}
 | 
					 | 
				
			||||||
{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default false) }}
 | 
					 | 
				
			||||||
{{- $hljs := (cond ($isHLJSdisabled) (".chroma { background-color: unset !important;}" | resources.FromString "assets/css/hljs-blank.css") (resources.Get "css/hljs/an-old-hope.min.css")) }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* order is important */}}
 | 
					 | 
				
			||||||
{{- $core := (slice $theme_vars $reset $common $hljs $includes_all $media) | resources.Concat "assets/css/core.css" | resources.Minify }}
 | 
					 | 
				
			||||||
{{- $extended := (resources.Match "css/extended/*.css") | resources.Concat "assets/css/extended.css" | resources.Minify }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* bundle all required css */}}
 | 
					 | 
				
			||||||
{{- /* Add extended css after theme style */ -}}
 | 
					 | 
				
			||||||
{{- $stylesheet := (slice $license_css $core $extended) | resources.Concat "assets/css/stylesheet.css"  }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- if not site.Params.assets.disableFingerprinting }}
 | 
					 | 
				
			||||||
{{- $stylesheet := $stylesheet | fingerprint }}
 | 
					 | 
				
			||||||
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" integrity="{{ $stylesheet.Data.Integrity }}" rel="preload stylesheet" as="style">
 | 
					 | 
				
			||||||
{{- else }}
 | 
					 | 
				
			||||||
<link crossorigin="anonymous" href="{{ $stylesheet.RelPermalink }}" rel="preload stylesheet" as="style">
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Search */}}
 | 
					 | 
				
			||||||
{{- if (eq .Layout `search`) -}}
 | 
					 | 
				
			||||||
<link crossorigin="anonymous" rel="preload" as="fetch" href="../index.json">
 | 
					 | 
				
			||||||
{{- $fastsearch := resources.Get "js/fastsearch.js" | js.Build (dict "params" (dict "fuseOpts" site.Params.fuseOpts)) | resources.Minify }}
 | 
					 | 
				
			||||||
{{- $fusejs := resources.Get "js/fuse.basic.min.js" }}
 | 
					 | 
				
			||||||
{{- $license_js := resources.Get "js/license.js" }}
 | 
					 | 
				
			||||||
{{- if not site.Params.assets.disableFingerprinting }}
 | 
					 | 
				
			||||||
{{- $search := (slice $fusejs $license_js $fastsearch ) | resources.Concat "assets/js/search.js" | fingerprint }}
 | 
					 | 
				
			||||||
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}" integrity="{{ $search.Data.Integrity }}"></script>
 | 
					 | 
				
			||||||
{{- else }}
 | 
					 | 
				
			||||||
{{- $search := (slice $fusejs $fastsearch ) | resources.Concat "assets/js/search.js" }}
 | 
					 | 
				
			||||||
<script defer crossorigin="anonymous" src="{{ $search.RelPermalink }}"></script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
{{- end -}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Highlight.js */}}
 | 
					 | 
				
			||||||
{{- $isHLJSdisabled := (site.Params.assets.disableHLJS | default .Params.disableHLJS ) }}
 | 
					 | 
				
			||||||
{{- if (and (eq .Kind "page") (ne .Layout "archives") (ne .Layout "search") (not $isHLJSdisabled)) }}
 | 
					 | 
				
			||||||
{{- if not site.Params.assets.disableFingerprinting }}
 | 
					 | 
				
			||||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" | fingerprint }}
 | 
					 | 
				
			||||||
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" integrity="{{ $highlight.Data.Integrity }}"
 | 
					 | 
				
			||||||
    onload="hljs.initHighlightingOnLoad();"></script>
 | 
					 | 
				
			||||||
{{- else }}
 | 
					 | 
				
			||||||
{{- $highlight := slice (resources.Get "js/highlight.min.js") | resources.Concat "assets/js/highlight.js" }}
 | 
					 | 
				
			||||||
<script defer crossorigin="anonymous" src="{{ $highlight.RelPermalink }}" onload="hljs.initHighlightingOnLoad();"></script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* KaTeX */}}
 | 
					 | 
				
			||||||
{{ if or .Params.math true}}
 | 
					 | 
				
			||||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">
 | 
					 | 
				
			||||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.js"></script>
 | 
					 | 
				
			||||||
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    document.addEventListener("DOMContentLoaded", function() {
 | 
					 | 
				
			||||||
        renderMathInElement(document.body, {
 | 
					 | 
				
			||||||
            delimiters: [
 | 
					 | 
				
			||||||
                {left: "$$", right: "$$", display: true},
 | 
					 | 
				
			||||||
                {left: "$", right: "$", display: false}
 | 
					 | 
				
			||||||
            ]
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{ end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Favicons */}}
 | 
					 | 
				
			||||||
<link rel="icon" href="{{ site.Params.assets.favicon | default "favicon.ico" | absURL }}">
 | 
					 | 
				
			||||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ site.Params.assets.favicon16x16 | default "favicon-16x16.png" | absURL }}">
 | 
					 | 
				
			||||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ site.Params.assets.favicon32x32 | default "favicon-32x32.png" | absURL }}">
 | 
					 | 
				
			||||||
<link rel="apple-touch-icon" href="{{ site.Params.assets.apple_touch_icon | default "apple-touch-icon.png" | absURL }}">
 | 
					 | 
				
			||||||
<link rel="mask-icon" href="{{ site.Params.assets.safari_pinned_tab | default "safari-pinned-tab.svg" | absURL }}">
 | 
					 | 
				
			||||||
<meta name="theme-color" content="{{ site.Params.assets.theme_color | default "#2e2e33" }}">
 | 
					 | 
				
			||||||
<meta name="msapplication-TileColor" content="{{ site.Params.assets.msapplication_TileColor | default "#2e2e33" }}">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* RSS */}}
 | 
					 | 
				
			||||||
{{ range .AlternativeOutputFormats -}}
 | 
					 | 
				
			||||||
<link rel="{{ .Rel }}" type="{{ .MediaType.Type | html }}" href="{{ .Permalink | safeURL }}">
 | 
					 | 
				
			||||||
{{ end -}}
 | 
					 | 
				
			||||||
{{- range .AllTranslations -}}
 | 
					 | 
				
			||||||
<link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
 | 
					 | 
				
			||||||
{{ end -}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<noscript>
 | 
					 | 
				
			||||||
    <style>
 | 
					 | 
				
			||||||
        #theme-toggle,
 | 
					 | 
				
			||||||
        .top-link {
 | 
					 | 
				
			||||||
            display: none;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    </style>
 | 
					 | 
				
			||||||
    {{- if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark")) }}
 | 
					 | 
				
			||||||
    <style>
 | 
					 | 
				
			||||||
        @media (prefers-color-scheme: dark) {
 | 
					 | 
				
			||||||
            :root {
 | 
					 | 
				
			||||||
                --theme: rgb(29, 30, 32);
 | 
					 | 
				
			||||||
                --entry: rgb(46, 46, 51);
 | 
					 | 
				
			||||||
                --primary: rgb(218, 218, 219);
 | 
					 | 
				
			||||||
                --secondary: rgb(155, 156, 157);
 | 
					 | 
				
			||||||
                --tertiary: rgb(65, 66, 68);
 | 
					 | 
				
			||||||
                --content: rgb(196, 196, 197);
 | 
					 | 
				
			||||||
                --hljs-bg: rgb(46, 46, 51);
 | 
					 | 
				
			||||||
                --code-bg: rgb(55, 56, 62);
 | 
					 | 
				
			||||||
                --border: rgb(51, 51, 51);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            .list {
 | 
					 | 
				
			||||||
                background: var(--theme);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            .list:not(.dark)::-webkit-scrollbar-track {
 | 
					 | 
				
			||||||
                background: 0 0;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            .list:not(.dark)::-webkit-scrollbar-thumb {
 | 
					 | 
				
			||||||
                border-color: var(--theme);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    </style>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
</noscript>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- partial "extend_head.html" . -}}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* Misc */}}
 | 
					 | 
				
			||||||
{{- if hugo.IsProduction | or (eq site.Params.env "production") }}
 | 
					 | 
				
			||||||
{{- template "_internal/google_analytics.html" . }}
 | 
					 | 
				
			||||||
{{- template "partials/templates/opengraph.html" . }}
 | 
					 | 
				
			||||||
{{- template "partials/templates/twitter_cards.html" . }}
 | 
					 | 
				
			||||||
{{- template "partials/templates/schema_json.html" . }}
 | 
					 | 
				
			||||||
{{- end -}}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,150 +0,0 @@
 | 
				
			||||||
<header class="header">
 | 
					 | 
				
			||||||
    {{- if false }}
 | 
					 | 
				
			||||||
    <nav class="nav{{- if .IsHome }} nav-home{{- else if (not .IsPage) }} nav-nonpost{{- else if .IsPage }} nav-post{{- end }}">
 | 
					 | 
				
			||||||
        <div class="logo">
 | 
					 | 
				
			||||||
            {{- $label_text := (site.Params.label.text | default site.Title) }}
 | 
					 | 
				
			||||||
            {{- if site.Title }}
 | 
					 | 
				
			||||||
            <a href="{{ "" | absLangURL }}" accesskey="h" title="{{ $label_text }}">
 | 
					 | 
				
			||||||
                {{- if site.Params.label.icon }}
 | 
					 | 
				
			||||||
                <img id="main-logo" src="{{- site.Params.label.icon | absURL -}}" alt="" aria-label="logo"
 | 
					 | 
				
			||||||
                    height="{{- site.Params.label.iconHeight | default "24" -}}">
 | 
					 | 
				
			||||||
                {{- end -}}
 | 
					 | 
				
			||||||
                {{- else  }}
 | 
					 | 
				
			||||||
                    {{- $label_text -}}
 | 
					 | 
				
			||||||
                {{- end -}}
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
            <div class="logo-switches">
 | 
					 | 
				
			||||||
                {{- if (not site.Params.disableThemeToggle) }}
 | 
					 | 
				
			||||||
                <button id="theme-toggle" accesskey="t"  aria-label="Toggle Darkmode">
 | 
					 | 
				
			||||||
                    <svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
 | 
					 | 
				
			||||||
                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
 | 
					 | 
				
			||||||
                        stroke-linejoin="round">
 | 
					 | 
				
			||||||
                        <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
 | 
					 | 
				
			||||||
                    </svg>
 | 
					 | 
				
			||||||
                    <svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
 | 
					 | 
				
			||||||
                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
 | 
					 | 
				
			||||||
                        stroke-linejoin="round">
 | 
					 | 
				
			||||||
                        <circle cx="12" cy="12" r="5"></circle>
 | 
					 | 
				
			||||||
                        <line x1="12" y1="1" x2="12" y2="3"></line>
 | 
					 | 
				
			||||||
                        <line x1="12" y1="21" x2="12" y2="23"></line>
 | 
					 | 
				
			||||||
                        <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
 | 
					 | 
				
			||||||
                        <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
 | 
					 | 
				
			||||||
                        <line x1="1" y1="12" x2="3" y2="12"></line>
 | 
					 | 
				
			||||||
                        <line x1="21" y1="12" x2="23" y2="12"></line>
 | 
					 | 
				
			||||||
                        <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
 | 
					 | 
				
			||||||
                        <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
 | 
					 | 
				
			||||||
                    </svg>
 | 
					 | 
				
			||||||
                </button>
 | 
					 | 
				
			||||||
                {{- end }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                {{- $lang := .Lang}}
 | 
					 | 
				
			||||||
                {{- $separator := or $label_text (not site.Params.disableThemeToggle)}}
 | 
					 | 
				
			||||||
                {{- with site.Home.AllTranslations }}
 | 
					 | 
				
			||||||
                <ul class="lang-switch">
 | 
					 | 
				
			||||||
                    {{- if $separator }}<li>|</li>{{ end }}
 | 
					 | 
				
			||||||
                    {{- range . -}}
 | 
					 | 
				
			||||||
                    {{- if ne $lang .Lang }}
 | 
					 | 
				
			||||||
                    <li>
 | 
					 | 
				
			||||||
                        <a href="{{- .Permalink -}}" title="{{ .Language.Params.languageAltTitle | default (.Language.LanguageName | emojify) | default (.Lang | title) }}"
 | 
					 | 
				
			||||||
                            aria-label="{{ .Language.LanguageName | default (.Lang | title) }}">
 | 
					 | 
				
			||||||
                            {{- if (and site.Params.displayFullLangName (.Language.LanguageName)) }}
 | 
					 | 
				
			||||||
                            {{- .Language.LanguageName | emojify -}}
 | 
					 | 
				
			||||||
                            {{- else }}
 | 
					 | 
				
			||||||
                            {{- .Lang | title -}}
 | 
					 | 
				
			||||||
                            {{- end -}}
 | 
					 | 
				
			||||||
                        </a>
 | 
					 | 
				
			||||||
                    </li>
 | 
					 | 
				
			||||||
                    {{- end -}}
 | 
					 | 
				
			||||||
                    {{- end}}
 | 
					 | 
				
			||||||
                </ul>
 | 
					 | 
				
			||||||
                {{- end }}
 | 
					 | 
				
			||||||
            </div>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
        {{- $currentPage := . }}
 | 
					 | 
				
			||||||
        <ul id="menu">
 | 
					 | 
				
			||||||
            {{- range site.Menus.main }}
 | 
					 | 
				
			||||||
            {{- $menu_item_url := (cond (strings.HasSuffix .URL "/") .URL (printf "%s/" .URL) ) | absLangURL }}
 | 
					 | 
				
			||||||
            {{- $page_url:= $currentPage.Permalink | absLangURL }}
 | 
					 | 
				
			||||||
            {{- $is_search := eq (site.GetPage .KeyName).Layout `search` }}
 | 
					 | 
				
			||||||
            <li>
 | 
					 | 
				
			||||||
                <a href="{{ .URL | absLangURL }}" title="{{ .Title | default .Name }} {{- cond $is_search (" (Alt + /)" | safeHTMLAttr) ("" | safeHTMLAttr ) }}"
 | 
					 | 
				
			||||||
                {{- cond $is_search (" accesskey=/" | safeHTMLAttr) ("" | safeHTMLAttr ) }}>
 | 
					 | 
				
			||||||
                    <span {{- if eq $menu_item_url $page_url }} class="active" {{- end }}>
 | 
					 | 
				
			||||||
                        {{- .Pre }}
 | 
					 | 
				
			||||||
                        {{- .Name -}}
 | 
					 | 
				
			||||||
                        {{ .Post -}}
 | 
					 | 
				
			||||||
                    </span>
 | 
					 | 
				
			||||||
                    {{- if (findRE "://" .URL) }} 
 | 
					 | 
				
			||||||
                    <svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
 | 
					 | 
				
			||||||
                        stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
 | 
					 | 
				
			||||||
                        <path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
 | 
					 | 
				
			||||||
                        <path d="M15 3h6v6"></path>
 | 
					 | 
				
			||||||
                        <path d="M10 14L21 3"></path>
 | 
					 | 
				
			||||||
                    </svg>
 | 
					 | 
				
			||||||
                    {{- end }}
 | 
					 | 
				
			||||||
                </a>
 | 
					 | 
				
			||||||
            </li>
 | 
					 | 
				
			||||||
            {{- end }}
 | 
					 | 
				
			||||||
        </ul>
 | 
					 | 
				
			||||||
    </nav>
 | 
					 | 
				
			||||||
    {{- end }}
 | 
					 | 
				
			||||||
</header>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
{{- /* theme-toggle is enabled */}}
 | 
					 | 
				
			||||||
{{- if (not site.Params.disableThemeToggle) }}
 | 
					 | 
				
			||||||
{{- /* theme is light */}}
 | 
					 | 
				
			||||||
{{- if (eq site.Params.defaultTheme "light") }}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    if (localStorage.getItem("pref-theme") === "dark") {
 | 
					 | 
				
			||||||
        document.body.classList.add('dark');
 | 
					 | 
				
			||||||
        {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
					 | 
				
			||||||
        {{- end }}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- /* theme is dark */}}
 | 
					 | 
				
			||||||
{{- else if (eq site.Params.defaultTheme "dark") }}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    if (localStorage.getItem("pref-theme") === "light") {
 | 
					 | 
				
			||||||
        document.body.classList.remove('dark')
 | 
					 | 
				
			||||||
        {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
            document.getElementById('main-logo').src = "{{site.Params.label.icon_inv}}";
 | 
					 | 
				
			||||||
        {{- end }}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- else }}
 | 
					 | 
				
			||||||
{{- /* theme is auto */}}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    if (localStorage.getItem("pref-theme") === "dark") {
 | 
					 | 
				
			||||||
        document.body.classList.add('dark');
 | 
					 | 
				
			||||||
        {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
					 | 
				
			||||||
        {{- end }}
 | 
					 | 
				
			||||||
    } else if (localStorage.getItem("pref-theme") === "light") {
 | 
					 | 
				
			||||||
        document.body.classList.remove('dark')
 | 
					 | 
				
			||||||
        {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
            document.getElementById('main-logo').src = "{{site.Params.label.icon_inv}}";
 | 
					 | 
				
			||||||
        {{- end }}
 | 
					 | 
				
			||||||
    } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
 | 
					 | 
				
			||||||
        document.body.classList.add('dark');
 | 
					 | 
				
			||||||
        {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
					 | 
				
			||||||
        {{- end }}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
{{- /* theme-toggle is disabled and theme is auto */}}
 | 
					 | 
				
			||||||
{{- else if (and (ne site.Params.defaultTheme "light") (ne site.Params.defaultTheme "dark"))}}
 | 
					 | 
				
			||||||
<script>
 | 
					 | 
				
			||||||
    if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
 | 
					 | 
				
			||||||
        document.body.classList.add('dark');
 | 
					 | 
				
			||||||
        {{- if site.Params.label.icon_inv }}
 | 
					 | 
				
			||||||
            document.getElementById('main-logo').src = "{{site.Params.label.icon}}";
 | 
					 | 
				
			||||||
        {{- end }}
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
{{- end }}
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -1 +0,0 @@
 | 
				
			||||||
name: oldtheme
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue