maimaiDX - today result

collect daily play result on maimai-net

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください
// ==UserScript==
// @name        maimaiDX - today result
// @namespace   esterTion
// @match       https://maimaidx-eng.com/*
// @match       https://maimaidx.jp/*
// @match       https://maimai.wahlap.com/*
// @grant       none
// @run-at      document-end
// @version     1.3.5.1
// @author      -
// @description collect daily play result on maimai-net
// ==/UserScript==

{
  const noticeArr = [],
    slideoutNotice = function (notice) {
      if (notice.parentNode) {
        notice.style.transition = 'top .5s';
        notice.style.top = '-100px';
        setTimeout(function () { removeNotice(notice); }, 510);
      }
    },
    removeNotice = function (notice) {
      const index = noticeArr.findIndex(i => i.node === notice);
      if (index === -1) return false;
      noticeArr.splice(index, 1);
      notice.remove();
      let nextTop = 50
      noticeArr.forEach((item) => {
        item = item.node;
        if (item.style.top == '-100px') return
        item.style.transition = 'top .5s';
        item.style.top = nextTop + 'px'
        nextTop += item.offsetHeight + 20
        item.nextTop = nextTop
      })
    };
  setInterval(() => {
    const now = performance.now();
    for (let i = 0; i < noticeArr.length; i++) {
      const notice = noticeArr[i];
      if (notice.removed) continue;
      if (now >= notice.removalTime) {
        if (notice.keepBeforeNextNotice && i === noticeArr.length - 1) {
          continue;
        }
        notice.removed = true
        slideoutNotice(notice.node);
      }
    }
  })
  window.createUpdateNotice = function (notice, color, options) {
    color = '#' + color;
    let noticeDiv = _('div', {
      class: "MNTR-Side-Notice",
      style: { background: color },
      event: {
        click: function () {
          removeNotice(this);
        }
      }
    });
    if (typeof (notice) == 'string') {
      noticeDiv.innerHTML = notice;
    }
    document.body.appendChild(noticeDiv);
    let top = noticeArr.length ? noticeArr[noticeArr.length - 1].node.nextTop : 50,
      height = noticeDiv.offsetHeight;
    noticeDiv.style.top = top + 'px';
    noticeDiv.nextTop = top + height + 20;
    noticeDiv.appendChild(_('div', {
      className: 'after', style: {
        borderWidth: 'calc(' + height + 'px / 2) 5px',
        borderRightColor: color,
        borderBottomColor: color
      }
    }));
    noticeArr.push({
      node: noticeDiv,
      removalTime: performance.now() + 5e3,
      ...options
    });
  };
  window.removeUpdateNotice = function () {
    noticeArr.forEach(function (i) {
      slideoutNotice(i);
    });
  };
}

// idbKeyval - https://github.com/jakearchibald/idb-keyval
function _slicedToArray(t,n){return _arrayWithHoles(t)||_iterableToArrayLimit(t,n)||_unsupportedIterableToArray(t,n)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,n){if(t){if("string"==typeof t)return _arrayLikeToArray(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(t,n):void 0}}function _arrayLikeToArray(t,n){(null==n||n>t.length)&&(n=t.length);for(var r=0,e=new Array(n);r<n;r++)e[r]=t[r];return e}function _iterableToArrayLimit(t,n){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var e,o,u=[],i=!0,a=!1;try{for(r=r.call(t);!(i=(e=r.next()).done)&&(u.push(e.value),!n||u.length!==n);i=!0);}catch(t){a=!0,o=t}finally{try{i||null==r.return||r.return()}finally{if(a)throw o}}return u}}function _arrayWithHoles(t){if(Array.isArray(t))return t}function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}!function(t,n){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).idbKeyval={})}(this,(function(t){"use strict";function n(t){return new Promise((function(n,r){t.oncomplete=t.onsuccess=function(){return n(t.result)},t.onabort=t.onerror=function(){return r(t.error)}}))}function r(t,r){var e=indexedDB.open(t);e.onupgradeneeded=function(){return e.result.createObjectStore(r)};var o=n(e);return function(t,n){return o.then((function(e){return n(e.transaction(r,t).objectStore(r))}))}}var e;function o(){return e||(e=r("keyval-store","keyval")),e}function u(t,r){return t.openCursor().onsuccess=function(){this.result&&(r(this.result),this.result.continue())},n(t.transaction)}t.clear=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o();return t("readwrite",(function(t){return t.clear(),n(t.transaction)}))},t.createStore=r,t.del=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o();return r("readwrite",(function(r){return r.delete(t),n(r.transaction)}))},t.delMany=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o();return r("readwrite",(function(r){return t.forEach((function(t){return r.delete(t)})),n(r.transaction)}))},t.entries=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o();return t("readonly",(function(r){if(r.getAll&&r.getAllKeys)return Promise.all([n(r.getAllKeys()),n(r.getAll())]).then((function(t){var n=_slicedToArray(t,2),r=n[0],e=n[1];return r.map((function(t,n){return[t,e[n]]}))}));var e=[];return t("readonly",(function(t){return u(t,(function(t){return e.push([t.key,t.value])})).then((function(){return e}))}))}))},t.get=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o();return r("readonly",(function(r){return n(r.get(t))}))},t.getMany=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o();return r("readonly",(function(r){return Promise.all(t.map((function(t){return n(r.get(t))})))}))},t.keys=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o();return t("readonly",(function(t){if(t.getAllKeys)return n(t.getAllKeys());var r=[];return u(t,(function(t){return r.push(t.key)})).then((function(){return r}))}))},t.promisifyRequest=n,t.set=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o();return e("readwrite",(function(e){return e.put(r,t),n(e.transaction)}))},t.setMany=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o();return r("readwrite",(function(r){return t.forEach((function(t){return r.put(t[1],t[0])})),n(r.transaction)}))},t.update=function(t,r){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o();return e("readwrite",(function(e){return new Promise((function(o,u){e.get(t).onsuccess=function(){try{e.put(r(this.result),t),o(n(e.transaction))}catch(t){u(t)}}}))}))},t.values=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o();return t("readonly",(function(t){if(t.getAll)return n(t.getAll());var r=[];return u(t,(function(t){return r.push(t.value)})).then((function(){return r}))}))},Object.defineProperty(t,"__esModule",{value:!0})}));

// createElement
function _(e,t,i){var a=null;if("text"===e)return document.createTextNode(t);a=document.createElement(e);for(var n in t)if("style"===n)for(var o in t.style)a.style[o]=t.style[o];else if("className"===n)a.className=t[n];else if("event"===n)for(var o in t.event)a.addEventListener(o,t.event[o]);else a.setAttribute(n,t[n]);if(i)if("string"==typeof i)a.innerHTML=i;else if(Array.isArray(i))for(var l=0;l<i.length;l++)null!=i[l]&&a.appendChild(i[l]);return a}
const host = location.hostname
const groupData = {"groups":{"Diamond":{"exsongs":[],"jpsongs":[],"subgroup":["熊","華"],"exremas":[],"jpremas":[]},"Emerald":{"exsongs":[],"jpsongs":[],"subgroup":["爽","煌"],"exremas":[],"jpremas":[]},"Sapphire":{"exsongs":[],"jpsongs":[],"subgroup":["宙","星"],"exremas":[],"jpremas":[]},"Amethyst":{"exsongs":[],"jpsongs":[],"subgroup":["祭","祝"],"exremas":[],"jpremas":[]},"Topaz":{"exsongs":[],"jpsongs":[],"subgroup":["双","宴"],"exremas":[],"jpremas":[]},"真":{"exsongs":[8,9,17,18,22,23,24,25,27,30,31,35,38,40,42,46,47,53,56,58,61,62,63,64,65,66,67,68,69,71,73,75,76,77,78,79,80,81,82,83,84,85,100,101,102,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,152,153,154,155,157,159],"jpsongs":[8,9,17,18,22,23,24,25,27,30,31,35,38,40,42,44,46,47,53,56,58,61,62,63,64,65,66,67,68,69,71,73,75,76,77,78,79,80,81,82,83,84,85,100,101,102,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,125,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,152,153,154,155,157,159],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[8,9,17,18,22,23,24,25,27,30,31,35,38,40,42,46,47,53,56,58,61,62,63,64,65,66,67,68,69,71,73,75,76,77,78,79,80,81,82,83,84,85,100,101,102,106,107,108,109,110,111,112,113,114,116,117,118,119,120,121,122,128,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,147,152,153,154,155,157,159]},"超":{"exsongs":[115,184,186,187,188,189,190,191,193,194,198,199,200,201,202,203,204,205,206,207,208,209,212,213,214,216,217,218,219,220,223,224,226,227,237,238,239,240,241,246,248,252,253,255,256,258,259,260,261,262,263,264,265,266,267,268,269],"jpsongs":[115,184,185,186,187,188,189,190,191,193,194,198,199,200,201,202,203,204,205,206,207,208,209,212,213,214,216,217,218,219,220,223,224,226,227,237,238,239,240,241,246,248,252,253,255,256,258,259,260,261,262,263,264,265,266,267,268,269],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[115,184,186,187,188,191,193,194,198,199,200,201,202,203,204,205,206,207,208,209,212,213,214,216,217,218,219,220,223,224,226,227,237,238,239,240,241,246,248,252,253,255,256,258,259,260,261,262,263,264,265,266,267,268,269]},"檄":{"exsongs":[225,229,230,231,232,233,234,235,247,251,254,270,271,278,282,285,290,291,298,301,303,305,308,309,310,311,313,315,316,319,320,321,322,323,324,325,326,327,328,329,330,337,339,342,343,344,345,346,347],"jpsongs":[192,225,229,230,231,232,233,234,235,247,251,254,270,271,278,282,284,285,290,291,298,301,303,305,308,309,310,311,313,315,316,319,320,321,322,323,324,325,326,327,328,329,330,332,337,339,341,342,343,344,345,346,347],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[225,229,230,231,232,233,234,235,247,251,254,270,271,278,282,285,290,291,298,301,303,305,308,309,310,311,313,315,316,319,320,321,322,323,324,325,326,327,328,329,330,337,339,342,343,344,345,346,347]},"橙":{"exsongs":[228,244,295,296,297,314,331,349,351,352,353,362,366,367,374,375,378,379,381,382,383,384,385,386,387,388,389,390,399],"jpsongs":[228,244,281,295,296,297,314,331,349,351,352,353,362,366,367,374,375,378,379,381,382,383,384,385,386,387,388,389,390,399],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[228,244,295,296,297,314,331,349,351,352,353,362,366,367,374,375,378,379,381,382,383,384,385,386,387,388,389,390,399]},"暁":{"exsongs":[242,288,289,299,302,312,318,348,363,364,365,376,380,400,401,403,404,413,414,417,418,419,420,421,422,437,438,439],"jpsongs":[242,288,289,299,300,302,312,318,348,363,364,365,376,380,400,401,403,404,408,409,410,413,414,417,418,419,420,421,422,437,438,439],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[242,288,289,299,302,312,318,348,363,364,365,376,380,400,401,403,404,413,414,417,418,420,421,422,437,438,439]},"桃":{"exsongs":[359,360,411,412,424,425,426,427,434,435,446,447,448,451,453,454,455,456,457,458,459,460,462,463,464,465,466,468,471,472,477,480,482,483],"jpsongs":[359,360,407,411,412,424,425,426,427,434,435,446,447,448,449,451,453,454,455,456,457,458,459,460,462,463,464,465,466,468,471,472,477,480,482,483],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[359,360,411,412,424,425,426,427,434,435,446,447,448,453,454,456,457,458,459,462,463,464,465,466,468,471,472,480,482,483]},"櫻":{"exsongs":[431,461,467,490,492,494,495,496,497,506,507,508,511,517,518,520,521,526,527,528,529,530,531,532,533,534,536,537,538,539,542,543],"jpsongs":[431,461,467,490,492,494,495,496,497,506,507,508,511,515,517,518,520,521,523,524,526,527,528,529,530,531,532,533,534,536,537,538,539,542,543],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[431,461,467,490,492,494,495,496,497,506,507,508,511,517,518,520,521,526,527,528,529,530,531,532,533,534,536,537,538,539,542,543]},"紫":{"exsongs":[283,488,493,512,513,535,546,547,548,552,553,555,556,557,558,559,561,565,566,567,568,571,572,573,574,578,579,580,581,582,583,584,585,589,592,593,598,599,601,602,603,606],"jpsongs":[280,283,488,493,509,512,513,516,519,535,546,547,548,552,553,555,556,557,558,559,560,561,565,566,567,568,571,572,573,574,578,579,580,581,582,583,584,585,589,592,593,598,599,601,602,603,606],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[283,488,493,512,513,535,546,547,548,552,553,555,556,557,558,559,561,565,566,567,568,571,572,573,574,578,579,580,581,582,583,584,585,589,592,593,598,599,601,602,603,606]},"菫":{"exsongs":[236,432,514,541,587,610,611,612,613,614,617,618,621,622,624,625,626,627,628,629,630,631,632,634,636,637,639,640,641,647,648,649,654,655,657,658,664,665,666],"jpsongs":[236,432,514,541,587,610,611,612,613,614,617,618,620,621,622,624,625,626,627,628,629,630,631,632,634,636,637,639,640,641,647,648,649,654,655,657,658,663,664,665,666],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[236,432,514,541,587,610,611,612,613,614,617,618,621,622,624,625,626,627,628,629,630,631,632,634,636,637,639,640,641,647,648,649,654,655,657,658,664,665,666]},"白":{"exsongs":[540,586,642,643,670,672,673,674,680,681,682,683,684,687,688,689,690,691,692,693,694,695,696,699,700,701,702,704,705,706,707,708,709,710,711,712,713,719,720,721,722,723,725,726],"jpsongs":[540,586,642,643,659,668,670,672,673,674,675,676,677,680,681,682,683,684,687,688,689,690,691,692,693,694,695,696,698,699,700,701,702,704,705,706,707,708,709,710,711,712,713,719,720,721,722,723,725,726],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[540,586,642,643,670,672,673,674,680,681,682,683,684,689,690,691,692,693,694,695,696,699,700,701,702,704,705,706,707,708,709,710,711,713,719,720,721,722,723,725,726]},"雪":{"exsongs":[650,731,732,733,734,735,736,737,738,739,740,741,742,745,746,750,753,756,757,758,759,760,762,763,764,765,766,767,768,769,770,771,772,773,775,776,777,778,779,781,782,786],"jpsongs":[525,650,731,732,733,734,735,736,737,738,739,740,741,742,745,746,747,748,750,753,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,775,776,777,778,779,781,782,786],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[650,732,733,734,735,736,737,738,739,740,741,742,745,746,750,753,756,757,758,759,760,762,763,764,765,766,767,768,769,770,771,772,773,775,776,777,778,779,781,782,786]},"輝":{"exsongs":[564,717,752,789,791,792,793,794,796,797,798,799,800,802,803,806,809,812,815,816,817,818,819,820,821,822,823,825,829,830,832,833,834,835,836,837,838,839,840,841,842,844,848,849,850,852],"jpsongs":[564,717,751,752,789,791,792,793,794,796,797,798,799,800,801,802,803,804,805,806,807,809,810,811,812,815,816,817,818,819,820,821,822,823,825,826,827,829,830,832,833,834,835,836,837,838,839,840,841,842,844,847,848,849,850,852],"subgroup":[],"exremas":[],"jpremas":[],"cnsongs":[564,717,752,789,791,793,794,796,797,798,799,800,802,803,806,809,812,815,816,817,818,819,820,821,822,823,825,829,830,832,833,834,835,836,837,838,839,840,841,842,844,848,849,850,852]},"舞":{"exsongs":[],"jpsongs":[],"subgroup":["真","超","檄","橙","暁","桃","櫻","紫","菫","白","雪","輝","舞ReMASTER"],"exremas":[],"jpremas":[]},"熊":{"exsongs":[10191,10256,10288,10301,10319,10363,10420,10536,10572,10593,10641,10665,10702,10706,10734,11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027,11028,11029,11030,11031,11034,11037,11043,11044,11046,11048,11050,11051,11052,11058,11059,11060,11061,11064,11065,11066,11067,11069,11070,11073,11075,11077,11078,11080,11081,11083,11084,11085,11086,11087,11088],"jpsongs":[10125,10146,10191,10256,10288,10301,10319,10363,10420,10536,10560,10572,10593,10641,10665,10668,10702,10706,10734,11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027,11028,11029,11030,11031,11034,11037,11043,11044,11046,11048,11050,11051,11052,11058,11059,11060,11061,11064,11065,11066,11067,11069,11070,11073,11075,11077,11078,11080,11081,11083,11084,11085,11086,11087,11088],"subgroup":[],"exremas":[],"jpremas":[]},"華":{"exsongs":[11032,11049,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11103,11104,11105,11106,11107,11108,11109,11110,11111,11113,11115,11121,11122,11123,11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,11135,11136,11137,11138,11139,11140,11141,11142,11143,11145,11146,11147,11148,11149],"jpsongs":[11032,11049,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11103,11104,11105,11106,11107,11108,11109,11110,11111,11113,11115,11119,11121,11122,11123,11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,11135,11136,11137,11138,11139,11140,11141,11142,11143,11145,11146,11147,11148,11149,11150],"subgroup":[],"exremas":[],"jpremas":[]},"爽":{"exsongs":[10188,10690,11152,11153,11154,11155,11156,11157,11158,11159,11160,11161,11162,11163,11164,11165,11166,11167,11168,11171,11172,11173,11174,11175,11176,11177,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11198,11199,11200,11201,11202,11204,11205,11206,11207,11208,11209,11210,11211,11212,11213,11214,11215,11216,11219,11221,11222],"jpsongs":[10188,10690,11152,11153,11154,11155,11156,11157,11158,11159,11160,11161,11162,11163,11164,11165,11166,11167,11168,11171,11172,11173,11174,11175,11176,11177,11183,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11195,11197,11198,11199,11200,11201,11202,11204,11205,11206,11207,11208,11209,11210,11211,11212,11213,11214,11215,11216,11218,11219,11221],"subgroup":[],"exremas":[],"jpremas":[]},"煌":{"exsongs":[11169,11170,11223,11224,11225,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11243,11246,11247,11248,11249,11253,11255,11260,11261,11262,11263,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294],"jpsongs":[11169,11170,11222,11223,11224,11225,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11243,11246,11247,11248,11249,11253,11255,11258,11260,11261,11262,11263,11264,11265,11266,11267,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293],"subgroup":[],"exremas":[],"jpremas":[]},"宙":{"exsongs":[1020,1051,10552,10602,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,11315,11316,11317,11318,11319,11325,11327,11328,11329,11330,11331,11333,11334,11335,11336,11340,11341,11342,11343,11344,11345,11349,11350,11351,11353,11354,11355,11358,11359,11360,11361,11362,11363,11364,11365,11369,11373,11374,11443,11401,11390],"jpsongs":[1020,1051,10552,10602,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,11315,11316,11317,11318,11319,11325,11327,11328,11329,11330,11331,11333,11334,11335,11336,11337,11340,11341,11342,11343,11344,11345,11349,11350,11351,11353,11354,11355,11356,11358,11359,11360,11361,11362,11363,11364,11365,11369,11371,11372,11373,11374],"subgroup":[],"exremas":[],"jpremas":[]},"星":{"exsongs":[1081,1085,10145,10193,10202,11346,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11391,11392,11393,11394,11395,11398,11399,11400,11402,11404,11405,11410,11411,11412,11413,11415,11418,11419,11422,11423,11424,11425,11426,11427,11428,11429,11432,11433,11434,11435,11436,11437,11438,11439,11441,11444,11445,11446,11447,11448,11449,11451],"jpsongs":[1081,1085,10145,10193,10202,11346,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11398,11399,11400,11401,11402,11404,11405,11410,11411,11412,11413,11415,11418,11419,11422,11423,11424,11425,11426,11427,11428,11429,11432,11433,11434,11435,11436,11437,11438,11439,11441,11443,11444,11445,11446,11447,11448,11449,11451],"subgroup":[],"exremas":[],"jpremas":[]},"舞ReMASTER":{"exsongs":[],"jpsongs":[],"subgroup":[],"exremas":[17,22,23,24,58,61,62,65,66,70,71,80,81,100,107,143,145,198,200,204,226,227,247,255,256,265,266,282,295,296,299,301,310,312,365,414,496,513,532,589,731,741,756,759,763,777,792,793,799,803,806,809,812,816,818,820,825,830,833,834,838],"jpremas":[17,22,23,24,58,61,62,65,66,70,71,80,81,100,107,143,145,146,198,200,204,226,227,247,255,256,265,266,282,295,296,299,301,310,312,365,414,496,513,525,532,589,668,731,741,756,759,763,777,792,793,799,803,806,809,812,816,818,820,825,826,827,830,833,834,838],"cnremas":[17,22,23,24,58,61,62,65,66,70,71,80,81,100,107,143,145,198,200,204,226,227,247,255,256,265,266,282,295,296,299,301,310,312,365,414,496,513,532,589,741,756,759,763,777,793,799,803,806,809,812,816,818,820,825,830,833,834,838]},"祭":{"exsongs":[1235,10190,10235,10302,10316,10404,10625,11197,11218,11337,11371,11372,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11477,11478,11479,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11495,11496,11497,11498,11499,11500,11502,11503,11504,11505,11506,11507,11508,11509,11510,11511,11512,11513,11514,11516,11517,11518,11519,11520,11521,11523,11524,11525,11549,11565,11566,11568],"jpsongs":[1235,10070,10190,10235,10302,10316,10404,10625,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11492,11493,11494,11495,11496,11497,11498,11499,11500,11501,11502,11503,11504,11505,11506,11507,11508,11509,11510,11511,11512,11513,11514,11516,11517,11518,11519,11520,11521,11523,11524,11525],"subgroup":[],"exremas":[],"jpremas":[]},"祝":{"exsongs":[10070,10204,10251,10315,10574,11492,11493,11494,11526,11527,11528,11529,11530,11532,11533,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564,11569,11570,11571,11572,11573,11574,11575,11576,11577,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11596,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11619],"jpsongs":[10204,10251,10315,10574,11526,11527,11528,11529,11530,11532,11533,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564,11565,11566,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11596,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607],"subgroup":[],"exremas":[],"jpremas":[]},"双":{"exsongs":[1103,10185,10242,10366,10411,10535,11534,11535,11536,11537,11567,11578,11580,11597,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11620,11621,11622,11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11636,11637,11638,11639,11640,11641,11642,11643,11645,11646,11647,11648,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11668],"jpsongs":[1103,10185,10242,10366,10411,10535,11534,11535,11536,11537,11567,11578,11580,11597,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11634,11636,11637,11638,11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668],"subgroup":[],"exremas":[],"jpremas":[]},"宴":{"exsongs":[1301,10044,10117,10128,10225,11665,11666,11667,11669,11670,11671,11672,11673,11674,11675,11676,11677,11678,11679,11680,11681,11682,11683,11684,11685,11687,11688,11689,11690,11691,11692,11693,11694,11695,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11710,11711,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,11731,11733,11734,11735,11746],"jpsongs":[1301,10044,10117,10128,10225,11669,11670,11671,11672,11673,11674,11675,11676,11677,11678,11679,11680,11681,11682,11683,11684,11685,11686,11687,11688,11689,11690,11691,11692,11693,11694,11695,11696,11697,11698,11699,11700,11701,11702,11704,11705,11706,11707,11708,11709,11710,11711,11712,11713,11714,11715,11716,11717,11718,11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,11731,11733,11734,11735],"subgroup":[],"exremas":[],"jpremas":[]},"鏡":{"exsongs":[10375,10422,10493,10699,11736,11737,11738,11739,11740,11741,11742,11743,11744,11745,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11763,11764,11765,11766,11767,11769,11770,11771,11772,11773,11774,11775,11776,11777,11778,11779,11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,11791,11792,11793,11794,11795,11796,11797,11798,11799,11800,11802,11803,11804,11805,11822],"jpsongs":[10375,10422,10493,10699,11736,11737,11738,11739,11740,11741,11742,11743,11744,11745,11746,11747,11748,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11763,11764,11765,11766,11767,11769,11770,11771,11772,11773,11774,11775,11776,11777,11778,11779,11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,11791,11792,11793,11794,11795,11796,11797,11798,11799,11800,11802,11803,11804,11805],"subgroup":[],"exremas":[],"jpremas":[]}},"songinfo":{"8":["True Love Song",[96,122,177,302]],"9":["Color My World",[95,143,153,213]],"17":["Future",[188,210,304,286,496]],"18":["Love You",[130,198,184,198]],"22":["In Chaos",[142,221,326,380,880]],"23":["Crush On You",[126,168,223,277,555]],"24":["Sun Dance",[106,190,225,316,535]],"25":["Sweets×Sweets",[151,223,238,387]],"27":["Love or Lies",[105,190,263,353]],"30":["ネコ日和。",[177,241,281,346]],"31":["虹と太陽",[135,204,280,344]],"35":["炭★坑★節",[164,222,370,356]],"38":["NIGHT OF FIRE",[149,214,249,356]],"40":["come again",[105,118,210,264]],"42":["jelly",[108,162,256,346]],"44":["ハッピーシンセサイザ",[114,189,280,297]],"46":["ルカルカ★ナイトフィーバー",[114,230,260,381]],"47":["源平大戦絵巻テーマソング",[152,231,376,428,722]],"53":["美しく燃える森",[134,199,230,375]],"56":["ウッーウッーウマウマ(゚∀゚)",[230,334,426,542]],"58":["Endless World",[110,175,341,398,540]],"61":["Beat Of Mind",[197,286,402,351,777]],"62":["檄!帝国華撃団(改)",[125,203,205,235,473]],"63":["メランコリック",[192,197,274,323]],"64":["教えて!! 魔法のLyric",[210,253,326,424]],"65":["ZIGG-ZAGG",[222,189,291,331,358]],"66":["ワールズエンド・ダンスホール",[170,258,328,464,636]],"67":["パンダヒーロー",[146,205,278,379]],"68":["オレンジの夏",[179,211,275,371]],"69":["BaBan!! -甘い罠-",[200,288,333,457]],"70":["ジングルベル",[157,185,332,648,737]],"71":["マトリョシカ",[202,229,356,454,571]],"73":["メグメグ☆ファイアーエンドレスナイト",[165,258,288,381]],"75":["天国と地獄",[146,287,542,607]],"76":["きみのためなら死ねる",[152,220,439,517]],"77":["怪盗Rのテーマ",[165,208,344,474]],"78":["マリアをはげませ",[134,243,331,452]],"79":["SHOW TIME",[120,171,216,291]],"80":["City Escape: Act1",[155,210,331,512,589]],"81":["Rooftop Run: Act1",[146,263,384,457,623]],"82":["Reach For The Stars",[97,241,395,549]],"83":["Urban Crusher [Remix]",[130,283,446,476]],"84":["Catch The Future",[141,243,287,391]],"85":["JACKY [Remix]",[119,170,318,386,546]],"100":["Tell Your World",[138,225,335,384,473]],"101":["おちゃめ機能",[128,276,277,499]],"102":["ダンシング☆サムライ",[139,317,387,564]],"106":["BAD∞END∞NIGHT",[127,314,335,496]],"107":["ロミオとシンデレラ",[143,226,273,450,624]],"108":["Sweetiex2",[123,223,315,308]],"109":["腐れ外道とチョコレゐト",[206,334,485,598]],"110":["Quartet Theme [Reborn]",[119,265,290,502]],"111":["Sky High [Reborn]",[135,285,340,428,611]],"112":["Like the Wind [Reborn]",[206,362,539,679]],"113":["YA・DA・YO [Reborn]",[106,246,534,513]],"114":["Space Harrier Main Theme [Reborn]",[166,186,208,464]],"115":["DADDY MULK -Groove remix-",[137,310,446,785,901]],"116":["ぴぴぱぷぅ!",[123,323,388,500]],"117":["炎歌 -ほむらうた-",[132,238,409,389]],"118":["犬日和。",[150,222,337,413]],"119":["ソーラン☆節",[133,205,314,414]],"120":["デコボコ体操第二",[91,126,194,268]],"121":["スイートマジック",[161,228,389,414]],"122":["ゴーゴー幽霊船",[124,286,348,401]],"125":["千本桜",[159,277,336,637]],"128":["御旗のもとに",[81,123,194,346]],"130":["FEEL ALIVE",[129,247,330,469]],"131":["Link",[124,174,314,308,475]],"132":["Turn around",[145,194,402,445]],"133":["We Gonna Party",[142,192,375,445,608]],"134":["Night Fly",[75,122,224,286,387]],"135":["Feel My Fire",[88,207,209,309]],"136":["Streak",[119,156,301,332]],"137":["Spin me harder",[117,154,264,337]],"138":["Lionheart",[129,182,295,464]],"139":["Acceleration",[188,225,406,464]],"140":["Sprintrances",[118,212,241,353]],"141":["Nerverakes",[122,173,272,560]],"142":["Black Out",[108,183,322,339]],"143":["Fragrance",[91,142,294,655,655]],"144":["air's gravity",[130,204,247,397,492]],"145":["Starlight Disco",[76,159,230,279,389]],"146":["39",[126,218,297,512,575]],"147":["地上の戦士",[93,165,213,345]],"152":["超絶!Superlative",[115,217,363,448]],"153":["采配の刻 Power of order",[126,205,459,512]],"154":["DO RORO DERODERO ON DO RORO",[164,311,457,515]],"155":["泣き虫O'clock",[148,280,358,469,674]],"157":["Natural Flow",[114,198,189,205]],"159":["maimaiちゃんのテーマ",[129,184,243,398]],"184":["I ♥",[140,248,313,509]],"185":["*ハロー、プラネット。",[103,174,336,561]],"186":["イアイア★ナイトオブデザイア",[118,230,247,347]],"187":["ローリンガール",[127,242,289,543]],"188":["天ノ弱",[158,278,417,588]],"189":["弱虫モンブラン",[122,206,267,466]],"190":["モザイクロール",[134,267,452,650]],"191":["脳漿炸裂ガール",[130,297,448,678]],"192":["SPiCa",[166,302,344,473]],"193":["セツナトリップ",[157,235,460,673]],"194":["放課後ストライド",[183,335,557,708]],"198":["カゲロウデイズ",[147,150,405,501,876]],"199":["チルノのパーフェクトさんすう教室",[122,207,364,526]],"200":["Bad Apple!! feat nomico",[145,265,448,590,698]],"201":["魔理沙は大変なものを盗んでいきました",[189,283,331,584]],"202":["Grip & Break down !!",[174,344,421,718]],"203":["Help me, ERINNNNNN!!",[218,241,412,539]],"204":["ナイト・オブ・ナイツ",[135,324,563,675,1001]],"205":["全人類ノ非想天則",[160,255,398,586]],"206":["しゅわスパ大作戦☆",[166,264,368,553]],"207":["時空を超えて久しぶり!",[88,215,267,431]],"208":["Her Dream Is To Be A Fantastic Sorceress",[62,135,267,235]],"209":["ココロスキャンのうた",[142,247,468,624]],"212":["神室雪月花",[67,108,123,236]],"213":["KONNANじゃないっ!",[130,216,314,492]],"214":["awake",[96,145,225,391]],"216":["Mysterious Destiny",[115,230,454,372]],"217":["Riders Of The Light",[107,242,383,428]],"218":["Terminal Storm",[93,171,390,483]],"219":["記憶、記録",[123,427,473,651,752]],"220":["セガサターン起動音[H.][Remix]",[60,166,256,368]],"223":["夜咄ディセイブ",[147,276,436,635]],"224":["ウサテイ",[159,269,465,646]],"225":["sweet little sister",[180,310,433,617]],"226":["Blew Moon",[208,485,495,608,787]],"227":["Garakuta Doll Play",[246,392,740,877,1010]],"228":["Dreampainter",[124,316,353,469]],"229":["ぐるぐるWASH!コインランドリー・ディスコ",[148,202,309,383]],"230":["CYCLES",[187,299,366,496]],"231":["Heartbeats",[158,311,420,532]],"232":["Life Feels Good",[177,346,562,693]],"233":["MYTHOS",[152,269,462,735]],"234":["End of Twilight",[177,290,490,584]],"235":["火炎地獄",[104,347,442,685]],"236":["ユビキリ",[176,368,529,642]],"237":["Pixel Voyage",[118,217,294,485]],"238":["Get Happy",[162,272,547,680]],"239":["System “Z”",[142,249,507,777,753]],"240":["Beat of getting entangled",[146,374,490,586,857]],"241":["Cosmic Train",[120,217,362,417]],"242":["ナミダと流星",[139,326,429,517]],"244":["おても☆Yan",[125,283,374,529]],"246":["maiム・maiム feat.週刊少年マガジン",[138,326,562,684]],"247":["Danza zandA",[150,241,406,638,615]],"248":["Backyun! -悪い女-",[125,261,357,451,559]],"251":["Monochrome Rainbow",[103,268,386,500]],"252":["みんなのマイマイマー",[144,380,436,625,750]],"253":["円舞曲、君に",[104,132,272,394]],"254":["Live & Learn",[128,255,443,660]],"255":["Burning Hearts ~炎のANGEL~",[129,249,290,407,557]],"256":["いーあるふぁんくらぶ",[120,264,255,448,662]],"258":["Nyan Cat EX",[153,273,492,710]],"259":["ぽっぴっぽー",[116,268,362,507]],"260":["LUCIA",[142,219,410,534,698]],"261":["Death Scythe",[182,282,546,763,976]],"262":["BREAK YOU!!",[209,219,543,772]],"263":["JUMPIN' JUMPIN'",[139,295,437,591]],"264":["L'épilogue",[172,334,481,763]],"265":["Save This World νMIX",[123,196,361,348,596]],"266":["Living Universe",[74,169,192,239,495]],"267":["Ignite Infinity",[97,174,301,335]],"268":["トルコ行進曲 - オワタ\(^o^)/",[126,225,413,609]],"269":["裏表ラバーズ",[199,280,504,651]],"270":["Outlaw's Lullaby",[116,310,394,694]],"271":["Brand-new Japanesque",[100,288,284,470]],"278":["レッツゴー!陰陽師",[92,302,332,598]],"280":["炉心融解",[136,233,324,416]],"281":["ダブルラリアット",[155,197,277,467]],"282":["からくりピエロ",[114,193,335,429,567]],"283":["ネトゲ廃人シュプレヒコール",[282,406,589,888]],"284":["むかしむかしのきょうのぼく",[160,256,443,516]],"285":["magician's operation",[121,190,385,557]],"288":["六兆年と一夜物語",[160,314,399,748]],"289":["みくみくにしてあげる♪【してやんよ】",[134,287,354,471]],"290":["リリリリ★バーニングナイト",[192,328,379,464]],"291":["ハロ/ハワユ",[115,180,246,492]],"295":["緋色のDance",[135,274,417,598,484]],"296":["明星ロケット",[122,270,293,396,512]],"297":["The Great Journey",[184,255,341,520]],"298":["お嫁にしなさいっ!",[132,266,386,534]],"299":["ロストワンの号哭",[215,371,545,946,946]],"300":["Sweet Devil",[163,268,391,599]],"301":["患部で止まってすぐ溶ける~狂気の優曇華院",[144,326,529,752,904]],"302":["ケロ⑨destiny",[182,213,424,622]],"303":["Endless, Sleepless Night",[163,323,464,684]],"305":["POP STAR",[132,260,286,450]],"308":["Back 2 Back",[223,214,435,381]],"309":["神々の祈り",[112,210,218,422]],"310":["エピクロスの虹はもう見えない",[112,176,264,464,444]],"311":["シアワセうさぎ",[146,258,291,435]],"312":["ってゐ! ~えいえんてゐVer~",[151,256,458,616,853]],"313":["待チ人ハ来ズ。",[132,275,346,693]],"314":["Cosmic Magic Shooter",[138,292,428,763]],"315":["深海少女",[145,221,276,577]],"316":["M.S.S.Planet",[144,279,398,552]],"318":["東方スイーツ!~鬼畜姉妹と受難メイド~",[180,271,398,552]],"319":["幻想のサテライト",[157,368,481,850]],"320":["最速最高シャッターガール",[134,248,443,591]],"321":["バラライカ",[139,265,361,480]],"322":["林檎華憐歌",[181,275,462,719]],"323":["YATTA!",[118,223,323,402]],"324":["Jack-the-Ripper◆",[191,467,610,933]],"325":["Windy Hill -Zone 1",[177,342,501,741]],"326":["コトバ・カラフル",[84,170,275,575]],"327":["タカハせ!名人マン",[133,290,383,571]],"328":["言ノ葉カルマ",[179,278,566,792,775]],"329":["かせげ!ジャリンコヒーロー",[121,204,328,416]],"330":["キズナの物語",[119,203,271,356]],"331":["Heart Beats",[180,343,416,692]],"332":["アゲアゲアゲイン",[109,248,260,405]],"337":["鼓動",[122,237,379,436]],"339":["DRAGONLADY",[146,303,391,642]],"341":["二息歩行",[124,265,400,542]],"342":["ファンタジーゾーン OPA-OPA! -GMT remix-",[160,238,455,586]],"343":["電車で電車でGO!GO!GO!GC! -GMT remix-",[178,252,342,546]],"344":["RIDGE RACER STEPS -GMT remix-",[161,260,511,640]],"345":["リッジでリッジでGO!GO!GO! -GMT mashup-",[168,372,514,733]],"346":["オパ! オパ! RACER -GMT mashup-",[162,299,378,558]],"347":["電車で電車でOPA!OPA!OPA! -GMT mashup-",[148,366,471,572]],"348":["Axeria",[233,323,575,888]],"349":["ピーマンたべたら",[149,241,506,691]],"351":["MIRROR of MAGIC",[202,344,402,552]],"352":["究極焼肉レストラン!お燐の地獄亭!",[148,225,379,459]],"353":["shake it!",[152,258,374,497]],"359":["YU-MU",[127,282,414,576]],"360":["物凄い勢いでけーねが物凄いうた",[149,321,388,599]],"362":["BETTER CHOICE",[128,347,370,550]],"363":["Oshama Scramble!",[259,486,594,1111]],"364":["D✪N’T  ST✪P  R✪CKIN’",[223,405,543,802,669]],"365":["ガラテアの螺旋",[197,307,561,859,899]],"366":["oboro",[218,370,505,636]],"367":["Dragoon",[151,359,512,650,818]],"374":["アンハッピーリフレイン",[177,325,549,756]],"375":["One Step Ahead",[228,275,401,491]],"376":["L9",[186,381,567,835]],"378":["planet dancer",[134,336,420,549,732]],"379":["Caliburne ~Story of the Legendary sword~",[216,501,680,956]],"380":["どうしてこうなった",[254,350,596,934]],"381":["B.B.K.K.B.K.K.",[258,502,676,904]],"382":["おこちゃま戦争",[232,376,449,740]],"383":["Link",[278,337,425,613]],"384":["VERTeX",[197,321,527,888]],"385":["Ignis Danse",[144,313,643,999]],"386":["Scars of FAUNA",[152,382,444,777]],"387":["FUJIN Rumble",[191,344,509,1000]],"388":["きたさいたま2000",[199,278,637,840]],"389":["FLOWER",[212,297,573,812,961]],"390":["Got more raves?",[225,363,502,902]],"399":["不毛!",[144,344,487,710]],"400":["デッドレッドガールズ",[195,404,636,917]],"401":["赤心性:カマトト荒療治",[200,442,561,832]],"403":["悪戯",[207,294,454,714]],"404":["響縁",[181,305,442,674]],"407":["LOL -lots of laugh-",[194,333,443,589]],"408":["クローバー♣クラブ",[155,324,429,569]],"409":["妄想税",[191,296,476,527]],"410":["どういうことなの!?",[190,307,489,594]],"411":["初音ミクの消失",[257,443,633,961]],"412":["イノコリ先生",[162,358,495,807]],"413":["キャプテン・ムラサのケツアンカー",[164,236,361,573]],"414":["若い力 -SEGA HARD GIRLS MIX-",[178,340,383,695,495]],"417":["ウミユリ海底譚",[180,380,463,759]],"418":["welcome to maimai!! with マイマイマー",[207,424,478,644]],"419":["ストリーミングハート",[173,293,517,742]],"420":["Change Our MIRAI!",[174,348,618,846]],"421":["Aiolos",[298,402,727,1100]],"422":["LANCE",[212,354,589,855]],"424":["橙の幻想郷音頭",[206,206,477,564]],"425":["東方妖々夢 ~the maximum moving about~",[329,483,611,780]],"426":["蒼空に舞え、墨染の桜",[215,349,517,698]],"427":["少女幻葬戦慄曲 ~ Necro Fantasia",[268,418,476,978]],"431":["Contrapasso -paradiso-",[287,493,751,1024]],"432":["幸せになれる隠しコマンドがあるらしい",[276,450,538,850]],"434":["フラグメンツ -T.V. maimai edit-",[158,337,485,598]],"435":["願いを呼ぶ季節",[118,254,317,447]],"437":["Yet Another ”drizzly rain”",[152,314,436,597]],"438":["四次元跳躍機関",[137,247,379,636]],"439":["最終鬼畜妹・一部声",[234,499,651,841]],"446":["GEMINI -M-",[292,425,663,1076]],"447":["+♂",[260,439,536,814]],"448":["ありふれたせかいせいふく",[213,348,436,892]],"449":["すろぉもぉしょん",[176,363,473,788]],"451":["頓珍漢の宴",[252,444,641,987]],"453":["Garden Of The Dragon",[111,281,525,676]],"454":["After Burner",[235,431,488,915]],"455":["Counselor",[207,353,488,720]],"456":["Glorious Crown",[344,617,777,1150]],"457":["言ノ葉遊戯",[111,276,425,570]],"458":["りばーぶ",[125,269,288,470]],"459":["幾四音-Ixion-",[249,368,585,794]],"460":["閃鋼のブリューナク",[178,372,573,1001]],"461":["無敵We are one!!",[234,465,544,938]],"462":["7thSense",[247,404,545,859]],"463":["FEEL the BEATS",[243,495,548,931,1000]],"464":["Revive The Rave",[310,403,631,958,912]],"465":["スリップフリップ",[200,436,476,832]],"466":["Jimang Shot",[238,378,498,710]],"467":["儚きもの人間",[167,387,536,902]],"468":["ラブリー☆えんじぇる!!",[145,260,382,501]],"471":["オモイヨシノ",[182,372,534,675]],"472":["アージェントシンメトリー",[208,342,500,746,956]],"477":["厨病激発ボーイ",[251,417,533,928]],"480":["HIMITSUスパーク",[188,322,517,668]],"482":["Party 4U ”holy nite mix”",[153,266,470,695]],"483":["囲い無き世は一期の月影",[212,338,459,718]],"488":["Lividi",[218,443,629,983]],"490":["Infantoon Fantasy",[308,418,635,1039]],"492":["Jumble Rumble",[295,457,702,1081]],"493":["Imitation:Loud Lounge",[194,323,561,637]],"494":["CITRUS MONSTER",[308,432,648,1032]],"495":["Hyper Active",[292,445,660,1064]],"496":["AMAZING MIGHTYYYY!!!!",[374,576,900,1126,1139]],"497":["fake!fake!",[173,332,474,756]],"506":["セハガガガンバッちゃう!!",[244,378,607,735]],"507":["キミノヨゾラ哨戒班",[195,353,532,741]],"508":["恋愛裁判",[165,304,393,632]],"509":["Just Be Friends",[199,383,454,812]],"511":["パーフェクト生命",[313,463,606,917]],"512":["StargazeR",[191,305,415,587]],"513":["だんだん早くなる",[209,420,401,552,552]],"514":["ヘルシーエンド",[142,333,370,553]],"515":["クノイチでも恋がしたい",[266,363,626,855]],"516":["ココロ",[206,327,416,566]],"517":["東京リアルワールド",[227,369,472,641]],"518":["やめろ!聴くな!",[259,449,534,753]],"519":["ゆっくりしていってね!!!",[184,408,580,797]],"520":["木彫り鯰と右肩ゾンビ",[298,414,544,925]],"521":["ECHO",[163,426,535,768]],"523":["しんでしまうとはなさけない!",[247,342,526,754]],"524":["Hand in Hand",[169,260,411,590]],"525":["ブリキノダンス",[228,460,575,752,900]],"526":["brilliant better",[228,395,595,840]],"527":["ハート・ビート",[298,442,699,818]],"528":["Invitation",[182,390,568,834]],"529":["connecting with you",[188,404,632,850]],"530":["高気圧ねこロック",[231,424,598,906]],"531":["Prophesy One",[307,482,686,1068]],"532":["洗脳",[200,288,461,644,777]],"533":["Barbed Eye",[233,331,517,807]],"534":["Nitrous Fury",[201,346,553,752]],"535":["色は匂へど散りぬるを",[170,284,321,573]],"536":["月に叢雲華に風",[119,240,350,465]],"537":["No Routine",[236,339,468,853]],"538":["ひれ伏せ愚民どもっ!",[219,358,542,780]],"539":["エテルニタス・ルドロジー",[240,390,534,828]],"540":["泡沫、哀のまほろば",[140,211,270,392]],"541":["華鳥風月",[126,233,320,627]],"542":["METATRON",[224,458,593,925]],"543":["終わりなき物語",[201,325,403,584]],"546":["フォルテシモBELL",[170,314,440,595]],"547":["私の中の幻想的世界観及びその顕現を想起させたある現実での出来事に関する一考察",[268,406,491,844]],"548":["DETARAME ROCK&ROLL THEORY",[217,428,619,813]],"552":["ゴーストルール",[223,384,531,689]],"553":["チュルリラ・チュルリラ・ダッダッダ!",[281,475,580,840]],"555":["GOODMEN",[274,438,572,875]],"556":["夜明けまであと3秒",[279,513,555,962]],"557":["Last Brave ~ Go to zero",[247,411,585,841]],"558":["STAIRWAY TO GENERATION",[218,317,457,684]],"559":["空威張りビヘイビア",[275,379,573,887]],"560":["回レ!雪月花",[169,271,386,665]],"561":["いっしそう電☆舞舞神拳!",[326,484,648,868]],"564":["ENJOY POLIS",[212,353,531,694]],"565":["生きてるおばけは生きている",[190,338,507,829]],"566":["天火明命",[226,430,714,963]],"567":["HERA",[312,527,722,1031]],"568":["分からない",[177,349,514,953]],"571":["Our Wrenally",[277,488,660,999]],"572":["Scream out! -maimai SONIC WASHER Edit-",[275,535,777,1089]],"573":["四月の雨",[148,262,385,634]],"574":["Selector",[221,334,478,718]],"578":["ドキドキDREAM!!!",[283,458,658,879]],"579":["ポップミュージックは僕のもの",[152,383,364,561]],"580":["吉原ラメント",[210,398,579,849]],"581":["ねぇ、壊れタ人形ハ何処へ棄テらレるノ?",[273,470,748,1043]],"582":["幽闇に目醒めしは",[171,247,313,506]],"583":["Starlight Vision",[134,298,455,608]],"584":["Club Ibuki in Break All",[188,277,435,673]],"585":["Phantasm Brigade",[213,398,509,891]],"586":["永遠のメロディ",[265,388,481,642]],"587":["白ゆき",[171,323,448,719]],"589":["Panopticon",[217,401,514,900,909]],"592":["Sakura Fubuki",[174,281,333,678]],"593":["conflict",[192,416,706,948]],"598":["すーぱーぬこになりたい",[265,392,516,897]],"599":["踊れオーケストラ",[218,382,463,657]],"601":["きらっせ☆ウッド村ファーム",[286,458,569,695]],"602":["taboo tears you up",[273,367,545,937]],"603":["その群青が愛しかったようだった",[225,432,606,717]],"606":["The wheel to the right",[392,562,872,987]],"610":["リンカーネイション",[195,338,569,861]],"611":["宿題が終わらないっ!",[181,281,416,599]],"612":["GO BACK 2 YOUR RAVE",[253,355,591,999]],"613":["天国と地獄 -言ノ葉リンネ-",[170,307,443,748]],"614":["夢花火",[302,440,634,943]],"617":["オトヒメモリー☆ウタゲーション",[226,345,528,703]],"618":["ラブチーノ",[162,255,383,467]],"620":["東京レトロ",[145,228,280,470]],"621":["ARROW",[159,300,518,657]],"622":["バッド・ダンス・ホール",[189,304,512,797]],"624":["KISS CANDY FLAVOR",[203,323,521,730]],"625":["Maxi",[228,394,567,914]],"626":["相思創愛",[223,404,507,829]],"627":["心象蜃気楼",[251,398,536,786]],"628":["光線チューニング",[314,439,617,933]],"629":["Limit Break",[236,365,463,755,825]],"630":["曖昧mind",[214,320,469,709]],"631":["KING is BACK!!",[254,386,524,1055]],"632":["Ultranova",[183,312,524,895]],"634":["GET!! 夢&DREAM",[142,250,371,407]],"636":["日本の米は世界一",[173,286,463,706]],"637":["ないせんのうた",[247,410,550,825]],"639":["Starlight Dance Floor",[134,306,324,530]],"640":["妖精村の月誕祭 ~Lunate Elf",[137,209,320,606]],"641":["Calamity Fortune",[323,407,608,1142]],"642":["Justified",[211,440,610,872]],"643":["Excalibur ~Revived resolution~",[237,426,647,974]],"647":["エイリアンエイリアン",[215,328,480,756]],"648":["My Dearest Song",[193,331,475,802]],"649":["猛進ソリストライフ!",[252,419,634,856]],"650":["Let's Go Away",[157,311,480,625]],"654":["真・ハンサム体操でズンドコホイ",[146,225,318,500]],"655":["フラジール",[188,283,398,664]],"657":["オーディエンスを沸かす程度の能力 feat.タイツォン",[140,283,405,708]],"658":["人里に下ったアタイがいつの間にか社畜になっていた件",[271,441,727,913]],"659":["ギリギリ最強あいまいみー!",[188,313,414,755]],"663":["ちがう!!!",[255,371,515,790]],"664":["Moon of Noon",[297,423,690,924]],"665":["チルノのパーフェクトさんすう教室 ⑨周年バージョン",[238,330,530,771]],"666":["デスパレイト",[189,281,478,685]],"668":["ようこそジャパリパークへ",[170,282,391,512,505]],"670":["ドーナツホール",[212,352,552,934]],"672":["MilK",[191,334,551,636]],"673":["咲キ誇レ常世ノ華",[204,370,537,804]],"674":["Magical Flavor",[159,269,426,593]],"675":["白い雪のプリンセスは",[255,359,605,721]],"676":["好き!雪!本気マジック",[205,395,524,686]],"677":["スターナイトスノウ",[224,381,475,505]],"680":["Candy Tall Woman",[203,322,485,741]],"681":["Signature",[184,356,503,698]],"682":["人生リセットボタン",[252,397,614,967]],"683":["しねばいいのに",[134,234,292,479]],"684":["もうみんなしねばいいのに",[220,376,646,906]],"687":["共感覚おばけ",[212,274,443,682]],"688":["麒麟",[271,389,582,837]],"689":["Credits",[181,282,346,733]],"690":["ダンスロボットダンス",[355,501,659,826]],"691":["アルカリレットウセイ",[232,322,458,583]],"692":["ドクハク",[230,289,412,641]],"693":["キレキャリオン",[255,267,508,715]],"694":["猫祭り",[222,425,522,785]],"695":["TRUST",[223,321,485,729]],"696":["Still",[236,347,523,793]],"698":["fantastic dreamer",[156,229,340,456]],"699":["天狗の落とし文 feat. ytr",[222,345,430,686]],"700":["疾走あんさんぶる",[262,424,613,890]],"701":["Doll Judgment",[220,440,628,896]],"702":["WARNING×WARNING×WARNING",[241,416,569,744]],"704":["SPILL OVER COLORS",[172,392,483,832,725]],"705":["Mare Maris",[207,389,555,856]],"706":["シャルル",[242,326,396,589]],"707":["フリィダム ロリィタ",[223,369,423,645]],"708":["バレリーコ",[225,335,475,674]],"709":["アウターサイエンス",[226,393,671,721]],"710":["REVIVER オルタンシア・サーガ -蒼の騎士団- オリジナルVer.",[165,286,467,632]],"711":["拝啓ドッペルゲンガー",[256,505,647,1070]],"712":["ミラクル・ショッピング",[213,341,450,641]],"713":["Kinda Way",[188,375,466,725]],"717":["ラブって♡ジュエリー♪えんじぇる☆ブレイク!!",[158,285,404,523]],"719":["エンドマークに希望と涙を添えて",[244,523,702,1105]],"720":["ナンセンス文学",[220,336,528,828]],"721":["Bang Babang Bang!!!",[208,343,590,756]],"722":["Tic Tac DREAMIN’",[169,284,340,532]],"723":["SPICY SWINGY STYLE",[180,338,508,660]],"725":["砂の惑星 feat. HATSUNE MIKU",[134,220,481,719]],"726":["アンノウン・マザーグース",[167,326,483,732]],"731":["妄想感傷代償連盟",[177,301,426,516,725]],"732":["LOVE EAST",[223,344,458,673]],"733":["Fist Bump",[245,373,487,752]],"734":["ENERGY SYNERGY MATRIX",[229,403,664,872]],"735":["Session High⤴",[182,254,377,536]],"736":["World Vanquisher",[300,446,722,1072]],"737":["FestivaLight",[162,272,401,592]],"738":["Brain Power",[228,416,457,663]],"739":["進め!イッスン軍団 -Rebellion of the Dwarfs-",[212,286,417,596]],"740":["ULTRA B+K",[252,370,549,845]],"741":["インビジブル",[302,439,583,730,939]],"742":["彗星ハネムーン",[269,413,507,742]],"745":["keep hopping",[242,369,560,888]],"746":["larva",[307,523,767,1173]],"747":["えれくとりっく・えんじぇぅ",[220,325,424,594]],"748":["ミラクルペイント",[231,348,531,671]],"750":["初音ミクの激唱",[313,409,563,834]],"751":["ガチャガチャきゅ~と・ふぃぎゅ@メイト",[268,388,518,690]],"752":["true my heart -Lovable mix-",[167,292,406,476]],"753":["Rodeo Machine",[123,306,461,428]],"756":["CYBER Sparks",[181,325,561,626,945]],"757":["Xevel",[265,429,721,1169]],"758":["INFINITE WORLD",[199,353,508,661]],"759":["サドマミホリック",[308,433,580,761,977]],"760":["Ragnarok",[278,372,530,826]],"761":["このふざけた素晴らしき世界は、僕の為にある",[199,348,476,786]],"762":["このピアノでお前を8759632145回ぶん殴る",[204,390,639,967]],"763":["はやくそれになりたい!",[316,453,576,764,758]],"764":["フィクサー",[205,352,431,772]],"765":["みんなの",[216,339,425,633]],"766":["アマノジャクリバース feat. ytr",[219,318,443,777]],"767":["進捗どうですか?",[249,447,546,918]],"768":["Help me, あーりん!",[259,432,534,699]],"769":["なるとなぎのパーフェクトロックンロール教室",[247,352,530,787]],"770":["あねぺったん",[240,388,537,721]],"771":["We Gonna Journey",[281,403,622,915]],"772":["FREEDOM DiVE (tpz Overcute Remix)",[354,471,701,1085]],"773":["SILENT BLUE",[216,322,692,1086]],"775":["ジンギスカン",[178,356,502,752]],"776":["にじよめちゃん体操第一億",[148,188,278,469]],"777":["花と、雪と、ドラムンベース。",[206,369,440,876,398]],"778":["Conquista Ciela",[200,323,347,614]],"779":["怒槌",[400,487,797,1188]],"781":["Seyana. ~何でも言うことを聞いてくれるアカネチャン~",[170,292,441,668]],"782":["おねがいダーリン",[255,391,687,689]],"786":["My First Phone",[232,292,458,532]],"789":["ネ!コ!",[200,379,407,620]],"791":["ロールプレイングゲーム",[253,372,591,754]],"792":["ヒバナ",[200,405,474,671,740]],"793":["ロキ",[217,367,496,730,839]],"794":["Money Money",[171,350,467,745]],"796":["極圏",[252,451,581,979]],"797":["Scarlet Lance",[285,397,701,1036]],"798":["セイクリッド ルイン",[317,486,594,971]],"799":["QZKago Requiem",[306,593,731,1105,1181]],"800":["EVERGREEN",[172,262,414,652]],"801":["金の聖夜霜雪に朽ちて",[283,446,600,780]],"802":["不思議の国のクリスマス",[193,283,379,546]],"803":["Schwarzschild",[260,443,549,898,875]],"804":["Magical Sound Shower",[224,320,423,662]],"805":["片想いサンバ",[296,380,535,816]],"806":["ナイトメア☆パーティーナイト",[246,419,560,693,695]],"807":["フキゲンワルツ",[289,318,462,776]],"809":["結ンデ開イテ羅刹ト骸",[204,341,455,587,697]],"810":["サウンド",[222,298,392,642]],"811":["右肩の蝶",[242,324,449,757]],"812":["Alea jacta est!",[341,469,741,1010,1137]],"815":["L4TS:2018 (feat. あひる & KTA)",[153,261,420,574]],"816":["クレイジークレイジーダンサーズ",[215,396,510,606,794]],"817":["【東方ニコカラ】秘神マターラ feat.魂音泉【IOSYS】",[231,429,569,851]],"818":["隠然",[234,416,585,729,734]],"819":["White Traveling Girl",[203,319,560,805]],"820":["FFT",[260,383,407,849,947]],"821":["-OutsideR:RequieM-",[211,328,520,817]],"822":["イロトリドリのメロディ",[166,250,406,575]],"823":["奏者はただ背中と提琴で語るのみ",[295,434,616,929]],"825":["雷切-RAIKIRI-",[301,407,670,1190,1167]],"826":["キミとボクのミライ",[146,294,378,517,603]],"827":["Lost Princess",[109,196,314,372,368]],"829":["敗北の少年",[251,447,636,968]],"830":["立ち入り禁止",[193,395,558,768,953]],"832":["命ばっかり",[167,313,364,631]],"833":["the EmpErroR",[213,533,812,1057,1057]],"834":["PANDORA PARADOXXX",[307,568,855,1309,1342]],"835":["Believe the Rainbow",[152,342,370,445]],"836":["Good Bye, Mr. Jack",[202,404,637,933]],"837":["Altale",[145,256,402,487]],"838":["最終鬼畜妹フランドール・S",[165,381,561,666,853]],"839":["ネクロファンタジア~Arr.Demetori",[192,386,589,971]],"840":["Imperishable Night 2006 (2016 Refine)",[226,448,662,1043]],"841":["終点",[176,274,531,710]],"842":["WORLD'S END UMBRELLA",[148,287,445,519]],"844":["End Time",[198,347,579,949]],"847":["カラフル×メロディ",[184,306,427,562]],"848":["魔法少女になるしかねぇ",[234,430,537,956]],"849":["Kattobi KEIKYU Rider",[304,537,828,844]],"850":["B.M.S.",[187,358,522,853]],"852":["TiamaT:F minor",[356,503,800,1122]],"1020":["Technicians High",[125,376,558,784]],"1051":["Destr0yer",[163,374,537,897]],"1081":["サンバランド",[160,275,488,637]],"1085":["Halcyon",[242,446,720,1080]],"1103":["渦状銀河のシンフォニエッタ",[227,379,624,931]],"1235":["VIIIbit Explorer",[227,383,656,1111]],"1301":["華の集落、秋のお届け",[204,314,611,836]],"10044":["ハッピーシンセサイザ",[119,173,250,508]],"10070":["ジングルベル",[175,284,427,929]],"10117":["炎歌 -ほむらうた-",[132,195,339,527]],"10125":["千本桜",[162,267,417,666]],"10128":["御旗のもとに",[101,235,310,504]],"10145":["Starlight Disco",[107,150,314,439]],"10146":["39",[93,198,390,602]],"10185":["*ハロー、プラネット。",[113,260,349,538]],"10188":["天ノ弱",[123,324,517,675]],"10190":["モザイクロール",[129,365,462,726]],"10191":["脳漿炸裂ガール",[137,256,428,665]],"10193":["セツナトリップ",[114,286,510,776]],"10202":["Grip & Break down !!",[224,353,556,923]],"10204":["ナイト・オブ・ナイツ",[174,331,548,708]],"10225":["sweet little sister",[204,309,474,777]],"10235":["火炎地獄",[148,252,543,824]],"10242":["ナミダと流星",[197,285,495,678]],"10251":["Monochrome Rainbow",[145,284,421,658]],"10256":["いーあるふぁんくらぶ",[127,267,323,533]],"10288":["六兆年と一夜物語",[150,288,354,704]],"10301":["患部で止まってすぐ溶ける~狂気の優曇華院",[103,309,560,695]],"10302":["ケロ⑨destiny",[178,255,430,691]],"10315":["深海少女",[125,268,344,714]],"10316":["M.S.S.Planet",[126,308,429,700]],"10319":["幻想のサテライト",[156,270,426,728]],"10363":["Oshama Scramble!",[169,408,555,1000]],"10366":["oboro",[160,314,408,664]],"10375":["One Step Ahead",[196,285,485,654]],"10404":["響縁",[118,302,519,707]],"10411":["初音ミクの消失",[257,375,640,1039]],"10420":["Change Our MIRAI!",[194,322,539,827]],"10422":["LANCE",[194,345,502,860]],"10493":["Imitation:Loud Lounge",[144,270,505,725]],"10535":["色は匂へど散りぬるを",[154,228,311,426]],"10536":["月に叢雲華に風",[72,191,280,433]],"10552":["ゴーストルール",[130,311,508,673]],"10560":["回レ!雪月花",[116,230,364,650]],"10572":["Scream out! -maimai SONIC WASHER Edit-",[164,420,546,991]],"10574":["Selector",[187,281,431,826]],"10593":["conflict",[118,374,571,900]],"10602":["taboo tears you up",[142,373,501,937]],"10625":["Maxi",[202,366,544,907]],"10641":["Calamity Fortune",[186,413,558,935]],"10665":["チルノのパーフェクトさんすう教室 ⑨周年バージョン",[146,289,479,740]],"10668":["ようこそジャパリパークへ",[129,284,360,507]],"10690":["ダンスロボットダンス",[185,394,614,847]],"10699":["天狗の落とし文 feat. ytr",[186,341,492,751]],"10702":["WARNING×WARNING×WARNING",[153,370,569,745]],"10706":["シャルル",[162,310,385,524]],"10734":["ENERGY SYNERGY MATRIX",[164,357,611,860]],"11001":["BLACK ROSE",[142,297,445,709]],"11002":["Secret Sleuth",[111,263,568,726,897]],"11003":["でらっくmaimai♪てんてこまい!",[171,356,588,772]],"11004":["MAXRAGE",[186,363,673,938,965]],"11005":["バーチャルダム ネーション",[175,351,653,909,984]],"11006":["P-qoq",[119,315,488,895]],"11007":["超常マイマイン",[151,331,648,986,1069]],"11008":["Crazy Circle",[149,379,463,910]],"11009":["STEREOSCAPE",[132,280,409,602,733]],"11010":["STARTLINER",[137,266,370,521,567]],"11014":["♡マイマイマイラブ♡",[183,301,433,685]],"11015":["一か罰",[193,340,688,728,928]],"11016":["キリキリ舞Mine",[168,375,566,879]],"11017":["福宿音屋魂音泉",[169,352,563,871]],"11018":["Now or Never",[165,335,624,1007,1004]],"11019":["Scarlet Wings",[185,362,508,747]],"11020":["Technicians High",[195,308,553,870]],"11021":["魔ジョ狩リ",[184,306,550,665]],"11022":["TwisteD! XD",[162,338,616,871]],"11023":["Blows Up Everything",[204,446,729,1008,1012]],"11024":["Agitation!",[163,283,497,665]],"11025":["管弦楽組曲 第3番 ニ長調「第2曲(G線上のアリア)」BWV.1068-2",[168,359,572,937]],"11026":["TEmPTaTiON",[258,368,665,1115]],"11027":["アポカリプスに反逆の焔を焚べろ",[310,386,756,1086]],"11028":["玩具狂奏曲 -終焉-",[205,329,614,947]],"11029":["Titania",[211,325,710,1031]],"11030":["BOKUTO",[175,342,637,1010]],"11031":["立川浄穢捕物帳",[196,365,628,971]],"11032":["CHOCOLATE BOMB!!!!",[174,363,523,787]],"11034":["METEOR",[125,288,415,544]],"11037":["HOT LIMIT",[112,217,323,563]],"11043":["メルト",[137,302,497,597]],"11044":["メルティランドナイトメア",[111,266,417,573]],"11046":["アディショナルメモリー",[95,257,450,585]],"11048":["ナイト・オブ・ナイツ (Cranky Remix)",[164,324,548,811]],"11049":["Bad Apple!! feat.nomico (REDALiCE Remix)",[155,306,495,714]],"11050":["Strobe♡Girl",[90,284,381,597]],"11051":["Destr0yer",[116,271,440,602]],"11052":["グリーンライツ・セレナーデ",[145,369,613,861]],"11058":["デンパラダイム",[153,316,704,812]],"11059":["骸骨楽団とリリア",[152,294,587,724]],"11060":["星屑ユートピア",[170,331,661,790]],"11061":["アマツキツネ",[125,289,489,661]],"11064":["Little \"Sister\" Bitch",[196,358,573,866]],"11065":["Yakumo >>JOINT STRUGGLE (2019 Update)",[164,355,514,1029]],"11066":["げきオコスティックファイナリアリティぷんぷんマスタースパーク",[146,314,388,669]],"11067":["CocktaiL",[123,248,322,673]],"11069":["太陽系デスコ",[184,330,500,713]],"11070":["だからパンを焼いたんだ",[136,310,429,801]],"11073":["アカリがやってきたぞっ",[175,315,560,632]],"11075":["プナイプナイせんそう",[223,344,584,803]],"11077":["デビル☆アイドル",[92,253,315,439]],"11078":["quiet room",[148,183,257,521]],"11080":["Jump!! Jump!! Jump!!",[156,338,480,574]],"11081":["サンバランド",[112,294,502,700]],"11083":["サヨナラチェーンソー",[152,336,534,774]],"11084":["イカサマライフゲイム",[181,372,645,854]],"11085":["Halcyon",[153,407,634,1007]],"11086":["だれかの心臓になれたなら",[161,289,492,729]],"11087":["幾望の月",[169,343,552,755]],"11088":["39みゅーじっく!",[118,242,433,574]],"11089":["STEEL TRANSONIC",[222,411,704,1003]],"11090":["Flashkick",[179,306,579,798]],"11091":["Stardust Memories",[149,245,450,692]],"11092":["My My My",[180,297,507,816]],"11093":["UniTas",[238,431,762,1173]],"11094":["ここからはじまるプロローグ。",[131,264,477,642]],"11095":["絡めトリック利己ライザー",[198,353,529,771]],"11096":["モ°ルモ°ル",[240,390,708,915]],"11097":["ブレインジャックシンドローム",[184,340,637,1018]],"11098":["共鳴",[146,276,489,669]],"11099":["Ututu",[151,311,419,633]],"11100":["シエルブルーマルシェ",[123,275,394,565,423]],"11101":["GRÄNDIR",[157,376,571,813]],"11102":["封焔の135秒",[196,427,609,1092]],"11103":["渦状銀河のシンフォニエッタ",[151,385,558,1214]],"11104":["ヤミツキ",[199,277,502,724]],"11105":["ワードワードワード",[195,258,522,890]],"11106":["Valsqotch",[281,470,853,1194]],"11107":["最強 the サマータイム!!!!!",[206,369,660,766]],"11108":["UTAKATA",[165,286,490,680]],"11109":["タテマエと本心の大乱闘",[213,332,543,775]],"11110":["はちみつアドベンチャー",[181,331,513,705]],"11111":["popcorn",[130,240,483,652]],"11113":["ハム太郎とっとこうた",[86,178,238,451,597]],"11115":["だから僕は音楽を辞めた",[112,216,335,643]],"11119":["I'm with you",[84,193,306,375]],"11121":["ビターチョコデコレーション",[170,360,499,829]],"11122":["アンドロイドガール",[163,359,570,785]],"11123":["スターリースカイ☆パレード",[194,384,581,756]],"11124":["スロウダウナー",[162,312,496,707]],"11125":["クレイジー・ビート",[152,265,433,652]],"11126":["バイオレンストリガー",[193,316,512,832]],"11127":["グラーヴェ",[129,229,452,678]],"11128":["KILLER B",[128,226,463,651]],"11129":["すーぱーぬこになれんかった",[213,375,598,895]],"11130":["アスヘノBRAVE",[155,288,507,774]],"11131":["深海シティアンダーグラウンド",[187,389,481,724]],"11132":["表裏一体",[188,323,530,896]],"11133":["Catch the Wave",[166,327,518,756]],"11134":["ソリッド",[158,292,513,748]],"11135":["全力ハッピーライフ",[200,356,635,812]],"11136":["Oath Act",[124,287,466,641]],"11137":["Witches night",[165,261,444,699]],"11138":["Drive Your Fire",[164,298,520,789]],"11139":["wheel",[130,266,443,534]],"11140":["Black Lair",[176,310,552,834]],"11141":["energy trixxx",[201,290,584,918]],"11142":["NULCTRL",[147,245,523,897]],"11143":["アトロポスと最果の探究者",[216,279,575,813]],"11145":["Entrance",[150,267,466,683]],"11146":["Lunar Mare",[202,352,550,896]],"11147":["Saika",[136,234,343,467]],"11148":["CHAOS",[240,313,590,823]],"11149":["Maboroshi",[229,326,512,944]],"11150":["ウマイネームイズうまみちゃん",[89,241,361,544]],"11152":["ぼくたちいつでも しゅわっしゅわ!",[174,300,553,766,764]],"11153":["Boys O’Clock",[172,303,512,811]],"11154":["居並ぶ穀物と溜息まじりの運送屋",[165,394,590,950]],"11155":["ARAIS",[206,436,636,1000]],"11156":["マイオドレ!舞舞タイム",[184,370,591,748]],"11157":["Aetheric Energy",[169,343,505,731]],"11158":["Komplexe",[137,233,448,812]],"11159":["Beautiful Future",[181,385,474,833]],"11160":["Mutation",[221,375,647,991]],"11161":["オリフィス",[141,333,531,791]],"11162":["ユメヒバナ",[189,267,449,731]],"11163":["REAL VOICE",[152,337,543,810]],"11164":["パラボラ",[194,397,621,963]],"11165":["Regulus",[180,425,628,999]],"11166":["ワンダーシャッフェンの法則",[161,326,425,765]],"11167":["BIRTH",[155,352,601,888]],"11168":["シアトリカル・ケース",[224,413,615,961]],"11169":["ステップアンドライム",[168,321,501,843]],"11170":["届かない花束",[141,283,419,659]],"11171":["YURUSHITE",[198,520,773,1054]],"11172":["ポケットからぬりつぶせ!",[146,304,593,770]],"11173":["トリドリ⇒モリモリ!Lovely fruits☆",[204,373,615,884]],"11174":["Desperado Waltz",[168,368,697,1102]],"11175":["宛城、炎上!!",[261,437,725,1267]],"11176":["Climax",[227,478,807,1139]],"11177":["レーイレーイ",[182,381,627,878,999]],"11183":["お願いマッスル",[116,187,362,510]],"11184":["Virtual to LIVE",[129,248,359,636,667]],"11185":["命に嫌われている",[149,312,584,889]],"11186":["アンクローズ・ヒューマン",[179,336,633,897]],"11187":["乙女解剖",[135,259,388,653]],"11188":["絶え間なく藍色",[110,240,371,646]],"11189":["ガランド",[128,252,377,625]],"11190":["とりあえずアナタがいなくなるまえに",[151,237,339,546]],"11191":["明星ギャラクティカ",[203,259,498,720]],"11192":["絶対にチョコミントを食べるアオイチャン",[129,234,481,712]],"11193":["デリヘル呼んだら君が来た",[158,352,641,996]],"11194":["ベノム",[159,336,561,833]],"11195":["マネマネサイコトロピック",[156,346,574,843]],"11197":["劣等上等",[101,189,369,548]],"11198":["アスノヨゾラ哨戒班",[142,307,496,729]],"11199":["悪戯センセーション",[179,279,409,634]],"11200":["Paranoia",[211,329,481,768]],"11201":["絡繰りドール",[143,270,421,698]],"11202":["物凄いヴァイブスで魔理沙が物凄いラップ",[157,259,468,777]],"11204":["Sweet Requiem",[135,318,492,908]],"11205":["Dive into The Sky ~initialized~",[147,284,529,770]],"11206":["BATTLE NO.1",[287,426,746,1200]],"11207":["Ether Strike",[154,359,558,852]],"11208":["Cyaegha",[199,391,588,946]],"11209":["Grievous Lady",[225,442,712,988]],"11210":["c.s.q.n.",[179,285,507,852]],"11211":["カラッポ・ノンフィクション",[146,240,402,827]],"11212":["emomomo",[171,270,497,870]],"11213":["Arty Party",[157,356,522,814]],"11214":["Jörqer",[170,313,609,803]],"11215":["Sqlupp (Camellia's \"Sqleipd*Hiytex\" Remix)",[234,429,798,1201]],"11216":["felys -final remix-",[190,345,598,1111]],"11218":["自傷無色",[91,177,210,432]],"11219":["Prismatic",[149,395,472,750]],"11221":["≠彡\"/了→",[262,515,720,1111]],"11222":["BREaK! BREaK! BREaK!",[207,414,732,1106]],"11223":["Heavenly Blast",[214,535,761,1169]],"11224":["Paradisoda",[160,325,431,771]],"11225":["VANTABLACK RAVER",[148,304,507,884]],"11226":["時計の国のジェミニ",[170,302,497,690]],"11227":["Xenovcipher",[196,401,772,982]],"11228":["星めぐり、果ての君へ。",[179,345,520,720,842]],"11229":["スローアライズ",[136,255,428,556]],"11230":["チエルカ/エソテリカ",[222,445,741,1118]],"11231":["生命不詳",[178,381,596,830]],"11232":["Never Give Up!",[155,327,495,747,759]],"11233":["Starry Colors",[168,338,521,930]],"11234":["ほしぞらスペクタクル",[210,426,762,1179]],"11235":["VIIIbit Explorer",[255,424,825,999]],"11236":["Last Samurai",[172,271,247,449]],"11237":["蒼穹舞楽",[201,389,688,878]],"11238":["AMABIE",[221,411,612,932]],"11239":["オーケー? オーライ!",[172,338,498,752]],"11240":["サヨナラフリーウェイ",[133,288,351,536]],"11241":["単一指向性オーバーブルーム",[171,358,574,924,1080]],"11242":["みなえをチェック!",[175,421,515,938]],"11243":["ハジマリノピアノ",[204,354,597,982]],"11246":["BOUNCE & DANCE",[189,370,643,999]],"11247":["Kiss Me Kiss",[125,328,484,719]],"11248":["MEGATON BLAST",[266,814,956,1238]],"11249":["Splash Dance!!",[182,347,612,992]],"11253":["おジャ魔女カーニバル!!",[162,282,451,760]],"11255":["タケモトピアノCMソング",[52,108,170,310]],"11258":["電話革命ナイセン",[140,292,370,551]],"11260":["ネガティブ進化論",[139,242,355,691]],"11261":["雨とペトラ",[172,337,451,721]],"11262":["永遠にゲームで対戦したいキリタン",[124,239,442,729]],"11263":["KING",[133,309,522,769]],"11264":["幽霊東京",[88,281,437,672]],"11265":["Alice in 冷凍庫",[133,287,447,643]],"11266":["キラメキ居残り大戦争",[173,366,568,798]],"11267":["ディカディズム",[139,286,534,844]],"11268":["猫猫的宇宙論",[183,318,493,738]],"11269":["ラットが死んだnew words",[129,275,375,783]],"11270":["阿吽のビーツ",[104,236,474,683]],"11271":["再会",[99,267,418,643]],"11272":["約束",[112,231,292,548]],"11273":["トラフィック・ジャム",[127,277,479,896]],"11274":["アルティメットセンパイ",[134,324,424,743]],"11275":["ロストワードクロニカル",[182,385,531,921]],"11276":["今、誰が為のかがり火へ",[167,313,404,674]],"11277":["Melody!",[151,351,524,721]],"11278":["下克上々",[133,328,472,827]],"11279":["ハウリング",[151,299,424,684]],"11280":["トランスダンスアナーキー",[215,402,653,932]],"11281":["Re:End of a Dream",[227,422,629,1095]],"11282":["もぺもぺ",[108,248,350,676]],"11283":["Sound Chimera",[183,415,735,981]],"11284":["CO5M1C R4ILR0AD",[172,364,593,990]],"11285":["MAKE IT FUNKY NOW",[151,284,484,787]],"11286":["Rush-More",[118,313,552,857]],"11287":["Strange Bar",[131,379,555,882]],"11288":["Big Daddy",[169,462,721,1000]],"11289":["ベースラインやってる?笑",[126,317,524,692]],"11290":["ALiVE",[124,307,461,748]],"11291":["ヒミツCULT",[171,434,683,913]],"11292":["MEGATON KICK",[181,426,682,938]],"11293":["LOSE CONTROL",[125,274,494,615]],"11294":["宿星審判",[174,391,687,1074]],"11295":["脳天直撃",[281,469,790,1296]],"11296":["とびだせ!TO THE COSMIC!!",[196,457,730,947]],"11297":["噛み係",[146,292,516,764]],"11298":["トリアージ",[122,290,459,637]],"11299":["NAGAREBOSHI☆ROCKET",[200,363,553,821]],"11300":["U&iVERSE -銀河鸞翔-",[212,423,716,1015]],"11301":["華の集落、秋のお届け",[155,332,567,890]],"11302":["BLACK SWAN",[227,354,639,966]],"11303":["星詠みとデスペラード",[189,254,506,832]],"11304":["Round Round Spinning Around",[155,405,531,821]],"11305":["Alcyone",[156,379,635,885]],"11306":["Raven Emperor",[185,414,615,888]],"11307":["Yorugao",[168,369,608,954]],"11308":["ヨミビトシラズ",[210,325,652,921]],"11309":["前衛的Landscape",[149,300,455,755]],"11310":["Trick tear",[211,422,609,840]],"11311":["躯樹の墓守",[252,471,721,1038]],"11312":["ぱくぱく☆がーる",[216,331,624,998]],"11313":["No Limit RED Force",[138,302,482,690]],"11314":["LiftOff",[146,388,619,767]],"11315":["Falsum Atlantis.",[191,379,672,977]],"11316":["We Are Us",[138,247,413,833]],"11317":["Limits",[184,314,476,786]],"11318":["スピカの天秤",[208,378,747,1011]],"11319":["ハードコア・シンドローム",[232,375,729,1096]],"11325":["テレキャスタービーボーイ",[101,286,404,562,646]],"11327":["僕は空気が嫁ない",[89,291,433,719]],"11328":["デッドマンズバラッド",[212,467,818,1208]],"11329":["イヤホンロマンス",[127,268,446,759]],"11330":["竹",[171,429,599,971]],"11331":["スーパーシンメトリー",[267,446,673,1026]],"11333":["Southern Cross",[177,361,587,935,1194]],"11334":["Upshift",[141,344,586,864]],"11335":["MOBILYS",[156,286,430,710]],"11336":["ドラゴンエネルギー",[108,297,493,728]],"11337":["セカイはまだ始まってすらいない",[100,256,378,536]],"11340":["Sweets Time",[139,359,360,658]],"11341":["紅星ミゼラブル~廃憶編",[139,307,522,837]],"11342":["幻想に咲いた花",[131,325,482,737,819]],"11343":["マツヨイナイトバグ",[159,375,623,982,1124]],"11344":["ポッピンキャンディ☆フィーバー!",[148,395,599,872]],"11345":["どぅーまいべすと!",[92,232,477,671]],"11346":["春を告げる",[98,244,397,675]],"11349":["失敗作少女",[128,295,450,795]],"11350":["悪魔の踊り方",[113,246,481,676]],"11351":["ノイローゼ",[136,401,655,890]],"11353":["グッバイ宣言",[123,328,519,683]],"11354":["春嵐",[116,257,433,668]],"11355":["ラグトレイン",[137,307,536,772]],"11356":["なだめスかし Negotiation(TVsize)",[95,189,312,522]],"11358":["インドア系ならトラックメイカー",[115,284,439,703]],"11359":["アカツキアライヴァル",[126,280,522,786]],"11360":["リモコン",[138,342,553,828]],"11361":["on the rocks",[94,259,420,672]],"11362":["響け!CHIREI MY WAY!",[83,258,416,552]],"11363":["神々が恋した幻想郷",[123,356,493,941]],"11364":["Lia=Fail",[210,458,697,1016]],"11365":["アンビバレンス",[202,372,603,884]],"11369":["廻廻奇譚",[175,374,588,721,839]],"11371":["アイドル新鋭隊",[100,253,371,508]],"11372":["needLe",[96,281,425,592]],"11373":["ヒステリックナイトガール",[141,273,463,695]],"11374":["GIGANTØMAKHIA",[278,435,622,1149]],"11375":["ミルキースター・シューティングスター",[144,381,632,771]],"11376":["isophote",[158,276,447,742]],"11377":["パラマウント☆ショータイム!!",[207,406,673,946]],"11378":["Strive against fate",[253,374,758,1071]],"11379":["sølips",[228,381,733,973]],"11380":["パーフェクション",[143,386,628,836]],"11381":["デーモンベット",[149,336,518,666]],"11382":["HECATONCHEIR",[264,410,707,1027]],"11383":["Irresistible",[139,308,454,782]],"11384":["HAGAKIRI",[211,341,547,733]],"11385":["N3V3R G3T OV3R",[146,297,484,749]],"11386":["Swift Swing",[156,320,575,873]],"11387":["星空パーティーチューン",[170,484,618,939]],"11388":["チューリングの跡",[161,337,539,956]],"11389":["Sage",[237,366,641,1012]],"11390":["OTOGEMA",[192,307,538,877]],"11391":["WiPE OUT MEMORIES",[267,458,717,1105]],"11392":["Metamorphosism",[252,324,525,954]],"11393":["白花の天使",[206,408,700,846]],"11394":["World's end loneliness",[359,472,721,1234]],"11395":["Jouez Avec Moi?",[166,312,566,906]],"11398":["Good bye, Merry-Go-Round.",[240,354,622,870]],"11399":["ツクヨミステップ",[194,385,637,920]],"11400":["folern",[204,381,667,979]],"11401":["コスモポップファンクラブ",[164,266,607,903]],"11402":["撩乱乙女†無双劇",[196,309,695,863]],"11404":["See The Light",[151,256,510,796]],"11405":["エータ・ベータ・イータ",[309,391,654,1054]],"11410":["ヴァンパイア",[174,330,582,633,749]],"11411":["エンヴィーベイビー",[141,344,568,776]],"11412":["初音天地開闢神話",[232,466,672,999]],"11413":["Armageddon",[193,427,805,993]],"11415":["Dreadnought",[183,396,661,932]],"11418":["enchanted love",[115,221,374,576]],"11419":["Caterpillar Song",[98,269,336,481]],"11422":[" ",[133,230,357,605]],"11423":["BLUE ZONE",[172,404,515,888]],"11424":["Estahv",[173,231,442,632]],"11425":["First Dance",[233,371,602,934]],"11426":["Mjölnir",[263,524,764,1241]],"11427":["Define",[141,316,508,649]],"11428":["BANG!",[109,209,453,604]],"11429":["Love's Theme of BADASS ~バッド・アス 愛のテーマ~",[279,455,744,1034]],"11432":["Princess♂",[100,286,426,663]],"11433":["ヒトガタ",[131,329,550,799]],"11434":["Spring of Dreams",[151,301,451,747]],"11435":["大輪の魂 (feat. AO, 司芭扶)",[123,288,429,776]],"11436":["紅に染まる恋の花",[116,302,444,661]],"11437":["三妖精SAY YA!!!",[142,333,493,802]],"11438":["Reach For The Stars (Re-Colors)",[234,395,634,1015]],"11439":["ジャンキーナイトタウンオーケストラ",[159,261,523,818]],"11441":["終焉逃避行",[175,262,489,783]],"11443":["8-EM",[193,392,700,824]],"11444":["若い力",[97,119,250,482]],"11445":["遺伝子レベル∞スパイラル",[226,270,405,832]],"11446":["otorii INNOVATED -[i]3-",[249,384,717,1075]],"11447":["エゴロック",[170,271,466,690]],"11448":["ただ選択があった",[108,238,409,466]],"11449":["パズルリボン",[235,311,569,835]],"11451":["Transcend Lights",[155,285,366,609]],"11452":["ホシシズク",[197,412,667,867]],"11453":["Rainbow Rush Story",[173,362,474,904]],"11454":["Tricolor⁂circuS",[164,298,486,924]],"11455":["[X]",[201,364,633,999]],"11456":["分解収束テイル",[165,394,669,1056]],"11457":["mystique as iris",[260,463,742,1167]],"11458":["Rising on the horizon",[231,331,656,946]],"11459":["You Mean the World to Me",[160,336,523,684]],"11460":["Neon Kingdom",[180,317,500,717]],"11461":["#狂った民族2 PRAVARGYAZOOQA",[244,355,502,963]],"11462":["VSpook!",[256,402,804,1095]],"11463":["RIFFRAIN",[143,298,383,611]],"11464":["Falling",[163,304,453,634]],"11465":["ピリオドサイン",[154,337,500,724]],"11466":["群青シグナル",[236,443,652,978]],"11467":["Beat Opera op.1",[156,303,500,763]],"11468":["星見草",[188,350,520,817]],"11469":["\"411Ψ892\"",[227,382,631,945]],"11470":["康莊大道",[262,409,735,1129]],"11471":["蜘蛛の糸",[224,364,698,1052]],"11472":["Don't Fight The Music",[225,410,751,1089]],"11473":["Catch Me If You Can",[264,325,539,840]],"11474":["MAGNETAR GIRL",[209,394,518,931]],"11475":["SUPER AMBULANCE",[238,433,648,1030]],"11477":["Ghost Dance",[166,386,522,859]],"11478":["電光石火",[195,424,691,1047]],"11479":["Hainuwele",[239,422,674,1030]],"11480":["アノーイング!さんさんウィーク!",[84,174,331,548]],"11481":["アニマル",[173,434,678,941]],"11482":["ジレンマ",[161,410,611,874]],"11483":["踊",[137,315,479,707,843]],"11484":["残響散歌",[162,373,547,939]],"11485":["フォニイ",[121,303,520,622,753]],"11486":["ヴィラン",[90,233,377,572,679]],"11487":["EYE",[109,335,481,795]],"11488":["スカーレット警察のゲットーパトロール24時",[117,252,307,711]],"11489":["田中",[186,359,661,892]],"11490":["Random",[170,262,478,786]],"11491":["Luminaria",[206,353,691,832]],"11492":["群青讃歌",[71,210,335,385]],"11493":["セカイ",[102,211,360,553]],"11494":["ワーワーワールド",[122,239,371,558]],"11495":["銀のめぐり",[142,316,475,653]],"11496":["Destiny Runner",[223,400,667,985]],"11497":["アマカミサマ",[142,326,429,701]],"11498":["モンダイナイトリッパー!",[189,334,531,839]],"11499":["マーシャル・マキシマイザー",[190,368,581,867]],"11500":["秋の未確認生物",[204,364,609,899]],"11501":["Dive into the ZONe",[153,349,493,751]],"11502":["エナドリおいしいソング",[175,343,509,677]],"11503":["Baddest",[239,357,583,1030]],"11504":["ばかみたい【Taxi Driver Edition】",[87,213,215,278]],"11505":["れっつ!みらくる☆はーどこあっ!",[221,421,625,1093]],"11506":["Blank Paper (Prod. TEMPLIME)",[116,269,385,801]],"11507":["In my world (Prod. KOTONOHOUSE)",[135,306,429,743]],"11508":["アイム・マイヒーロー",[119,284,374,775]],"11509":["NightTheater",[138,342,541,823]],"11510":["キュートなカノジョ",[148,279,446,680]],"11511":["へべれけジャンキー",[132,268,421,735]],"11512":["きゅうくらりん",[185,324,630,859]],"11513":["回る空うさぎ",[129,256,298,526]],"11514":["Lost Desire",[191,384,574,926]],"11516":["Aegleseeker",[245,390,665,1084]],"11517":["最強STRONGER",[278,426,789,1069]],"11518":["ボッカデラベリタ",[167,344,539,796]],"11519":["『んっあっあっ。』",[159,279,484,897]],"11520":["独りんぼエンヴィー",[118,299,379,606]],"11521":["ロータスイーター",[120,318,479,806]],"11523":["ViRTUS",[270,426,713,1063]],"11524":["Alice's Suitcase",[174,350,477,786]],"11525":["ピュグマリオンの咒文",[179,308,519,844]],"11526":["トノサマビーム",[174,341,579,869]],"11527":["enchanted wanderer",[160,286,446,594]],"11528":["Comet Panto Men!",[210,379,628,912]],"11529":["ツムギボシ",[235,376,626,992]],"11530":["VeRForTe αRtE:VEiN",[227,374,654,1064]],"11532":["ヱデン",[148,292,461,655]],"11533":["にゃーにゃー冒険譚",[204,403,641,1085]],"11534":["The Great Banquet",[246,371,518,953]],"11535":["Redemption",[181,322,459,813]],"11536":["Ether Second",[178,300,519,855]],"11537":["Straight into the lights",[220,348,522,1111]],"11538":["アンバークロニクル",[236,397,611,829]],"11539":["リフヴェイン",[150,270,383,643]],"11540":["Kairos",[156,320,418,591]],"11541":["宵の鳥",[180,346,393,746]],"11542":["ここからはじまるプロローグ。 (Kanon Remix)",[219,347,593,933]],"11543":["モ°ルモ°ル (MZK Skippin' Remix)",[154,265,427,696]],"11544":["VERTeX (rintaro soma deconstructed remix)",[236,334,618,936]],"11545":["隠密あんみつDX",[180,328,531,832]],"11546":["地球",[193,398,567,890]],"11547":["Churros Parlor",[194,348,726,969]],"11548":["超熊猫的周遊記(ワンダーパンダートラベラー)",[210,319,623,1041]],"11549":["Trrricksters!!",[250,369,775,1153]],"11550":["FLUFFY FLASH",[228,408,659,988]],"11551":["STARRED HEART",[150,233,379,482]],"11552":["Y.Y.Y.計画!!!!",[218,392,626,947]],"11553":["Last Kingdom",[206,327,632,851]],"11554":["LAMIA",[264,363,759,999]],"11555":["ヒバリ",[103,220,398,649]],"11556":["Hello, Hologram",[212,335,550,897]],"11557":["不機嫌なスリーカード",[112,314,431,559]],"11558":["神っぽいな",[95,228,324,486,563]],"11559":["魔法少女とチョコレゐト",[158,292,370,620]],"11560":["阿修羅ちゃん",[142,290,486,711]],"11561":["おとせサンダー",[149,340,568,727,976]],"11562":["ロウワー",[113,249,384,573,759]],"11563":["キャットラビング",[115,257,368,625]],"11564":["リスペク風神",[142,283,550,855]],"11565":["Let you DIVE!",[136,324,522,596]],"11566":["Knight Rider",[232,421,573,876]],"11567":["I’m Here (feat. Merry Kirk-Holmes)",[171,316,531,741]],"11568":["INTERNET OVERDOSE",[171,356,538,822]],"11569":["魂のルフラン",[107,207,299,468]],"11570":["Shooting Shower~DANCE TIME(シンディ)~",[146,225,312,552]],"11571":["Lights of Muse",[126,283,460,652]],"11572":["tape/stop/night",[133,242,416,563]],"11573":["Final Step!",[189,344,576,859]],"11574":["The 90's Decision",[160,291,526,694]],"11575":["僕の和風本当上手",[211,404,650,1173]],"11576":["Cthugha",[273,473,759,1168]],"11577":["はんぶんこ",[125,246,281,377]],"11578":["PUPA",[221,325,666,964]],"11580":["解けないように",[169,299,392,628]],"11583":["インターネットサバイバー",[146,299,519,764]],"11584":["コンティニュー! feat. 藍月なくる",[211,324,553,897]],"11585":["Sunday Night feat Kanata.N",[152,270,449,610]],"11586":["PERSONA feat. PANXI",[186,325,502,733]],"11587":["Halfway(>∀<)",[232,375,560,900]],"11588":["Complex Mind",[210,360,589,882]],"11589":["DROPS feat. Such",[165,275,511,648]],"11590":["あつすぎの歌",[204,315,518,806]],"11591":["ULTRA SYNERGY MATRIX",[213,333,519,906]],"11592":["花となれ",[102,213,277,313]],"11593":["私のドッペルゲンガー",[194,330,519,663]],"11594":["BULK UP (GAME EXCLUSIVE EDIT)",[202,397,644,944]],"11596":["Vallista",[154,343,517,765]],"11597":["ノンブレス・オブリージュ",[141,279,345,465]],"11598":["テオ",[232,364,582,965]],"11599":["まにまに",[182,346,526,727]],"11600":["感情ディシーブ",[144,281,474,694]],"11601":["ド屑",[124,238,224,612]],"11602":["絶対敵対メチャキライヤー",[163,306,473,735]],"11603":["つるぺったん",[188,336,511,666]],"11604":["『ウソテイ』 ~一回戦せりなvsしろなvsなずな~",[220,360,558,893]],"11605":["Bad Apple!! feat.nomico ~五十嵐 撫子 Ver.~",[171,304,508,823]],"11606":["Snow Colored Score",[158,356,562,714]],"11607":["MAGENTA POTION",[141,268,486,818]],"11608":["NOIZY BOUNCE",[136,293,419,708]],"11609":["サンバディ!",[185,307,442,789]],"11610":["Horoscope Express",[181,347,559,772]],"11611":["Party☆People☆Princess",[221,308,587,885]],"11612":["Latent Kingdom",[269,440,782,1371]],"11613":["Mystic Parade",[165,305,582,896]],"11614":["Cry Cry Cry",[135,293,432,706]],"11615":["ぽわわん劇場",[219,381,617,800]],"11616":["my flow",[156,304,493,683]],"11617":["POWER OF UNITY",[242,385,563,913]],"11618":["Energizing Flame",[258,388,746,966]],"11619":["KHYMΞXΛ",[282,405,611,981]],"11620":["フェイクフェイス・フェイルセイフ",[205,335,654,883]],"11621":["ふらふらふら、",[156,325,468,805]],"11622":["シックスプラン",[136,258,375,632]],"11623":["フタタビ",[139,277,450,732]],"11624":["SQUAD-Phvntom-",[208,349,717,1064]],"11625":["GEOMETRIC DANCE",[197,311,741,1067]],"11626":["Ring",[161,260,430,655]],"11627":["インパアフェクシオン・ホワイトガアル",[209,417,659,1067]],"11628":["WE'RE BACK!!",[208,364,648,961]],"11629":["熱異常",[186,360,538,703,996]],"11630":["1000年生きてる",[156,302,387,601]],"11631":["IMAWANOKIWA",[161,335,542,885]],"11632":["Play merrily NEO",[149,314,512,739]],"11633":["OMAKENO Stroke",[189,339,476,729]],"11634":["青春コンプレックス",[182,325,626,823,961]],"11636":["さくゆいたいそう",[163,335,538,681]],"11637":["バグ",[188,366,618,713,989]],"11638":["星界ちゃんと可不ちゃんのおつかい合騒曲",[239,369,707,1045]],"11639":["Burn My Soul",[218,366,583,807]],"11640":["with U",[217,295,617,797]],"11641":["Love Kills U",[160,338,513,776]],"11642":["DANGEROOOOUS JUNGLE",[193,328,553,992]],"11643":["天使光輪",[308,418,695,1064]],"11644":["story",[95,218,372,491]],"11645":["トンデモワンダーズ",[167,296,457,784]],"11646":["神威",[342,416,842,1263]],"11647":["ozma",[258,425,623,792]],"11648":["月面基地",[247,348,367,900]],"11650":["ずんだもんの朝食 〜目覚ましずんラップ〜",[159,335,511,729]],"11651":["あなたは世界の終わりにずんだを食べるのだ",[137,274,408,619]],"11652":["HUMANBORG",[219,359,614,1027]],"11653":["ULTRA POWER",[181,290,508,780]],"11654":["ジェヘナ",[115,296,445,813]],"11655":["ツギハギスタッカート",[116,285,425,599]],"11656":["HANIPAGANDA",[183,312,508,842]],"11657":["Rush-Hour",[187,360,591,894]],"11658":["QUEEN",[169,289,510,777]],"11659":["天使の翼。",[146,238,404,703]],"11660":["さよならプリンセス",[167,318,572,705]],"11661":["Apollo",[317,400,860,1211]],"11662":["raputa",[339,424,888,1316]],"11663":["系ぎて",[344,539,742,1200,1400]],"11664":["アルカンシエル",[186,321,537,670]],"11665":["RAD DOGS",[148,249,404,664]],"11666":["アイディスマイル",[136,302,318,510]],"11667":["にっこり^^調査隊のテーマ",[161,290,488,709]],"11668":["PinqPiq (xovevox Remix)",[193,336,578,940]],"11669":["エスオーエス",[208,402,697,982]],"11670":["のじゃロリック",[169,339,531,768]],"11671":["Edelweiss",[203,294,551,841]],"11672":["QuiQ",[251,406,740,1108]],"11673":["IF:U",[225,327,606,949]],"11674":["Cider P@rty",[223,360,617,826]],"11675":["勦滅",[230,377,581,1030]],"11676":["Lunatic Vibes",[265,393,595,954]],"11677":["Bloody Trail",[275,440,775,1156]],"11678":["RE:INCARNATED DRAGNER",[248,407,694,1049]],"11679":["Beginning together!",[172,311,472,790]],"11680":["Shining Ray ~僕らの絆~",[214,338,534,795]],"11681":["DEVOTION",[218,366,620,981]],"11682":["Geranium",[237,342,571,784]],"11683":["The Cursed Doll",[205,284,443,761]],"11684":["RondeauX of RagnaroQ",[269,438,681,1116]],"11685":["ℝ∈Χ LUNATiCA",[298,451,713,1103]],"11686":["Λzure Vixen",[284,400,739,1289]],"11687":["MarbleBlue.",[248,397,683,1062]],"11688":["まっすぐ→→→ストリーム!",[232,400,600,960]],"11689":["最っ高のエンタメだ!!",[259,304,656,942]],"11690":["Baqeela",[195,299,620,982]],"11691":["Ai C",[228,336,532,869]],"11692":["INTERNET YAMERO",[222,389,699,747,1075]],"11693":["過去を喰らう",[190,363,506,769]],"11694":["強風オールバック",[149,266,508,580]],"11695":["寝起きヤシの木",[139,218,389,623]],"11696":["アイドル",[175,282,513,629,797]],"11697":["ラビットホール",[199,334,554,713,922]],"11698":["酔いどれ知らず",[131,225,314,513,700]],"11699":["新人類",[181,310,612,1056]],"11700":["Freak Out Hr.",[173,334,584,903]],"11701":["さよならヒストリー",[176,358,563,760]],"11702":["New York Back Raise",[178,376,656,878]],"11704":["DUAL ROZES",[185,308,401,825]],"11705":["VOLT",[166,314,444,652]],"11706":["tiny tales continue",[198,338,498,818]],"11707":["ouroboros -twin stroke of the end-",[272,443,717,1257]],"11708":["カーニバルハッピー",[220,371,750,1049]],"11709":["つづみぐさ",[152,303,480,781]],"11710":["サイバーサンダーサイダー",[184,243,466,770]],"11711":["おくすり飲んで寝よう",[158,321,437,743]],"11712":["バラバラ〜仮初レインボーローズ〜",[99,196,397,461]],"11713":["QUATTUORUX",[316,438,800,1122]],"11714":["匿名M",[167,299,475,653]],"11715":["ライアーダンサー",[202,385,589,940]],"11716":["バカ通信",[235,379,648,997]],"11717":["LOSTPHANTASIA",[133,235,329,549]],"11718":["Bad Apple!! feat.nomico (Tetsuya Komuro Remix)",[132,223,399,609]],"11720":["Re:Unknown X",[257,393,649,1189]],"11721":["INFiNiTE ENERZY -Overdoze-",[237,336,659,849]],"11722":["Make Up Your World feat. キョンシーのCiちゃん & らっぷびと",[232,404,607,775]],"11723":["BOOM! BOOM!! BOOM!!!",[176,275,448,791]],"11724":["Everybody Say HARDCORE TANO*C",[245,392,563,921]],"11725":["ミラクルポップ☆アドベンチャー!!!!!",[256,403,712,1010]],"11726":["Trust",[177,322,551,783]],"11727":["ラヴィ",[202,372,570,891]],"11728":["スティールユー",[202,398,687,1001]],"11729":["オシオキGIMMICK!!",[221,376,626,832]],"11730":["偉大なる悪魔は実は大天使パトラちゃん様なのだ!",[211,388,576,935]],"11731":["シュガーホリック",[180,354,505,722]],"11733":["MUSIC PЯAYER",[221,372,631,980]],"11734":["壱雫空",[128,239,443,634]],"11735":["ザムザ",[111,238,359,634]],"11736":["プリズム△▽リズム",[200,313,490,773]],"11737":["パラドクスイヴ",[183,325,500,718]],"11738":["YKWTD",[243,345,521,845]],"11739":["184億回のマルチトニック",[277,391,658,1144]],"11740":["果ての空、僕らが見た光。",[227,358,499,820]],"11741":["Cryptarithm",[283,389,703,995]],"11742":["Ourania",[204,337,457,664]],"11743":["天蓋",[213,353,468,733]],"11744":["Deicide",[213,384,553,874]],"11745":["氷滅の135小節",[365,504,740,1125]],"11746":["Divide et impera!",[308,384,741,1225]],"11747":["地獄",[186,313,477,706]],"11748":["シスターシスター",[185,352,496,746]],"11749":["有明/Ariake",[256,417,586,945]],"11750":["Flashback",[209,323,515,813]],"11751":["Colorfull:Encounter",[202,305,526,725]],"11752":["雨露霜雪",[337,532,915,1211]],"11753":["宙天",[320,478,660,1058]],"11754":["Elemental Ethnic",[306,390,701,1082]],"11755":["美夜月鏡",[240,331,565,1011]],"11756":["Resolution",[294,423,629,902]],"11757":["いちげき!のテーマ",[270,401,637,1010]],"11758":["Radiance",[205,320,514,825]],"11759":["R'N'R Monsta",[254,397,584,805]],"11760":["勇者",[94,153,271,396,517]],"11761":["病み垢ステロイド",[250,364,627,911]],"11763":["ダーリンダンス",[192,303,551,709,904]],"11764":["唱",[138,239,431,577,811]],"11765":["愛包ダンスホール",[182,315,514,839]],"11766":["マツケンサンバⅡ",[184,271,430,637]],"11767":["デビルじゃないもん",[206,319,487,772]],"11769":["ずんだパーリナイ",[195,330,540,998]],"11770":["Ultimate taste",[248,364,595,912]],"11771":["Chronomia",[270,406,642,922]],"11772":["人マニア",[157,244,420,783]],"11773":["転生林檎",[154,320,473,658]],"11774":["メイトなやつら(FEAT. 天開司, 佐藤ホームズ, あっくん大魔王 & 歌衣メイカ)",[161,293,447,697]],"11775":["モンスターカミング",[185,375,485,657]],"11776":["ゆけむり魂温泉 II",[217,318,491,905]],"11777":["人間が大好きなこわれた妖怪の唄",[194,278,408,481]],"11778":["シリウスの輝きのように",[153,286,416,478,815]],"11779":["プラネタリウム・レヴュー",[102,231,356,388,574]],"11780":["演劇",[175,256,426,587]],"11781":["無間嫉妬劇場『666』",[147,300,447,666]],"11782":["夢現妄想世界",[189,402,622,942]],"11783":["snooze",[216,345,616,868]],"11784":["イガク",[151,286,520,793]],"11785":["てらてら",[181,383,528,779]],"11786":["Empire of Winter",[180,300,416,737]],"11787":["迷える音色は恋の唄",[184,326,525,833]],"11788":["Löschen",[240,396,554,964]],"11789":["Abstruse Dilemma",[300,513,649,1048]],"11790":["HYP3RTRIBE",[283,415,608,936]],"11791":["On your mark (104期 Ver.)",[165,322,478,642]],"11792":["はげしこの夜 -Psylent Crazy Night-",[181,328,579,758]],"11793":["エイプリルスター",[241,363,574,852]],"11794":["オーバーライド",[246,400,571,879]],"11795":["右に曲ガール",[170,331,551,667]],"11796":["ウルトラトレーラー",[241,408,636,1027]],"11797":["バベル",[219,353,488,782]],"11798":["お願い!コンコンお稲荷さま",[225,381,488,830]],"11799":["いっぱい食べる君が好きだよ",[235,410,619,798]],"11800":["ピポピポ -People People- feat. ななひら",[243,440,643,1030]],"11802":["ワールドワイドワンダー",[153,311,488,760]],"11803":["MORNINGLOOM",[237,388,524,716]],"11804":["How To Make 音ゲ~曲!",[252,395,649,854]],"11805":["リアライズ",[175,353,518,836]],"11822":["Supersonic Generation",[171,311,503,815]]}}
const groupList = [
  ['maimai', 'version', ['真極','真将','真神','真舞舞']],
  ['GreeN', 'version', ['超極','超将','超神','超舞舞']],
  ['GreeN PLUS', 'version', ['檄極','檄将','檄神','檄舞舞']],
  ['ORANGE', 'version', ['橙極','橙将','橙神','橙舞舞']],
  ['ORANGE PLUS', 'version', ['暁極','暁将','暁神','暁舞舞']],
  ['PiNK', 'version', ['桃極','桃将','桃神','桃舞舞']],
  ['PiNK PLUS', 'version', ['櫻極','櫻将','櫻神','櫻舞舞']],
  ['MURASAKi', 'version', ['紫極','紫将','紫神','紫舞舞']],
  ['MURASAKi PLUS', 'version', ['菫極','菫将','菫神','菫舞舞']],
  ['MiLK', 'version', ['白極','白将','白神','白舞舞']],
  ['MiLK PLUS', 'version', ['雪極','雪将','雪神','雪舞舞']],
  ['FiNALE', 'version', ['輝極','輝将','輝神','輝舞舞']],
  ['All STD', 'std-all', ['舞極','舞将','舞神','舞舞舞','覇者']],
  ['maimaiDX', 'version', ['熊極','熊将','熊神','熊舞舞']],
  ['maimaiDX PLUS', 'version', ['華極','華将','華神','華舞舞']],
  ['Diamond', 'dx-2-version', ['Tyfp -でらっくす-','PERFECT Jewel [Diamond]','SYNC Jewel [Diamond]']],
  ['Splash', 'version', ['爽極','爽将','爽神','爽舞舞']],
  ['Splash PLUS', 'version', ['煌極','煌将','煌神','煌舞舞']],
  ['Emerald', 'dx-2-version', ['Tyfp -Splash-','PERFECT Jewel [Emerald]','SYNC Jewel [Emerald]']],
  ['UNiVERSE', 'version', ['宙極','宙将','宙神','宙舞舞']],
  ['UNiVERSE PLUS', 'version', ['星極','星将','星神','星舞舞']],
  ['Sapphire', 'dx-2-version', ['Tyfp -UNiVERSE-','PERFECT Jewel [Sapphire]','SYNC Jewel [Sapphire]']],
  ['FESTiVAL', 'version', ['祭極','祭将','祭神','祭舞舞']],
  ['FESTiVAL PLUS', 'version', ['祝極','祝将','祝神','祝舞舞']],
  ['Amethyst', 'dx-2-version', ['Tyfp -FESTiVAL-','PERFECT Jewel [Amethyst]','SYNC Jewel [Amethyst]']],
  ['BUDDiES', 'version', ['双極','双将','双神','双舞舞']],
  ['BUDDiES PLUS', 'version', ['宴極','宴将','宴神','宴舞舞']],
  ['Topaz', 'dx-2-version', ['Tyfp -BUDDiES-','PERFECT Jewel [Topaz]','SYNC Jewel [Topaz]']],
  ['PRiSM', 'version', ['鏡極','鏡将','鏡神','鏡舞舞']],
  //['BUDDiES PLUS', 'version', ['?極','?将','?神','?舞舞']],
]

class MapProgress {
  name;
  linkIdx;
  detailIdx;
  distance;
  isComplete;
  constructor(obj) {
    obj && Object.assign(this, obj);
  }
  equals(p) {
    return p != null
      && p.name === this.name
      && p.distance === this.distance
      && p.isComplete === this.isComplete
  }
}
class SongScore {
  name;
  difficulty;
  score;
  dxscore;
  dxscorerank;
  dxscoremax;
  apfc;
  sync;
  kind;
  constructor(obj) {
    obj && Object.assign(this, obj);
  }
  equals(s) {
    return s != null
      && s.name == this.name
      && s.difficulty == this.difficulty
      && s.score == this.score
      && s.dxscore == this.dxscore
      && s.apfc == this.apfc
      && s.sync == this.sync
      && s.kind == this.kind
  }
  isEmpty() {
    return this.score == 0 && this.dxscore == 0
  }
}
const verConfig = {
  fullsyncdx: 'fsd',
  fullsyncdxp: 'fsdp',
}
const Difficulty = {
  basic: 0,
  advanced: 1,
  expert: 2,
  master: 3,
  remaster: 4
}
const MapType = {
  regular: 'map',
  event: 'map/eventMap',
  //endedEvent: 'map/eventMapLog',
}
const DifficultyName = {
  [Difficulty.basic]: 'BAS',
  [Difficulty.advanced]: 'ADV',
  [Difficulty.expert]: 'EXP',
  [Difficulty.master]: 'MAS',
  [Difficulty.remaster]: 'REM',
}
const MapTypeName = {
  [MapType.regular]: 'regular',
  [MapType.event]: 'event',
}

function getContent(node, name, idx = 0) {
  const child = node.getElementsByClassName(name)
  return child.length ? child[idx].textContent : ''
}
function getDxScore(node) {
  const dxs = getContent(node, 'music_score_block', 1).trim()
  return parseInt('0' + dxs.split('/')[0].replace(/[^\d]/g, ''))
}
function getDxScoreMax(node) {
  const dxs = getContent(node, 'music_score_block', 1).trim()
  if (dxs.split('/').length < 2) return 0
  return parseInt('0' + dxs.split('/')[1].replace(/[^\d]/g, ''))
}
function getDxScoreRank(node) {
  const dxs = getContent(node, 'music_score_block', 1).trim()
  if (!dxs.trim()) return 0;
  const dxs_ = parseInt('0' + dxs.split('/')[0].replace(/,/g, ''))
  const dxsp = Math.floor(dxs_ * 10000 / parseInt('0' + dxs.split('/')[1].replace(/,/g, '').trim()))
  const dxsr = dxsp > 9700 ? 5 : dxsp > 9500 ? 4 : dxsp > 9300 ? 3 : dxsp > 9000 ? 2 : dxsp > 8500 ? 1 : 0
  return dxsp + dxsr * 1000000
}
function getApRank(node) {
  const img = node.getElementsByClassName('h_30 f_r')[1]
  if (!img) return 0
  const path = img.getAttribute('src').split('/').pop().split('?')[0]
  switch (path) {
    case 'music_icon_fc.png': { return 1 }
    case 'music_icon_fcp.png': { return 2 }
    case 'music_icon_ap.png': { return 3 }
    case 'music_icon_app.png': { return 4 }
  }
  return 0
}
function getSyncRank(node) {
  const img = node.getElementsByClassName('h_30 f_r')[0]
  if (!img) return 0
  const path = img.getAttribute('src').split('/').pop().split('?')[0]
  switch (path) {
    case 'music_icon_fs.png': { return 1 }
    case 'music_icon_fsp.png': { return 2 }
    case 'music_icon_fsd.png': { return 3 }
    case 'music_icon_fsdp.png': { return 4 }
    case 'music_icon_fdx.png': { return 3 }
    case 'music_icon_fdxp.png': { return 4 }
  }
  return 0
}
function getSongKind(node) {
  const img = node.querySelector('.music_kind_icon,.music_basic_btn_on,.music_advanced_btn_on,.music_expert_btn_on,.music_master_btn_on,.music_remaster_btn_on')
  if (!img) return ''
  const path = img.getAttribute('src').split('/').pop().split('?')[0]
  switch (path) {
    case 'music_dx.png': { return 'dx' }
    case 'music_standard.png': { return 'std' }
  }
  return ''
}

async function loadScoreList(diffi = Difficulty.master) {
  const res = await fetch(`/maimai-mobile/record/musicGenre/search/?genre=99&diff=${diffi}`, {cache: 'no-cache'})
  const html = await res.text()
  const doc = (new DOMParser).parseFromString(html, 'text/html')
  const list = Array.from(doc.querySelectorAll('form')).map(i => i.parentNode.parentNode)
  list.shift()
  return list
}
async function loadAllScores() {
  const ret = [];
  for (const difficulty of Object.values(Difficulty)) {
    createUpdateNotice(`Loading ${DifficultyName[difficulty]}`, '1485bf', { keepBeforeNextNotice: true })
    const songDataList = await loadScoreList(difficulty)

    for (const songData of songDataList) {
      const obj = new SongScore
      obj.name = getContent(songData, 'music_name_block')
      obj.difficulty = difficulty
      obj.score = parseFloat('0'+getContent(songData, 'music_score_block').slice(0, -1))
      obj.dxscore = getDxScore(songData)
      obj.dxscorerank = getDxScoreRank(songData)
      obj.dxscoremax = getDxScoreMax(songData)
      obj.apfc = getApRank(songData)
      obj.sync = getSyncRank(songData)
      obj.kind = getSongKind(songData)
      ret.push(obj)
    }
  }
  return ret.filter(s => !s.isEmpty())
}

let friendId = null
async function getFriendId() {
  if (friendId == null) {
    const res = await fetch(`/maimai-mobile/friend/userFriendCode/`, {cache: 'no-cache'})
    const html = await res.text()
    const doc = (new DOMParser).parseFromString(html, 'text/html')
    friendId = doc.querySelector('.friend_code_icon+div').textContent.trim()
  }
  return friendId
}
async function getUserInfo() {
  const res = await fetch(`/maimai-mobile/playerData/`, {cache: 'no-cache'})
  const html = await res.text()
  const doc = (new DOMParser).parseFromString(html, 'text/html')
  const userinfo = {
    rating: getContent(doc, 'rating_block'),
    playcount: doc.querySelector('.musiccount_block').parentNode.children[2].lastChild.textContent.replace(/[^\d]/g, '')
  }
  const musicCountList = [...doc.querySelectorAll('.musiccount_block')]
  musicCountList.forEach(i => {
    const path = i.querySelector('img').getAttribute('src').split('/').pop().split('?')[0]
    const category = path.substr(11).split('.')[0]
    const count = getContent(i, 'musiccount_counter_block').split('/')[0].replace(/,/g, '')
    userinfo[category] = count
  })
  return userinfo
}

async function loadMapList(type = MapType.regular) {
  const res = await fetch(`/maimai-mobile/${type}/`, {cache: 'no-cache'})
  const html = await res.text()
  const doc = (new DOMParser).parseFromString(html, 'text/html')
  const list = Array.from(doc.querySelectorAll('form')).map(i => i.parentNode.parentNode)
  return list
}
async function loadAllMaps() {
  const ret = [];
  for (const mapType of Object.values(MapType)) {
    createUpdateNotice(`Loading ${MapTypeName[mapType]} maps`, '1485bf', { keepBeforeNextNotice: true })
    const mapDataList = await loadMapList(mapType)

    for (const mapData of mapDataList) {
      const obj = new MapProgress
      obj.name = getContent(mapData, 'map_name_block')
      obj.linkIdx = mapData.querySelector('input[name=idx]').value
      if (mapData.querySelector('input[name=detailIdx]') !== null) {
        obj.detailIdx = mapData.querySelector('input[name=detailIdx]').value
      }
      obj.distance = getContent(mapData, 'basic_block').replace(/[^\d]/g, '')
      obj.isComplete = mapData.querySelector('.map_comp_img') !== null
      ret.push(obj)
    }
  }
  return ret
}

async function getToday() {
  const userid = await getFriendId()
  const userinfo = await getUserInfo()
  const map = await loadAllMaps()
  const score = await loadAllScores()
  return [
    userid,
    {
      userinfo,
      map,
      score
    }
  ]
}

function listToMap(list, keycb) {
  const ret = {}
  list.forEach(i => (ret[keycb(i)] = i))
  return ret
}

function calcTodayNew(previous, today) {
  const ret = {
    userinfo: today.userinfo,
    map: [],
    score: [],
  }
  const mapMap = listToMap(previous.map, i => i.name)
  today.map.forEach(i => {
    if (mapMap[i.name] && i.equals(mapMap[i.name])) { return }
    ret.map.push(i)
  })
  const scoreMap = listToMap(previous.score, i => [i.name,i.difficulty,i.dxscoremax,i.kind].join(','))
  today.score.forEach(i => {
    const key = [i.name,i.difficulty,i.dxscoremax,i.kind].join(',')
    if (scoreMap[key] && i.equals(scoreMap[key])) { return }
    ret.score.push(i)
  })
  return ret
}
/**
 * @returns {Promise<Array>}
 */
async function getLocalData(friendId) {
  return ((await idbKeyval.get(`maidx-data-${friendId}`)) || []).sort((a,b) => a.date - b.date)
}
async function storeLocalData(friendId, dataToStore) {
  await idbKeyval.set(`maidx-data-${friendId}`, dataToStore.sort((a,b) => a.date - b.date))
}
/**
 * @returns {Promise<Array>}
 */
async function chkDataAndSync(friendId) {
  let data = await getLocalData(friendId)
  const localHashMap = {}
  data.forEach(i => localHashMap[i.date] = i.hash)
  const hashRes = await fetch(`https://estertion.win/__private__/today_result_api.php?act=get_hash&game=dx&userid=${friendId}`)
  const remoteHash = await hashRes.json()
  const remoteHashMap = {}
  remoteHash.forEach(i => remoteHashMap[i.date] = i.hash)
  const modList = {
    add: [],
    del: []
  }
  for (let date in localHashMap) {
    if (!remoteHashMap[date]) {
      modList.del.push(date*1)
    }
  }
  for (let date in remoteHashMap) {
    if (remoteHashMap[date] !== localHashMap[date]) {
      modList.add.push(date*1)
    }
  }
  if (modList.del.length) {
    data = data.filter(i => modList.del.indexOf(i.date) === -1)
  }
  if (modList.add.length) {
    const syncRes = await fetch(`https://estertion.win/__private__/today_result_api.php?act=get&game=dx&userid=${friendId}`, {
      method: 'POST',
      headers: new Headers({'Content-Type': 'application/x-www-form-urlencoded'}),
      body: modList.add.map(i=>`date[]=${i}`).join('&')
    })
    const syncData = await syncRes.json()
    data = data.filter(i => modList.add.indexOf(i.date) === -1)
    data = data.concat(syncData).sort((a,b) => a.date - b.date)
  }
  if (modList.add.length || modList.del.length) {
    storeLocalData(friendId, data)
  }
  return data
}
async function getPreviousData() {
  const friendId = await getFriendId()
  const data = await chkDataAndSync(friendId)
  return data.sort((a,b) => (a.date - b.date))
}
async function getPreviousDataKeyed() {
  const data = await getPreviousData()
  return data.map(i => {
    i.data.map = i.data.map.reduce((o, i) => (o[i.name] = new MapProgress(i), o), {})
    i.data.score = i.data.score.reduce((o, i) => (o[[i.name,i.difficulty,i.dxscoremax,i.kind].join(',')] = new SongScore(i), o), {})
    return i
  })
}
function constructPreviousByData(data, previous = {map:{},score:{}}) {
  const next = {map:{},score:{}}
  return [{data:previous},...data].reduce((o, i) => {
    Object.values(i.data.map).forEach(i => o.map[i.name] = i)
    Object.values(i.data.score).forEach(i => o.score[[i.name,i.difficulty,i.dxscoremax,i.kind].join(',')] = i)
    o.userinfo = i.data.userinfo
    return o
  }, next)
}
async function constructPrevious(day = '99999999') {
  const data = await getPreviousDataKeyed()
  const previous = constructPreviousByData(data.filter(i => i.date < day))
  previous.map = Object.values(previous.map)
  previous.score = Object.values(previous.score)
  return previous
  return JSON.parse(localStorage.score221025_fix)
  return {
    userinfo: [],
    map: [],
    score: JSON.parse(localStorage.score221025)
  }
}

function todayStr() {
  let time = Date.now()
  time += 2*3600*1000
  time -= time % (24*3600*1000)
  const date = new Date(time)
  const dateStr = [date.getUTCFullYear(),(date.getUTCMonth()+1+100+'').substr(1), (date.getUTCDate()+100+'').substr(1)].join('')
  return dateStr
}
async function getLastPlayDate() {
  const res = await fetch(`/maimai-mobile/record/`, {cache: 'no-cache'})
  const html = await res.text()
  const doc = (new DOMParser).parseFromString(html, 'text/html')
  let time = (new Date(doc.querySelector('.playlog_top_container .sub_title span:not(.red)').textContent + ' +0900')).getTime()
  time += 2*3600*1000
  time -= time % (24*3600*1000)
  const date = new Date(time)
  const dateStr = [date.getUTCFullYear(),(date.getUTCMonth()+1+100+'').substr(1), (date.getUTCDate()+100+'').substr(1)].join('')
  return dateStr
}

async function uploadToday() {
  createUpdateNotice('Checking previous data', '1485bf', { keepBeforeNextNotice: true })
  const dataDate = await getLastPlayDate()
  const previous = await constructPrevious(dataDate)
  const today = await getToday()
  const friendId = today[0]
  const todayNewData = calcTodayNew(previous, today[1])
  createUpdateNotice('Uploading', '1485bf', { keepBeforeNextNotice: true })
  //return { previous, today, todayNewData, }
  const res = await fetch(`https://estertion.win/__private__/today_result_api.php?act=store&game=dx&userid=${friendId}`, {body:JSON.stringify({date:dataDate,data:todayNewData}), method: 'POST'})
  const todayHash = await res.json()
  if (todayHash.succ) {
    createUpdateNotice('Uploaded', '1485bf')
    let localStored = await getLocalData(friendId)
    localStored = localStored.filter(i => i.date != dataDate)
    localStored.push({
      date: parseInt(dataDate),
      hash: todayHash.hash,
      data: todayNewData
    })
    await storeLocalData(friendId, localStored)
  } else {
    createUpdateNotice(todayHash.msg, 'F00')
  }
}

const server = host === 'maimaidx.jp' ? 'jp' : host === 'maimaidx-eng.com' ? 'ex' : host === 'maimai.wahlap.com' ? 'cn' : ''
if (server === 'cn') {
  groupData.groups['華'].subgroup = ['熊']
  groupData.groups['煌'].subgroup = ['爽']
  groupData.groups['星'].subgroup = ['宙']
  groupData.groups['祝'].subgroup = ['祭']
  groupData.groups['宴'].subgroup = ['双']
  groupData.groups['Diamond'].subgroup = ['熊']
  groupData.groups['Emerald'].subgroup = ['爽']
  groupData.groups['Sapphire'].subgroup = ['宙']
  groupData.groups['Amethyst'].subgroup = ['祭']
  groupData.groups['Topaz'].subgroup = ['双']

  for (const group in groupData.groups) {
    groupData.groups[group].cnsongs = groupData.groups[group].cnsongs ?? []
    groupData.groups[group].cnremas = groupData.groups[group].cnremas ?? []
  }

  groupData.groups['熊'].cnsongs = [10191,10256,10288,10301,10319,10363,10420,10536,10572,10593,10641,10665,10702,10706,10734,11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027,11028,11029,11030,11031,11034,11037,11043,11044,11046,11048,11049,11050,11051,11052,11058,11059,11060,11061,11064,11065,11066,11067,11069,11070,11073,11075,11077,11078,11080,11081,11083,11084,11085,11086,11087,11088,11093,11094,11095,11096,11104,11106,11121,11122,11123,11124,11134,11140]
  groupData.groups['爽'].cnsongs = [10188,10690,11032,11089,11090,11091,11092,11097,11098,11099,11100,11101,11102,11103,11105,11107,11108,11109,11110,11111,11113,11115,11125,11126,11127,11128,11129,11130,11131,11132,11133,11135,11136,11137,11138,11139,11141,11142,11143,11152,11153,11154,11155,11157,11158,11159,11160,11161,11162,11163,11164,11165,11166,11167,11168,11171,11172,11173,11174,11175,11176,11177,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11195,11198,11199,11200,11201,11202,11204,11205,11206,11207,11208,11209,11210,11211,11212,11214,11215,11216,11219,11221,11222]
  groupData.groups['宙'].cnsongs = [1020,1051,10552,10602,11169,11170,11223,11224,11225,11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241,11242,11243,11246,11247,11248,11249,11255,11260,11261,11262,11263,11264,11265,11266,11268,11269,11270,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304,11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,11315,11316,11317,11318,11319,11325,11327,11328,11330,11331,11333,11334,11335,11336,11340,11341,11342,11343,11344,11345,11349,11350,11351,11353,11354,11355,11358,11359,11360,11361,11362,11363,11364,11365,11369,11373,11374]
  groupData.groups['祭'].cnsongs = [1081,1085,1235,10070,10145,10190,10193,10202,10235,10302,10316,10404,10625,11346,11375,11376,11377,11378,11379,11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395,11398,11399,11400,11401,11402,11404,11405,11410,11411,11412,11413,11415,11418,11419,11422,11423,11424,11425,11426,11427,11428,11429,11432,11433,11434,11435,11436,11437,11438,11439,11441,11443,11444,11445,11446,11447,11448,11449,11451,11452,11453,11454,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11471,11472,11473,11474,11475,11477,11478,11479,11481,11482,11483,11484,11485,11486,11487,11488,11489,11490,11491,11495,11496,11497,11498,11499,11500,11502,11503,11504,11505,11506,11507,11508,11509,11510,11511,11512,11513,11514,11516,11517,11518,11519,11520,11521,11523,11524,11525,11565,11566,11568,11571,11572,11573,11574,11575,11576]
  groupData.groups['双'].cnsongs = [1103,10185,10204,10242,10251,10315,10366,10411,10535,10574,11526,11527,11528,11529,11530,11532,11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564,11567,11569,11570,11577,11578,11580,11583,11584,11585,11586,11587,11588,11589,11590,11591,11592,11593,11594,11596,11597,11598,11599,11600,11601,11602,11603,11604,11605,11606,11607,11608,11609,11610,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622,11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11636,11637,11638,11639,11640,11641,11642,11643,11645,11646,11647,11648,11650,11651,11652,11653,11654,11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11668]
}
function getGroupTotal(groupCondition) {
  const {groupName, condition} = groupCondition
  const total = [0,0,0,0,0]
  if (!server) return total
  const group = groupData.groups[groupName]
  if (!group) return total
  for (let i=0; i<4; i++) {
    total[i] = group[`${server}songs`].length
  }
  total[4] = group[`${server}remas`].length
  group.subgroup.forEach(g => {
    const subtotal = getGroupTotal({groupName:g, condition})
    for (let i=0; i<5; i++) total[i] += subtotal[i]
  })
  return total
}
const groupConditions = {
  clear: s => (s && s.score >=  80.0),
  fc:    s => (s && s.apfc  >=     1),
  sss:   s => (s && s.score >= 100.0),
  ap:    s => (s && s.apfc  >=     3),
  fsd:   s => (s && s.sync  >=     3),
}
function getGroupRemaining(groupCondition, data) {
  const {groupName, condition} = groupCondition
  const total = [0,0,0,0,0]
  if (!server) return total
  const group = groupData.groups[groupName]
  if (!group) return total
  group[`${server}songs`].forEach(sid => {
    let song = groupData.songinfo[sid]
    let name = song[0]
    for (let i=0; i<4; i++) {
      let score = data.score[[name,i,song[1][i]*3, sid<10000?'std':'dx'].join(',')]
      if (!groupConditions[condition](score)) total[i]++
    }
  })
  group[`${server}remas`].forEach(sid => {
    let song = groupData.songinfo[sid]
    let name = song[0]
    let i = 4
    let score = data.score[[name,i,song[1][i]*3, sid<10000?'std':'dx'].join(',')]
    if (!groupConditions[condition](score)) total[i]++
  })
  group.subgroup.forEach(g => {
    const subtotal = getGroupRemaining({groupName:g, condition}, data)
    for (let i=0; i<5; i++) total[i] += subtotal[i]
  })
  return total
}
function groupToCondition(g) {
  if (/^[真超檄橙暁桃櫻紫菫白雪輝舞熊華爽煌宙星祭祝双宴鏡](極|将|神|舞舞)$/.test(g)) {
    return {
      groupName: g[0],
      condition: {極:'fc',将:'sss',神:'ap',舞:'fsd'}[g[1]]
    }
  }
  return {
    '覇者':
      {groupName: '舞', condition: 'clear'},
    'Tyfp -でらっくす-':
      {groupName: 'Diamond', condition: 'clear'},
    'PERFECT Jewel [Diamond]':
      {groupName: 'Diamond', condition: 'ap'},
    'SYNC Jewel [Diamond]':
      {groupName: 'Diamond', condition: 'fsd'},
    'Tyfp -Splash-':
      {groupName: 'Emerald', condition: 'clear'},
    'PERFECT Jewel [Emerald]':
      {groupName: 'Emerald', condition: 'ap'},
    'SYNC Jewel [Emerald]':
      {groupName: 'Emerald', condition: 'fsd'},
    'Tyfp -UNiVERSE-':
      {groupName: 'Sapphire', condition: 'clear'},
    'PERFECT Jewel [Sapphire]':
      {groupName: 'Sapphire', condition: 'ap'},
    'SYNC Jewel [Sapphire]':
      {groupName: 'Sapphire', condition: 'fsd'},
    'Tyfp -FESTiVAL-':
      {groupName: 'Amethyst', condition: 'clear'},
    'PERFECT Jewel [Amethyst]':
      {groupName: 'Amethyst', condition: 'ap'},
    'SYNC Jewel [Amethyst]':
      {groupName: 'Amethyst', condition: 'fsd'},
    'Tyfp -BUDDiES-':
      {groupName: 'Topaz', condition: 'clear'},
    'PERFECT Jewel [Topaz]':
      {groupName: 'Topaz', condition: 'ap'},
    'SYNC Jewel [Topaz]':
      {groupName: 'Topaz', condition: 'fsd'},
  }[g]
}

function getDate(date) {
  date = `${date}`
  return new Date([date.substr(0,4),date.substr(4,2),date.substr(6,2)].join('-'))
}
function getScoreRank(s) {
  if (s >= 100.5) return 'sssp'
  if (s >= 100.0) return 'sss'
  if (s >= 99.5) return 'ssp'
  if (s >= 99.0) return 'ss'
  if (s >= 98.0) return 'sp'
  if (s >= 97.0) return 's'
  if (s >= 94.0) return 'aaa'
  if (s >= 90.0) return 'aa'
  if (s >= 80.0) return 'a'
  if (s >= 75.0) return 'bbb'
  if (s >= 70.0) return 'bb'
  if (s >= 60.0) return 'b'
  if (s >= 50.0) return 'c'
  return 'd'
}
function generateDayView(today, previous, next) {
  const view = _('div')
  const root = _('div', {}, [
    _('div', { className: 'screw_block m_15 f_15 scroll_point'}, [
      _('text', getDate(today.date).toLocaleString(undefined, {year:'numeric',month:'2-digit',day:'2-digit'}))
    ]),
    _('details', { open: '1' }, [
      view
    ])
  ])
  { // info
    // group counter
    const shownGroupNames = loadGroupSelection()
    if (shownGroupNames.length) {
      const shownGroups = shownGroupNames.map(groupToCondition)
      const groupTotal = shownGroups.map(getGroupTotal)
      const groupRemaining = shownGroups.map(g => getGroupRemaining(g, next))
      const groupRemainingBefore = shownGroups.map(g => getGroupRemaining(g, previous))
      const showRemas = groupTotal.filter(i => i[4] > 0).length > 0
      const groupTable = _('table', { className: 'playlog_notes_detail t_r f_11 m_15 score_group_table', style: { width: 'calc(100% - 30px)' } }, [
        _('tbody', {}, [
          _('tr', {}, [
            _('th'),
            _('td', { className: 't_c group_table_content' }, [_('img', {style:{height:'15px',verticalAlign:'bottom'},src:'https://maimaidx-eng.com/maimai-mobile/img/diff_basic.png',alt:'Basic'})]),
            _('td', { className: 't_c group_table_content' }, [_('img', {style:{height:'15px',verticalAlign:'bottom'},src:'https://maimaidx-eng.com/maimai-mobile/img/diff_advanced.png',alt:'Advanced'})]),
            _('td', { className: 't_c group_table_content' }, [_('img', {style:{height:'15px',verticalAlign:'bottom'},src:'https://maimaidx-eng.com/maimai-mobile/img/diff_expert.png',alt:'Expert'})]),
            _('td', { className: 't_c group_table_content' }, [_('img', {style:{height:'15px',verticalAlign:'bottom'},src:'https://maimaidx-eng.com/maimai-mobile/img/diff_master.png',alt:'Master'})]),
            _('td', { className: 't_c group_table_content' }, [_('img', {style:{height:'15px',verticalAlign:'bottom'},src:'https://maimaidx-eng.com/maimai-mobile/img/diff_remaster.png',alt:'ReMaster'})]),
          ])
        ]),
        _('style', {}, [_('text', showRemas ? '' : '.score_group_table.playlog_notes_detail tr td:nth-child(6){display:none}')])
      ])
      for (let i=0; i<shownGroupNames.length; i++) {
        const groupDiff = [
          groupRemainingBefore[i][0] - groupRemaining[i][0],
          groupRemainingBefore[i][1] - groupRemaining[i][1],
          groupRemainingBefore[i][2] - groupRemaining[i][2],
          groupRemainingBefore[i][3] - groupRemaining[i][3],
          groupRemainingBefore[i][4] - groupRemaining[i][4],
        ]
        const hasDiff = groupDiff.filter(i => i>0).length > 0
        groupTable.children[0].appendChild(_('tr', {}, [
          _('th', {}, [_('text', shownGroupNames[i])]),
          _('td', { className: 't_c group_table_content' + (groupRemaining[i][0]>0?'':' group_finished') }, [_('text', groupRemaining[i][0] +'/'+ groupTotal[i][0])].concat(!hasDiff ? [] : [_('br'), _('span', {style:{color:groupDiff[0]?'red':'transparent'}}, [_('text', `(-${groupDiff[0]})`)])])),
          _('td', { className: 't_c group_table_content' + (groupRemaining[i][1]>0?'':' group_finished') }, [_('text', groupRemaining[i][1] +'/'+ groupTotal[i][1])].concat(!hasDiff ? [] : [_('br'), _('span', {style:{color:groupDiff[1]?'red':'transparent'}}, [_('text', `(-${groupDiff[1]})`)])])),
          _('td', { className: 't_c group_table_content' + (groupRemaining[i][2]>0?'':' group_finished') }, [_('text', groupRemaining[i][2] +'/'+ groupTotal[i][2])].concat(!hasDiff ? [] : [_('br'), _('span', {style:{color:groupDiff[2]?'red':'transparent'}}, [_('text', `(-${groupDiff[2]})`)])])),
          _('td', { className: 't_c group_table_content' + (groupRemaining[i][3]>0?'':' group_finished') }, [_('text', groupRemaining[i][3] +'/'+ groupTotal[i][3])].concat(!hasDiff ? [] : [_('br'), _('span', {style:{color:groupDiff[3]?'red':'transparent'}}, [_('text', `(-${groupDiff[3]})`)])])),
          _('td', { className: 't_c group_table_content' + (groupRemaining[i][4]>0?'':' group_finished') }, [_('text', groupRemaining[i][4] +'/'+ groupTotal[i][4])].concat(!hasDiff ? [] : [_('br'), _('span', {style:{color:groupDiff[4]?'red':'transparent'}}, [_('text', `(-${groupDiff[4]})`)])])),
        ]))
      }
      view.appendChild(groupTable)
    }
    const leftCol = [], rightCol = []
    previous.userinfo = previous.userinfo||{};
    ['rating','sssp','sss','ssp','ss','sp','s','clear','dxstar_5','dxstar_4','dxstar_3','dxstar_2','dxstar_1'].forEach(k=>{
      if (today.data.userinfo[k] != previous.userinfo[k]) {
        leftCol.push([k, previous.userinfo[k]||0, today.data.userinfo[k]])
      }
    });
    ['playcount','app','ap','fcp','fc','fsdp','fsd','fsp','fs','sync'].forEach(k=>{
      if (today.data.userinfo[k] != previous.userinfo[k]) {
        rightCol.push([k, previous.userinfo[k]||0, today.data.userinfo[k]])
      }
    })
    const colHeight = Math.max(leftCol.length, rightCol.length)
    const infoView = _('div', { className: 'see_through_block m_15 m_t_0 p_10 p_r t_l f_0' }, [])
    for (let i=0; i<colHeight; i++) {
      if (leftCol[i]) {
        const cell = leftCol[i]
        infoView.appendChild(_('div', { className: 'musiccount_block t_r f_l f_0' }, [
          ['rating','playcount'].indexOf(cell[0]) !== -1
            ? _('div', { className: 'musiccount_img_block p_5 p_l_0 f_l f_11', style: {lineHeight: '30px', color: 'white', fontWeight: 'bold'} }, [_('text', {rating:'Rating',playcount:'Play Count'}[cell[0]])])
            : _('div', { className: 'musiccount_img_block f_l', style: {background: `#26b3fc center no-repeat url(/maimai-mobile/img/music_icon_${cell[0]}.png)`, backgroundSize: cell[0].substr(0, 6) === 'dxstar' ? '35px' : ''} }, [_('text', {rating:'Rating',playcount:'Play Count'}[cell[0]])]),
          _('div', { className: 'musiccount_counter_block f_13' }, [_('text', `${cell[1]} => ${cell[2]}`)]),
        ]))
      }
      if (rightCol[i]) {
        const cell = rightCol[i]
        const cellIcon = ['fsd','fsdp'].indexOf(cell[0]) === -1 ? cell[0] : (cell[0] === 'fsd' ? verConfig.fullsyncdx : verConfig.fullsyncdxp)
        infoView.appendChild(_('div', { className: 'musiccount_block t_r f_l f_0' }, [
          ['rating','playcount'].indexOf(cell[0]) !== -1
            ? _('div', { className: 'musiccount_img_block p_5 p_l_0 f_l f_11', style: {lineHeight: '30px', color: 'white', fontWeight: 'bold'} }, [_('text', {rating:'Rating',playcount:'Play Count'}[cell[0]])])
            : _('div', { className: 'musiccount_img_block f_l', style: {background: `#26b3fc center no-repeat url(/maimai-mobile/img/music_icon_${cellIcon}.png)`} }, [_('text', {rating:'Rating',playcount:'Play Count'}[cell[0]])]),
          _('div', { className: 'musiccount_counter_block f_13' }, [_('text', `${cell[1]} => ${cell[2]}`)]),
        ]))
      }
      infoView.appendChild(_('div', { className: 'clearfix' }))
    }
    view.appendChild(infoView)
    view.appendChild(_('img', { className: 'w_450', src: '/maimai-mobile/img/line_02.png'}))
  } // /info
  { // map
    const mapView = _('div')
    today.data.map.forEach(m => {
      mapView.appendChild(_('div', {}, [
        _('div', { className: 'map_name_block t_c f_12 m_auto' }, [_('div', { className: 'map_name_block_inner' }, [_('text', m.name)])]),
        m.isComplete ? _('div', { className: 'w_180 h_30 m_t_10 p_r f_l' }, [_('img', { className: 'map_comp_img', src: '/maimai-mobile/img/map_complete.png' })]) : _('text', ''),
        _('div', { className: ('w_280 ' + (m.isComplete ? 'f_r' : 'm_auto')) }, [
          _('div', { className: 'see_through_block w_270 m_t_5 m_l_10 p_10 p_b_0' }, [_('div', { className: 't_r p_5 p_r_10 f_11' }, [_('text', `${(previous.map[m.name]||{}).distance||0} => ${m.distance} Km`)])]),
          _('form', { className: 'm_t_5 t_r', action: m.detailIdx ? '/maimai-mobile/map/eventMapDetail/' : '/maimai-mobile/map/mapDetail/', acceptCharset: 'utf-8'}, [
            _('input', { type: 'hidden', name: 'idx', value: m.linkIdx}),
            m.detailIdx ? _('input', { type: 'hidden', name: 'detailIdx', value: m.detailIdx}) : _('text', ''),
            _('button', { className: 'f_0', type: 'submit' }, [_('img', { className: 'w_84', src: '/maimai-mobile/img/btn_detail.png' })]),
          ])
        ]),
        _('div', { className: 'clearfix' }),
      ]))
    })
    view.appendChild(mapView)
    view.appendChild(_('img', { className: 'w_450', src: '/maimai-mobile/img/line_02.png'}))
  } // /map
  { // score
    const scoreView = _('div')
    today.data.score.forEach(s => {
      const dif = ['basic','advanced','expert','master','remaster'][s.difficulty]
      const prevScore = new SongScore(previous.score[[s.name,s.difficulty,s.dxscoremax,s.kind].join(',')] || {name:s.name,difficulty:s.difficulty,score:0,dxscore:0,dxscorerank:0,dxscoremax:s.dxscoremax,apfc:0,sync:0,kind:s.kind})
      scoreView.appendChild(_('div', { className: `music_${dif}_score_back w_450 m_15 p_3 f_0`}, [
        _('img', { className: 'h_20 f_l', src:`/maimai-mobile/img/diff_${dif}.png` }),
        _('img', { className: 'music_kind_icon f_r', src:'/maimai-mobile/img/music_'+({dx:'dx',std:'standard'}[s.kind])+'.png' }),
        _('div', { className: 'clearfix' }),
        _('div', { className: 'music_name_block t_l f_13 break f_l', style: {width: '120px', background: 'transparent', color: 'black'} }, [_('text', s.name)]),
        prevScore.isEmpty() ? _('text', '') : _('div', { className: 't_l f_r m_b_5' }, [
          _('img', { className: 'p_t_5 v_t', src:`/maimai-mobile/img/music_icon_${getScoreRank(prevScore.score)}.png` }),
          _('img', { className: 'h_45 v_t', src:`/maimai-mobile/img/music_icon_${['back','fc','fcp','ap','app'][prevScore.apfc]}.png` }),
          _('img', { className: 'h_45 m_r_10 v_t', src:`/maimai-mobile/img/music_icon_${['back','fs','fsp',verConfig.fullsyncdx,verConfig.fullsyncdxp][prevScore.sync]}.png` }),
          _('div', { className: 'black_block w_160 p_3 p_r_5 d_ib f_11' }, [
            _('span', {}, [_('text', `${prevScore.score.toFixed(4)} %`)]),
            _('br'),
            _('span', {}, [_('text', `${prevScore.dxscore} / ${s.dxscoremax}`), prevScore.dxscorerank > 1000000 ? _('img', {className: 'w_80 p_l_10 f_r', src: `/maimai-mobile/img/music_icon_dxstar_detail_${Math.floor(prevScore.dxscorerank/1000000)}.png`}) : _('text', '')])
          ])
        ]),
        _('div', { className: 't_l f_r' }, [
          _('img', { className: 'p_t_5 v_t', src:`/maimai-mobile/img/music_icon_${getScoreRank(s.score)}.png` }),
          _('img', { className: 'h_45 v_t', src:`/maimai-mobile/img/music_icon_${['back','fc','fcp','ap','app'][s.apfc]}.png` }),
          _('img', { className: 'h_45 m_r_10 v_t', src:`/maimai-mobile/img/music_icon_${['back','fs','fsp',verConfig.fullsyncdx,verConfig.fullsyncdxp][s.sync]}.png` }),
          _('div', { className: 'black_block w_160 p_3 p_r_5 d_ib f_11' }, [
            _('span', {}, [_('text', `${s.score.toFixed(4)} %`)]),
            _('br'),
            _('span', {}, [_('text', `${s.dxscore} / ${s.dxscoremax}`), s.dxscorerank > 1000000 ? _('img', {className: 'w_80 p_l_10 f_r', src: `/maimai-mobile/img/music_icon_dxstar_detail_${Math.floor(s.dxscorerank/1000000)}.png`}) : _('text', '')])
          ])
        ]),
        _('div', { className: 'clearfix' }),
      ]))
    })
    view.appendChild(scoreView)
  } // /score
  return root
}
async function showTodayResult() {
  createUpdateNotice('Checking previous data', '1485bf', { keepBeforeNextNotice: true })
  const friendId = await getFriendId()
  const data = await chkDataAndSync(friendId)
  renderPage()
  createUpdateNotice('Done', '1485bf')
}
async function renderPage(page = 1) {
  const friendId = await getFriendId()
  const data = await getLocalData(friendId)
  // 1.40 net
  data.forEach(i => {
    if (i.data.userinfo.fdx) {
      verConfig.fullsyncdx = 'fdx'
      verConfig.fullsyncdxp = 'fdxp'
      i.data.userinfo.fsd = i.data.userinfo.fdx
      i.data.userinfo.fsdp = i.data.userinfo.fdxp
    }
  })
  const views = []
  const pages = Math.ceil((data.length - 1) / 5)
  const renderRange = [Math.max(1, data.length - (page * 5)), Math.max(1, data.length - (page * 5 - 4))]
  const renderRangeDate = []
  let previous = constructPreviousByData([data[0]])
  for (let i=1; i<data.length; i++) {
    let next = constructPreviousByData([data[i]], previous)
    if (i >= renderRange[0] && i <= renderRange[1]) views.push(generateDayView(data[i], previous, next))
    if (i <= renderRange[0]) renderRangeDate[0] = getDate(data[i].date).toLocaleString(undefined, {year:'numeric',month:'2-digit',day:'2-digit'})
    if (i <= renderRange[1]) renderRangeDate[1] = getDate(data[i].date).toLocaleString(undefined, {year:'numeric',month:'2-digit',day:'2-digit'})
    previous = next
  }
  let oldView = document.getElementById('today_result_view_container')
  if (oldView) oldView.remove()
  views.push(generateGroupSelectTable())
  views.push(generatePageControl(renderRangeDate, page, pages))
  views.unshift(generatePageControl(renderRangeDate, page, pages))
  document.querySelector('.main_wrapper').appendChild(_('div', { id: 'today_result_view_container' }, views.reverse()))
  window.scrollTo(0, document.getElementById('today_result_view_container').offsetTop)
}
function generateGroupSelectTable() {
  const view = _('details', { className: 'm_10' }, [_('summary', {}, [_('text', 'Choose group to count')])])
  const table = view.appendChild(_('table', { border: 1, className: 'MNTR-group-selection f_13'}, [_('tbody', {}, [
    _('tr', {}, [
      _('th'),
      _('td', {colspan: 2}, [_('text', 'Clear')]),
      _('td', {colspan: 2}),
    ]),
    _('tr', {}, [
      _('th'),
      _('td', {}, [_('text', 'FC')]),
      _('td', {}, [_('text', 'SSS')]),
      _('td', {}, [_('text', 'AP')]),
      _('td', {}, [_('text', 'FSDX')]),
    ]),
  ])]))
  groupList.forEach(g => {
    const [name, type, groups] = g
    switch (type) {
      case 'version': {
        table.children[0].appendChild(_('tr', {}, [
          _('th', {}, [_('text', name)]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[0], event: { change: saveGroupSelection } }), _('text', groups[0])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[1], event: { change: saveGroupSelection } }), _('text', groups[1])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[2], event: { change: saveGroupSelection } }), _('text', groups[2])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[3], event: { change: saveGroupSelection } }), _('text', groups[3])])]),
        ]))
        break;
      }
      case 'std-all': {
        table.children[0].appendChild(_('tr', {}, [
          _('th', { rowspan: 2 }, [_('text', name)]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[0], event: { change: saveGroupSelection } }), _('text', groups[0])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[1], event: { change: saveGroupSelection } }), _('text', groups[1])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[2], event: { change: saveGroupSelection } }), _('text', groups[2])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[3], event: { change: saveGroupSelection } }), _('text', groups[3])])]),
        ]))
        table.children[0].appendChild(_('tr', {}, [
          _('td', { colspan: 4 }, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[4], event: { change: saveGroupSelection } }), _('text', groups[4])])]),
        ]))
        break;
      }
      case 'dx-2-version': {
        table.children[0].appendChild(_('tr', {}, [
          _('th', {}, [_('text', name)]),
          _('td', { colspan: 2 }, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[0], event: { change: saveGroupSelection } }), _('text', groups[0])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[1], event: { change: saveGroupSelection } }), _('text', groups[1])])]),
          _('td', {}, [_('label', {}, [_('input', { type: 'checkbox', 'data-group': groups[2], event: { change: saveGroupSelection } }), _('text', groups[2])])]),
        ]))
        break;
      }
    }
  })
  restoreGroupSelection(view)
  view.appendChild(_('div', {}, [_('text', '「Show today data」 again to reflect changes')]))
  return view
}
function loadGroupSelection() {
  try {
    return JSON.parse(localStorage.mntr_group_selection)
  } catch (e) {
    return []
  }
}
function restoreGroupSelection(view) {
  const list = loadGroupSelection()
  Array.from(view.querySelectorAll('input[data-group]')).forEach(i => i.checked = list.indexOf(i.dataset.group) !== -1)
}
function saveGroupSelection() {
  localStorage.mntr_group_selection = JSON.stringify(Array.from(document.querySelectorAll('input[data-group]')).filter(i => i.checked).map(i => i.dataset.group))
}
function generatePageControl(dateRange, page, pages) {
  return _('div', {}, [
    _('button', { className: page === 1     ? 'gray_img no_click ' : '', style: { width: '45px', height: '45px' }, 'data-page': 1,        event: {click: pagingClick}}, [_('img', { className: 'h_45', src: '/maimai-mobile/img/btn_first.png', alt: 'first'})]),
    _('button', { className: page <= 1      ? 'gray_img no_click ' : '', style: { width: '45px', height: '45px' }, 'data-page': page - 1, event: {click: pagingClick}}, [_('img', { className: 'h_45', src: '/maimai-mobile/img/btn_prev.png', alt: 'prev'})]),
    _('div', { className: 'd_ib v_t h_45 f_14 l_h_10', style: { whiteSpace: 'pre-wrap', padding: '0 15px' }}, [_('text', dateRange.join('\n~\n'))]),
    _('button', { className: page >= pages  ? 'gray_img no_click ' : '', style: { width: '45px', height: '45px' }, 'data-page': page + 1, event: {click: pagingClick}}, [_('img', { className: 'h_45', src: '/maimai-mobile/img/btn_next.png', alt: 'next'})]),
    _('button', { className: page === pages ? 'gray_img no_click ' : '', style: { width: '45px', height: '45px' }, 'data-page': pages,    event: {click: pagingClick}}, [_('img', { className: 'h_45', src: '/maimai-mobile/img/btn_last.png', alt: 'last'})]),
  ])
}
function pagingClick() {
  const page = parseInt(this.dataset.page)
  if (!isNaN(page)) renderPage(page)
}

window.today_result = {
  loadAllScores,
  getToday,
  uploadToday,
  getUserInfo,
  loadAllMaps,
  constructPrevious,
  calcTodayNew,
  getPreviousData,
  getPreviousDataKeyed,
  getLastPlayDate,
  chkDataAndSync,
  showTodayResult,
}

document.querySelector('.spmenu_navigation .p_5.p_b_10').parentNode.appendChild(
  _('div', { className: 'p_5 p_b_10 f_14' }, [
    _('style', {}, [_('text', '.MNTR-Side-Notice{color:#fff;position:fixed;right:0;padding:10px;width:230px;min-height:20px;line-height:20px;font-size:15px;background:#000;z-index:200;opacity:.8;animation-duration:.5s;animation-name:notice-in;word-break:break-all;white-space:pre-wrap}.MNTR-Side-Notice .after{content:"";position:absolute;top:0;right:100%;height:0;width:0;border:0 solid transparent;padding:0;margin:0}.playlog_notes_detail tr td.group_table_content{color:black}.MNTR-group-selection input[type=checkbox]:not(#favorite){position:initial;opacity:initial}.no_click{pointer-events:none}.playlog_notes_detail tr td.group_finished{color:#0B0}')]),
    _('div', {className: 'd_ib col2 p_l_10 p_r_10'}, [
      _('div', {className: 'screw_block', event: {click: uploadToday}}, [_('text', 'Upload today score')])
    ]),
    _('div', {className: 'd_ib col2 p_l_10 p_r_10'}, [
      _('div', {className: 'screw_block', event: {click: showTodayResult}}, [_('text', 'Show today result')])
    ]),
  ])
)