text: /*
   * Credits: this script is shamelessly borrowed from
   * https://github.com/kitian616/jekyll-TeXt-theme/blob/master/_includes/scripts/archieve.js
   */
  (function () {
    function queryString() {
      // This function is anonymous, is executed immediately and
      // the return value is assigned to QueryString!
      var i = 0,
        queryObj = {},
        pair;
      var queryStr = window.location.search.substring(1);
      var queryArr = queryStr.split('&');
      for (i = 0; i < queryArr.length; i++) {
        pair = queryArr[i].split('=');
        // If first entry with this name
        if (typeof queryObj[pair[0]] === 'undefined') {
          queryObj[pair[0]] = pair[1];
          // If second entry with this name
        } else if (typeof queryObj[pair[0]] === 'string') {
          queryObj[pair[0]] = [queryObj[pair[0]], pair[1]];
          // If third or later entry with this name
        } else {
          queryObj[pair[0]].push(pair[1]);
        }
      }
      return queryObj;
    }
  
    var setUrlQuery = (function () {
      var baseUrl = window.location.href.split('?')[0];
      return function (query) {
        if (typeof query === 'string') {
          window.history.replaceState(null, '', baseUrl + query);
        } else {
          window.history.replaceState(null, '', baseUrl);
        }
      };
    })();
  
    $(document).ready(function () {
      var $tags = $('.js-tags');
      var $articleTags = $tags.find('.tag-button');
      var $tagShowAll = $tags.find('.tag-button--all');
      var $result = $('.js-result');
      var $sections = $result.find('section');
      var sectionArticles = [];
      var $lastFocusButton = null;
      var sectionTopArticleIndex = [];
      var hasInit = false;
  
      $sections.each(function () {
        sectionArticles.push($(this).find('.item'));
      });
  
      function init() {
        var i,
          index = 0;
        for (i = 0; i < $sections.length; i++) {
          sectionTopArticleIndex.push(index);
          index += $sections.eq(i).find('.item').length;
        }
        sectionTopArticleIndex.push(index);
      }
  
      function searchButtonsByTag(_tag /*raw tag*/) {
        if (!_tag) {
          return $tagShowAll;
        }
        var _buttons = $articleTags.filter('[data-encode="' + _tag + '"]');
        if (_buttons.length === 0) {
          return $tagShowAll;
        }
        return _buttons;
      }
  
      function buttonFocus(target) {
        if (target) {
          target.addClass('focus');
          $lastFocusButton &&
            !$lastFocusButton.is(target) &&
            $lastFocusButton.removeClass('focus');
          $lastFocusButton = target;
        }
      }
  
      function tagSelect(tag /*raw tag*/, target) {
        var result = {},
          $articles;
        var i, j, k, _tag;
  
        for (i = 0; i < sectionArticles.length; i++) {
          $articles = sectionArticles[i];
          for (j = 0; j < $articles.length; j++) {
            if (tag === '' || tag === undefined) {
              result[i] || (result[i] = {});
              result[i][j] = true;
            } else {
              var tags = $articles.eq(j).data('tags').split(',');
              for (k = 0; k < tags.length; k++) {
                if (tags[k] === tag) {
                  result[i] || (result[i] = {});
                  result[i][j] = true;
                  break;
                }
              }
            }
          }
        }
  
        for (i = 0; i < sectionArticles.length; i++) {
          result[i] && $sections.eq(i).removeClass('d-none');
          result[i] || $sections.eq(i).addClass('d-none');
          for (j = 0; j < sectionArticles[i].length; j++) {
            if (result[i] && result[i][j]) {
              sectionArticles[i].eq(j).removeClass('d-none');
            } else {
              sectionArticles[i].eq(j).addClass('d-none');
            }
          }
        }
  
        hasInit || ($result.removeClass('d-none'), (hasInit = true));
  
        if (target) {
          buttonFocus(target);
          _tag = target.attr('data-encode');
          if (_tag === '' || typeof _tag !== 'string') {
            setUrlQuery();
          } else {
            setUrlQuery('?tag=' + _tag);
          }
        } else {
          buttonFocus(searchButtonsByTag(tag));
        }
      }
  
      var query = queryString(),
        _tag = query.tag;
  
      init();
      tagSelect(_tag);
  
      $tags.on('click', 'a', function () {
        /* only change */ tagSelect($(this).data('encode'), $(this));
      });
    });
  })();
  