{"version":3,"sources":["webpack://echartsExample/webpack/bootstrap","webpack://echartsExample/src/editor/CodeAce.vue","webpack://echartsExample/src/editor/CodeMonaco.vue","webpack://echartsExample/src/editor/Editor.vue","webpack://echartsExample/src/editor/Preview.vue","webpack://echartsExample/src/editor/View.vue","webpack://echartsExample/src/explore/ExampleCard.vue","webpack://echartsExample/src/explore/Explore.vue","webpack://echartsExample/./node_modules/lodash/_Symbol.js","webpack://echartsExample/./node_modules/lodash/_baseGetTag.js","webpack://echartsExample/./node_modules/lodash/_freeGlobal.js","webpack://echartsExample/./node_modules/lodash/_getRawTag.js","webpack://echartsExample/./node_modules/lodash/_objectToString.js","webpack://echartsExample/./node_modules/lodash/_root.js","webpack://echartsExample/./node_modules/lodash/debounce.js","webpack://echartsExample/./node_modules/lodash/isObject.js","webpack://echartsExample/./node_modules/lodash/isObjectLike.js","webpack://echartsExample/./node_modules/lodash/isSymbol.js","webpack://echartsExample/./node_modules/lodash/now.js","webpack://echartsExample/./node_modules/lodash/toNumber.js","webpack://echartsExample/./src/editor/CodeAce.vue?a2ca","webpack://echartsExample/./src/editor/CodeMonaco.vue?059e","webpack://echartsExample/./src/editor/Editor.vue?7a86","webpack://echartsExample/./src/editor/Preview.vue?1f0a","webpack://echartsExample/./src/explore/ExampleCard.vue?d97b","webpack://echartsExample/./src/explore/Explore.vue?3912","webpack://echartsExample/./node_modules/resize-detector/esm/index.js","webpack://echartsExample/./node_modules/scroll-into-view/scrollIntoView.js","webpack://echartsExample/./node_modules/vanilla-lazyload/dist/lazyload.esm.js","webpack://echartsExample/./node_modules/vue-i18n/dist/vue-i18n.esm.js","webpack://echartsExample/./src/editor/CodeAce.vue?b413","webpack://echartsExample/./src/editor/CodeMonaco.vue?b73a","webpack://echartsExample/./src/editor/Editor.vue?a6de","webpack://echartsExample/./src/editor/Preview.vue?1e91","webpack://echartsExample/./src/editor/View.vue?ea0e","webpack://echartsExample/./src/explore/ExampleCard.vue?3884","webpack://echartsExample/./src/explore/Explore.vue?7f63","webpack://echartsExample/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://echartsExample/./node_modules/vue-scrollactive/dist/vue-scrollactive.min.js","webpack://echartsExample/(webpack)/buildin/global.js","webpack://echartsExample/./src/asset/placeholder.jpg","webpack://echartsExample/./src/common/config.js","webpack://echartsExample/./src/common/helper.js","webpack://echartsExample/./src/common/i18n.js","webpack://echartsExample/./src/common/store.js","webpack://echartsExample/./src/data/chart-list-data-gl.js","webpack://echartsExample/./src/data/chart-list-data.js","webpack://echartsExample/./src/data/option-keywords.js","webpack://echartsExample/./src/dep/showDebugDirtyRect.js","webpack://echartsExample/./src/editor/CodeAce.vue","webpack://echartsExample/./src/editor/CodeAce.vue?03d9","webpack://echartsExample/./src/editor/CodeAce.vue?a765","webpack://echartsExample/./src/editor/CodeAce.vue?4fab","webpack://echartsExample/./src/editor/CodeMonaco.vue","webpack://echartsExample/./src/editor/CodeMonaco.vue?439c","webpack://echartsExample/./src/editor/CodeMonaco.vue?5a6f","webpack://echartsExample/./src/editor/CodeMonaco.vue?8bdb","webpack://echartsExample/./src/editor/Editor.vue","webpack://echartsExample/./src/editor/Editor.vue?f741","webpack://echartsExample/./src/editor/Editor.vue?5042","webpack://echartsExample/./src/editor/Editor.vue?421b","webpack://echartsExample/./src/editor/Preview.vue","webpack://echartsExample/./src/editor/Preview.vue?495e","webpack://echartsExample/./src/editor/Preview.vue?8a8e","webpack://echartsExample/./src/editor/Preview.vue?670b","webpack://echartsExample/./src/editor/View.vue","webpack://echartsExample/./src/editor/View.vue?aaee","webpack://echartsExample/./src/editor/View.vue?51ec","webpack://echartsExample/./src/editor/downloadExample.js","webpack://echartsExample/./src/editor/sandbox.js","webpack://echartsExample/./src/explore/ExampleCard.vue","webpack://echartsExample/./src/explore/ExampleCard.vue?ec6a","webpack://echartsExample/./src/explore/ExampleCard.vue?9ab5","webpack://echartsExample/./src/explore/ExampleCard.vue?62f4","webpack://echartsExample/./src/explore/Explore.vue","webpack://echartsExample/./src/explore/Explore.vue?3d60","webpack://echartsExample/./src/explore/Explore.vue?d857","webpack://echartsExample/./src/explore/Explore.vue?21ba","webpack://echartsExample/./src/main.js","webpack://echartsExample/external \"Vue\""],"names":["EXAMPLE_CATEGORIES","THEMES","dark","BLACK_MAP","list","map","i","length","location","href","indexOf","URL_PARAMS","search","substr","split","forEach","item","kv","SUPPORT_WEBP","elem","document","createElement","width","height","getContext","toDataURL","SCRIPT_URLS","localEChartsMinJS","echartsMinJS","echartsDir","echartsStatMinJS","echartsGLMinJS","datGUIMinJS","monacoDir","aceDir","promisesCache","loadScriptsAsync","scripts","Promise","all","scriptUrl","url","type","match","promise","resolve","reject","script","src","async","onload","onerror","body","appendChild","link","rel","en","editor","run","errorInEditor","chartOK","darkMode","enableDecal","renderCfgTitle","renderer","useDirtyRect","download","edit","monacoMode","chartTypes","line","bar","pie","scatter","candlestick","radar","boxplot","heatmap","graph","lines","tree","treemap","sunburst","parallel","sankey","funnel","gauge","pictorialBar","themeRiver","calendar","custom","dataset","dataZoom","drag","rich","globe","bar3D","scatter3D","surface","map3D","lines3D","line3D","scatterGL","linesGL","flowGL","graphGL","zh","store","cdnRoot","version","locale","theme","typeCheck","code","runCode","sourceCode","isMobile","window","innerWidth","editorStatus","message","loadExampleCode","dataRoot","gl","$","ajax","c","dataType","success","data","parseSourceCode","replace","trim","keywords","fullKeywordsList","DebugRect","style","dom","className","Object","assign","backgroundColor","border","cssText","key","hasOwnProperty","prototype","update","rect","domStyle","left","x","top","y","hide","opacity","show","_this","clearTimeout","_hideTimeout","setTimeout","zr","opts","painter","getLayers","Error","isSingleCanvas","debugViewRoot","debugRects","computedStyle","getComputedStyle","position","on","idx_1","eachBuiltinLayer","layer","debugGetPaintRects","paintRects","hasRootPath","rootPathCode","file","Blob","encoding","a","URL","createObjectURL","click","createSandbox","optionUpdated","appEnv","gui","_intervalIdList","_timeoutIdList","_oldSetTimeout","_oldSetInterval","setInterval","func","delay","id","push","gap","_clearTimeTickers","clearInterval","_events","_wrapOnMethods","chart","oldOn","oldSetOption","setOption","eventName","res","apply","arguments","_clearChartEvents","off","chartInstance","resize","dispose","getDataURL","pixelRatio","excludeComponents","el","echarts","init","showDebugDirtyRect","getZr","autoHideDelay","e","console","error","config","compiledCode","Function","option","updateTime","startTime","Date","endTime","domElement","remove","destroy","dat","GUI","autoPlace","css","right","zIndex","append","configParameters","name","value","isColor","controller","options","add","min","max","obj","colorArr","color","parse","stringify","onChange","onFinishChange","Vue","use","VueScrollactive","i18n","VueI18n","fallbackLocale","messages","querySelector","container","render","h","EditorPage","explore","ExplorePage","view","ViewPage","page"],"mappings":";;QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;;;;;;;;;;AC5EA;AACA;AACA;AACA;;AAEA;AACA;AACA,oFACA,6EADA,EAEA,4FAFA,GAGA,IAHA,CAGA;AACA;;AAEA;;AACA;AACA;AACA,sBADA;AAEA,oBAFA;AAGA,oFAHA;AAIA;AAJA;AAMA;;AAEA;AACA;AACA;AACA;AAHA;AAKA,KArBA;AAsBA;;AACA;AACA;;AAEA;AAEA,wBAFA;AAIA,MAJA,kBAIA;AACA;AACA,iEADA;AAEA;AAFA;AAIA,GATA;AAWA,SAXA,qBAWA;AAAA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCADA;AAEA,4BAFA;AAGA;AAHA;AAMA;AAEA;AACA,yEACA,+EADA;AAEA,OAHA;;AAKA;AACA;AACA;AACA,KApBA;AAqBA,GAlCA;AAoCA;AACA,kBADA,0BACA,IADA,EACA;AACA;AACA;;AACA;AACA;AACA,kBADA;AAEA;AAFA,WADA;AAIA;AACA,kBADA;AAEA;AAFA;AAJA;AASA;AACA;AAdA,GApCA;AAqDA;AACA,eADA,uBACA,MADA,EACA;AACA;AACA;AAHA;AArDA,G;;;;;;;;;;;;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AADA,KAEA,IAFA,CAEA;AAAA;AAAA,GAFA,EAEA,IAFA,CAEA;AAEA;AACA;AACA,iCADA;AAEA;AAFA,OAHA,CAQA;;AACA;AACA,0DADA;AAEA,gCAFA;AAGA;AAHA,OATA,CAeA;;AACA,+DACA,IADA,EAEA;AACA,oDAHA;AAMA,woBAyBA,sBAzBA;AA2BA;AACA,GApDA;AAqDA;;AAEA;AACA;AACA;AACA,sFACA,mFADA,EAEA;AACA,wGAHA,GAIA,IAJA,CAIA;AACA;AAAA;AAAA;AAAA;AAAA;;AACA;AACA,0BACA,uBADA,GAEA;AACA;AACA;AACA,aAFA;AAGA,WANA;AAOA,SARA;AASA,OAfA;AAgBA;;AACA;AACA,GArBA,CAuBA;;;AACA;AACA;;AAEA;AAEA,wBAFA;AAIA,MAJA,kBAIA;AACA;AACA,iEADA;AAEA;AAFA;AAIA,GATA;AAWA,SAXA,qBAWA;AAAA;;AACA;AACA;AACA;AACA,4CACA,uBADA,EAEA,YAFA,EAGA;AACA,yCAJA;AAMA;AACA,oBADA;AAEA,gGAFA;AAGA;AACA;AADA,SAHA;AAMA;AANA;AASA;;AAEA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,OAHA;AAIA,KA3BA;AA4BA,GAzCA;AA2CA,WA3CA,uBA2CA;AACA;AACA;;AACA;AACA;AACA,GAhDA;AAkDA;AACA,kBADA,0BACA,IADA,EACA;AACA;AACA;AACA;AACA;AALA,GAlDA;AA0DA;AACA,eADA,uBACA,MADA,EACA;AACA;AACA;AAHA;AA1DA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA,iEADA;AAEA,uEAFA;AAGA;AAHA,GADA;AAOA,MAPA,kBAOA;AACA;AACA,sBADA;AAEA,2BAFA;AAGA,uBAHA;AAIA,iEAJA;AAKA;AALA;AAOA,GAfA;AAiBA;AACA,eADA,yBACA;AACA;AACA;AAEA;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA;AACA;AAfA,GAjBA;AAmCA,SAnCA,qBAmCA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAHA;AAIA,KANA,MAOA;AACA;AACA;AACA;AACA,OAHA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA,OANA;AAQA;AACA;AACA,OAFA;AAGA;AACA,GA9DA;AAgEA;AACA,uBADA,iCACA;AACA;AACA,KAHA;AAIA,iBAJA,2BAIA;AACA;AACA;AANA,GAhEA;AAyEA;AACA,sBADA,2BACA,eADA,EACA;AACA;AACA;AACA;AAJA;AAzEA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACyBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAAA;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AAEA,+DAFA,CAIA;;AACA;AACA;AACA;AACA;;AAEA,oFACA,sEADA,EAEA,uEACA,4EADA,GACA,uEAHA,EAIA,qGAJA,EAKA,4DALA,EAMA,2EANA,4BAOA,+IAPA,sBAQA,WACA,0GADA,EAEA,iGAFA,IAGA,EAXA,IAYA,IAZA,CAYA;AACA;AACA,KAdA;AAeA;;AACA;AACA;;AAGA;AACA;AACA;AACA;;AACA;AACA;AACA;;AAGA;AAAA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,OAFA,MAGA;AACA;AACA;AACA,KARA;AASA;;AAEA;AACA;AAEA,uDAHA,CAKA;;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;AADA;AAGA;AACA;AACA;AACA;AACA,GAnBA,CAoBA;AACA;AACA;AACA;AACA;;AAGA;AAEA,qBAFA;AAIA,MAJA,kBAIA;AACA;AACA,iEADA;AAEA,8BAFA;AAGA,yBAHA;AAIA,mBAJA;AAKA;AALA;AAOA,GAZA;AAcA,SAdA,qBAcA;AAAA;;AACA;AACA;AACA;;AACA;AACA;AACA;AACA,KALA;AAOA;AACA;AACA;AACA;AACA,KAJA;AAKA,GA5BA;AA8BA;AACA,YADA,sBACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AAVA,GA9BA;AA2CA;AACA,oBADA,yBACA,GADA,EACA;AACA;AACA;AACA;AACA;AACA,SAHA,MAIA;AACA;AACA;AACA;AACA,KAXA;AAYA,qBAZA,4BAYA;AACA;AACA,KAdA;AAeA,qBAfA,4BAeA;AACA;AACA,KAjBA;AAkBA,wBAlBA,+BAkBA;AACA;AACA,KApBA;AAqBA,yBArBA,gCAqBA;AACA;AACA;AAvBA,GA3CA;AAqEA;AACA,YADA;AAEA;AACA;AACA,cAJA,wBAIA;AACA;AACA;AACA,KAPA;AAQA,WARA,qBAQA;AACA;AACA;AACA;AACA,KAZA;AAaA,mBAbA,6BAaA;AACA;AACA,KAfA;AAgBA,cAhBA,wBAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBADA;AAEA;AAFA;AAIA;AACA;AACA,KA7BA,CA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAtCA;AArEA,G;;;;;;;;;;;;;;;;;;;AC/JA;AACA;AAEA;AACA;AACA;AADA,GADA;AAKA,SALA,qBAKA;AACA;AACA;AACA,KAFA;AAGA;AATA,G;;;;;;;;;;;;;;;;;;;;;;;;;ACGA;AACA;AAEA;AACA,oBADA;AAGA;AAEA,SAFA,mBAEA;AACA,kIACA,kBADA,IACA,EADA;AAEA,KALA;AAOA,gBAPA,0BAOA;AACA;AACA,KATA;AAWA,YAXA,sBAWA;AACA;AACA,KAbA;AAeA,gBAfA,0BAeA;AACA;AACA;AACA,KAlBA;AAoBA,eApBA,yBAoBA;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA,KArCA;AAuCA,iBAvCA,2BAuCA;AACA;AACA;AACA;AACA;AACA;AACA;AA7CA;AAHA,G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC0CA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AADA,GAFA;AAMA,MANA,kBAMA;AACA;;AAEA;AACA,4BADA,CAEA;;AACA;AACA;;AACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA;;AAEA;;AACA;AACA;AACA;;AACA;AACA;AACA,qCADA;AAEA;AAFA;AAIA;AACA;;AACA;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OA/BA,QA+BA,oCA/BA,EAHA,CAkCA;;AACA;;AAEA;AACA;AAEA;AACA,iEADA;AAGA,2FAHA;AAIA;AACA;AACA;AACA;AACA;AACA;AATA;AAWA,GA5DA;AA8DA;AACA,qBADA,4BACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AATA,GA9DA;AA0EA;AACA,eADA,yBACA;AACA;;AACA;AACA;AACA;;AACA;AACA;AACA,8BADA;AAEA;AAFA;AAIA;AACA;;AACA;AACA;AAdA,GA1EA;AA2FA,SA3FA,qBA2FA;AACA;AACA;AACA;AACA,yCAHA;AAIA,qBAJA;AAKA;AALA;AAOA,GAnGA;AAqGA;AACA,sBADA,8BACA,KADA,EACA,WADA,EACA,cADA,EACA,CACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAbA;AArGA,G;;;;;;;;;;;ACnEA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;;AAEA;;;;;;;;;;;;ACLA,aAAa,mBAAO,CAAC,mDAAW;AAChC,gBAAgB,mBAAO,CAAC,yDAAc;AACtC,qBAAqB,mBAAO,CAAC,mEAAmB;;AAEhD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC3BA;AACA;;AAEA;;;;;;;;;;;;;ACHA,aAAa,mBAAO,CAAC,mDAAW;;AAEhC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC7CA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACrBA,iBAAiB,mBAAO,CAAC,2DAAe;;AAExC;AACA;;AAEA;AACA;;AAEA;;;;;;;;;;;;ACRA,eAAe,mBAAO,CAAC,qDAAY;AACnC,UAAU,mBAAO,CAAC,2CAAO;AACzB,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO,YAAY;AAC9B,WAAW,QAAQ;AACnB;AACA,WAAW,OAAO;AAClB;AACA,WAAW,QAAQ;AACnB;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,8CAA8C,kBAAkB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,iBAAiB,mBAAO,CAAC,2DAAe;AACxC,mBAAmB,mBAAO,CAAC,6DAAgB;;AAE3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;AC5BA,WAAW,mBAAO,CAAC,+CAAS;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACtBA,eAAe,mBAAO,CAAC,qDAAY;AACnC,eAAe,mBAAO,CAAC,qDAAY;;AAEnC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;ACjEA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;ACAA,uC;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,2CAA2C;AAC3C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,kBAAkB,UAAU,oBAAoB,iGAAiG,aAAa,kBAAkB,MAAM,OAAO,YAAY,WAAW,gBAAgB,gDAAgD,gBAAgB,cAAc,gCAAgC,WAAW,YAAY;;AAErY;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,4BAA4B;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,WAAW,qBAAqB;AAChC;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,OAAO,gBAAgB;AACvB,OAAO,4BAA4B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,qBAAqB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,gCAAgC;;AAEvC;AACA,OAAO,sCAAsC;AAC7C,OAAO,2EAA2E;;AAElF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEuC;;;;;;;;;;;;ACvSvC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iDAAiD;;AAEjD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;ACvQA;AAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU,WAAW,EAAE;AAC/D,EAAE;AACF;AACA;AACA,oDAAoD,WAAW;AAC/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,8BAA8B,4BAA4B;AAC1D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B,oCAAoC;AAC9D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0CAA0C,aAAa;AACvD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEe,uEAAQ,EAAC;;;;;;;;;;;;;ACzexB;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,WAAW;AACX,gBAAgB,IAAqC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,WAAW;AACX,gBAAgB,IAAqC;AACrD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,YAAY,IAAqC;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP,YAAY,IAAqC;AACjD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;;AAEH;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;;AAEA;AACA;;AAEA,kBAAkB;;AAElB;AACA;AACA;AACA,GAAG;;AAEH;AACA,MAAM,KAAqC;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,IAAqC;AAC3C;AACA;;AAEA;AACA,wCAAwC;AACxC,sBAAsB;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC;AACnC,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;;AAEA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA,0EAA0E;;AAE1E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,UAAU;AACV;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,6CAA6C;AACnE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qBAAqB,4BAA4B;AACjD;;AAEA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA,mBAAmB,yBAAyB;AAC5C,KAAK;AACL;AACA,mCAAmC;AACnC;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,uBAAuB,4BAA4B;;AAEnD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,cAAc,IAAqC;AACnD;AACA;AACA;AACA;AACA;AACA,YAAY,IAAqC;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wCAAwC;;AAExC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;AAMA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB;;AAEvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;AAIA,sCAAsC;AACtC;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC,EAAE;AAC7D,2BAA2B,gCAAgC,EAAE;AAC7D,gCAAgC,qEAAqE;AACrG;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,OAAO;AAC3B,2BAA2B,OAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AAGA;AACA,2BAA2B;AAC3B,2DAA2D;AAC3D;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,0BAA0B,MAAM,qBAAqB,YAAY,qBAAqB,mBAAmB,qBAAqB,iBAAiB,qBAAqB,oBAAoB,qBAAqB,UAAU,qBAAqB,kBAAkB,qBAAqB,0BAA0B,qBAAqB,WAAW,qBAAqB,aAAa,qBAAqB,yBAAyB,qBAAqB,sBAAsB,qBAAqB,4BAA4B,qBAAqB,qBAAqB,qBAAqB,mBAAmB,qBAAqB;;AAEhmB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG,GAAG,aAAa;AACnB;;AAEA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,GAAG,GAAG,kBAAkB;AACxB;;AAEA;AACA;AACA;AACA;AACA;;AAEA,yCAAyC;;AAEzC,+CAA+C;AAC/C,sDAAsD;AACtD,oDAAoD;AACpD,uDAAuD;;AAEvD,6CAA6C;AAC7C;AACA;AACA;;AAEA,qDAAqD;AACrD;AACA;AACA;AACA;;AAEA,6DAA6D;AAC7D,qEAAqE,yCAAyC;;AAE9G,8CAA8C;AAC9C,qDAAqD,yBAAyB;;AAE9E,gDAAgD;AAChD,yDAAyD,6BAA6B;;AAEtF,4DAA4D;AAC5D,kEAAkE,sCAAsC;;AAExG,yDAAyD;AACzD,+DAA+D,mCAAmC;;AAElG,+DAA+D;AAC/D,uEAAuE,2CAA2C;;AAElH,wDAAwD;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,sDAAsD;AACtD,6DAA6D,iCAAiC;;AAE9F,2DAA2D;AAC3D,yEAAyE;AACzE,qEAAqE;;AAErE;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;;AAEjB;AACA,yDAAyD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAqC;AACjD;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,UAAU,KAAqC;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,IAAqC;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,KAAqC;AAC/C;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,iBAAiB,2CAA2C;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;;AAErB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA,6BAA6B,aAAoB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uCAAuC;AACvC;;AAEA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mDAAmD,iCAAiC;AACpF;;AAEA;AACA,0DAA0D;AAC1D;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8FAA8F;AAC9F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAoB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM,KAAqC;AAC3C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,wDAAwD;AACxD;;AAEA;AACA;AACA;AACA;;AAEA;AACA,0FAA0F;AAC1F;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,kBAAkB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAoB;AACjD;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,iEAAiE;AACjE,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB,qDAAqD,GAAG,2BAA2B;AACnF,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAqC;AAC7C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ,KAAqC;AAC7C;AACA;AACA;AACA,sBAAsB;AACtB;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEe,sEAAO,EAAC;;;;;;;;;;;;;ACjlEvB;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,SAAS,uBAAuB,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA,sBAAsB,qCAAqC;AAC3D,sBAAsB;AACtB,aAAa;AACb;AACA,yBAAyB,SAAS,sBAAsB,EAAE;AAC1D;AACA;AACA,mBAAmB,SAAS,kBAAkB,EAAE;AAChD;AACA;AACA;AACA,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mCAAmC;AAC9D;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,GAAG;AACrD,2BAA2B;AAC3B,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA,4BAA4B;AAC5B,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oCAAoC;AACxD,oBAAoB,kBAAkB;AACtC,iBAAiB;AACjB,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACzFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,8DAA8D;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC;AAClD,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA,SAAS,SAAS,mBAAmB,EAAE;AACvC;AACA;AACA;AACA,aAAa,4BAA4B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB,yCAAyC;AAC9D;AACA;AACA;AACA,yBAAyB,SAAS,2CAA2C,EAAE;AAC/E;AACA;AACA;AACA,6BAA6B,SAAS,WAAW,EAAE;AACnD;AACA,2CAA2C,4BAA4B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC,0CAA0C,eAAe;AACzD;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,iCAAiC;AACjC;AACA;AACA,4CAA4C;AAC5C,mCAAmC;AACnC;AACA;AACA,4CAA4C;AAC5C,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,SAAS,WAAW,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB;AAClD;AACA,qBAAqB;AACrB;AACA,+BAA+B,+CAA+C;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,yBAAyB;AACzB,mBAAmB;AACnB,4BAA4B,sCAAsC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC7MA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,mCAAmC;AACvD;AACA;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA;AACA;AACA,iBAAiB,mBAAO,CAAC,6DAA0B;AACnD;AACA;AACA,SAAS;AACT;AACA,kBAAkB,+BAA+B;AACjD;AACA;AACA,sBAAsB,kCAAkC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA,oBAAoB,SAAS,wBAAwB,EAAE;AACvD,eAAe,SAAS,uBAAuB,EAAE;AACjD;AACA;AACA,SAAS,SAAS,qBAAqB,EAAE;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,uBAAuB,EAAE;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,mBAAmB;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,mCAAmC,gBAAgB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,oCAAoC,4BAA4B;AAChE;AACA,oCAAoC,4BAA4B;AAChE;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS,0BAA0B,EAAE;AACpD;AACA;AACA,SAAS,oCAAoC;AAC7C;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,sCAAsC,SAAS,uBAAuB,EAAE;AACxE;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;AC9HA;AAAA;AAAA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AACA,EAAE,KAAuD;AACzD;AACA,MAAM,SAIyB;AAC/B,CAAC;AACD;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB,EAAE;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E,OAAO;AACP;AACA;AACA;AACA,wDAAwD,kBAAkB;AAC1E,kDAAkD,YAAY;AAC9D,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,2BAA2B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,QAAQ;AAC7E;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qFAAqF;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,gBAAgB;AAChB,OAAO;AACP;AACA;AACA,0BAA0B,qCAAqC;AAC/D,qBAAqB,4BAA4B;AACjD,2BAA2B,8BAA8B;AACzD,sCAAsC,4BAA4B;AAClE,4BAA4B,6BAA6B;AACzD,uBAAuB,6BAA6B;AACpD,0BAA0B,6BAA6B;AACvD,gCAAgC,sCAAsC;AACtE,wBAAwB,6BAA6B;AACrD,oBAAoB,6BAA6B;AACjD,iCAAiC,6BAA6B;AAC9D,kBAAkB,+BAA+B;AACjD,4BAA4B,6BAA6B;AACzD,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe;AACf,aAAa;AACb;AACA,oCAAoC,GAAG;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;;;;;ACxZD;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;ACnBA,iBAAiB,qBAAuB,8B;;;;;;;;;;;;ACCxC;AAAA;AAAA;AAAA;AAAA;AAAA;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","file":"example-bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/main.js\");\n","<template>\n<div class=\"ace-editor-main\" v-loading=\"loading\"></div>\n</template>\n\n<script>\n\nimport {keywords, fullKeywordsList} from '../data/option-keywords';\nimport {loadScriptsAsync} from '../common/helper';\nimport {store} from '../common/store';\nimport {SCRIPT_URLS} from '../common/config';\n\nfunction ensureACE() {\n    if (typeof ace === 'undefined') {\n        return loadScriptsAsync([\n            SCRIPT_URLS.aceDir + '/ace.js',\n            SCRIPT_URLS.aceDir + '/ext-language_tools.js'\n        ]).then(function () {\n            const lnTools = ace.require('ace/ext/language_tools');\n\n            const completions = [];\n            for (let key in keywords) {\n                completions.push({\n                    caption: key,\n                    value: key,\n                    score: keywords[key],\n                    metal: 'local'\n                });\n            }\n\n            lnTools.addCompleter({\n                getCompletions: function (editor, session, pos, prefix, callback) {\n                    callback(null, completions);\n                }\n            });\n        })\n    }\n    return Promise.resolve();\n}\n\nexport default {\n\n    props: ['initialCode'],\n\n    data() {\n        return {\n            shared: store,\n            loading: false\n        }\n    },\n\n    mounted() {\n        this.loading = true;\n        ensureACE().then(() => {\n            this.loading = false;\n            const editor = ace.edit(this.$el);\n            editor.getSession().setMode('ace/mode/javascript');\n            editor.setOptions({\n                enableBasicAutocompletion: true,\n                enableSnippets: true,\n                enableLiveAutocompletion: true\n            });\n\n            this._editor = editor;\n\n            editor.on('change', () => {\n                store.sourceCode =\n                    store.runCode = editor.getValue();\n            });\n\n            if (this.initialCode) {\n                this.setInitialCode(this.initialCode);\n            }\n        });\n    },\n\n    methods: {\n        setInitialCode(code) {\n            if (this._editor && code) {\n                this._editor.setValue(code || '');\n                this._editor.selection.setSelectionRange({\n                    start: {\n                        row:1,\n                        column: 4\n                    }, end: {\n                        row:1,\n                        column: 4\n                    }\n                });\n            }\n        }\n    },\n\n    watch: {\n        initialCode(newVal) {\n            this.setInitialCode(newVal);\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n.ace-editor-main {\n    font-family: 'Source Code Pro', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;\n    font-size: 12px;\n    line-height: 18px;\n    padding: 10px;\n}\n</style>","<template>\n<div class=\"monaco-editor-main\" v-loading=\"loading\"></div>\n</template>\n\n<script>\n\nimport {keywords, fullKeywordsList} from '../data/option-keywords';\nimport {loadScriptsAsync} from '../common/helper';\nimport {store} from '../common/store';\nimport {SCRIPT_URLS} from '../common/config';\nimport { ensureECharts } from './Preview.vue';\n\nfunction loadTypes() {\n    return fetch(store.cdnRoot + '/types/echarts.d.ts', {\n        mode: 'cors'\n    }).then(response => response.text()).then(code => {\n\n        // validation settings\n        monaco.languages.typescript.typescriptDefaults.setDiagnosticsOptions({\n            noSemanticValidation: false,\n            noSyntaxValidation: false\n        });\n\n        // compiler options\n        monaco.languages.typescript.typescriptDefaults.setCompilerOptions({\n            target: monaco.languages.typescript.ScriptTarget.ES6,\n            allowNonTsExtensions: true,\n            noResolve: false\n        });\n\n        // console.log('file:///node_modules/@types/' + res[i].path);\n        monaco.languages.typescript.typescriptDefaults.addExtraLib(\n            code,\n            // https://github.com/microsoft/monaco-editor/issues/667#issuecomment-468164794\n            'file:///node_modules/@types/echarts/index.d.ts'\n        );\n\n        monaco.languages.typescript.typescriptDefaults.addExtraLib(\n`import {init, EChartsOption} from 'echarts';\n// Declare to global namespace.\ndeclare global {\ndeclare const $: any;\ndeclare const ROOT_PATH: string;\ndeclare const app: {\n    configParameters: {\n        [key: string]: ({\n            options: { [key: string]: string\n        }) | ({\n            min?: number\n            max?: number\n        })\n    }\n    config: {\n        onChange: () => void\n        [key: string]: string | number | function\n    }\n    [key: string]: any\n};\ndeclare const myChart: ReturnType<typeof init>;\ndeclare var option: EChartsOption;\n}\n`,\n            'file:///example.d.ts'\n        );\n        return;\n    });\n}\n\nfunction ensureMonacoAndTsTransformer() {\n    function loadMonaco() {\n        if (typeof monaco === 'undefined') {\n            return loadScriptsAsync([\n                SCRIPT_URLS.monacoDir + '/loader.js',\n                // Prebuilt TS transformer with surcrase\n                store.cdnRoot + '/js/example-transform-ts-bundle.js'\n            ]).then(function () {\n                window.require.config({ paths: { 'vs': SCRIPT_URLS.monacoDir }});\n                return new Promise(resolve => {\n                    window.require([\n                        'vs/editor/editor.main'\n                    ], function () {\n                        loadTypes().then(() => {\n                            resolve();\n                        });\n                    })\n                });\n            })\n        }\n        return Promise.resolve();\n    }\n\n    // Must load echarts before monaco. Or the AMD loader will affect loading of echarts.\n    return ensureECharts().then(loadMonaco);\n}\n\nexport default {\n\n    props: ['initialCode'],\n\n    data() {\n        return {\n            shared: store,\n            loading: false\n        }\n    },\n\n    mounted() {\n        this.loading = true;\n        ensureMonacoAndTsTransformer().then(() => {\n            this.loading = false;\n            const model = monaco.editor.createModel(\n                this.initialCode || '',\n                'typescript',\n                // Should also be a file path so it can resolve the lib.\n                monaco.Uri.parse('file:///main.ts')\n            );\n            const editor = monaco.editor.create(this.$el, {\n                model,\n                fontFamily: `'Source Code Pro', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace`,\n                minimap: {\n                    enabled: false\n                },\n                automaticLayout: true\n            });\n\n            this._editor = editor;\n\n            if (this.initialCode) {\n                store.sourceCode = this.initialCode;\n                store.runCode = echartsExampleTransformTs(store.sourceCode);\n            }\n            editor.onDidChangeModelContent(() => {\n                store.sourceCode = editor.getValue();\n                store.runCode = echartsExampleTransformTs(store.sourceCode);\n            });\n        });\n    },\n\n    destroyed() {\n        if (this._editor) {\n            this._editor.getModel().dispose();\n            this._editor.dispose();\n        }\n    },\n\n    methods: {\n        setInitialCode(code) {\n            if (this._editor && code) {\n                this._editor.setValue(code || '');\n            }\n        }\n    },\n\n    watch: {\n        initialCode(newVal) {\n            this.setInitialCode(newVal);\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n.monaco-editor-main {\n    font-family: 'Source Code Pro', 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;\n    font-size: 12px;\n    padding: 0;\n    overflow-y: hidden;\n}\n</style>","<template>\n<div id=\"main-container\">\n    <div id=\"code-container\" :style=\"{width: leftContainerSize + '%'}\" v-if=\"!shared.isMobile\">\n        <div id=\"control-panel\">\n            <div id=\"code-info\">\n                <template v-if=\"shared.editorStatus.message\">\n                    <span class=\"code-info-time\">{{currentTime}}</span>\n                    <span :class=\"'code-info-type-' + shared.editorStatus.type\">{{shared.editorStatus.message}}</span>\n                </template>\n            </div>\n            <div class=\"control-btn-panel\">\n                <!-- <el-switch v-model=\"shared.typeCheck\"\n                    :active-text=\"$t('editor.monacoMode')\"\n                    :inactive-text=\"''\"\n                ></el-switch> -->\n                <a href=\"javascript:;\" class='btn btn-default btn-sm' @click='disposeAndRun'>{{$t('editor.run')}}</a>\n            </div>\n        </div>\n        <CodeMonaco v-if=\"shared.typeCheck\" id=\"code-panel\" :initialCode=\"initialCode\"></CodeMonaco>\n        <CodeAce v-else id=\"code-panel\" :initialCode=\"initialCode\"></CodeAce>\n    </div>\n    <div class=\"handler\" id=\"h-handler\" @mousedown=\"onSplitterDragStart\" :style=\"{left: leftContainerSize + '%'}\" v-if=\"!shared.isMobile\"></div>\n    <Preview :inEditor=\"true\" class=\"right-container\" ref=\"preview\" :style=\"{\n        width: (100 - leftContainerSize) + '%',\n        left: leftContainerSize + '%'\n    }\"></Preview>\n</div>\n</template>\n\n<script>\n\nimport CodeAce from './CodeAce.vue';\nimport CodeMonaco from './CodeMonaco.vue';\nimport Preview from './Preview.vue';\nimport {URL_PARAMS} from '../common/config';\nimport {store, loadExampleCode, parseSourceCode} from '../common/store';\n\nexport default {\n    components: {\n        CodeAce,\n        CodeMonaco,\n        Preview\n    },\n\n    data() {\n        return {\n            mousedown: false,\n            leftContainerSize: 40,\n            mobileMode: false,\n            shared: store,\n            initialCode: ''\n        };\n    },\n\n    computed: {\n        currentTime() {\n            // Update time when message updated.\n            const message = this.shared.message;\n\n            const time = new Date();\n            const digits = [time.getHours(), time.getMinutes(), time.getSeconds()];\n            let timeStr = '';\n            for (let i = 0, len = digits.length; i < len; ++i) {\n                timeStr += (digits[i] < 10 ? '0' : '') + digits[i];\n                if (i < len - 1) {\n                    timeStr += ':';\n                }\n            }\n            return timeStr;\n        }\n    },\n\n    mounted() {\n\n        if (store.isMobile) {\n            this.leftContainerSize = 0;\n            loadExampleCode().then(code => {\n                // No editor available. Set to runCode directly.\n                store.runCode = parseSourceCode(code);\n            });\n        }\n        else {\n            loadExampleCode().then(code => {\n                // Only set the code in editor. editor will sync to the store.\n                this.initialCode = parseSourceCode(code);\n            });\n\n            window.addEventListener('mousemove', (e) => {\n                if (this.mousedown) {\n                    let percentage = e.clientX / window.innerWidth;\n                    percentage = Math.min(0.9, Math.max(0.1, percentage));\n                    this.leftContainerSize = percentage * 100;\n                }\n            });\n\n            window.addEventListener('mouseup', (e) => {\n                this.mousedown = false;\n            });\n        }\n    },\n\n    methods: {\n        onSplitterDragStart() {\n            this.mousedown = true;\n        },\n        disposeAndRun() {\n            this.$refs.preview.refreshAll();\n        }\n    },\n\n    watch: {\n        'shared.typeCheck'(enableTypeCheck) {\n            // Update initialCode to avoid code changed when switching editor\n            this.initialCode = store.sourceCode;\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n@import '../style/color.scss';\n\n$code-info-height: 25px;\n$control-panel-height: 30px;\n$pd-basic: 10px;\n$handler-width: 5px;\n\n#main-container {\n    .handler {\n        position: absolute;\n        left: 50%;\n\n        top: 0;\n        bottom: 0;\n        width: $handler-width;\n\n        cursor: col-resize;\n        z-index: 100;\n        background-color: transparent;\n        border-left: 1px solid #ececec;\n        // border-right: 1px solid $clr-border;\n    }\n\n}\n\n#code-container {\n    position: absolute;\n    left: 0;\n    bottom: 0;\n    top: 0;\n\n    width: 50%;\n}\n\n#control-panel {\n    height: $control-panel-height;\n    position: absolute;;\n    left: 0;\n    right: 0;\n    top: 0;\n    z-index: 20;\n    padding: 0;\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n\n    .setting-panel {\n        display: inline-block;\n\n        .btn-group + .btn-group {\n            margin-left: $pd-basic;\n        }\n    }\n\n    .control-btn-panel  {\n        float: right;\n\n        .el-switch__label {\n            margin-top: -3px;\n        }\n        .el-switch__label * {\n            font-size: 12px;\n        }\n\n        .btn {\n            color: #FFF;\n            border-radius: 0;\n            background-color: #409eff;\n            margin-left: $pd-basic;\n            border: none;\n            height: 30px;\n            width: 50px;\n        }\n        .btn:hover {\n            background-color: lighten($color: #409eff, $amount: 5);\n        }\n    }\n}\n\n\n#code-panel {\n    position: absolute;\n    top: $control-panel-height;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    ::-webkit-scrollbar {\n        height:8px;\n        width:8px;\n        transition:all 0.3s ease-in-out;\n        border-radius:2px;\n    }\n\n    ::-webkit-scrollbar-button {\n        display:none;\n    }\n\n    ::-webkit-scrollbar-thumb {\n        width:8px;\n        min-height:15px;\n        background:rgba(50, 50, 50, 0.6) !important;\n        transition:all 0.3s ease-in-out;border-radius:2px;\n    }\n\n    ::-webkit-scrollbar-thumb:hover {\n        background:rgba(0, 0, 0, 0.5) !important;\n    }\n}\n\n#code-info {\n    position: absolute;\n    bottom: 0;\n    overflow: hidden;\n\n    height: $control-panel-height;\n    line-height: $control-panel-height;\n    padding: 0px 10px;\n\n    // border-top: 1px solid $clr-border;\n    font-size: 0.9rem;\n\n    .code-info-time {\n        color: $clr-text;\n        display: inline-block;\n        margin-right: 10px;\n    }\n\n    .code-info-type-info {\n        color: $clr-text;\n    }\n\n    .code-info-type-warn {\n        color: $clr-warn;\n    }\n\n    .code-info-type-error {\n        color: $clr-error;\n    }\n}\n\n.right-container {\n    position: absolute;\n    right: 0;\n\n    width: 50%;\n    height: 100%;\n    padding: 0;\n    padding-left: $handler-width;\n    border: none;\n    z-index: 30;\n\n    background: $clr-bg;\n}\n\n\n</style>","<template>\n<div :class=\"[(inEditor && !shared.isMobile) ? '' : 'full']\">\n    <div v-loading=\"loading\"\n        class=\"right-panel\"\n        id=\"chart-panel\"\n        :style=\"{background: backgroundColor}\"\n    ></div>\n    <div id=\"tool-panel\">\n        <div class=\"left-panel\">\n            <el-switch\n                class=\"dark-mode\"\n                v-model=\"shared.darkMode\"\n                active-color=\"#181432\"\n                :active-text=\"$t('editor.darkMode')\"\n                :inactive-text=\"''\">\n            </el-switch>\n            <el-switch\n                class=\"enable-decal\"\n                v-model=\"shared.enableDecal\"\n                :active-text=\"$t('editor.enableDecal')\"\n                :inactive-text=\"''\">\n            </el-switch>\n\n            <el-popover\n                placement=\"bottom\"\n                width=\"450\"\n                trigger=\"click\"\n                style=\"margin-top:3px;\"\n            >\n                <div class=\"render-config-container\">\n                    <el-row :gutter=\"2\" type=\"flex\" align=\"middle\">\n                        <el-col :span=\"12\">\n                            <label class=\"tool-label\">{{ $t('editor.renderer') }}</label>\n                            <el-radio-group v-model=\"shared.renderer\" size=\"mini\" style=\"text-transform: uppercase\">\n                                <el-radio-button label=\"svg\"></el-radio-button>\n                                <el-radio-button label=\"canvas\"></el-radio-button>\n                            </el-radio-group>\n                        </el-col>\n                        <el-col :span=\"12\">\n                            <el-switch\n                                v-if=\"shared.renderer==='canvas'\"\n                                v-model=\"shared.useDirtyRect\"\n                                :active-text=\"$t('editor.useDirtyRect')\"\n                                :inactive-text=\"''\">\n                            </el-switch>\n                        </el-col>\n                    </el-row>\n                </div>\n                <span class=\"render-config-trigger\" slot=\"reference\"><i class=\"el-icon-setting el-icon--left\"></i>{{$t('editor.renderCfgTitle')}}</span>\n            </el-popover>\n        </div>\n        <template v-if=\"inEditor\">\n            <button v-if=\"!shared.isMobile\" class=\"download btn btn-sm\" @click=\"downloadExample\">{{ $t('editor.download') }}</button>\n            <a class=\"screenshot\" @click=\"screenshot\" target=\"_blank\"><i class=\"el-icon-camera-solid\"></i></a>\n        </template>\n        <a :href=\"editLink\" target=\"_blank\" v-else class=\"edit btn btn-sm\">{{ $t('editor.edit') }}</a>\n    </div>\n</div>\n</template>\n\n<script>\n\nimport {store} from '../common/store';\nimport {SCRIPT_URLS, URL_PARAMS} from '../common/config';\nimport {loadScriptsAsync} from '../common/helper';\nimport {createSandbox} from './sandbox';\nimport debounce from 'lodash/debounce';\nimport { addListener, removeListener } from 'resize-detector';\nimport CHART_LIST from '../data/chart-list-data';\nimport {download} from './downloadExample';\n\nconst example = CHART_LIST.find(item => URL_PARAMS.c === item.id);\n\nfunction addDecalIfNecessary(option) {\n    if (store.enableDecal) {\n        option.aria = option.aria || {};\n        option.aria.decal = option.aria.decal || {};\n        option.aria.decal.show = true;\n        option.aria.show = option.aria.enabled = true;\n    }\n}\n\nexport function ensureECharts() {\n    if (typeof echarts === 'undefined') {\n\n        const hasBmap = example && example.tags.indexOf('bmap') >= 0;\n\n        // Code from https://api.map.baidu.com/api?v=2.0&ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu\n        if (hasBmap) {\n            window.HOST_TYPE = \"2\";\n            window.BMap_loadScriptTime = (new Date).getTime();\n        }\n\n        return loadScriptsAsync([\n            SCRIPT_URLS.datGUIMinJS,\n            'local' in URL_PARAMS\n                ? SCRIPT_URLS.localEChartsMinJS : SCRIPT_URLS.echartsMinJS,\n            SCRIPT_URLS.echartsDir + '/dist/extension/dataTool.js',\n            'https://cdn.jsdelivr.net/npm/echarts@4.9.0/map/js/world.js',\n            SCRIPT_URLS.echartsStatMinJS,\n            ...URL_PARAMS.gl ? [SCRIPT_URLS.echartsGLMinJS] : [],\n            ...hasBmap ? [\n                'https://api.map.baidu.com/getscript?v=2.0&ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu&services=&t=20200327103013',\n                SCRIPT_URLS.echartsDir + '/dist/extension/bmap.js'\n            ] : []\n        ]).then(() => {\n            echarts.registerPreprocessor(addDecalIfNecessary)\n        });\n    }\n    return Promise.resolve();\n}\n\n\nfunction log(text, type) {\n    if (type !== 'warn' && type !== 'error') {\n        type = 'info';\n    }\n    store.editorStatus.message = text;\n    store.editorStatus.type = type;\n}\n\n\nfunction run() {\n    if (typeof echarts === 'undefined') {\n        return;\n    }\n    if (!this.sandbox) {\n        this.sandbox = createSandbox((chart) => {\n            const option = chart.getOption();\n            if (typeof option.backgroundColor === 'string' && option.backgroundColor !== 'transparent') {\n                this.backgroundColor = option.backgroundColor;\n            }\n            else {\n                this.backgroundColor = '#fff';\n            }\n        });\n    }\n\n    try {\n        const updateTime = this.sandbox.run(this.$el.querySelector('#chart-panel'), store);\n\n        log(this.$t('editor.chartOK') + updateTime + 'ms');\n\n        // Find the appropriate throttle time\n        const debounceTime = 500;\n        const debounceTimeQuantities = [0, 500, 2000, 5000, 10000];\n        for (let i = debounceTimeQuantities.length - 1; i >= 0; i--) {\n            const quantity = debounceTimeQuantities[i];\n            const preferredDebounceTime = debounceTimeQuantities[i + 1] || 1000000;\n            if (updateTime >= quantity && this.debouncedTime !== preferredDebounceTime) {\n                this.debouncedRun = debounce(run, preferredDebounceTime, {\n                    trailing: true\n                });\n                this.debouncedTime = preferredDebounceTime;\n                break;\n            }\n        }\n    }\n    catch (e) {\n        log(this.$t('editor.errorInEditor'), 'error');\n        console.error(e);\n    }\n}\n\n\nexport default {\n\n    props: ['inEditor'],\n\n    data() {\n        return {\n            shared: store,\n            debouncedTime: undefined,\n            backgroundColor: '',\n            autoRun: true,\n            loading: false\n        }\n    },\n\n    mounted() {\n        this.loading = true;\n        ensureECharts().then(() => {\n            this.loading = false;\n            if (store.runCode) {\n                this.run();\n            }\n        });\n\n        addListener(this.$el, () => {\n            if (this.sandbox) {\n                this.sandbox.resize();\n            }\n        })\n    },\n\n    computed: {\n        editLink() {\n            const params = ['c=' + URL_PARAMS.c];\n            if (URL_PARAMS.theme) {\n                params.push(['theme=' + URL_PARAMS.theme]);\n            }\n            if (URL_PARAMS.gl) {\n                params.push(['gl=' + URL_PARAMS.gl]);\n            }\n            return './editor.html?' + params.join('&');\n        }\n    },\n\n    watch: {\n        'shared.runCode'(val) {\n            if (this.autoRun || !this.sandbox) {\n                if (!this.debouncedRun) {\n                    // First run\n                    this.run();\n                }\n                else {\n                    this.debouncedRun();\n                }\n            }\n        },\n        'shared.renderer'() {\n            this.refreshAll();\n        },\n        'shared.darkMode'() {\n            this.refreshAll();\n        },\n        'shared.enableDecal'() {\n            this.refreshAll();\n        },\n        'shared.useDirtyRect'() {\n            this.refreshAll();\n        }\n    },\n\n    methods: {\n        run,\n        // debouncedRun will be created at first run\n        // debouncedRun: null,\n        refreshAll() {\n            this.dispose();\n            this.run();\n        },\n        dispose() {\n            if (this.sandbox) {\n                this.sandbox.dispose();\n            }\n        },\n        downloadExample() {\n            download();\n        },\n        screenshot() {\n            if (this.sandbox) {\n                const url = this.sandbox.getDataURL();\n                const $a = document.createElement('a');\n                $a.download = URL_PARAMS.c + '.' + (store.renderer === 'svg' ? 'svg' : 'png');\n                $a.target = '_blank';\n                $a.href = url;\n                const evt = new MouseEvent('click', {\n                    bubbles: true,\n                    cancelable: false\n                });\n                $a.dispatchEvent(evt);\n            }\n        }\n        // hasEditorError() {\n        //     const annotations = this.editor.getSession().getAnnotations();\n        //     for (let aid = 0, alen = annotations.length; aid < alen; ++aid) {\n        //         if (annotations[aid].type === 'error') {\n        //             return true;\n        //         }\n        //     }\n        //     return false;\n        // }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n#chart-panel {\n    position: absolute;\n    // top: $control-panel-height;\n    top: 42px;\n    right: 15px;\n    bottom: 15px;\n    left: 15px;\n    box-sizing: border-box;\n    box-shadow: rgba(0, 0, 0, 0.1) 0px 0px 20px;\n    border-radius: 5px;\n    background: #fff;\n    overflow: hidden;\n\n    padding: 10px;\n\n    .ec-debug-dirty-rect-container {\n        left: 10px!important;\n        top: 10px!important;\n        right: 10px!important;\n        bottom: 10px!important;\n\n        .ec-debug-dirty-rect {\n            background-color: rgba(255, 0, 0, 0.2)!important;\n            border: 1px solid red!important;\n        }\n    }\n}\n\n.render-config-container {\n    .el-radio-group {\n        label {\n            margin-bottom: 0;\n        }\n    }\n}\n\n#tool-panel {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    padding-top: 5px;\n    padding-left: 15px;\n\n    // .el-switch__label * {\n    //     font-size: 12px;\n    // }\n\n    .render-config-trigger {\n        margin-left: 10px;\n        cursor: pointer;\n        font-weight: 500;\n        // font-size: 12px;\n    }\n\n    label {\n        margin-bottom: 0;\n    }\n\n    .left-panel {\n        float: left;\n    }\n\n    .left-panel>* {\n        vertical-align: middle;\n        display: inline-block;\n    }\n\n    .tool-label {\n        font-weight: bold;\n        text-transform: uppercase;\n        margin-left: 20px;\n    }\n\n    .screenshot, .download, .edit {\n        float: right;\n        margin-right: 15px;\n        cursor: pointer;\n    }\n    .screenshot {\n        font-size: 22px;\n        margin-right: 10px;\n    }\n}\n\n.full {\n    #chart-panel {\n        top: 40px;\n        right: 5px;\n        bottom: 5px;\n        left: 5px;\n        box-shadow: rgba(10, 9, 9, 0.1) 0px 0px 5px;\n    }\n    #tool-panel {\n        padding-left: 5px;\n        .download, .edit {\n            margin-right: 5px;\n        }\n    }\n}\n\n.dg.main * {\n    box-sizing: content-box;\n}\n.dg.main input {\n    line-height: normal;\n}\n\n.dg.main.a {\n    overflow-x: visible;\n}\n\n.dg.main .c {\n    select {\n        color: #000;\n    }\n}\n\n</style>","<template>\n<preview></Preview>\n</template>\n\n<script>\n\nimport Preview from './Preview.vue';\nimport {store, loadExampleCode, parseSourceCode} from '../common/store';\n\nexport default {\n    components: {\n        Preview\n    },\n\n    mounted() {\n        loadExampleCode().then(code => {\n            store.runCode = parseSourceCode(code);\n        });\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n</style>","<template>\n<div class=\"example-list-item\">\n    <a target=\"_blank\" class=\"example-link\" :href=\"exampleLink\">\n        <img class=\"chart-area\" src=\"../asset/placeholder.jpg\" :data-src=\"screenshotURL\" />\n        <h4 class=\"example-title\">{{title}}</h4>\n        <h5 class=\"example-subtitle\" v-if=\"showSubtitle\">{{subtitle}}</h5>\n    </a>\n</div>\n</template>\n\n<script>\n\nimport {store} from '../common/store';\nimport {SUPPORT_WEBP, URL_PARAMS} from '../common/config';\n\nexport default {\n    props: ['example'],\n\n    computed: {\n\n        title() {\n            return (store.locale === 'zh' ? this.example.titleCN : this.example.title)\n                || this.example.title || '';\n        },\n\n        showSubtitle() {\n            return store.locale === 'zh';\n        },\n\n        subtitle() {\n            return this.example.title || '';\n        },\n\n        exampleTheme() {\n            const example = this.example;\n            return example.isGL ? '' : (example.theme || (store.darkMode ? 'dark' : ''));\n        },\n\n        exampleLink() {\n            const example = this.example;\n            const hash = ['c=' + example.id];\n            const exampleTheme = this.exampleTheme;\n            if (example.isGL) {\n                hash.push('gl=1');\n            }\n            if (exampleTheme) {\n                hash.push('theme=' + exampleTheme);\n            }\n            if ('local' in URL_PARAMS) {\n                hash.push('local');\n            }\n            if ('useDirtyRect' in URL_PARAMS) {\n                hash.push('useDirtyRect');\n            }\n            return './editor.html?' + hash.join('&');\n        },\n\n        screenshotURL() {\n            const example = this.example;\n            const themePostfix = this.exampleTheme ? ('-' + this.exampleTheme) : '';\n            const ext = example.isGL ? 'jpg' : SUPPORT_WEBP ? 'webp' : 'png';\n            const folder = example.isGL ? 'data-gl' : 'data';\n            return `${store.cdnRoot}/${folder}/thumb${themePostfix}/${example.id}.${ext}?_v_=${store.version}`;\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n@import \"../style/color.scss\";\n\n.example-list-item {\n    width: 100%;\n    max-width: 350px;\n    margin-bottom: 30px;\n\n    border-radius: 2px;\n\n    .example-link {\n        position: relative;\n        display: block;\n\n        .chart-area {\n            width: 100%;\n            height: 100%;\n            border-radius: 5px;\n            box-shadow: 0 0 20px rgba(0, 0, 0, 0.05);\n            margin-top: 10px;\n        }\n\n        .example-title {\n            color: $clr-primary;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            white-space: nowrap;\n\n            padding: 10px 10px 2px 10px;\n            margin: 0;\n            font-weight: normal;\n            font-size: 14px;\n            text-align: center;\n        }\n\n        .example-subtitle {\n            font-size: 12px;\n            text-align: center;\n            color: #aaa;\n            font-weight: normal;\n            // font-weight: 200;\n            overflow: hidden;\n            white-space: nowrap;\n            text-overflow: ellipsis;\n            margin: 3px 0 0 0;\n        }\n    }\n\n    .example-info {\n        padding: 5px 0;\n\n        font-weight: bold;\n\n        .chart-icon {\n            float: right;\n\n            .chart-delete {\n                display: none;\n\n                transition: 1s;\n            }\n        }\n    }\n\n    &:hover .example-info .chart-icon .chart-delete {\n        display: block;\n\n        text-decoration: none;\n    }\n}\n</style>","<template>\n<div id=\"example-explore\">\n    <div id=\"left-container\">\n        <div id=\"left-toolbar\">\n            <el-switch\n                v-model=\"shared.darkMode\"\n                active-color=\"#181432\"\n                :active-text=\"$t('editor.darkMode')\"\n                :inactive-text=\"''\">\n            </el-switch>\n        </div>\n        <div id=\"left-chart-nav\">\n            <scrollactive\n                active-class=\"active\"\n                :offset=\"80\"\n                :duration=\"500\"\n                :scroll-container-selector=\"'#example-explore'\"\n                bezier-easing-value=\".5,0,.35,1\"\n                @itemchanged=\"onActiveNavChanged\"\n            >\n                <ul>\n                    <li v-for=\"category in EXAMPLE_CATEGORIES\" :key=\"category\">\n                        <a class=\"left-chart-nav-link scrollactive-item\" :id=\"'left-chart-nav-' + category\"\n                            :href=\"'#chart-type-' + category\"\n                        >\n                            <span class=\"chart-icon\"></span>\n                            <span class=\"chart-name\">{{$t('chartTypes.' + category)}}</span>\n                        </a>\n                    </li>\n                </ul>\n            </scrollactive>\n        </div>\n    </div>\n    <div id=\"explore-container\">\n        <div class=\"example-list-panel\">\n            <div v-for=\"categoryObj in exampleList\" :key=\"categoryObj.category\">\n                <h3 class=\"chart-type-head\" :id=\"'chart-type-' + categoryObj.category\">\n                    {{$t('chartTypes.' + categoryObj.category)}}\n                    <span>{{categoryObj.category}}</span>\n                </h3>\n\n                <div class=\"row\" :id=\"'chart-row-' + categoryObj.category\">\n                    <div class=\"col-xl-2 col-lg-3 col-md-4 col-sm-6\"\n                        v-for=\"exampleItem in categoryObj.examples\"\n                        :key=\"exampleItem.id\"\n                    >\n                        <ExampleCard :example=\"exampleItem\"></ExampleCard>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n</template>\n\n<script>\n\nimport CHART_LIST from '../data/chart-list-data';\nimport CHART_LIST_GL from '../data/chart-list-data-gl';\nimport {EXAMPLE_CATEGORIES, BLACK_MAP, URL_PARAMS} from '../common/config';\nimport {store} from '../common/store';\nimport ExampleCard from './ExampleCard.vue';\nimport LazyLoad from 'vanilla-lazyload/dist/lazyload.esm';\nimport scrollIntoView from 'scroll-into-view';\n\nconst LAZY_LOADED_CLASS = 'ec-shot-loaded';\n\nexport default {\n\n    components: {\n        ExampleCard\n    },\n\n    data() {\n        const exampleListByCategory = {};\n\n        function addExamples(list, isGL) {\n            let categoryOrder = 0;\n            // Add by category order in each example.\n            do {\n                let added = false;\n                for (let i = 0; i < list.length; i++) {\n                    const example = list[i];\n                    if (BLACK_MAP.hasOwnProperty(example.id)) {\n                        continue;\n                    }\n                    if (typeof example.category === 'string') {\n                        example.category = [example.category];\n                    }\n\n                    const categoryStr = (example.category || [])[categoryOrder];\n                    if (categoryStr) {\n                        added = true;\n                        let categoryObj = exampleListByCategory[categoryStr];\n                        if (!categoryObj) {\n                            categoryObj = {\n                                category: categoryStr,\n                                examples: []\n                            }\n                            exampleListByCategory[categoryStr] = categoryObj;\n                        }\n                        example.isGL = isGL;\n\n                        categoryObj.examples.push(example);\n                    }\n                }\n\n                if (!added) {\n                    break;\n                }\n            } while (++categoryOrder && categoryOrder < 4)  // At most 4 category\n        }\n\n        addExamples(CHART_LIST, false);\n        addExamples(CHART_LIST_GL, true);\n\n        return {\n            shared: store,\n\n            EXAMPLE_CATEGORIES,\n            // [{\n            //  category: '',\n            //  isGL: false\n            //  examples: []\n            // }]\n            exampleListByCategory\n        }\n    },\n\n    watch: {\n        \"shared.darkMode\"() {\n            const imgs = this.$el.querySelectorAll('img.chart-area');\n            for (let i = 0; i < imgs.length; i++) {\n                // Force lazyload to update\n                imgs[i].classList.remove(LAZY_LOADED_CLASS);\n                imgs[i].setAttribute('data-was-processed', 'false');\n            }\n            this._lazyload.update();\n        }\n    },\n\n    computed: {\n        exampleList() {\n            const list = [];\n            for (let i = 0; i < EXAMPLE_CATEGORIES.length; i++) {\n                const category = EXAMPLE_CATEGORIES[i];\n                const categoryObj = this.exampleListByCategory[category];\n                if (categoryObj && categoryObj.examples.length > 0) {\n                    list.push({\n                        category,\n                        examples: categoryObj.examples\n                    });\n                }\n            }\n            return list;\n        }\n    },\n\n    mounted() {\n        this._lazyload = new LazyLoad({\n            // Container should be the scroll viewport.\n            // container: this.$el.querySelector('#explore-container .example-list-panel'),\n            elements_selector: 'img.chart-area',\n            load_delay: 400,\n            class_loaded: LAZY_LOADED_CLASS\n        });\n    },\n\n    methods: {\n        onActiveNavChanged(event, currentItem, lastActiveItem) {\n            // currentItem && currentItem.scrollIntoView && currentItem.parentNode.scrollIntoView({\n            //     // behavior: \"smooth\"\n            // });\n            // scrollIntoView(currentItem, {\n            //     time: 300,\n            //     cancellable: false,\n            //     align: {\n            //         top: 0,\n            //         topOffset: 50\n            //     }\n            // });\n        }\n    }\n}\n</script>\n\n<style lang=\"scss\">\n\n@import \"../style/color.scss\";\n@import \"../style/config.xl.scss\";\n\n$chart-nav-width: 170px;\n$chart-icon-width: 25px;\n$chart-icon-border: 1px;\n\n$left-toolbar-height: 30px;\n\n$nav-height: 50px;\n$nav-bg: #252839;\n\n$pd-basic: 10px;\n$pd-sm: 6px;\n$pd-lg: 20px;\n\n#example-explore {\n    background: $clr-bg;\n\n    // Use this as scrollable viewport insteadof window because echarts-www has a viewport.\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    overflow-y: auto;\n}\n\n#explore-container {\n    margin-left: $chart-nav-width + 20px;\n    padding: 10px 10px;\n    // background-color: $clr-bg;\n}\n\n.example-list-panel {\n    margin: 30px 15px 30px 15px;\n\n    h3 {\n        margin-bottom: 20px;\n        padding-bottom: 10px;\n        border-bottom: 1px solid #ccd3e8;\n        font-weight: normal;\n        color: #252839;\n    }\n    .chart-type-head span {\n        font-size: 18px;\n        padding-left: 5px;\n        color: #999;\n        font-weight: 200;\n    }\n}\n\n#left-container {\n    position: fixed;\n    top: 10px;\n    bottom: 10px;\n    left: 10px;\n    width: $chart-nav-width;\n}\n\n#left-toolbar {\n    position: absolute;\n    left: 0;\n    right: 0;\n    height: $left-toolbar-height;\n    top: 0;\n    background-color: #fff;\n    border-radius: 10px;\n    // color: #fff;\n    box-shadow: 0 0 10px rgba(0,0,0,0.1);\n    padding-left: 5px;\n    padding-top: 4px;\n\n    .el-switch__label * {\n        font-size: 12px;\n        // color: #fff;\n        text-transform: uppercase;\n    }\n    .el-switch__label.is-active {\n        color: #181432;\n    }\n}\n\n#left-chart-nav {\n    position: absolute;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    top: $left-toolbar-height + 10px;\n    background-color: $nav-bg;\n    overflow-y: hidden;\n    border-radius: 10px;\n    color: #fff;\n    box-shadow: 0 0 20px rgba(0,0,0,0.2);\n\n    &:hover {\n        overflow-y: auto;\n\n        a {\n            text-decoration: none;\n        }\n    }\n\n    li {\n        transition: 0.5s;\n        cursor: pointer;\n\n        a {\n            height: 45px;\n            padding: 10px 0 10px 10px;\n            display: block;\n            transition: 0.5s;\n            text-decoration: none;\n            color: inherit;\n\n            .chart-name {\n                display: inline-block;\n                position: relative;\n                vertical-align: middle;\n                margin-left: 10px;\n            }\n\n            .chart-icon {\n                content: '';\n                display: inline-block;\n                width: $chart-icon-width;\n                height: $chart-icon-width;\n                background-image: url('../asset/chart-icon.png');\n                background-size: $chart-icon-width;\n                background-repeat: no-repeat;\n                border-radius: 50%;\n                border: $chart-icon-border solid #fff;\n                vertical-align: middle;\n            }\n            &.active {\n                background-color: $clr-contrast;\n            }\n\n        }\n\n        &:hover {\n            background-color: darken($nav-bg, 10);\n        }\n    }\n}\n\n@media (max-width: 768px) {\n    #left-container {\n        display: none;\n    }\n    #explore-container {\n        margin-left: 0;\n    }\n}\n\n// icon sprites\n$chart-types: 'line', 'bar', 'scatter', 'pie', 'radar', 'funnel', 'gauge', 'map',\n    'graph', 'treemap', 'parallel', 'sankey', 'candlestick', 'boxplot', 'heatmap',\n    'pictorialBar', 'themeRiver', 'calendar', 'custom', 'sunburst', 'tree',\n    'globe', 'bar3D', 'scatter3D', 'surface', 'map3D', 'lines3D', 'line3D',\n    'scatterGL', 'linesGL', 'flowGL', 'graphGL', 'geo3D', 'geo', 'lines', 'dataset';\n$chart-position: 0, 1, 2, 4, 5, 10, 9, 8, 7, 15, 16, 17, 3, 18, 11, 24, 25, 26, 27, 28, 14,\n    29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 8, 20, 22;\n\n@each $type in $chart-types {\n    $i: index($chart-types, $type);\n    $pos: nth($chart-position, $i);\n    #left-chart-nav-#{$type} .chart-icon {\n        background-position-x: - $chart-icon-border;\n        background-position-y: - $chart-icon-border - $pos * $chart-icon-width;\n    }\n}\n\n</style>","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n    getRawTag = require('./_getRawTag'),\n    objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n    undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return (symToStringTag && symToStringTag in Object(value))\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n  var isOwn = hasOwnProperty.call(value, symToStringTag),\n      tag = value[symToStringTag];\n\n  try {\n    value[symToStringTag] = undefined;\n    var unmasked = true;\n  } catch (e) {}\n\n  var result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag] = tag;\n    } else {\n      delete value[symToStringTag];\n    }\n  }\n  return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n  return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var isObject = require('./isObject'),\n    now = require('./now'),\n    toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        timeWaiting = wait - timeSinceLastCall;\n\n    return maxing\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n      : timeWaiting;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        clearTimeout(timerId);\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\nmodule.exports = now;\n","var isObject = require('./isObject'),\n    isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","let raf = null;\nfunction requestAnimationFrame (callback) {\n  if (!raf) {\n    raf = (\n      window.requestAnimationFrame ||\n      window.webkitRequestAnimationFrame ||\n      window.mozRequestAnimationFrame ||\n      function (callback) {\n        return setTimeout(callback, 16)\n      }\n    ).bind(window);\n  }\n  return raf(callback)\n}\n\nlet caf = null;\nfunction cancelAnimationFrame (id) {\n  if (!caf) {\n    caf = (\n      window.cancelAnimationFrame ||\n      window.webkitCancelAnimationFrame ||\n      window.mozCancelAnimationFrame ||\n      function (id) {\n        clearTimeout(id);\n      }\n    ).bind(window);\n  }\n\n  caf(id);\n}\n\nfunction createStyles (styleText) {\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = styleText;\n  } else {\n    style.appendChild(document.createTextNode(styleText));\n  }\n  (document.querySelector('head') || document.body).appendChild(style);\n  return style\n}\n\nfunction createElement (tagName, props = {}) {\n  let elem = document.createElement(tagName);\n  Object.keys(props).forEach(key => {\n    elem[key] = props[key];\n  });\n  return elem\n}\n\nfunction getComputedStyle (elem, prop, pseudo) {\n  // for older versions of Firefox, `getComputedStyle` required\n  // the second argument and may return `null` for some elements\n  // when `display: none`\n  let computedStyle = window.getComputedStyle(elem, pseudo || null) || {\n    display: 'none'\n  };\n\n  return computedStyle[prop]\n}\n\nfunction getRenderInfo (elem) {\n  if (!document.documentElement.contains(elem)) {\n    return {\n      detached: true,\n      rendered: false\n    }\n  }\n\n  let current = elem;\n  while (current !== document) {\n    if (getComputedStyle(current, 'display') === 'none') {\n      return {\n        detached: false,\n        rendered: false\n      }\n    }\n    current = current.parentNode;\n  }\n\n  return {\n    detached: false,\n    rendered: true\n  }\n}\n\nvar css = \".resize-triggers{visibility:hidden;opacity:0;pointer-events:none}.resize-contract-trigger,.resize-contract-trigger:before,.resize-expand-trigger,.resize-triggers{content:\\\"\\\";position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden}.resize-contract-trigger,.resize-expand-trigger{background:#eee;overflow:auto}.resize-contract-trigger:before{width:200%;height:200%}\";\n\nlet total = 0;\nlet style = null;\n\nfunction addListener (elem, callback) {\n  if (!elem.__resize_mutation_handler__) {\n    elem.__resize_mutation_handler__ = handleMutation.bind(elem);\n  }\n\n  let listeners = elem.__resize_listeners__;\n\n  if (!listeners) {\n    elem.__resize_listeners__ = [];\n    if (window.ResizeObserver) {\n      let { offsetWidth, offsetHeight } = elem;\n      let ro = new ResizeObserver(() => {\n        if (!elem.__resize_observer_triggered__) {\n          elem.__resize_observer_triggered__ = true;\n          if (elem.offsetWidth === offsetWidth && elem.offsetHeight === offsetHeight) {\n            return\n          }\n        }\n        runCallbacks(elem);\n      });\n\n      // initially display none won't trigger ResizeObserver callback\n      let { detached, rendered } = getRenderInfo(elem);\n      elem.__resize_observer_triggered__ = detached === false && rendered === false;\n      elem.__resize_observer__ = ro;\n      ro.observe(elem);\n    } else if (elem.attachEvent && elem.addEventListener) {\n      // targeting IE9/10\n      elem.__resize_legacy_resize_handler__ = function handleLegacyResize () {\n        runCallbacks(elem);\n      };\n      elem.attachEvent('onresize', elem.__resize_legacy_resize_handler__);\n      document.addEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n    } else {\n      if (!total) {\n        style = createStyles(css);\n      }\n      initTriggers(elem);\n\n      elem.__resize_rendered__ = getRenderInfo(elem).rendered;\n      if (window.MutationObserver) {\n        let mo = new MutationObserver(elem.__resize_mutation_handler__);\n        mo.observe(document, {\n          attributes: true,\n          childList: true,\n          characterData: true,\n          subtree: true\n        });\n        elem.__resize_mutation_observer__ = mo;\n      }\n    }\n  }\n\n  elem.__resize_listeners__.push(callback);\n  total++;\n}\n\nfunction removeListener (elem, callback) {\n  let listeners = elem.__resize_listeners__;\n  if (!listeners) {\n    return\n  }\n\n  if (callback) {\n    listeners.splice(listeners.indexOf(callback), 1);\n  }\n\n  // no listeners exist, or removing all listeners\n  if (!listeners.length || !callback) {\n    // targeting IE9/10\n    if (elem.detachEvent && elem.removeEventListener) {\n      elem.detachEvent('onresize', elem.__resize_legacy_resize_handler__);\n      document.removeEventListener('DOMSubtreeModified', elem.__resize_mutation_handler__);\n      return\n    }\n\n    if (elem.__resize_observer__) {\n      elem.__resize_observer__.unobserve(elem);\n      elem.__resize_observer__.disconnect();\n      elem.__resize_observer__ = null;\n    } else {\n      if (elem.__resize_mutation_observer__) {\n        elem.__resize_mutation_observer__.disconnect();\n        elem.__resize_mutation_observer__ = null;\n      }\n      elem.removeEventListener('scroll', handleScroll);\n      elem.removeChild(elem.__resize_triggers__.triggers);\n      elem.__resize_triggers__ = null;\n    }\n    elem.__resize_listeners__ = null;\n  }\n\n  if (!--total && style) {\n    style.parentNode.removeChild(style);\n  }\n}\n\nfunction getUpdatedSize (elem) {\n  let { width, height } = elem.__resize_last__;\n  let { offsetWidth, offsetHeight } = elem;\n  if (offsetWidth !== width || offsetHeight !== height) {\n    return {\n      width: offsetWidth,\n      height: offsetHeight\n    }\n  }\n  return null\n}\n\nfunction handleMutation () {\n  // `this` denotes the scrolling element\n  let { rendered, detached } = getRenderInfo(this);\n  if (rendered !== this.__resize_rendered__) {\n    if (!detached && this.__resize_triggers__) {\n      resetTriggers(this);\n      this.addEventListener('scroll', handleScroll, true);\n    }\n    this.__resize_rendered__ = rendered;\n    runCallbacks(this);\n  }\n}\n\nfunction handleScroll () {\n  // `this` denotes the scrolling element\n  resetTriggers(this);\n  if (this.__resize_raf__) {\n    cancelAnimationFrame(this.__resize_raf__);\n  }\n  this.__resize_raf__ = requestAnimationFrame(() => {\n    let updated = getUpdatedSize(this);\n    if (updated) {\n      this.__resize_last__ = updated;\n      runCallbacks(this);\n    }\n  });\n}\n\nfunction runCallbacks (elem) {\n  if (!elem || !elem.__resize_listeners__) {\n    return\n  }\n  elem.__resize_listeners__.forEach(callback => {\n    callback.call(elem, elem);\n  });\n}\n\nfunction initTriggers (elem) {\n  let position = getComputedStyle(elem, 'position');\n  if (!position || position === 'static') {\n    elem.style.position = 'relative';\n  }\n\n  elem.__resize_old_position__ = position;\n  elem.__resize_last__ = {};\n\n  let triggers = createElement('div', {\n    className: 'resize-triggers'\n  });\n  let expand = createElement('div', {\n    className: 'resize-expand-trigger'\n  });\n  let expandChild = createElement('div');\n  let contract = createElement('div', {\n    className: 'resize-contract-trigger'\n  });\n  expand.appendChild(expandChild);\n  triggers.appendChild(expand);\n  triggers.appendChild(contract);\n  elem.appendChild(triggers);\n\n  elem.__resize_triggers__ = {\n    triggers,\n    expand,\n    expandChild,\n    contract\n  };\n\n  resetTriggers(elem);\n  elem.addEventListener('scroll', handleScroll, true);\n\n  elem.__resize_last__ = {\n    width: elem.offsetWidth,\n    height: elem.offsetHeight\n  };\n}\n\nfunction resetTriggers (elem) {\n  let { expand, expandChild, contract } = elem.__resize_triggers__;\n\n  // batch read\n  let { scrollWidth: csw, scrollHeight: csh } = contract;\n  let { offsetWidth: eow, offsetHeight: eoh, scrollWidth: esw, scrollHeight: esh } = expand;\n\n  // batch write\n  contract.scrollLeft = csw;\n  contract.scrollTop = csh;\n  expandChild.style.width = eow + 1 + 'px';\n  expandChild.style.height = eoh + 1 + 'px';\n  expand.scrollLeft = esw;\n  expand.scrollTop = esh;\n}\n\nexport { addListener, removeListener };\n","var COMPLETE = 'complete',\n    CANCELED = 'canceled';\n\nfunction raf(task){\n    if('requestAnimationFrame' in window){\n        return window.requestAnimationFrame(task);\n    }\n\n    setTimeout(task, 16);\n}\n\nfunction setElementScroll(element, x, y){\n    if(element.self === element){\n        element.scrollTo(x, y);\n    }else{\n        element.scrollLeft = x;\n        element.scrollTop = y;\n    }\n}\n\nfunction getTargetScrollLocation(scrollSettings, parent){\n    var align = scrollSettings.align,\n        target = scrollSettings.target,\n        targetPosition = target.getBoundingClientRect(),\n        parentPosition,\n        x,\n        y,\n        differenceX,\n        differenceY,\n        targetWidth,\n        targetHeight,\n        leftAlign = align && align.left != null ? align.left : 0.5,\n        topAlign = align && align.top != null ? align.top : 0.5,\n        leftOffset = align && align.leftOffset != null ? align.leftOffset : 0,\n        topOffset = align && align.topOffset != null ? align.topOffset : 0,\n        leftScalar = leftAlign,\n        topScalar = topAlign;\n\n    if(scrollSettings.isWindow(parent)){\n        targetWidth = Math.min(targetPosition.width, parent.innerWidth);\n        targetHeight = Math.min(targetPosition.height, parent.innerHeight);\n        x = targetPosition.left + parent.pageXOffset - parent.innerWidth * leftScalar + targetWidth * leftScalar;\n        y = targetPosition.top + parent.pageYOffset - parent.innerHeight * topScalar + targetHeight * topScalar;\n        x -= leftOffset;\n        y -= topOffset;\n        differenceX = x - parent.pageXOffset;\n        differenceY = y - parent.pageYOffset;\n    }else{\n        targetWidth = targetPosition.width;\n        targetHeight = targetPosition.height;\n        parentPosition = parent.getBoundingClientRect();\n        var offsetLeft = targetPosition.left - (parentPosition.left - parent.scrollLeft);\n        var offsetTop = targetPosition.top - (parentPosition.top - parent.scrollTop);\n        x = offsetLeft + (targetWidth * leftScalar) - parent.clientWidth * leftScalar;\n        y = offsetTop + (targetHeight * topScalar) - parent.clientHeight * topScalar;\n        x -= leftOffset;\n        y -= topOffset;\n        x = Math.max(Math.min(x, parent.scrollWidth - parent.clientWidth), 0);\n        y = Math.max(Math.min(y, parent.scrollHeight - parent.clientHeight), 0);\n        differenceX = x - parent.scrollLeft;\n        differenceY = y - parent.scrollTop;\n    }\n\n    return {\n        x: x,\n        y: y,\n        differenceX: differenceX,\n        differenceY: differenceY\n    };\n}\n\nfunction animate(parent){\n    var scrollSettings = parent._scrollSettings;\n\n    if(!scrollSettings){\n        return;\n    }\n\n    var maxSynchronousAlignments = scrollSettings.maxSynchronousAlignments;\n\n    var location = getTargetScrollLocation(scrollSettings, parent),\n        time = Date.now() - scrollSettings.startTime,\n        timeValue = Math.min(1 / scrollSettings.time * time, 1);\n\n    if(scrollSettings.endIterations >= maxSynchronousAlignments){\n        setElementScroll(parent, location.x, location.y);\n        parent._scrollSettings = null;\n        return scrollSettings.end(COMPLETE);\n    }\n\n    var easeValue = 1 - scrollSettings.ease(timeValue);\n\n    setElementScroll(parent,\n        location.x - location.differenceX * easeValue,\n        location.y - location.differenceY * easeValue\n    );\n\n    if(time >= scrollSettings.time){\n        scrollSettings.endIterations++;\n        return animate(parent);\n    }\n\n    raf(animate.bind(null, parent));\n}\n\nfunction defaultIsWindow(target){\n    return target.self === target\n}\n\nfunction transitionScrollTo(target, parent, settings, callback){\n    var idle = !parent._scrollSettings,\n        lastSettings = parent._scrollSettings,\n        now = Date.now(),\n        cancelHandler,\n        passiveOptions = { passive: true };\n\n    if(lastSettings){\n        lastSettings.end(CANCELED);\n    }\n\n    function end(endType){\n        parent._scrollSettings = null;\n\n        if(parent.parentElement && parent.parentElement._scrollSettings){\n            parent.parentElement._scrollSettings.end(endType);\n        }\n\n        if(settings.debug){\n            console.log('Scrolling ended with type', endType, 'for', parent)\n        }\n\n        callback(endType);\n        if(cancelHandler){\n            parent.removeEventListener('touchstart', cancelHandler, passiveOptions);\n            parent.removeEventListener('wheel', cancelHandler, passiveOptions);\n        }\n    }\n\n    var maxSynchronousAlignments = settings.maxSynchronousAlignments;\n\n    if(maxSynchronousAlignments == null){\n        maxSynchronousAlignments = 3;\n    }\n\n    parent._scrollSettings = {\n        startTime: now,\n        endIterations: 0,\n        target: target,\n        time: settings.time,\n        ease: settings.ease,\n        align: settings.align,\n        isWindow: settings.isWindow || defaultIsWindow,\n        maxSynchronousAlignments: maxSynchronousAlignments,\n        end: end\n    };\n\n    if(!('cancellable' in settings) || settings.cancellable){\n        cancelHandler = end.bind(null, CANCELED);\n        parent.addEventListener('touchstart', cancelHandler, passiveOptions);\n        parent.addEventListener('wheel', cancelHandler, passiveOptions);\n    }\n\n    if(idle){\n        animate(parent);\n    }\n\n    return cancelHandler\n}\n\nfunction defaultIsScrollable(element){\n    return (\n        'pageXOffset' in element ||\n        (\n            element.scrollHeight !== element.clientHeight ||\n            element.scrollWidth !== element.clientWidth\n        ) &&\n        getComputedStyle(element).overflow !== 'hidden'\n    );\n}\n\nfunction defaultValidTarget(){\n    return true;\n}\n\nfunction findParentElement(el){\n    if (el.assignedSlot) {\n        return findParentElement(el.assignedSlot);\n    }\n\n    if (el.parentElement) {\n        if(el.parentElement.tagName === 'BODY'){\n            return el.parentElement.ownerDocument.defaultView || el.parentElement.ownerDocument.ownerWindow;\n        }\n        return el.parentElement;\n    }\n\n    if (el.getRootNode){\n        var parent = el.getRootNode()\n        if(parent.nodeType === 11) {\n            return parent.host;\n        }\n    }\n}\n\nmodule.exports = function(target, settings, callback){\n    if(!target){\n        return;\n    }\n\n    if(typeof settings === 'function'){\n        callback = settings;\n        settings = null;\n    }\n\n    if(!settings){\n        settings = {};\n    }\n\n    settings.time = isNaN(settings.time) ? 1000 : settings.time;\n    settings.ease = settings.ease || function(v){return 1 - Math.pow(1 - v, v / 2);};\n\n    var parent = findParentElement(target),\n        parents = 1;\n\n    function done(endType){\n        parents--;\n        if(!parents){\n            callback && callback(endType);\n        }\n    }\n\n    var validTarget = settings.validTarget || defaultValidTarget;\n    var isScrollable = settings.isScrollable;\n\n    if(settings.debug){\n        console.log('About to scroll to', target)\n\n        if(!parent){\n            console.error('Target did not have a parent, is it mounted in the DOM?')\n        }\n    }\n\n    var cancel;\n\n    while(parent){\n        if(settings.debug){\n            console.log('Scrolling parent node', parent)\n        }\n\n        if(validTarget(parent, parents) && (isScrollable ? isScrollable(parent, defaultIsScrollable) : defaultIsScrollable(parent))){\n            parents++;\n            cancel = transitionScrollTo(target, parent, settings, done);\n        }\n\n        parent = findParentElement(parent);\n\n        if(!parent){\n            done(COMPLETE)\n            break;\n        }\n    }\n\n    return cancel;\n};\n","const runningOnBrowser = typeof window !== \"undefined\";\r\n\r\nconst isBot =\r\n\t(runningOnBrowser && !(\"onscroll\" in window)) ||\r\n\t(typeof navigator !== \"undefined\" &&\r\n\t\t/(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent));\r\n\r\nconst supportsIntersectionObserver =\r\n\trunningOnBrowser && \"IntersectionObserver\" in window;\r\n\r\nconst supportsClassList =\r\n\trunningOnBrowser && \"classList\" in document.createElement(\"p\");\r\n\r\nconst defaultSettings = {\r\n\telements_selector: \"img\",\r\n\tcontainer: isBot || runningOnBrowser ? document : null,\r\n\tthreshold: 300,\r\n\tthresholds: null,\r\n\tdata_src: \"src\",\r\n\tdata_srcset: \"srcset\",\r\n\tdata_sizes: \"sizes\",\r\n\tdata_bg: \"bg\",\r\n\tdata_poster: \"poster\",\r\n\tclass_loading: \"loading\",\r\n\tclass_loaded: \"loaded\",\r\n\tclass_error: \"error\",\r\n\tload_delay: 0,\r\n\tauto_unobserve: true,\r\n\tcallback_enter: null,\r\n\tcallback_exit: null,\r\n\tcallback_reveal: null,\r\n\tcallback_loaded: null,\r\n\tcallback_error: null,\r\n\tcallback_finish: null,\r\n\tuse_native: false\r\n};\r\n\r\nvar getInstanceSettings = customSettings => {\r\n\treturn Object.assign({}, defaultSettings, customSettings);\r\n};\r\n\r\n/* Creates instance and notifies it through the window element */\r\nconst createInstance = function(classObj, options) {\r\n\tvar event;\r\n\tlet eventString = \"LazyLoad::Initialized\";\r\n\tlet instance = new classObj(options);\r\n\ttry {\r\n\t\t// Works in modern browsers\r\n\t\tevent = new CustomEvent(eventString, { detail: { instance } });\r\n\t} catch (err) {\r\n\t\t// Works in Internet Explorer (all versions)\r\n\t\tevent = document.createEvent(\"CustomEvent\");\r\n\t\tevent.initCustomEvent(eventString, false, false, { instance });\r\n\t}\r\n\twindow.dispatchEvent(event);\r\n};\r\n\r\n/* Auto initialization of one or more instances of lazyload, depending on the \r\n    options passed in (plain object or an array) */\r\nfunction autoInitialize(classObj, options) {\r\n\tif (!options) {\r\n\t\treturn;\r\n\t}\r\n\tif (!options.length) {\r\n\t\t// Plain object\r\n\t\tcreateInstance(classObj, options);\r\n\t} else {\r\n\t\t// Array of objects\r\n\t\tfor (let i = 0, optionsItem; (optionsItem = options[i]); i += 1) {\r\n\t\t\tcreateInstance(classObj, optionsItem);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nconst dataPrefix = \"data-\";\r\nconst processedDataName = \"was-processed\";\r\nconst timeoutDataName = \"ll-timeout\";\r\nconst trueString = \"true\";\r\n\r\nconst getData = (element, attribute) => {\r\n\treturn element.getAttribute(dataPrefix + attribute);\r\n};\r\n\r\nconst setData = (element, attribute, value) => {\r\n\tvar attrName = dataPrefix + attribute;\r\n\tif (value === null) {\r\n\t\telement.removeAttribute(attrName);\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst resetWasProcessedData = element =>\r\n\tsetData(element, processedDataName, null);\r\n\r\nconst setWasProcessedData = element =>\r\n\tsetData(element, processedDataName, trueString);\r\n\r\nconst getWasProcessedData = element =>\r\n\tgetData(element, processedDataName) === trueString;\r\n\r\nconst setTimeoutData = (element, value) =>\r\n\tsetData(element, timeoutDataName, value);\r\n\r\nconst getTimeoutData = element => getData(element, timeoutDataName);\r\n\r\nconst purgeProcessedElements = elements => {\r\n\treturn elements.filter(element => !getWasProcessedData(element));\r\n};\r\n\r\nconst purgeOneElement = (elements, elementToPurge) => {\r\n\treturn elements.filter(element => element !== elementToPurge);\r\n};\r\n\r\nconst safeCallback = (callback, arg1, arg2, arg3) => {\r\n\tif (!callback) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (arg3 !== undefined) {\r\n\t\tcallback(arg1, arg2, arg3);\r\n\t\treturn;\r\n\t}\r\n\tif (arg2 !== undefined) {\r\n\t\tcallback(arg1, arg2);\r\n\t\treturn;\r\n\t}\r\n\tcallback(arg1);\r\n};\r\n\r\nconst updateLoadingCount = (instance, plusMinus) => {\r\n    instance.loadingCount += plusMinus;\r\n    if (instance._elements.length === 0 && instance.loadingCount === 0) {\r\n        safeCallback(instance._settings.callback_finish, instance);\r\n    }\r\n};\r\n\r\nconst getSourceTags = parentTag => {\r\n\tlet sourceTags = [];\r\n\tfor (let i = 0, childTag; (childTag = parentTag.children[i]); i += 1) {\r\n\t\tif (childTag.tagName === \"SOURCE\") {\r\n\t\t\tsourceTags.push(childTag);\r\n\t\t}\r\n\t}\r\n\treturn sourceTags;\r\n};\r\n\r\nconst setAttributeIfValue = (element, attrName, value) => {\r\n\tif (!value) {\r\n\t\treturn;\r\n\t}\r\n\telement.setAttribute(attrName, value);\r\n};\r\n\r\nconst setImageAttributes = (element, settings) => {\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"sizes\",\r\n\t\tgetData(element, settings.data_sizes)\r\n\t);\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"srcset\",\r\n\t\tgetData(element, settings.data_srcset)\r\n\t);\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesImg = (element, settings) => {\r\n\tconst parent = element.parentNode;\r\n\r\n\tif (parent && parent.tagName === \"PICTURE\") {\r\n\t\tlet sourceTags = getSourceTags(parent);\r\n\t\tsourceTags.forEach(sourceTag => {\r\n\t\t\tsetImageAttributes(sourceTag, settings);\r\n\t\t});\r\n\t}\r\n\r\n\tsetImageAttributes(element, settings);\r\n};\r\n\r\nconst setSourcesIframe = (element, settings) => {\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n};\r\n\r\nconst setSourcesVideo = (element, settings) => {\r\n\tlet sourceTags = getSourceTags(element);\r\n\tsourceTags.forEach(sourceTag => {\r\n\t\tsetAttributeIfValue(\r\n\t\t\tsourceTag,\r\n\t\t\t\"src\",\r\n\t\t\tgetData(sourceTag, settings.data_src)\r\n\t\t);\r\n\t});\r\n\tsetAttributeIfValue(\r\n\t\telement,\r\n\t\t\"poster\",\r\n\t\tgetData(element, settings.data_poster)\r\n\t);\r\n\tsetAttributeIfValue(element, \"src\", getData(element, settings.data_src));\r\n\telement.load();\r\n};\r\n\r\nconst setSourcesBgImage = (element, settings) => {\r\n\tconst srcDataValue = getData(element, settings.data_src);\r\n\tconst bgDataValue = getData(element, settings.data_bg);\r\n\r\n\tif (srcDataValue) {\r\n\t\telement.style.backgroundImage = `url(\"${srcDataValue}\")`;\r\n\t}\r\n\r\n\tif (bgDataValue) {\r\n\t\telement.style.backgroundImage = bgDataValue;\r\n\t}\r\n};\r\n\r\nconst setSourcesFunctions = {\r\n\tIMG: setSourcesImg,\r\n\tIFRAME: setSourcesIframe,\r\n\tVIDEO: setSourcesVideo\r\n};\r\n\r\nconst setSources = (element, instance) => {\r\n\tconst settings = instance._settings;\r\n\tconst tagName = element.tagName;\r\n\tconst setSourcesFunction = setSourcesFunctions[tagName];\r\n\tif (setSourcesFunction) {\r\n\t\tsetSourcesFunction(element, settings);\r\n\t\tupdateLoadingCount(instance, 1);\r\n\t\tinstance._elements = purgeOneElement(instance._elements, element);\r\n\t\treturn;\r\n\t}\r\n\tsetSourcesBgImage(element, settings);\r\n};\r\n\r\nconst addClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.add(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className += (element.className ? \" \" : \"\") + className;\r\n};\r\n\r\nconst removeClass = (element, className) => {\r\n\tif (supportsClassList) {\r\n\t\telement.classList.remove(className);\r\n\t\treturn;\r\n\t}\r\n\telement.className = element.className.\r\n\t\treplace(new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\"), \" \").\r\n\t\treplace(/^\\s+/, \"\").\r\n\t\treplace(/\\s+$/, \"\");\r\n};\r\n\r\nconst genericLoadEventName = \"load\";\r\nconst mediaLoadEventName = \"loadeddata\";\r\nconst errorEventName = \"error\";\r\n\r\nconst addEventListener = (element, eventName, handler) => {\r\n\telement.addEventListener(eventName, handler);\r\n};\r\n\r\nconst removeEventListener = (element, eventName, handler) => {\r\n\telement.removeEventListener(eventName, handler);\r\n};\r\n\r\nconst addEventListeners = (element, loadHandler, errorHandler) => {\r\n\taddEventListener(element, genericLoadEventName, loadHandler);\r\n\taddEventListener(element, mediaLoadEventName, loadHandler);\r\n\taddEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst removeEventListeners = (element, loadHandler, errorHandler) => {\r\n\tremoveEventListener(element, genericLoadEventName, loadHandler);\r\n\tremoveEventListener(element, mediaLoadEventName, loadHandler);\r\n\tremoveEventListener(element, errorEventName, errorHandler);\r\n};\r\n\r\nconst eventHandler = function(event, success, instance) {\r\n\tvar settings = instance._settings;\r\n\tconst className = success ? settings.class_loaded : settings.class_error;\r\n\tconst callback = success\r\n\t\t? settings.callback_loaded\r\n\t\t: settings.callback_error;\r\n\tconst element = event.target;\r\n\r\n\tremoveClass(element, settings.class_loading);\r\n\taddClass(element, className);\r\n\tsafeCallback(callback, element, instance);\r\n\r\n\tupdateLoadingCount(instance, -1);\r\n};\r\n\r\nconst addOneShotEventListeners = (element, instance) => {\r\n\tconst loadHandler = event => {\r\n\t\teventHandler(event, true, instance);\r\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\tconst errorHandler = event => {\r\n\t\teventHandler(event, false, instance);\r\n\t\tremoveEventListeners(element, loadHandler, errorHandler);\r\n\t};\r\n\taddEventListeners(element, loadHandler, errorHandler);\r\n};\r\n\r\nconst managedTags = [\"IMG\", \"IFRAME\", \"VIDEO\"];\r\n\r\nconst onEnter = (element, entry, instance) => {\r\n\tconst settings = instance._settings;\r\n\tsafeCallback(settings.callback_enter, element, entry, instance);\r\n\tif (!settings.load_delay) {\r\n\t\trevealAndUnobserve(element, instance);\r\n\t\treturn;\r\n\t}\r\n\tdelayLoad(element, instance);\r\n};\r\n\r\nconst revealAndUnobserve = (element, instance) => {\r\n\tvar observer = instance._observer;\r\n\trevealElement(element, instance);\r\n\tif (observer && instance._settings.auto_unobserve) {\r\n\t\tobserver.unobserve(element);\r\n\t}\r\n};\r\n\r\nconst onExit = (element, entry, instance) => {\r\n\tconst settings = instance._settings;\r\n\tsafeCallback(settings.callback_exit, element, entry, instance);\r\n\tif (!settings.load_delay) {\r\n\t\treturn;\r\n\t}\r\n\tcancelDelayLoad(element);\r\n};\r\n\r\nconst cancelDelayLoad = element => {\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (!timeoutId) {\r\n\t\treturn; // do nothing if timeout doesn't exist\r\n\t}\r\n\tclearTimeout(timeoutId);\r\n\tsetTimeoutData(element, null);\r\n};\r\n\r\nconst delayLoad = (element, instance) => {\r\n\tvar loadDelay = instance._settings.load_delay;\r\n\tvar timeoutId = getTimeoutData(element);\r\n\tif (timeoutId) {\r\n\t\treturn; // do nothing if timeout already set\r\n\t}\r\n\ttimeoutId = setTimeout(function() {\r\n\t\trevealAndUnobserve(element, instance);\r\n\t\tcancelDelayLoad(element);\r\n\t}, loadDelay);\r\n\tsetTimeoutData(element, timeoutId);\r\n};\r\n\r\nconst revealElement = (element, instance, force) => {\r\n\tvar settings = instance._settings;\r\n\tif (!force && getWasProcessedData(element)) {\r\n\t\treturn; // element has already been processed and force wasn't true\r\n\t}\r\n\tif (managedTags.indexOf(element.tagName) > -1) {\r\n\t\taddOneShotEventListeners(element, instance);\r\n\t\taddClass(element, settings.class_loading);\r\n\t}\r\n\tsetSources(element, instance);\r\n\tsetWasProcessedData(element);\r\n\tsafeCallback(settings.callback_reveal, element, instance);\r\n\tsafeCallback(settings.callback_set, element, instance);\r\n};\r\n\r\nconst isIntersecting = entry =>\r\n\tentry.isIntersecting || entry.intersectionRatio > 0;\r\n\r\nconst getObserverSettings = settings => ({\r\n\troot: settings.container === document ? null : settings.container,\r\n\trootMargin: settings.thresholds || settings.threshold + \"px\"\r\n});\r\n\r\nconst setObserver = instance => {\r\n\tif (!supportsIntersectionObserver) {\r\n\t\treturn false;\r\n\t}\r\n\tinstance._observer = new IntersectionObserver(entries => {\r\n\t\tentries.forEach(entry =>\r\n\t\t\tisIntersecting(entry)\r\n\t\t\t\t? onEnter(entry.target, entry, instance)\r\n\t\t\t\t: onExit(entry.target, entry, instance)\r\n\t\t);\r\n\t}, getObserverSettings(instance._settings));\r\n\treturn true;\r\n};\r\n\r\nconst nativeLazyTags = [\"IMG\", \"IFRAME\"];\r\n\r\nconst shouldUseNative = settings =>\r\n\tsettings.use_native && \"loading\" in HTMLImageElement.prototype;\r\n\r\nconst loadAllNative = instance => {\r\n\tinstance._elements.forEach(element => {\r\n\t\tif (nativeLazyTags.indexOf(element.tagName) === -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telement.setAttribute(\"loading\", \"lazy\");\r\n\t\trevealElement(element, instance);\r\n\t});\r\n};\r\n\r\nconst nodeSetToArray = nodeSet => Array.prototype.slice.call(nodeSet);\r\n\r\nconst queryElements = settings =>\r\n\tsettings.container.querySelectorAll(settings.elements_selector);\r\n\r\nconst getElements = (elements, settings) =>\r\n\tpurgeProcessedElements(nodeSetToArray(elements || queryElements(settings)));\r\n\r\nconst retryLazyLoad = instance => {\r\n\tvar settings = instance._settings;\r\n\tvar errorElements = settings.container.querySelectorAll(\r\n\t\t\".\" + settings.class_error\r\n\t);\r\n\terrorElements.forEach(element => {\r\n\t\tremoveClass(element, settings.class_error);\r\n\t\tresetWasProcessedData(element);\r\n\t});\r\n\tinstance.update();\r\n};\r\n\r\nconst setOnlineCheck = instance => {\r\n\tif (!runningOnBrowser) {\r\n\t\treturn;\r\n\t}\r\n\twindow.addEventListener(\"online\", event => {\r\n\t\tretryLazyLoad(instance);\r\n\t});\r\n};\r\n\r\nconst LazyLoad = function(customSettings, elements) {\r\n    this._settings = getInstanceSettings(customSettings);\r\n    this.loadingCount = 0;\r\n    setObserver(this);\r\n    this.update(elements);\r\n    setOnlineCheck(this);\r\n};\r\n\r\nLazyLoad.prototype = {\r\n    update: function(elements) {\r\n        var settings = this._settings;\r\n        this._elements = getElements(elements, settings);\r\n        if (isBot || !this._observer) {\r\n            this.loadAll();\r\n            return;\r\n        }\r\n        if (shouldUseNative(settings)) {\r\n            loadAllNative(this);\r\n            this._elements = getElements(elements, settings);\r\n        }\r\n        this._elements.forEach(element => {\r\n            this._observer.observe(element);\r\n        });\r\n    },\r\n\r\n    destroy: function() {\r\n        if (this._observer) {\r\n            this._elements.forEach(element => {\r\n                this._observer.unobserve(element);\r\n            });\r\n            this._observer = null;\r\n        }\r\n        this._elements = null;\r\n        this._settings = null;\r\n    },\r\n\r\n    load: function(element, force) {\r\n        revealElement(element, this, force);\r\n    },\r\n\r\n    loadAll: function() {\r\n        this._elements.forEach(element => {\r\n            revealAndUnobserve(element, this);\r\n        });\r\n    }\r\n};\r\n\r\n/* Automatic instances creation if required (useful for async script loading) */\r\nif (runningOnBrowser) {\r\n    autoInitialize(LazyLoad, window.lazyLoadOptions);\r\n}\r\n\r\nexport default LazyLoad;\r\n","/*!\n * vue-i18n v8.20.0 \n * (c) 2020 kazuya kawaguchi\n * Released under the MIT License.\n */\n/*  */\n\n/**\n * constants\n */\n\nvar numberFormatKeys = [\n  'style',\n  'currency',\n  'currencyDisplay',\n  'useGrouping',\n  'minimumIntegerDigits',\n  'minimumFractionDigits',\n  'maximumFractionDigits',\n  'minimumSignificantDigits',\n  'maximumSignificantDigits',\n  'localeMatcher',\n  'formatMatcher',\n  'unit'\n];\n\n/**\n * utilities\n */\n\nfunction warn (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.warn('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.warn(err.stack);\n    }\n  }\n}\n\nfunction error (msg, err) {\n  if (typeof console !== 'undefined') {\n    console.error('[vue-i18n] ' + msg);\n    /* istanbul ignore if */\n    if (err) {\n      console.error(err.stack);\n    }\n  }\n}\n\nvar isArray = Array.isArray;\n\nfunction isObject (obj) {\n  return obj !== null && typeof obj === 'object'\n}\n\nfunction isBoolean (val) {\n  return typeof val === 'boolean'\n}\n\nfunction isString (val) {\n  return typeof val === 'string'\n}\n\nvar toString = Object.prototype.toString;\nvar OBJECT_STRING = '[object Object]';\nfunction isPlainObject (obj) {\n  return toString.call(obj) === OBJECT_STRING\n}\n\nfunction isNull (val) {\n  return val === null || val === undefined\n}\n\nfunction parseArgs () {\n  var args = [], len = arguments.length;\n  while ( len-- ) args[ len ] = arguments[ len ];\n\n  var locale = null;\n  var params = null;\n  if (args.length === 1) {\n    if (isObject(args[0]) || Array.isArray(args[0])) {\n      params = args[0];\n    } else if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n  } else if (args.length === 2) {\n    if (typeof args[0] === 'string') {\n      locale = args[0];\n    }\n    /* istanbul ignore if */\n    if (isObject(args[1]) || Array.isArray(args[1])) {\n      params = args[1];\n    }\n  }\n\n  return { locale: locale, params: params }\n}\n\nfunction looseClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction remove (arr, item) {\n  if (arr.length) {\n    var index = arr.indexOf(item);\n    if (index > -1) {\n      return arr.splice(index, 1)\n    }\n  }\n}\n\nfunction includes (arr, item) {\n  return !!~arr.indexOf(item)\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n  return hasOwnProperty.call(obj, key)\n}\n\nfunction merge (target) {\n  var arguments$1 = arguments;\n\n  var output = Object(target);\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments$1[i];\n    if (source !== undefined && source !== null) {\n      var key = (void 0);\n      for (key in source) {\n        if (hasOwn(source, key)) {\n          if (isObject(source[key])) {\n            output[key] = merge(output[key], source[key]);\n          } else {\n            output[key] = source[key];\n          }\n        }\n      }\n    }\n  }\n  return output\n}\n\nfunction looseEqual (a, b) {\n  if (a === b) { return true }\n  var isObjectA = isObject(a);\n  var isObjectB = isObject(b);\n  if (isObjectA && isObjectB) {\n    try {\n      var isArrayA = Array.isArray(a);\n      var isArrayB = Array.isArray(b);\n      if (isArrayA && isArrayB) {\n        return a.length === b.length && a.every(function (e, i) {\n          return looseEqual(e, b[i])\n        })\n      } else if (!isArrayA && !isArrayB) {\n        var keysA = Object.keys(a);\n        var keysB = Object.keys(b);\n        return keysA.length === keysB.length && keysA.every(function (key) {\n          return looseEqual(a[key], b[key])\n        })\n      } else {\n        /* istanbul ignore next */\n        return false\n      }\n    } catch (e) {\n      /* istanbul ignore next */\n      return false\n    }\n  } else if (!isObjectA && !isObjectB) {\n    return String(a) === String(b)\n  } else {\n    return false\n  }\n}\n\n/*  */\n\nfunction extend (Vue) {\n  if (!Vue.prototype.hasOwnProperty('$i18n')) {\n    // $FlowFixMe\n    Object.defineProperty(Vue.prototype, '$i18n', {\n      get: function get () { return this._i18n }\n    });\n  }\n\n  Vue.prototype.$t = function (key) {\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n    var i18n = this.$i18n;\n    return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))\n  };\n\n  Vue.prototype.$tc = function (key, choice) {\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n\n    var i18n = this.$i18n;\n    return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))\n  };\n\n  Vue.prototype.$te = function (key, locale) {\n    var i18n = this.$i18n;\n    return i18n._te(key, i18n.locale, i18n._getMessages(), locale)\n  };\n\n  Vue.prototype.$d = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))\n  };\n\n  Vue.prototype.$n = function (value) {\n    var ref;\n\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n    return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))\n  };\n}\n\n/*  */\n\nvar mixin = {\n  beforeCreate: function beforeCreate () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages = {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages = merge(localeMessages, JSON.parse(resource));\n            });\n            Object.keys(localeMessages).forEach(function (locale) {\n              options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);\n            });\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              error(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n        this._i18n = options.i18n;\n        this._i18nWatcher = this._i18n.watchI18nData();\n      } else if (isPlainObject(options.i18n)) {\n        var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n\n          ? this.$root.$i18n\n          : null;\n        // component local i18n\n        if (rootI18n) {\n          options.i18n.root = this.$root;\n          options.i18n.formatter = rootI18n.formatter;\n          options.i18n.fallbackLocale = rootI18n.fallbackLocale;\n          options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;\n          options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;\n          options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;\n          options.i18n.pluralizationRules = rootI18n.pluralizationRules;\n          options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;\n        }\n\n        // init locale messages via custom blocks\n        if (options.__i18n) {\n          try {\n            var localeMessages$1 = {};\n            options.__i18n.forEach(function (resource) {\n              localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));\n            });\n            options.i18n.messages = localeMessages$1;\n          } catch (e) {\n            if (process.env.NODE_ENV !== 'production') {\n              warn(\"Cannot parse locale messages via custom blocks.\", e);\n            }\n          }\n        }\n\n        var ref = options.i18n;\n        var sharedMessages = ref.sharedMessages;\n        if (sharedMessages && isPlainObject(sharedMessages)) {\n          options.i18n.messages = merge(options.i18n.messages, sharedMessages);\n        }\n\n        this._i18n = new VueI18n(options.i18n);\n        this._i18nWatcher = this._i18n.watchI18nData();\n\n        if (options.i18n.sync === undefined || !!options.i18n.sync) {\n          this._localeWatcher = this.$i18n.watchLocale();\n        }\n\n        if (rootI18n) {\n          rootI18n.onComponentInstanceCreated(this._i18n);\n        }\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      // root i18n\n      this._i18n = this.$root.$i18n;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      // parent i18n\n      this._i18n = options.parent.$i18n;\n    }\n  },\n\n  beforeMount: function beforeMount () {\n    var options = this.$options;\n    options.i18n = options.i18n || (options.__i18n ? {} : null);\n\n    if (options.i18n) {\n      if (options.i18n instanceof VueI18n) {\n        // init locale messages via custom blocks\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else if (isPlainObject(options.i18n)) {\n        this._i18n.subscribeDataChanging(this);\n        this._subscribing = true;\n      } else {\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Cannot be interpreted 'i18n' option.\");\n        }\n      }\n    } else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    } else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {\n      this._i18n.subscribeDataChanging(this);\n      this._subscribing = true;\n    }\n  },\n\n  beforeDestroy: function beforeDestroy () {\n    if (!this._i18n) { return }\n\n    var self = this;\n    this.$nextTick(function () {\n      if (self._subscribing) {\n        self._i18n.unsubscribeDataChanging(self);\n        delete self._subscribing;\n      }\n\n      if (self._i18nWatcher) {\n        self._i18nWatcher();\n        self._i18n.destroyVM();\n        delete self._i18nWatcher;\n      }\n\n      if (self._localeWatcher) {\n        self._localeWatcher();\n        delete self._localeWatcher;\n      }\n    });\n  }\n};\n\n/*  */\n\nvar interpolationComponent = {\n  name: 'i18n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    path: {\n      type: String,\n      required: true\n    },\n    locale: {\n      type: String\n    },\n    places: {\n      type: [Array, Object]\n    }\n  },\n  render: function render (h, ref) {\n    var data = ref.data;\n    var parent = ref.parent;\n    var props = ref.props;\n    var slots = ref.slots;\n\n    var $i18n = parent.$i18n;\n    if (!$i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return\n    }\n\n    var path = props.path;\n    var locale = props.locale;\n    var places = props.places;\n    var params = slots();\n    var children = $i18n.i(\n      path,\n      locale,\n      onlyHasDefaultPlace(params) || places\n        ? useLegacyPlaces(params.default, places)\n        : params\n    );\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag ? h(tag, data, children) : children\n  }\n};\n\nfunction onlyHasDefaultPlace (params) {\n  var prop;\n  for (prop in params) {\n    if (prop !== 'default') { return false }\n  }\n  return Boolean(prop)\n}\n\nfunction useLegacyPlaces (children, places) {\n  var params = places ? createParamsFromPlaces(places) : {};\n\n  if (!children) { return params }\n\n  // Filter empty text nodes\n  children = children.filter(function (child) {\n    return child.tag || child.text.trim() !== ''\n  });\n\n  var everyPlace = children.every(vnodeHasPlaceAttribute);\n  if (process.env.NODE_ENV !== 'production' && everyPlace) {\n    warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return children.reduce(\n    everyPlace ? assignChildPlace : assignChildIndex,\n    params\n  )\n}\n\nfunction createParamsFromPlaces (places) {\n  if (process.env.NODE_ENV !== 'production') {\n    warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');\n  }\n\n  return Array.isArray(places)\n    ? places.reduce(assignChildIndex, {})\n    : Object.assign({}, places)\n}\n\nfunction assignChildPlace (params, child) {\n  if (child.data && child.data.attrs && child.data.attrs.place) {\n    params[child.data.attrs.place] = child;\n  }\n  return params\n}\n\nfunction assignChildIndex (params, child, index) {\n  params[index] = child;\n  return params\n}\n\nfunction vnodeHasPlaceAttribute (vnode) {\n  return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)\n}\n\n/*  */\n\nvar numberComponent = {\n  name: 'i18n-n',\n  functional: true,\n  props: {\n    tag: {\n      type: [String, Boolean, Object],\n      default: 'span'\n    },\n    value: {\n      type: Number,\n      required: true\n    },\n    format: {\n      type: [String, Object]\n    },\n    locale: {\n      type: String\n    }\n  },\n  render: function render (h, ref) {\n    var props = ref.props;\n    var parent = ref.parent;\n    var data = ref.data;\n\n    var i18n = parent.$i18n;\n\n    if (!i18n) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn('Cannot find VueI18n instance!');\n      }\n      return null\n    }\n\n    var key = null;\n    var options = null;\n\n    if (isString(props.format)) {\n      key = props.format;\n    } else if (isObject(props.format)) {\n      if (props.format.key) {\n        key = props.format.key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(props.format).reduce(function (acc, prop) {\n        var obj;\n\n        if (includes(numberFormatKeys, prop)) {\n          return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))\n        }\n        return acc\n      }, null);\n    }\n\n    var locale = props.locale || i18n.locale;\n    var parts = i18n._ntp(props.value, locale, key, options);\n\n    var values = parts.map(function (part, index) {\n      var obj;\n\n      var slot = data.scopedSlots && data.scopedSlots[part.type];\n      return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value\n    });\n\n    var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';\n    return tag\n      ? h(tag, {\n        attrs: data.attrs,\n        'class': data['class'],\n        staticClass: data.staticClass\n      }, values)\n      : values\n  }\n};\n\n/*  */\n\nfunction bind (el, binding, vnode) {\n  if (!assert(el, vnode)) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction update (el, binding, vnode, oldVNode) {\n  if (!assert(el, vnode)) { return }\n\n  var i18n = vnode.context.$i18n;\n  if (localeEqual(el, vnode) &&\n    (looseEqual(binding.value, binding.oldValue) &&\n     looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }\n\n  t(el, binding, vnode);\n}\n\nfunction unbind (el, binding, vnode, oldVNode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return\n  }\n\n  var i18n = vnode.context.$i18n || {};\n  if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {\n    el.textContent = '';\n  }\n  el._vt = undefined;\n  delete el['_vt'];\n  el._locale = undefined;\n  delete el['_locale'];\n  el._localeMessage = undefined;\n  delete el['_localeMessage'];\n}\n\nfunction assert (el, vnode) {\n  var vm = vnode.context;\n  if (!vm) {\n    warn('Vue instance does not exists in VNode context');\n    return false\n  }\n\n  if (!vm.$i18n) {\n    warn('VueI18n instance does not exists in Vue instance');\n    return false\n  }\n\n  return true\n}\n\nfunction localeEqual (el, vnode) {\n  var vm = vnode.context;\n  return el._locale === vm.$i18n.locale\n}\n\nfunction t (el, binding, vnode) {\n  var ref$1, ref$2;\n\n  var value = binding.value;\n\n  var ref = parseValue(value);\n  var path = ref.path;\n  var locale = ref.locale;\n  var args = ref.args;\n  var choice = ref.choice;\n  if (!path && !locale && !args) {\n    warn('value type not supported');\n    return\n  }\n\n  if (!path) {\n    warn('`path` is required in v-t directive');\n    return\n  }\n\n  var vm = vnode.context;\n  if (choice != null) {\n    el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));\n  } else {\n    el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));\n  }\n  el._locale = vm.$i18n.locale;\n  el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);\n}\n\nfunction parseValue (value) {\n  var path;\n  var locale;\n  var args;\n  var choice;\n\n  if (isString(value)) {\n    path = value;\n  } else if (isPlainObject(value)) {\n    path = value.path;\n    locale = value.locale;\n    args = value.args;\n    choice = value.choice;\n  }\n\n  return { path: path, locale: locale, args: args, choice: choice }\n}\n\nfunction makeParams (locale, args) {\n  var params = [];\n\n  locale && params.push(locale);\n  if (args && (Array.isArray(args) || isPlainObject(args))) {\n    params.push(args);\n  }\n\n  return params\n}\n\nvar Vue;\n\nfunction install (_Vue) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && install.installed && _Vue === Vue) {\n    warn('already installed.');\n    return\n  }\n  install.installed = true;\n\n  Vue = _Vue;\n\n  var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && version < 2) {\n    warn((\"vue-i18n (\" + (install.version) + \") need to use Vue 2.0 or later (Vue: \" + (Vue.version) + \").\"));\n    return\n  }\n\n  extend(Vue);\n  Vue.mixin(mixin);\n  Vue.directive('t', { bind: bind, update: update, unbind: unbind });\n  Vue.component(interpolationComponent.name, interpolationComponent);\n  Vue.component(numberComponent.name, numberComponent);\n\n  // use simple mergeStrategies to prevent i18n instance lose '__proto__'\n  var strats = Vue.config.optionMergeStrategies;\n  strats.i18n = function (parentVal, childVal) {\n    return childVal === undefined\n      ? parentVal\n      : childVal\n  };\n}\n\n/*  */\n\nvar BaseFormatter = function BaseFormatter () {\n  this._caches = Object.create(null);\n};\n\nBaseFormatter.prototype.interpolate = function interpolate (message, values) {\n  if (!values) {\n    return [message]\n  }\n  var tokens = this._caches[message];\n  if (!tokens) {\n    tokens = parse(message);\n    this._caches[message] = tokens;\n  }\n  return compile(tokens, values)\n};\n\n\n\nvar RE_TOKEN_LIST_VALUE = /^(?:\\d)+/;\nvar RE_TOKEN_NAMED_VALUE = /^(?:\\w)+/;\n\nfunction parse (format) {\n  var tokens = [];\n  var position = 0;\n\n  var text = '';\n  while (position < format.length) {\n    var char = format[position++];\n    if (char === '{') {\n      if (text) {\n        tokens.push({ type: 'text', value: text });\n      }\n\n      text = '';\n      var sub = '';\n      char = format[position++];\n      while (char !== undefined && char !== '}') {\n        sub += char;\n        char = format[position++];\n      }\n      var isClosed = char === '}';\n\n      var type = RE_TOKEN_LIST_VALUE.test(sub)\n        ? 'list'\n        : isClosed && RE_TOKEN_NAMED_VALUE.test(sub)\n          ? 'named'\n          : 'unknown';\n      tokens.push({ value: sub, type: type });\n    } else if (char === '%') {\n      // when found rails i18n syntax, skip text capture\n      if (format[(position)] !== '{') {\n        text += char;\n      }\n    } else {\n      text += char;\n    }\n  }\n\n  text && tokens.push({ type: 'text', value: text });\n\n  return tokens\n}\n\nfunction compile (tokens, values) {\n  var compiled = [];\n  var index = 0;\n\n  var mode = Array.isArray(values)\n    ? 'list'\n    : isObject(values)\n      ? 'named'\n      : 'unknown';\n  if (mode === 'unknown') { return compiled }\n\n  while (index < tokens.length) {\n    var token = tokens[index];\n    switch (token.type) {\n      case 'text':\n        compiled.push(token.value);\n        break\n      case 'list':\n        compiled.push(values[parseInt(token.value, 10)]);\n        break\n      case 'named':\n        if (mode === 'named') {\n          compiled.push((values)[token.value]);\n        } else {\n          if (process.env.NODE_ENV !== 'production') {\n            warn((\"Type of token '\" + (token.type) + \"' and format of value '\" + mode + \"' don't match!\"));\n          }\n        }\n        break\n      case 'unknown':\n        if (process.env.NODE_ENV !== 'production') {\n          warn(\"Detect 'unknown' type of token!\");\n        }\n        break\n    }\n    index++;\n  }\n\n  return compiled\n}\n\n/*  */\n\n/**\n *  Path parser\n *  - Inspired:\n *    Vue.js Path parser\n */\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n  'ws': [BEFORE_PATH],\n  'ident': [IN_IDENT, APPEND],\n  '[': [IN_SUB_PATH],\n  'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n  'ws': [IN_PATH],\n  '.': [BEFORE_IDENT],\n  '[': [IN_SUB_PATH],\n  'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n  'ws': [BEFORE_IDENT],\n  'ident': [IN_IDENT, APPEND],\n  '0': [IN_IDENT, APPEND],\n  'number': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n  'ident': [IN_IDENT, APPEND],\n  '0': [IN_IDENT, APPEND],\n  'number': [IN_IDENT, APPEND],\n  'ws': [IN_PATH, PUSH],\n  '.': [BEFORE_IDENT, PUSH],\n  '[': [IN_SUB_PATH, PUSH],\n  'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n  \"'\": [IN_SINGLE_QUOTE, APPEND],\n  '\"': [IN_DOUBLE_QUOTE, APPEND],\n  '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n  ']': [IN_PATH, PUSH_SUB_PATH],\n  'eof': ERROR,\n  'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n  \"'\": [IN_SUB_PATH, APPEND],\n  'eof': ERROR,\n  'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n  '\"': [IN_SUB_PATH, APPEND],\n  'eof': ERROR,\n  'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Check if an expression is a literal value.\n */\n\nvar literalValueRE = /^\\s?(?:true|false|-?[\\d.]+|'[^']*'|\"[^\"]*\")\\s?$/;\nfunction isLiteral (exp) {\n  return literalValueRE.test(exp)\n}\n\n/**\n * Strip quotes from a string\n */\n\nfunction stripQuotes (str) {\n  var a = str.charCodeAt(0);\n  var b = str.charCodeAt(str.length - 1);\n  return a === b && (a === 0x22 || a === 0x27)\n    ? str.slice(1, -1)\n    : str\n}\n\n/**\n * Determine the type of a character in a keypath.\n */\n\nfunction getPathCharType (ch) {\n  if (ch === undefined || ch === null) { return 'eof' }\n\n  var code = ch.charCodeAt(0);\n\n  switch (code) {\n    case 0x5B: // [\n    case 0x5D: // ]\n    case 0x2E: // .\n    case 0x22: // \"\n    case 0x27: // '\n      return ch\n\n    case 0x5F: // _\n    case 0x24: // $\n    case 0x2D: // -\n      return 'ident'\n\n    case 0x09: // Tab\n    case 0x0A: // Newline\n    case 0x0D: // Return\n    case 0xA0:  // No-break space\n    case 0xFEFF:  // Byte Order Mark\n    case 0x2028:  // Line Separator\n    case 0x2029:  // Paragraph Separator\n      return 'ws'\n  }\n\n  return 'ident'\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n */\n\nfunction formatSubPath (path) {\n  var trimmed = path.trim();\n  // invalid leading 0\n  if (path.charAt(0) === '0' && isNaN(path)) { return false }\n\n  return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed\n}\n\n/**\n * Parse a string path into an array of segments\n */\n\nfunction parse$1 (path) {\n  var keys = [];\n  var index = -1;\n  var mode = BEFORE_PATH;\n  var subPathDepth = 0;\n  var c;\n  var key;\n  var newChar;\n  var type;\n  var transition;\n  var action;\n  var typeMap;\n  var actions = [];\n\n  actions[PUSH] = function () {\n    if (key !== undefined) {\n      keys.push(key);\n      key = undefined;\n    }\n  };\n\n  actions[APPEND] = function () {\n    if (key === undefined) {\n      key = newChar;\n    } else {\n      key += newChar;\n    }\n  };\n\n  actions[INC_SUB_PATH_DEPTH] = function () {\n    actions[APPEND]();\n    subPathDepth++;\n  };\n\n  actions[PUSH_SUB_PATH] = function () {\n    if (subPathDepth > 0) {\n      subPathDepth--;\n      mode = IN_SUB_PATH;\n      actions[APPEND]();\n    } else {\n      subPathDepth = 0;\n      if (key === undefined) { return false }\n      key = formatSubPath(key);\n      if (key === false) {\n        return false\n      } else {\n        actions[PUSH]();\n      }\n    }\n  };\n\n  function maybeUnescapeQuote () {\n    var nextChar = path[index + 1];\n    if ((mode === IN_SINGLE_QUOTE && nextChar === \"'\") ||\n      (mode === IN_DOUBLE_QUOTE && nextChar === '\"')) {\n      index++;\n      newChar = '\\\\' + nextChar;\n      actions[APPEND]();\n      return true\n    }\n  }\n\n  while (mode !== null) {\n    index++;\n    c = path[index];\n\n    if (c === '\\\\' && maybeUnescapeQuote()) {\n      continue\n    }\n\n    type = getPathCharType(c);\n    typeMap = pathStateMachine[mode];\n    transition = typeMap[type] || typeMap['else'] || ERROR;\n\n    if (transition === ERROR) {\n      return // parse error\n    }\n\n    mode = transition[0];\n    action = actions[transition[1]];\n    if (action) {\n      newChar = transition[2];\n      newChar = newChar === undefined\n        ? c\n        : newChar;\n      if (action() === false) {\n        return\n      }\n    }\n\n    if (mode === AFTER_PATH) {\n      return keys\n    }\n  }\n}\n\n\n\n\n\nvar I18nPath = function I18nPath () {\n  this._cache = Object.create(null);\n};\n\n/**\n * External parse that check for a cache hit first\n */\nI18nPath.prototype.parsePath = function parsePath (path) {\n  var hit = this._cache[path];\n  if (!hit) {\n    hit = parse$1(path);\n    if (hit) {\n      this._cache[path] = hit;\n    }\n  }\n  return hit || []\n};\n\n/**\n * Get path value from path string\n */\nI18nPath.prototype.getPathValue = function getPathValue (obj, path) {\n  if (!isObject(obj)) { return null }\n\n  var paths = this.parsePath(path);\n  if (paths.length === 0) {\n    return null\n  } else {\n    var length = paths.length;\n    var last = obj;\n    var i = 0;\n    while (i < length) {\n      var value = last[paths[i]];\n      if (value === undefined) {\n        return null\n      }\n      last = value;\n      i++;\n    }\n\n    return last\n  }\n};\n\n/*  */\n\n\n\nvar htmlTagMatcher = /<\\/?[\\w\\s=\"/.':;#-\\/]+>/;\nvar linkKeyMatcher = /(?:@(?:\\.[a-z]+)?:(?:[\\w\\-_|.]+|\\([\\w\\-_|.]+\\)))/g;\nvar linkKeyPrefixMatcher = /^@(?:\\.([a-z]+))?:/;\nvar bracketsMatcher = /[()]/g;\nvar defaultModifiers = {\n  'upper': function (str) { return str.toLocaleUpperCase(); },\n  'lower': function (str) { return str.toLocaleLowerCase(); },\n  'capitalize': function (str) { return (\"\" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }\n};\n\nvar defaultFormatter = new BaseFormatter();\n\nvar VueI18n = function VueI18n (options) {\n  var this$1 = this;\n  if ( options === void 0 ) options = {};\n\n  // Auto install if it is not done yet and `window` has `Vue`.\n  // To allow users to avoid auto-installation in some cases,\n  // this code should be placed here. See #290\n  /* istanbul ignore if */\n  if (!Vue && typeof window !== 'undefined' && window.Vue) {\n    install(window.Vue);\n  }\n\n  var locale = options.locale || 'en-US';\n  var fallbackLocale = options.fallbackLocale === false\n    ? false\n    : options.fallbackLocale || 'en-US';\n  var messages = options.messages || {};\n  var dateTimeFormats = options.dateTimeFormats || {};\n  var numberFormats = options.numberFormats || {};\n\n  this._vm = null;\n  this._formatter = options.formatter || defaultFormatter;\n  this._modifiers = options.modifiers || {};\n  this._missing = options.missing || null;\n  this._root = options.root || null;\n  this._sync = options.sync === undefined ? true : !!options.sync;\n  this._fallbackRoot = options.fallbackRoot === undefined\n    ? true\n    : !!options.fallbackRoot;\n  this._formatFallbackMessages = options.formatFallbackMessages === undefined\n    ? false\n    : !!options.formatFallbackMessages;\n  this._silentTranslationWarn = options.silentTranslationWarn === undefined\n    ? false\n    : options.silentTranslationWarn;\n  this._silentFallbackWarn = options.silentFallbackWarn === undefined\n    ? false\n    : !!options.silentFallbackWarn;\n  this._dateTimeFormatters = {};\n  this._numberFormatters = {};\n  this._path = new I18nPath();\n  this._dataListeners = [];\n  this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;\n  this._preserveDirectiveContent = options.preserveDirectiveContent === undefined\n    ? false\n    : !!options.preserveDirectiveContent;\n  this.pluralizationRules = options.pluralizationRules || {};\n  this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';\n  this._postTranslation = options.postTranslation || null;\n\n  /**\n   * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n   * @param choicesLength {number} an overall amount of available choices\n   * @returns a final choice index\n  */\n  this.getChoiceIndex = function (choice, choicesLength) {\n    var thisPrototype = Object.getPrototypeOf(this$1);\n    if (thisPrototype && thisPrototype.getChoiceIndex) {\n      var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);\n      return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)\n    }\n\n    // Default (old) getChoiceIndex implementation - english-compatible\n    var defaultImpl = function (_choice, _choicesLength) {\n      _choice = Math.abs(_choice);\n\n      if (_choicesLength === 2) {\n        return _choice\n          ? _choice > 1\n            ? 1\n            : 0\n          : 1\n      }\n\n      return _choice ? Math.min(_choice, 2) : 0\n    };\n\n    if (this$1.locale in this$1.pluralizationRules) {\n      return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])\n    } else {\n      return defaultImpl(choice, choicesLength)\n    }\n  };\n\n\n  this._exist = function (message, key) {\n    if (!message || !key) { return false }\n    if (!isNull(this$1._path.getPathValue(message, key))) { return true }\n    // fallback for flat key\n    if (message[key]) { return true }\n    return false\n  };\n\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n\n  this._initVM({\n    locale: locale,\n    fallbackLocale: fallbackLocale,\n    messages: messages,\n    dateTimeFormats: dateTimeFormats,\n    numberFormats: numberFormats\n  });\n};\n\nvar prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true } };\n\nVueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {\n  var paths = [];\n\n  var fn = function (level, locale, message, paths) {\n    if (isPlainObject(message)) {\n      Object.keys(message).forEach(function (key) {\n        var val = message[key];\n        if (isPlainObject(val)) {\n          paths.push(key);\n          paths.push('.');\n          fn(level, locale, val, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push(key);\n          fn(level, locale, val, paths);\n          paths.pop();\n        }\n      });\n    } else if (Array.isArray(message)) {\n      message.forEach(function (item, index) {\n        if (isPlainObject(item)) {\n          paths.push((\"[\" + index + \"]\"));\n          paths.push('.');\n          fn(level, locale, item, paths);\n          paths.pop();\n          paths.pop();\n        } else {\n          paths.push((\"[\" + index + \"]\"));\n          fn(level, locale, item, paths);\n          paths.pop();\n        }\n      });\n    } else if (isString(message)) {\n      var ret = htmlTagMatcher.test(message);\n      if (ret) {\n        var msg = \"Detected HTML in message '\" + message + \"' of keypath '\" + (paths.join('')) + \"' at '\" + locale + \"'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp\";\n        if (level === 'warn') {\n          warn(msg);\n        } else if (level === 'error') {\n          error(msg);\n        }\n      }\n    }\n  };\n\n  fn(level, locale, message, paths);\n};\n\nVueI18n.prototype._initVM = function _initVM (data) {\n  var silent = Vue.config.silent;\n  Vue.config.silent = true;\n  this._vm = new Vue({ data: data });\n  Vue.config.silent = silent;\n};\n\nVueI18n.prototype.destroyVM = function destroyVM () {\n  this._vm.$destroy();\n};\n\nVueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {\n  this._dataListeners.push(vm);\n};\n\nVueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {\n  remove(this._dataListeners, vm);\n};\n\nVueI18n.prototype.watchI18nData = function watchI18nData () {\n  var self = this;\n  return this._vm.$watch('$data', function () {\n    var i = self._dataListeners.length;\n    while (i--) {\n      Vue.nextTick(function () {\n        self._dataListeners[i] && self._dataListeners[i].$forceUpdate();\n      });\n    }\n  }, { deep: true })\n};\n\nVueI18n.prototype.watchLocale = function watchLocale () {\n  /* istanbul ignore if */\n  if (!this._sync || !this._root) { return null }\n  var target = this._vm;\n  return this._root.$i18n.vm.$watch('locale', function (val) {\n    target.$set(target, 'locale', val);\n    target.$forceUpdate();\n  }, { immediate: true })\n};\n\nVueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {\n  if (this._componentInstanceCreatedListener) {\n    this._componentInstanceCreatedListener(newI18n, this);\n  }\n};\n\nprototypeAccessors.vm.get = function () { return this._vm };\n\nprototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };\nprototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };\nprototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };\nprototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };\n\nprototypeAccessors.locale.get = function () { return this._vm.locale };\nprototypeAccessors.locale.set = function (locale) {\n  this._vm.$set(this._vm, 'locale', locale);\n};\n\nprototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };\nprototypeAccessors.fallbackLocale.set = function (locale) {\n  this._localeChainCache = {};\n  this._vm.$set(this._vm, 'fallbackLocale', locale);\n};\n\nprototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };\nprototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };\n\nprototypeAccessors.missing.get = function () { return this._missing };\nprototypeAccessors.missing.set = function (handler) { this._missing = handler; };\n\nprototypeAccessors.formatter.get = function () { return this._formatter };\nprototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };\n\nprototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };\nprototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };\n\nprototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };\nprototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };\n\nprototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };\nprototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };\n\nprototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };\nprototypeAccessors.warnHtmlInMessage.set = function (level) {\n    var this$1 = this;\n\n  var orgLevel = this._warnHtmlInMessage;\n  this._warnHtmlInMessage = level;\n  if (orgLevel !== level && (level === 'warn' || level === 'error')) {\n    var messages = this._getMessages();\n    Object.keys(messages).forEach(function (locale) {\n      this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);\n    });\n  }\n};\n\nprototypeAccessors.postTranslation.get = function () { return this._postTranslation };\nprototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };\n\nVueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };\nVueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };\nVueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };\n\nVueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {\n  if (!isNull(result)) { return result }\n  if (this._missing) {\n    var missingRet = this._missing.apply(null, [locale, key, vm, values]);\n    if (isString(missingRet)) {\n      return missingRet\n    }\n  } else {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn(\n        \"Cannot translate the value of keypath '\" + key + \"'. \" +\n        'Use the value of keypath as default.'\n      );\n    }\n  }\n\n  if (this._formatFallbackMessages) {\n    var parsedArgs = parseArgs.apply(void 0, values);\n    return this._render(key, interpolateMode, parsedArgs.params, key)\n  } else {\n    return key\n  }\n};\n\nVueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {\n  return !val && !isNull(this._root) && this._fallbackRoot\n};\n\nVueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {\n  return this._silentFallbackWarn instanceof RegExp\n    ? this._silentFallbackWarn.test(key)\n    : this._silentFallbackWarn\n};\n\nVueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {\n  return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)\n};\n\nVueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {\n  return this._silentTranslationWarn instanceof RegExp\n    ? this._silentTranslationWarn.test(key)\n    : this._silentTranslationWarn\n};\n\nVueI18n.prototype._interpolate = function _interpolate (\n  locale,\n  message,\n  key,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  if (!message) { return null }\n\n  var pathRet = this._path.getPathValue(message, key);\n  if (Array.isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }\n\n  var ret;\n  if (isNull(pathRet)) {\n    /* istanbul ignore else */\n    if (isPlainObject(message)) {\n      ret = message[key];\n      if (!isString(ret)) {\n        if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n          warn((\"Value of key '\" + key + \"' is not a string!\"));\n        }\n        return null\n      }\n    } else {\n      return null\n    }\n  } else {\n    /* istanbul ignore else */\n    if (isString(pathRet)) {\n      ret = pathRet;\n    } else {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {\n        warn((\"Value of key '\" + key + \"' is not a string!\"));\n      }\n      return null\n    }\n  }\n\n  // Check for the existence of links within the translated string\n  if (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0) {\n    ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);\n  }\n\n  return this._render(ret, interpolateMode, values, key)\n};\n\nVueI18n.prototype._link = function _link (\n  locale,\n  message,\n  str,\n  host,\n  interpolateMode,\n  values,\n  visitedLinkStack\n) {\n  var ret = str;\n\n  // Match all the links within the local\n  // We are going to replace each of\n  // them with its translation\n  var matches = ret.match(linkKeyMatcher);\n  for (var idx in matches) {\n    // ie compatible: filter custom array\n    // prototype method\n    if (!matches.hasOwnProperty(idx)) {\n      continue\n    }\n    var link = matches[idx];\n    var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);\n    var linkPrefix = linkKeyPrefixMatches[0];\n      var formatterName = linkKeyPrefixMatches[1];\n\n    // Remove the leading @:, @.case: and the brackets\n    var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');\n\n    if (includes(visitedLinkStack, linkPlaceholder)) {\n      if (process.env.NODE_ENV !== 'production') {\n        warn((\"Circular reference found. \\\"\" + link + \"\\\" is already visited in the chain of \" + (visitedLinkStack.reverse().join(' <- '))));\n      }\n      return ret\n    }\n    visitedLinkStack.push(linkPlaceholder);\n\n    // Translate the link\n    var translated = this._interpolate(\n      locale, message, linkPlaceholder, host,\n      interpolateMode === 'raw' ? 'string' : interpolateMode,\n      interpolateMode === 'raw' ? undefined : values,\n      visitedLinkStack\n    );\n\n    if (this._isFallbackRoot(translated)) {\n      if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(linkPlaceholder)) {\n        warn((\"Fall back to translate the link placeholder '\" + linkPlaceholder + \"' with root locale.\"));\n      }\n      /* istanbul ignore if */\n      if (!this._root) { throw Error('unexpected error') }\n      var root = this._root.$i18n;\n      translated = root._translate(\n        root._getMessages(), root.locale, root.fallbackLocale,\n        linkPlaceholder, host, interpolateMode, values\n      );\n    }\n    translated = this._warnDefault(\n      locale, linkPlaceholder, translated, host,\n      Array.isArray(values) ? values : [values],\n      interpolateMode\n    );\n\n    if (this._modifiers.hasOwnProperty(formatterName)) {\n      translated = this._modifiers[formatterName](translated);\n    } else if (defaultModifiers.hasOwnProperty(formatterName)) {\n      translated = defaultModifiers[formatterName](translated);\n    }\n\n    visitedLinkStack.pop();\n\n    // Replace the link with the translated\n    ret = !translated ? ret : ret.replace(link, translated);\n  }\n\n  return ret\n};\n\nVueI18n.prototype._render = function _render (message, interpolateMode, values, path) {\n  var ret = this._formatter.interpolate(message, values, path);\n\n  // If the custom formatter refuses to work - apply the default one\n  if (!ret) {\n    ret = defaultFormatter.interpolate(message, values, path);\n  }\n\n  // if interpolateMode is **not** 'string' ('row'),\n  // return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter\n  return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret\n};\n\nVueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {\n  var follow = false;\n  if (!includes(chain, item)) {\n    follow = true;\n    if (item) {\n      follow = item[item.length - 1] !== '!';\n      item = item.replace(/!/g, '');\n      chain.push(item);\n      if (blocks && blocks[item]) {\n        follow = blocks[item];\n      }\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {\n  var follow;\n  var tokens = locale.split('-');\n  do {\n    var item = tokens.join('-');\n    follow = this._appendItemToChain(chain, item, blocks);\n    tokens.splice(-1, 1);\n  } while (tokens.length && (follow === true))\n  return follow\n};\n\nVueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {\n  var follow = true;\n  for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {\n    var locale = block[i];\n    if (isString(locale)) {\n      follow = this._appendLocaleToChain(chain, locale, blocks);\n    }\n  }\n  return follow\n};\n\nVueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {\n  if (start === '') { return [] }\n\n  if (!this._localeChainCache) {\n    this._localeChainCache = {};\n  }\n\n  var chain = this._localeChainCache[start];\n  if (!chain) {\n    if (!fallbackLocale) {\n      fallbackLocale = this.fallbackLocale;\n    }\n    chain = [];\n\n    // first block defined by start\n    var block = [start];\n\n    // while any intervening block found\n    while (isArray(block)) {\n      block = this._appendBlockToChain(\n        chain,\n        block,\n        fallbackLocale\n      );\n    }\n\n    // last block defined by default\n    var defaults;\n    if (isArray(fallbackLocale)) {\n      defaults = fallbackLocale;\n    } else if (isObject(fallbackLocale)) {\n      /* $FlowFixMe */\n      if (fallbackLocale['default']) {\n        defaults = fallbackLocale['default'];\n      } else {\n        defaults = null;\n      }\n    } else {\n      defaults = fallbackLocale;\n    }\n\n    // convert defaults to array\n    if (isString(defaults)) {\n      block = [defaults];\n    } else {\n      block = defaults;\n    }\n    if (block) {\n      this._appendBlockToChain(\n        chain,\n        block,\n        null\n      );\n    }\n    this._localeChainCache[start] = chain;\n  }\n  return chain\n};\n\nVueI18n.prototype._translate = function _translate (\n  messages,\n  locale,\n  fallback,\n  key,\n  host,\n  interpolateMode,\n  args\n) {\n  var chain = this._getLocaleChain(locale, fallback);\n  var res;\n  for (var i = 0; i < chain.length; i++) {\n    var step = chain[i];\n    res =\n      this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);\n    if (!isNull(res)) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to translate the keypath '\" + key + \"' with '\" + step + \"' locale.\"));\n      }\n      return res\n    }\n  }\n  return null\n};\n\nVueI18n.prototype._t = function _t (key, _locale, messages, host) {\n    var ref;\n\n    var values = [], len = arguments.length - 4;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];\n  if (!key) { return '' }\n\n  var parsedArgs = parseArgs.apply(void 0, values);\n  var locale = parsedArgs.locale || _locale;\n\n  var ret = this._translate(\n    messages, locale, this.fallbackLocale, key,\n    host, 'string', parsedArgs.params\n  );\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to translate the keypath '\" + key + \"' with root locale.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return (ref = this._root).$t.apply(ref, [ key ].concat( values ))\n  } else {\n    ret = this._warnDefault(locale, key, ret, host, values, 'string');\n    if (this._postTranslation && ret !== null && ret !== undefined) {\n      ret = this._postTranslation(ret, key);\n    }\n    return ret\n  }\n};\n\nVueI18n.prototype.t = function t (key) {\n    var ref;\n\n    var values = [], len = arguments.length - 1;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n  return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))\n};\n\nVueI18n.prototype._i = function _i (key, locale, messages, host, values) {\n  var ret =\n    this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to interpolate the keypath '\" + key + \"' with root locale.\"));\n    }\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.i(key, locale, values)\n  } else {\n    return this._warnDefault(locale, key, ret, host, [values], 'raw')\n  }\n};\n\nVueI18n.prototype.i = function i (key, locale, values) {\n  /* istanbul ignore if */\n  if (!key) { return '' }\n\n  if (!isString(locale)) {\n    locale = this.locale;\n  }\n\n  return this._i(key, locale, this._getMessages(), null, values)\n};\n\nVueI18n.prototype._tc = function _tc (\n  key,\n  _locale,\n  messages,\n  host,\n  choice\n) {\n    var ref;\n\n    var values = [], len = arguments.length - 5;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];\n  if (!key) { return '' }\n  if (choice === undefined) {\n    choice = 1;\n  }\n\n  var predefined = { 'count': choice, 'n': choice };\n  var parsedArgs = parseArgs.apply(void 0, values);\n  parsedArgs.params = Object.assign(predefined, parsedArgs.params);\n  values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];\n  return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)\n};\n\nVueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {\n  /* istanbul ignore if */\n  if (!message && !isString(message)) { return null }\n  var choices = message.split('|');\n\n  choice = this.getChoiceIndex(choice, choices.length);\n  if (!choices[choice]) { return message }\n  return choices[choice].trim()\n};\n\nVueI18n.prototype.tc = function tc (key, choice) {\n    var ref;\n\n    var values = [], len = arguments.length - 2;\n    while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];\n  return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))\n};\n\nVueI18n.prototype._te = function _te (key, locale, messages) {\n    var args = [], len = arguments.length - 3;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];\n\n  var _locale = parseArgs.apply(void 0, args).locale || locale;\n  return this._exist(messages[_locale], key)\n};\n\nVueI18n.prototype.te = function te (key, locale) {\n  return this._te(key, this.locale, this._getMessages(), locale)\n};\n\nVueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {\n  return looseClone(this._vm.messages[locale] || {})\n};\n\nVueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, message);\n};\n\nVueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {\n  if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {\n    this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);\n  }\n  this._vm.$set(this._vm.messages, locale, merge({}, this._vm.messages[locale] || {}, message));\n};\n\nVueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {\n  return looseClone(this._vm.dateTimeFormats[locale] || {})\n};\n\nVueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, format);\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {\n  this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));\n  this._clearDateTimeFormat(locale, format);\n};\n\nVueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._dateTimeFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._dateTimeFormatters[id];\n  }\n};\n\nVueI18n.prototype._localizeDateTime = function _localizeDateTime (\n  value,\n  locale,\n  fallback,\n  dateTimeFormats,\n  key\n) {\n  var _locale = locale;\n  var formats = dateTimeFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = dateTimeFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' datetime formats from '\" + current + \"' datetime formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n    var id = _locale + \"__\" + key;\n    var formatter = this._dateTimeFormatters[id];\n    if (!formatter) {\n      formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);\n    }\n    return formatter.format(value)\n  }\n};\n\nVueI18n.prototype._d = function _d (value, locale, key) {\n  /* istanbul ignore if */\n  if (process.env.NODE_ENV !== 'production' && !VueI18n.availabilities.dateTimeFormat) {\n    warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');\n    return ''\n  }\n\n  if (!key) {\n    return new Intl.DateTimeFormat(locale).format(value)\n  }\n\n  var ret =\n    this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to datetime localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.d(value, key, locale)\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.d = function d (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._d(value, locale, key)\n};\n\nVueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {\n  return looseClone(this._vm.numberFormats[locale] || {})\n};\n\nVueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, format);\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {\n  this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));\n  this._clearNumberFormat(locale, format);\n};\n\nVueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {\n  for (var key in format) {\n    var id = locale + \"__\" + key;\n\n    if (!this._numberFormatters.hasOwnProperty(id)) {\n      continue\n    }\n\n    delete this._numberFormatters[id];\n  }\n};\n\nVueI18n.prototype._getNumberFormatter = function _getNumberFormatter (\n  value,\n  locale,\n  fallback,\n  numberFormats,\n  key,\n  options\n) {\n  var _locale = locale;\n  var formats = numberFormats[_locale];\n\n  var chain = this._getLocaleChain(locale, fallback);\n  for (var i = 0; i < chain.length; i++) {\n    var current = _locale;\n    var step = chain[i];\n    formats = numberFormats[step];\n    _locale = step;\n    // fallback locale\n    if (isNull(formats) || isNull(formats[key])) {\n      if (step !== locale && process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n        warn((\"Fall back to '\" + step + \"' number formats from '\" + current + \"' number formats.\"));\n      }\n    } else {\n      break\n    }\n  }\n\n  if (isNull(formats) || isNull(formats[key])) {\n    return null\n  } else {\n    var format = formats[key];\n\n    var formatter;\n    if (options) {\n      // If options specified - create one time number formatter\n      formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));\n    } else {\n      var id = _locale + \"__\" + key;\n      formatter = this._numberFormatters[id];\n      if (!formatter) {\n        formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);\n      }\n    }\n    return formatter\n  }\n};\n\nVueI18n.prototype._n = function _n (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format a Number value due to not supported Intl.NumberFormat.');\n    }\n    return ''\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.format(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.format(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {\n      warn((\"Fall back to number localization of root: key '\" + key + \"'.\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))\n  } else {\n    return ret || ''\n  }\n};\n\nVueI18n.prototype.n = function n (value) {\n    var args = [], len = arguments.length - 1;\n    while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n  var locale = this.locale;\n  var key = null;\n  var options = null;\n\n  if (args.length === 1) {\n    if (isString(args[0])) {\n      key = args[0];\n    } else if (isObject(args[0])) {\n      if (args[0].locale) {\n        locale = args[0].locale;\n      }\n      if (args[0].key) {\n        key = args[0].key;\n      }\n\n      // Filter out number format options only\n      options = Object.keys(args[0]).reduce(function (acc, key) {\n          var obj;\n\n        if (includes(numberFormatKeys, key)) {\n          return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))\n        }\n        return acc\n      }, null);\n    }\n  } else if (args.length === 2) {\n    if (isString(args[0])) {\n      key = args[0];\n    }\n    if (isString(args[1])) {\n      locale = args[1];\n    }\n  }\n\n  return this._n(value, locale, key, options)\n};\n\nVueI18n.prototype._ntp = function _ntp (value, locale, key, options) {\n  /* istanbul ignore if */\n  if (!VueI18n.availabilities.numberFormat) {\n    if (process.env.NODE_ENV !== 'production') {\n      warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');\n    }\n    return []\n  }\n\n  if (!key) {\n    var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);\n    return nf.formatToParts(value)\n  }\n\n  var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);\n  var ret = formatter && formatter.formatToParts(value);\n  if (this._isFallbackRoot(ret)) {\n    if (process.env.NODE_ENV !== 'production' && !this._isSilentTranslationWarn(key)) {\n      warn((\"Fall back to format number to parts of root: key '\" + key + \"' .\"));\n    }\n    /* istanbul ignore if */\n    if (!this._root) { throw Error('unexpected error') }\n    return this._root.$i18n._ntp(value, locale, key, options)\n  } else {\n    return ret || []\n  }\n};\n\nObject.defineProperties( VueI18n.prototype, prototypeAccessors );\n\nvar availabilities;\n// $FlowFixMe\nObject.defineProperty(VueI18n, 'availabilities', {\n  get: function get () {\n    if (!availabilities) {\n      var intlDefined = typeof Intl !== 'undefined';\n      availabilities = {\n        dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',\n        numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'\n      };\n    }\n\n    return availabilities\n  }\n});\n\nVueI18n.install = install;\nVueI18n.version = '8.20.0';\n\nexport default VueI18n;\n","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", {\n    directives: [\n      {\n        name: \"loading\",\n        rawName: \"v-loading\",\n        value: _vm.loading,\n        expression: \"loading\"\n      }\n    ],\n    staticClass: \"ace-editor-main\"\n  })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", {\n    directives: [\n      {\n        name: \"loading\",\n        rawName: \"v-loading\",\n        value: _vm.loading,\n        expression: \"loading\"\n      }\n    ],\n    staticClass: \"monaco-editor-main\"\n  })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { attrs: { id: \"main-container\" } },\n    [\n      !_vm.shared.isMobile\n        ? _c(\n            \"div\",\n            {\n              style: { width: _vm.leftContainerSize + \"%\" },\n              attrs: { id: \"code-container\" }\n            },\n            [\n              _c(\"div\", { attrs: { id: \"control-panel\" } }, [\n                _c(\n                  \"div\",\n                  { attrs: { id: \"code-info\" } },\n                  [\n                    _vm.shared.editorStatus.message\n                      ? [\n                          _c(\"span\", { staticClass: \"code-info-time\" }, [\n                            _vm._v(_vm._s(_vm.currentTime))\n                          ]),\n                          _vm._v(\" \"),\n                          _c(\n                            \"span\",\n                            {\n                              class:\n                                \"code-info-type-\" + _vm.shared.editorStatus.type\n                            },\n                            [_vm._v(_vm._s(_vm.shared.editorStatus.message))]\n                          )\n                        ]\n                      : _vm._e()\n                  ],\n                  2\n                ),\n                _vm._v(\" \"),\n                _c(\"div\", { staticClass: \"control-btn-panel\" }, [\n                  _c(\n                    \"a\",\n                    {\n                      staticClass: \"btn btn-default btn-sm\",\n                      attrs: { href: \"javascript:;\" },\n                      on: { click: _vm.disposeAndRun }\n                    },\n                    [_vm._v(_vm._s(_vm.$t(\"editor.run\")))]\n                  )\n                ])\n              ]),\n              _vm._v(\" \"),\n              _vm.shared.typeCheck\n                ? _c(\"CodeMonaco\", {\n                    attrs: { id: \"code-panel\", initialCode: _vm.initialCode }\n                  })\n                : _c(\"CodeAce\", {\n                    attrs: { id: \"code-panel\", initialCode: _vm.initialCode }\n                  })\n            ],\n            1\n          )\n        : _vm._e(),\n      _vm._v(\" \"),\n      !_vm.shared.isMobile\n        ? _c(\"div\", {\n            staticClass: \"handler\",\n            style: { left: _vm.leftContainerSize + \"%\" },\n            attrs: { id: \"h-handler\" },\n            on: { mousedown: _vm.onSplitterDragStart }\n          })\n        : _vm._e(),\n      _vm._v(\" \"),\n      _c(\"Preview\", {\n        ref: \"preview\",\n        staticClass: \"right-container\",\n        style: {\n          width: 100 - _vm.leftContainerSize + \"%\",\n          left: _vm.leftContainerSize + \"%\"\n        },\n        attrs: { inEditor: true }\n      })\n    ],\n    1\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\n    \"div\",\n    { class: [_vm.inEditor && !_vm.shared.isMobile ? \"\" : \"full\"] },\n    [\n      _c(\"div\", {\n        directives: [\n          {\n            name: \"loading\",\n            rawName: \"v-loading\",\n            value: _vm.loading,\n            expression: \"loading\"\n          }\n        ],\n        staticClass: \"right-panel\",\n        style: { background: _vm.backgroundColor },\n        attrs: { id: \"chart-panel\" }\n      }),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { attrs: { id: \"tool-panel\" } },\n        [\n          _c(\n            \"div\",\n            { staticClass: \"left-panel\" },\n            [\n              _c(\"el-switch\", {\n                staticClass: \"dark-mode\",\n                attrs: {\n                  \"active-color\": \"#181432\",\n                  \"active-text\": _vm.$t(\"editor.darkMode\"),\n                  \"inactive-text\": \"\"\n                },\n                model: {\n                  value: _vm.shared.darkMode,\n                  callback: function($$v) {\n                    _vm.$set(_vm.shared, \"darkMode\", $$v)\n                  },\n                  expression: \"shared.darkMode\"\n                }\n              }),\n              _vm._v(\" \"),\n              _c(\"el-switch\", {\n                staticClass: \"enable-decal\",\n                attrs: {\n                  \"active-text\": _vm.$t(\"editor.enableDecal\"),\n                  \"inactive-text\": \"\"\n                },\n                model: {\n                  value: _vm.shared.enableDecal,\n                  callback: function($$v) {\n                    _vm.$set(_vm.shared, \"enableDecal\", $$v)\n                  },\n                  expression: \"shared.enableDecal\"\n                }\n              }),\n              _vm._v(\" \"),\n              _c(\n                \"el-popover\",\n                {\n                  staticStyle: { \"margin-top\": \"3px\" },\n                  attrs: { placement: \"bottom\", width: \"450\", trigger: \"click\" }\n                },\n                [\n                  _c(\n                    \"div\",\n                    { staticClass: \"render-config-container\" },\n                    [\n                      _c(\n                        \"el-row\",\n                        { attrs: { gutter: 2, type: \"flex\", align: \"middle\" } },\n                        [\n                          _c(\n                            \"el-col\",\n                            { attrs: { span: 12 } },\n                            [\n                              _c(\"label\", { staticClass: \"tool-label\" }, [\n                                _vm._v(_vm._s(_vm.$t(\"editor.renderer\")))\n                              ]),\n                              _vm._v(\" \"),\n                              _c(\n                                \"el-radio-group\",\n                                {\n                                  staticStyle: {\n                                    \"text-transform\": \"uppercase\"\n                                  },\n                                  attrs: { size: \"mini\" },\n                                  model: {\n                                    value: _vm.shared.renderer,\n                                    callback: function($$v) {\n                                      _vm.$set(_vm.shared, \"renderer\", $$v)\n                                    },\n                                    expression: \"shared.renderer\"\n                                  }\n                                },\n                                [\n                                  _c(\"el-radio-button\", {\n                                    attrs: { label: \"svg\" }\n                                  }),\n                                  _vm._v(\" \"),\n                                  _c(\"el-radio-button\", {\n                                    attrs: { label: \"canvas\" }\n                                  })\n                                ],\n                                1\n                              )\n                            ],\n                            1\n                          ),\n                          _vm._v(\" \"),\n                          _c(\n                            \"el-col\",\n                            { attrs: { span: 12 } },\n                            [\n                              _vm.shared.renderer === \"canvas\"\n                                ? _c(\"el-switch\", {\n                                    attrs: {\n                                      \"active-text\": _vm.$t(\n                                        \"editor.useDirtyRect\"\n                                      ),\n                                      \"inactive-text\": \"\"\n                                    },\n                                    model: {\n                                      value: _vm.shared.useDirtyRect,\n                                      callback: function($$v) {\n                                        _vm.$set(\n                                          _vm.shared,\n                                          \"useDirtyRect\",\n                                          $$v\n                                        )\n                                      },\n                                      expression: \"shared.useDirtyRect\"\n                                    }\n                                  })\n                                : _vm._e()\n                            ],\n                            1\n                          )\n                        ],\n                        1\n                      )\n                    ],\n                    1\n                  ),\n                  _vm._v(\" \"),\n                  _c(\n                    \"span\",\n                    {\n                      staticClass: \"render-config-trigger\",\n                      attrs: { slot: \"reference\" },\n                      slot: \"reference\"\n                    },\n                    [\n                      _c(\"i\", { staticClass: \"el-icon-setting el-icon--left\" }),\n                      _vm._v(_vm._s(_vm.$t(\"editor.renderCfgTitle\")))\n                    ]\n                  )\n                ]\n              )\n            ],\n            1\n          ),\n          _vm._v(\" \"),\n          _vm.inEditor\n            ? [\n                !_vm.shared.isMobile\n                  ? _c(\n                      \"button\",\n                      {\n                        staticClass: \"download btn btn-sm\",\n                        on: { click: _vm.downloadExample }\n                      },\n                      [_vm._v(_vm._s(_vm.$t(\"editor.download\")))]\n                    )\n                  : _vm._e(),\n                _vm._v(\" \"),\n                _c(\n                  \"a\",\n                  {\n                    staticClass: \"screenshot\",\n                    attrs: { target: \"_blank\" },\n                    on: { click: _vm.screenshot }\n                  },\n                  [_c(\"i\", { staticClass: \"el-icon-camera-solid\" })]\n                )\n              ]\n            : _c(\n                \"a\",\n                {\n                  staticClass: \"edit btn btn-sm\",\n                  attrs: { href: _vm.editLink, target: \"_blank\" }\n                },\n                [_vm._v(_vm._s(_vm.$t(\"editor.edit\")))]\n              )\n        ],\n        2\n      )\n    ]\n  )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"preview\")\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { staticClass: \"example-list-item\" }, [\n    _c(\n      \"a\",\n      {\n        staticClass: \"example-link\",\n        attrs: { target: \"_blank\", href: _vm.exampleLink }\n      },\n      [\n        _c(\"img\", {\n          staticClass: \"chart-area\",\n          attrs: {\n            src: require(\"../asset/placeholder.jpg\"),\n            \"data-src\": _vm.screenshotURL\n          }\n        }),\n        _vm._v(\" \"),\n        _c(\"h4\", { staticClass: \"example-title\" }, [_vm._v(_vm._s(_vm.title))]),\n        _vm._v(\" \"),\n        _vm.showSubtitle\n          ? _c(\"h5\", { staticClass: \"example-subtitle\" }, [\n              _vm._v(_vm._s(_vm.subtitle))\n            ])\n          : _vm._e()\n      ]\n    )\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function() {\n  var _vm = this\n  var _h = _vm.$createElement\n  var _c = _vm._self._c || _h\n  return _c(\"div\", { attrs: { id: \"example-explore\" } }, [\n    _c(\"div\", { attrs: { id: \"left-container\" } }, [\n      _c(\n        \"div\",\n        { attrs: { id: \"left-toolbar\" } },\n        [\n          _c(\"el-switch\", {\n            attrs: {\n              \"active-color\": \"#181432\",\n              \"active-text\": _vm.$t(\"editor.darkMode\"),\n              \"inactive-text\": \"\"\n            },\n            model: {\n              value: _vm.shared.darkMode,\n              callback: function($$v) {\n                _vm.$set(_vm.shared, \"darkMode\", $$v)\n              },\n              expression: \"shared.darkMode\"\n            }\n          })\n        ],\n        1\n      ),\n      _vm._v(\" \"),\n      _c(\n        \"div\",\n        { attrs: { id: \"left-chart-nav\" } },\n        [\n          _c(\n            \"scrollactive\",\n            {\n              attrs: {\n                \"active-class\": \"active\",\n                offset: 80,\n                duration: 500,\n                \"scroll-container-selector\": \"#example-explore\",\n                \"bezier-easing-value\": \".5,0,.35,1\"\n              },\n              on: { itemchanged: _vm.onActiveNavChanged }\n            },\n            [\n              _c(\n                \"ul\",\n                _vm._l(_vm.EXAMPLE_CATEGORIES, function(category) {\n                  return _c(\"li\", { key: category }, [\n                    _c(\n                      \"a\",\n                      {\n                        staticClass: \"left-chart-nav-link scrollactive-item\",\n                        attrs: {\n                          id: \"left-chart-nav-\" + category,\n                          href: \"#chart-type-\" + category\n                        }\n                      },\n                      [\n                        _c(\"span\", { staticClass: \"chart-icon\" }),\n                        _vm._v(\" \"),\n                        _c(\"span\", { staticClass: \"chart-name\" }, [\n                          _vm._v(_vm._s(_vm.$t(\"chartTypes.\" + category)))\n                        ])\n                      ]\n                    )\n                  ])\n                }),\n                0\n              )\n            ]\n          )\n        ],\n        1\n      )\n    ]),\n    _vm._v(\" \"),\n    _c(\"div\", { attrs: { id: \"explore-container\" } }, [\n      _c(\n        \"div\",\n        { staticClass: \"example-list-panel\" },\n        _vm._l(_vm.exampleList, function(categoryObj) {\n          return _c(\"div\", { key: categoryObj.category }, [\n            _c(\n              \"h3\",\n              {\n                staticClass: \"chart-type-head\",\n                attrs: { id: \"chart-type-\" + categoryObj.category }\n              },\n              [\n                _vm._v(\n                  \"\\n                    \" +\n                    _vm._s(_vm.$t(\"chartTypes.\" + categoryObj.category)) +\n                    \"\\n                    \"\n                ),\n                _c(\"span\", [_vm._v(_vm._s(categoryObj.category))])\n              ]\n            ),\n            _vm._v(\" \"),\n            _c(\n              \"div\",\n              {\n                staticClass: \"row\",\n                attrs: { id: \"chart-row-\" + categoryObj.category }\n              },\n              _vm._l(categoryObj.examples, function(exampleItem) {\n                return _c(\n                  \"div\",\n                  {\n                    key: exampleItem.id,\n                    staticClass: \"col-xl-2 col-lg-3 col-md-4 col-sm-6\"\n                  },\n                  [_c(\"ExampleCard\", { attrs: { example: exampleItem } })],\n                  1\n                )\n              }),\n              0\n            )\n          ])\n        }),\n        0\n      )\n    ])\n  ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n  scriptExports,\n  render,\n  staticRenderFns,\n  functionalTemplate,\n  injectStyles,\n  scopeId,\n  moduleIdentifier, /* server only */\n  shadowMode /* vue-cli only */\n) {\n  // Vue.extend constructor export interop\n  var options = typeof scriptExports === 'function'\n    ? scriptExports.options\n    : scriptExports\n\n  // render functions\n  if (render) {\n    options.render = render\n    options.staticRenderFns = staticRenderFns\n    options._compiled = true\n  }\n\n  // functional template\n  if (functionalTemplate) {\n    options.functional = true\n  }\n\n  // scopedId\n  if (scopeId) {\n    options._scopeId = 'data-v-' + scopeId\n  }\n\n  var hook\n  if (moduleIdentifier) { // server build\n    hook = function (context) {\n      // 2.3 injection\n      context =\n        context || // cached call\n        (this.$vnode && this.$vnode.ssrContext) || // stateful\n        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n      // 2.2 with runInNewContext: true\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__\n      }\n      // inject component styles\n      if (injectStyles) {\n        injectStyles.call(this, context)\n      }\n      // register component module identifier for async chunk inferrence\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier)\n      }\n    }\n    // used by ssr in case component is cached and beforeCreate\n    // never gets called\n    options._ssrRegister = hook\n  } else if (injectStyles) {\n    hook = shadowMode\n      ? function () {\n        injectStyles.call(\n          this,\n          (options.functional ? this.parent : this).$root.$options.shadowRoot\n        )\n      }\n      : injectStyles\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // for template-only hot-reload because in that case the render fn doesn't\n      // go through the normalizer\n      options._injectStyles = hook\n      // register for functional component in vue file\n      var originalRender = options.render\n      options.render = function renderWithStyleInjection (h, context) {\n        hook.call(context)\n        return originalRender(h, context)\n      }\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate\n      options.beforeCreate = existing\n        ? [].concat(existing, hook)\n        : [hook]\n    }\n  }\n\n  return {\n    exports: scriptExports,\n    options: options\n  }\n}\n","!(function (t, e) {\n  'object' == typeof exports && 'object' == typeof module\n    ? (module.exports = e())\n    : 'function' == typeof define && define.amd\n    ? define([], e)\n    : 'object' == typeof exports\n    ? (exports['vue-scrollactive'] = e())\n    : (t.vueScrollactive = e());\n})('undefined' != typeof self ? self : this, function () {\n  return (function (t) {\n    var e = {};\n    function r(n) {\n      if (e[n]) return e[n].exports;\n      var o = (e[n] = { i: n, l: !1, exports: {} });\n      return t[n].call(o.exports, o, o.exports, r), (o.l = !0), o.exports;\n    }\n    return (\n      (r.m = t),\n      (r.c = e),\n      (r.d = function (t, e, n) {\n        r.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n });\n      }),\n      (r.r = function (t) {\n        'undefined' != typeof Symbol &&\n          Symbol.toStringTag &&\n          Object.defineProperty(t, Symbol.toStringTag, { value: 'Module' }),\n          Object.defineProperty(t, '__esModule', { value: !0 });\n      }),\n      (r.t = function (t, e) {\n        if ((1 & e && (t = r(t)), 8 & e)) return t;\n        if (4 & e && 'object' == typeof t && t && t.__esModule) return t;\n        var n = Object.create(null);\n        if (\n          (r.r(n),\n          Object.defineProperty(n, 'default', { enumerable: !0, value: t }),\n          2 & e && 'string' != typeof t)\n        )\n          for (var o in t)\n            r.d(\n              n,\n              o,\n              function (e) {\n                return t[e];\n              }.bind(null, o)\n            );\n        return n;\n      }),\n      (r.n = function (t) {\n        var e =\n          t && t.__esModule\n            ? function () {\n                return t.default;\n              }\n            : function () {\n                return t;\n              };\n        return r.d(e, 'a', e), e;\n      }),\n      (r.o = function (t, e) {\n        return Object.prototype.hasOwnProperty.call(t, e);\n      }),\n      (r.p = '/dist/'),\n      r((r.s = 1))\n    );\n  })([\n    function (t, e) {\n      var r = 'function' == typeof Float32Array;\n      function n(t, e) {\n        return 1 - 3 * e + 3 * t;\n      }\n      function o(t, e) {\n        return 3 * e - 6 * t;\n      }\n      function i(t) {\n        return 3 * t;\n      }\n      function s(t, e, r) {\n        return ((n(e, r) * t + o(e, r)) * t + i(e)) * t;\n      }\n      function l(t, e, r) {\n        return 3 * n(e, r) * t * t + 2 * o(e, r) * t + i(e);\n      }\n      function a(t) {\n        return t;\n      }\n      t.exports = function (t, e, n, o) {\n        if (!(0 <= t && t <= 1 && 0 <= n && n <= 1))\n          throw new Error('bezier x values must be in [0, 1] range');\n        if (t === e && n === o) return a;\n        for (var i = r ? new Float32Array(11) : new Array(11), c = 0; c < 11; ++c)\n          i[c] = s(0.1 * c, t, n);\n        function u(e) {\n          for (var r = 0, o = 1; 10 !== o && i[o] <= e; ++o) r += 0.1;\n          --o;\n          var a = r + 0.1 * ((e - i[o]) / (i[o + 1] - i[o])),\n            c = l(a, t, n);\n          return c >= 0.001\n            ? (function (t, e, r, n) {\n                for (var o = 0; o < 4; ++o) {\n                  var i = l(e, r, n);\n                  if (0 === i) return e;\n                  e -= (s(e, r, n) - t) / i;\n                }\n                return e;\n              })(e, a, t, n)\n            : 0 === c\n            ? a\n            : (function (t, e, r, n, o) {\n                var i,\n                  l,\n                  a = 0;\n                do {\n                  (i = s((l = e + (r - e) / 2), n, o) - t) > 0 ? (r = l) : (e = l);\n                } while (Math.abs(i) > 1e-7 && ++a < 10);\n                return l;\n              })(e, r, r + 0.1, t, n);\n        }\n        return function (t) {\n          return 0 === t ? 0 : 1 === t ? 1 : s(u(t), e, o);\n        };\n      };\n    },\n    function (t, e, r) {\n      'use strict';\n      r.r(e);\n      var n = function () {\n        var t = this.$createElement;\n        return (this._self._c || t)(\n          this.tag,\n          { ref: 'scrollactive-nav-wrapper', tag: 'component', staticClass: 'scrollactive-nav' },\n          [this._t('default')],\n          2\n        );\n      };\n      n._withStripped = !0;\n      var o = r(0),\n        i = r.n(o);\n      function s(t) {\n        return (\n          (function (t) {\n            if (Array.isArray(t)) return l(t);\n          })(t) ||\n          (function (t) {\n            if ('undefined' != typeof Symbol && Symbol.iterator in Object(t)) return Array.from(t);\n          })(t) ||\n          (function (t, e) {\n            if (!t) return;\n            if ('string' == typeof t) return l(t, e);\n            var r = Object.prototype.toString.call(t).slice(8, -1);\n            'Object' === r && t.constructor && (r = t.constructor.name);\n            if ('Map' === r || 'Set' === r) return Array.from(t);\n            if ('Arguments' === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))\n              return l(t, e);\n          })(t) ||\n          (function () {\n            throw new TypeError(\n              'Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'\n            );\n          })()\n        );\n      }\n      function l(t, e) {\n        (null == e || e > t.length) && (e = t.length);\n        for (var r = 0, n = new Array(e); r < e; r++) n[r] = t[r];\n        return n;\n      }\n      var a = (function (t, e, r, n, o, i, s, l) {\n        var a,\n          c = 'function' == typeof t ? t.options : t;\n        if (\n          (e && ((c.render = e), (c.staticRenderFns = r), (c._compiled = !0)),\n          n && (c.functional = !0),\n          i && (c._scopeId = 'data-v-' + i),\n          s\n            ? ((a = function (t) {\n                (t =\n                  t ||\n                  (this.$vnode && this.$vnode.ssrContext) ||\n                  (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext)) ||\n                  'undefined' == typeof __VUE_SSR_CONTEXT__ ||\n                  (t = __VUE_SSR_CONTEXT__),\n                  o && o.call(this, t),\n                  t && t._registeredComponents && t._registeredComponents.add(s);\n              }),\n              (c._ssrRegister = a))\n            : o &&\n              (a = l\n                ? function () {\n                    o.call(this, (c.functional ? this.parent : this).$root.$options.shadowRoot);\n                  }\n                : o),\n          a)\n        )\n          if (c.functional) {\n            c._injectStyles = a;\n            var u = c.render;\n            c.render = function (t, e) {\n              return a.call(e), u(t, e);\n            };\n          } else {\n            var f = c.beforeCreate;\n            c.beforeCreate = f ? [].concat(f, a) : [a];\n          }\n        return { exports: t, options: c };\n      })(\n        {\n          props: {\n            activeClass: { type: String, default: 'is-active' },\n            offset: { type: Number, default: 20 },\n            scrollOffset: { type: Number, default: null },\n            scrollContainerSelector: { type: String, default: '' },\n            clickToScroll: { type: Boolean, default: !0 },\n            duration: { type: Number, default: 600 },\n            alwaysTrack: { type: Boolean, default: !1 },\n            bezierEasingValue: { type: String, default: '.5,0,.35,1' },\n            modifyUrl: { type: Boolean, default: !0 },\n            exact: { type: Boolean, default: !1 },\n            highlightFirstItem: { type: Boolean, default: !1 },\n            tag: { type: String, default: 'nav' },\n            scrollOnStart: { type: Boolean, default: !0 },\n          },\n          data: function () {\n            return {\n              observer: null,\n              items: [],\n              currentItem: null,\n              lastActiveItem: null,\n              scrollAnimationFrame: null,\n              bezierEasing: i.a,\n            };\n          },\n          computed: {\n            cubicBezierArray: function () {\n              return this.bezierEasingValue.split(',');\n            },\n            scrollContainer: function () {\n              var t = window;\n              return (\n                this.scrollContainerSelector &&\n                  (t = document.querySelector(this.scrollContainerSelector) || window),\n                t\n              );\n            },\n          },\n          mounted: function () {\n            var t = window.MutationObserver || window.WebKitMutationObserver;\n            this.observer ||\n              ((this.observer = new t(this.initScrollactiveItems)),\n              this.observer.observe(this.$refs['scrollactive-nav-wrapper'], {\n                childList: !0,\n                subtree: !0,\n              })),\n              this.initScrollactiveItems(),\n              this.removeActiveClass(),\n              (this.currentItem = this.getItemInsideWindow()),\n              this.currentItem && this.currentItem.classList.add(this.activeClass),\n              this.scrollOnStart && this.scrollToHashElement(),\n              this.scrollContainer.addEventListener('scroll', this.onScroll);\n          },\n          updated: function () {\n            this.initScrollactiveItems();\n          },\n          beforeDestroy: function () {\n            this.scrollContainer.removeEventListener('scroll', this.onScroll),\n              window.cancelAnimationFrame(this.scrollAnimationFrame);\n          },\n          methods: {\n            onScroll: function (t) {\n              (this.currentItem = this.getItemInsideWindow()),\n                this.currentItem !== this.lastActiveItem &&\n                  (this.removeActiveClass(),\n                  this.$emit('itemchanged', t, this.currentItem, this.lastActiveItem),\n                  (this.lastActiveItem = this.currentItem)),\n                this.currentItem && this.currentItem.classList.add(this.activeClass);\n            },\n            getItemInsideWindow: function () {\n              var t,\n                e = this;\n              return (\n                [].forEach.call(this.items, function (r) {\n                  var n = r === e.items[0],\n                    o = document.getElementById(decodeURI(r.hash.substr(1)));\n                  if (o) {\n                    var i = e.scrollContainer.scrollTop || window.pageYOffset,\n                      s = i >= e.getOffsetTop(o) - e.offset,\n                      l = i < e.getOffsetTop(o) - e.offset + o.offsetHeight;\n                    n && e.highlightFirstItem && l && (t = r),\n                      e.exact && s && l && (t = r),\n                      !e.exact && s && (t = r);\n                  }\n                }),\n                t\n              );\n            },\n            initScrollactiveItems: function () {\n              var t = this;\n              (this.items = this.$el.querySelectorAll('.scrollactive-item')),\n                this.clickToScroll\n                  ? [].forEach.call(this.items, function (e) {\n                      e.addEventListener('click', t.handleClick);\n                    })\n                  : [].forEach.call(this.items, function (e) {\n                      e.removeEventListener('click', t.handleClick);\n                    });\n            },\n            setScrollactiveItems: function () {\n              this.initScrollactiveItems();\n            },\n            handleClick: function (t) {\n              var e = this;\n              t.preventDefault();\n              var r = t.currentTarget.hash,\n                n = document.getElementById(decodeURI(r.substr(1)));\n              n\n                ? (this.alwaysTrack ||\n                    (this.scrollContainer.removeEventListener('scroll', this.onScroll),\n                    window.cancelAnimationFrame(this.scrollAnimationFrame),\n                    this.removeActiveClass(),\n                    t.currentTarget.classList.add(this.activeClass)),\n                  this.scrollTo(n).then(function () {\n                    if (!e.alwaysTrack) {\n                      e.scrollContainer.addEventListener('scroll', e.onScroll);\n                      (e.currentItem = [].find.call(e.items, function (t) {\n                        return decodeURI(t.hash.substr(1)) === n.id;\n                      })),\n                        e.currentItem !== e.lastActiveItem &&\n                          (e.$emit('itemchanged', null, e.currentItem, e.lastActiveItem),\n                          (e.lastActiveItem = e.currentItem));\n                    }\n                    e.modifyUrl && e.pushHashToUrl(r);\n                  }))\n                : console.warn(\n                    \"[vue-scrollactive] Element '\".concat(\n                      r,\n                      \"' was not found. Make sure it is set in the DOM.\"\n                    )\n                  );\n            },\n            scrollTo: function (t) {\n              var e = this;\n              return new Promise(function (r) {\n                var n = e.getOffsetTop(t),\n                  o = e.scrollContainer.scrollTop || window.pageYOffset,\n                  i = n - o,\n                  l = e.bezierEasing.apply(e, s(e.cubicBezierArray)),\n                  a = null;\n                window.requestAnimationFrame(function t(n) {\n                  a || (a = n);\n                  var s = n - a,\n                    c = s / e.duration;\n                  s >= e.duration && (s = e.duration), c >= 1 && (c = 1);\n                  var u = e.scrollOffset || e.offset,\n                    f = o + l(c) * (i - u);\n                  e.scrollContainer.scrollTo(0, f),\n                    s < e.duration\n                      ? (e.scrollAnimationFrame = window.requestAnimationFrame(t))\n                      : r();\n                });\n              });\n            },\n            getOffsetTop: function (t) {\n              for (var e = 0, r = t; r; ) (e += r.offsetTop), (r = r.offsetParent);\n              return this.scrollContainer.offsetTop && (e -= this.scrollContainer.offsetTop), e;\n            },\n            removeActiveClass: function () {\n              var t = this;\n              [].forEach.call(this.items, function (e) {\n                e.classList.remove(t.activeClass);\n              });\n            },\n            scrollToHashElement: function () {\n              var t = this,\n                e = window.location.hash;\n              if (e) {\n                var r = document.querySelector(decodeURI(e));\n                r &&\n                  ((window.location.hash = ''),\n                  setTimeout(function () {\n                    var n = r.offsetTop - t.offset;\n                    t.scrollContainer.scrollTo(0, n), t.pushHashToUrl(e);\n                  }, 0));\n              }\n            },\n            pushHashToUrl: function (t) {\n              window.history.pushState\n                ? window.history.pushState(null, null, t)\n                : (window.location.hash = t);\n            },\n          },\n        },\n        n,\n        [],\n        !1,\n        null,\n        null,\n        null\n      );\n      a.options.__file = 'src/scrollactive.vue';\n      var c = a.exports,\n        u = {\n          install: function (t) {\n            u.install.installed || t.component('scrollactive', c);\n          },\n        };\n      'undefined' != typeof window && window.Vue && u.install(window.Vue);\n      e.default = u;\n    },\n  ]);\n});\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","module.exports = __webpack_public_path__ + \"../asset/placeholder.jpg\";","\nexport const EXAMPLE_CATEGORIES = [\n    'line',\n    'bar',\n    'pie',\n    'scatter',\n    'map',\n    'candlestick',\n    'radar',\n    'boxplot',\n    'heatmap',\n    'graph',\n    'lines',\n    'tree',\n    'treemap',\n    'sunburst',\n    'parallel',\n    'sankey',\n    'funnel',\n    'gauge',\n    'pictorialBar',\n    'themeRiver',\n    'calendar',\n    'custom',\n\n    'dataset',\n    'dataZoom',\n    'drag',\n    'rich',\n\n    'globe',\n    'bar3D',\n    'scatter3D',\n    'surface',\n    'map3D',\n    'lines3D',\n    'line3D',\n    'scatterGL',\n    'linesGL',\n    'flowGL',\n    'graphGL'\n];\n\nexport const THEMES = {\n    default: [\n        '#5470c6',\n        '#91cc75',\n        '#fac858',\n        '#ee6666',\n        '#73c0de',\n        '#3ba272',\n        '#fc8452',\n        '#9a60b4',\n        '#ea7ccc'\n    ],\n    dark: [\n        '#4992ff',\n        '#7cffb2',\n        '#fddd60',\n        '#ff6e76',\n        '#58d9f9',\n        '#05c091',\n        '#ff8a45',\n        '#8d48e3',\n        '#dd79ff'\n    ]\n};\n\nexport const BLACK_MAP = (function (list) {\n    const map = {};\n    for (var i = 0; i < list.length; i++) {\n        map[list[i]] = 1;\n    }\n    return location.href.indexOf('github.io') >= 0 ? {} : map;\n})([\n    'effectScatter-map',\n    'geo-lines',\n    'geo-map-scatter',\n    'heatmap-map',\n    'lines-airline',\n    'map-china',\n    'map-china-dataRange',\n    'map-labels',\n    'map-locate',\n    'map-province',\n    'map-world',\n    'map-world-dataRange',\n    'scatter-map',\n    'scatter-map-brush',\n    'scatter-weibo',\n    'scatter-world-population',\n    'geo3d',\n    'geo3d-with-different-height',\n    'globe-country-carousel',\n    'globe-with-echarts-surface',\n    'map3d-alcohol-consumption',\n    'map3d-wood-map',\n    'scattergl-weibo'\n]);\n\n\nconst URL_PARAMS = {};\n(location.search || '').substr(1).split('&').forEach(function (item) {\n    const kv = item.split('=');\n    URL_PARAMS[kv[0]] = kv[1];\n});\n\nexport {URL_PARAMS};\n\nexport const SUPPORT_WEBP = (function () {\n    var elem = document.createElement('canvas');\n    elem.width = elem.height = 1;\n    if (!!(elem.getContext && elem.getContext('2d'))) {\n        // was able or not to get WebP representation\n        return elem.toDataURL('image/webp').indexOf('data:image/webp') === 0;\n    }\n    // very old browser like IE 8, canvas not supported\n    return false;\n})();\n\nexport const SCRIPT_URLS = {\n    localEChartsMinJS: 'http://localhost/echarts-next/dist/echarts.js',\n    echartsMinJS: 'https://cdn.jsdelivr.net/npm/echarts@5.0.0/dist/echarts.min.js',\n    echartsDir: 'https://cdn.jsdelivr.net/npm/echarts@5.0.0',\n    echartsStatMinJS: 'https://cdn.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js',\n    echartsGLMinJS: 'https://cdn.jsdelivr.net/npm/echarts-gl@2.0.0-rc.1/dist/echarts-gl.min.js',\n    datGUIMinJS: 'https://cdn.jsdelivr.net/npm/dat.gui@0.6.5/build/dat.gui.min.js',\n    monacoDir: 'https://cdn.jsdelivr.net/npm/monaco-editor@0.21.2/min/vs',\n    aceDir: 'https://cdn.jsdelivr.net/npm/ace-builds@1.4.12/src-min-noconflict'\n};\n","\nconst promisesCache = {};\n\nexport function loadScriptsAsync(scripts) {\n    return Promise.all(scripts.map(function (scriptUrl) {\n        if (typeof scriptUrl === 'string') {\n            scriptUrl = {\n                url: scriptUrl,\n                // TODO Not supported type\n                type: scriptUrl.match(/\\.css$/) ? 'css' : 'js'\n            };\n        }\n        if (promisesCache[scriptUrl.url]) {\n            return promisesCache[scriptUrl.url];\n        }\n        const promise = new Promise((resolve, reject) => {\n            if (scriptUrl.type === 'js') {\n                const script = document.createElement('script');\n                script.src = scriptUrl.url;\n                script.async = false;\n                script.onload = function () {\n                    resolve();\n                };\n                script.onerror = function () {\n                    reject();\n                };\n                document.body.appendChild(script);\n            }\n            else if (scriptUrl.type === 'css') {\n                const link = document.createElement('link');\n                link.rel = 'stylesheet';\n                link.href = scriptUrl.url;\n                link.onload = function () {\n                    resolve();\n                };\n                link.onerror = function () {\n                    reject();\n                };\n                document.body.appendChild(link);\n            }\n        });\n        promisesCache[scriptUrl.url] = promise;\n        return promise;\n    }));\n}\n","export default {\n    en: {\n        editor: {\n            run: 'Run',\n            errorInEditor: 'Errors exist in code!',\n            chartOK: 'Chart has been generated successfully, ',\n\n            darkMode: 'Dark Mode',\n            enableDecal: 'Decal Pattern',\n            // lightMode: 'Light Mode',\n\n            renderCfgTitle: 'Render',\n            renderer: 'Renderer',\n            useDirtyRect: 'Use Dirty Rect',\n\n            download: 'Download',\n\n            edit: 'Edit',\n            monacoMode: 'Enable Type Checking'\n        },\n\n        chartTypes: {\n            line: 'Line',\n            bar: 'Bar',\n            pie: 'Pie',\n            scatter: 'Scatter',\n            map: 'GEO/Map',\n            candlestick: 'Candlestick',\n            radar: 'Radar',\n            boxplot: 'Boxplot',\n            heatmap: 'Heatmap',\n            graph: 'Graph',\n            lines: 'Lines',\n            tree: 'Tree',\n            treemap: 'Treemap',\n            sunburst: 'Sunburst',\n            parallel: 'Parallel',\n            sankey: 'Sankey',\n            funnel: 'Funnel',\n            gauge: 'Gauge',\n            pictorialBar: 'PictorialBar',\n            themeRiver: 'ThemeRiver',\n            calendar: 'Calendar',\n            custom: 'Custom',\n\n            dataset: 'Dataset',\n            dataZoom: 'DataZoom',\n            drag: 'Drag',\n            rich: 'Rich Text',\n\n            globe: '3D Globe',\n            bar3D: '3D Bar',\n            scatter3D: '3D Scatter',\n            surface: '3D Surface',\n            map3D: '3D Map',\n            lines3D: '3D Lines',\n            line3D: '3D Line',\n            scatterGL: 'Scatter GL',\n            linesGL: 'Lines GL',\n            flowGL: 'Flow GL',\n            graphGL: 'Graph GL'\n        }\n    },\n    zh: {\n        editor: {\n            run: '运行',\n            errorInEditor: '编辑器内容有误！',\n            chartOK: '图表已生成, ',\n\n            darkMode: '深色模式',\n            enableDecal: '无障碍花纹',\n            // lightMode: '浅色模式',\n\n            renderCfgTitle: '渲染设置',\n            useDirtyRect: '开启脏矩形优化',\n            renderer: '渲染模式',\n            download: '下载示例',\n\n            edit: '编辑',\n            monacoMode: '开启类型检查'\n        },\n\n        chartTypes: {\n            line: '折线图',\n            bar: '柱状图',\n            pie: '饼图',\n            scatter: '散点图',\n            map: '地理坐标/地图',\n            candlestick: 'K 线图',\n            radar: '雷达图',\n            boxplot: '盒须图',\n            heatmap: '热力图',\n            graph: '关系图',\n            lines: '路径图',\n            tree: '树图',\n            treemap: '矩形树图',\n            sunburst: '旭日图',\n            parallel: '平行坐标系',\n            sankey: '桑基图',\n            funnel: '漏斗图',\n            gauge: '仪表盘',\n            pictorialBar: '象形柱图',\n            themeRiver: '主题河流图',\n            calendar: '日历坐标系',\n            custom: '自定义系列',\n\n            dataset: '数据集',\n            dataZoom: '数据区域缩放',\n            drag: '拖拽',\n            rich: '富文本',\n\n            globe: '3D 地球',\n            bar3D: '3D 柱状图',\n            scatter3D: '3D 散点图',\n            surface: '3D 曲面',\n            map3D: '3D 地图',\n            lines3D: '3D 路径图',\n            line3D: '3D 折线图',\n            scatterGL: 'GL 散点图',\n            linesGL: 'GL 路径图',\n            flowGL: 'GL 矢量场图',\n            graphGL: 'GL 关系图'\n        }\n    }\n};","\n// import * as matter from 'gray-matter';\nimport {URL_PARAMS} from '../common/config';\n\nexport const store = {\n    cdnRoot: '',\n    version: '',\n    locale: '',\n\n    darkMode: URL_PARAMS.theme === 'dark',\n    enableDecal: 'decal' in URL_PARAMS,\n    renderer: URL_PARAMS.renderer || 'canvas',\n\n    typeCheck: URL_PARAMS.editor === 'monaco',\n    useDirtyRect: 'useDirtyRect' in URL_PARAMS,\n\n    code: '',\n\n    runCode: '',\n    sourceCode: '',\n\n    isMobile: window.innerWidth < 600,\n\n    editorStatus: {\n        type: '',\n        message: ''\n    }\n};\n\nexport function loadExampleCode() {\n    return new Promise(resolve => {\n        const dataRoot = URL_PARAMS.gl ? 'data-gl' : 'data';\n        $.ajax(`${store.cdnRoot}/${dataRoot}/${URL_PARAMS.c}.js?_v_${store.version}`, {\n            dataType: 'text',\n            success: (data) => {\n                resolve(data);\n            }\n        });\n    });\n}\n\nexport function parseSourceCode(code) {\n    return code.replace(/\\/\\*[\\w\\W]*?\\*\\//, '').trim();\n}\n","\n/* eslint-disable */\n// THIS FILE IS GENERATED, DON'T MODIFY */\nexport default [\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"animating-contour-on-globe\",\n    \"tags\": [],\n    \"title\": \"Animating Contour on Globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-dataset\",\n    \"tags\": [],\n    \"title\": \"3D Bar with Dataset\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-global-population\",\n    \"tags\": [],\n    \"title\": \"Bar3D - Global Population\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-music-visualization\",\n    \"tags\": [],\n    \"title\": \"Music Visualization\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-myth\",\n    \"tags\": [],\n    \"title\": \"星云\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-noise-modified-from-marpi-demo\",\n    \"tags\": [],\n    \"title\": \"Noise modified from marpi's demo\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-punch-card\",\n    \"tags\": [],\n    \"title\": \"Bar3D - Punch Card\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-simplex-noise\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Bar3D - Simplex Noise\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"bar3d-voxelize-image\",\n    \"tags\": [],\n    \"title\": \"Voxelize image\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"flowGL\"\n    ],\n    \"id\": \"flowGL-noise\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Flow on the cartesian\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"geo3D\"\n    ],\n    \"id\": \"geo3d\",\n    \"tags\": [],\n    \"title\": \"Geo3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"geo3D\"\n    ],\n    \"id\": \"geo3d-with-different-height\",\n    \"tags\": [],\n    \"title\": \"Geo3D with Different Height\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"global-population-bar3d-on-globe\",\n    \"tags\": [],\n    \"title\": \"Global Population - Bar3D on Globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"flowGL\"\n    ],\n    \"id\": \"global-wind-visualization\",\n    \"tags\": [],\n    \"title\": \"Global wind visualization\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"flowGL\"\n    ],\n    \"id\": \"global-wind-visualization-2\",\n    \"tags\": [],\n    \"title\": \"Global Wind Visualization 2\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-contour-paint\",\n    \"tags\": [],\n    \"title\": \"Contour Paint\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-country-carousel\",\n    \"tags\": [],\n    \"title\": \"Country Carousel\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-displacement\",\n    \"tags\": [],\n    \"title\": \"Globe Displacement\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-echarts-gl-hello-world\",\n    \"tags\": [],\n    \"title\": \"ECharts-GL Hello World\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-layers\",\n    \"tags\": [],\n    \"title\": \"Globe Layers\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-moon\",\n    \"tags\": [],\n    \"title\": \"Moon\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"globe-with-echarts-surface\",\n    \"tags\": [],\n    \"title\": \"Globe with ECharts Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graphGL\"\n    ],\n    \"id\": \"graphgl-gpu-layout\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"GraphGL GPU Layout\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graphGL\"\n    ],\n    \"id\": \"graphgl-large-internet\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"GraphGL - Large Internet\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"graphGL\"\n    ],\n    \"id\": \"graphgl-npm-dep\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"1w 节点 2w7 边的NPM 依赖图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"image-surface-sushuang\",\n    \"tags\": [],\n    \"title\": \"Image Surface Sushuang\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"image-to-bar3d\",\n    \"tags\": [],\n    \"title\": \"Image to Bar3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"globe\"\n    ],\n    \"id\": \"iron-globe\",\n    \"tags\": [],\n    \"title\": \"Iron globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line3D\"\n    ],\n    \"id\": \"line3d-orthographic\",\n    \"tags\": [],\n    \"title\": \"三维折线图正交投影\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-airline-on-globe\",\n    \"tags\": [],\n    \"title\": \"Airline on Globe\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-flights\",\n    \"tags\": [],\n    \"title\": \"Flights\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-flights-gl\",\n    \"tags\": [],\n    \"title\": \"Flights GL\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"lines3D\"\n    ],\n    \"id\": \"lines3d-flights-on-geo3d\",\n    \"tags\": [],\n    \"title\": \"Flights on Geo3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"linesGL\"\n    ],\n    \"id\": \"linesGL-ny\",\n    \"tags\": [],\n    \"title\": \"Use linesGL to draw 1 million ny streets.\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-alcohol-consumption\",\n    \"tags\": [],\n    \"title\": \"Map3D - Alcohol Consumption\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-buildings\",\n    \"tags\": [],\n    \"title\": \"Buildings\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-wood-city\",\n    \"tags\": [],\n    \"title\": \"Wood City\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map3D\"\n    ],\n    \"id\": \"map3d-wood-map\",\n    \"tags\": [],\n    \"title\": \"木质世界地图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"metal-bar3d\",\n    \"tags\": [],\n    \"title\": \"Metal Bar3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"metal-surface\",\n    \"tags\": [],\n    \"title\": \"Metal Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"parametric-surface-rose\",\n    \"tags\": [],\n    \"title\": \"Parametric Surface Rose\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Scatter3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3D-dataset\",\n    \"tags\": [],\n    \"title\": \"3D Scatter with Dataset\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-globe-population\",\n    \"tags\": [],\n    \"title\": \"Scatter3D - Globe Population\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-orthographic\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"三维散点图正交投影\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-scatter\",\n    \"tags\": [],\n    \"title\": \"3D Scatter with Scatter Matrix\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter3D\"\n    ],\n    \"id\": \"scatter3d-simplex-noise\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"Scatter3D - Simplex Noise\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatterGL\"\n    ],\n    \"id\": \"scatterGL-gps\",\n    \"tags\": [],\n    \"title\": \"10 million Bulk GPS points\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatterGL\"\n    ],\n    \"id\": \"scattergl-weibo\",\n    \"tags\": [],\n    \"theme\": \"dark\",\n    \"title\": \"微博签到数据点亮中国\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"simple-surface\",\n    \"tags\": [],\n    \"title\": \"Simple Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"sphere-parametric-surface\",\n    \"tags\": [],\n    \"title\": \"Sphere Parametric Surface\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"stacked-bar3d\",\n    \"tags\": [],\n    \"title\": \"Stacked Bar3D\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-breather\",\n    \"tags\": [],\n    \"title\": \"Breather\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-golden-rose\",\n    \"tags\": [],\n    \"title\": \"Golden Rose\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-leather\",\n    \"tags\": [],\n    \"title\": \"皮革材质\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-mollusc-shell\",\n    \"tags\": [],\n    \"title\": \"Mollusc Shell\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-theme-roses\",\n    \"tags\": [],\n    \"title\": \"Theme Roses\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"surface\"\n    ],\n    \"id\": \"surface-wave\",\n    \"tags\": [],\n    \"title\": \"Surface Wave\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"bar3D\"\n    ],\n    \"id\": \"transparent-bar3d\",\n    \"tags\": [],\n    \"title\": \"Transparent Bar3D\",\n    \"difficulty\": 10\n  }\n]","\n/* eslint-disable */\n// THIS FILE IS GENERATED, DON'T MODIFY */\nexport default [\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-background\",\n    \"tags\": [],\n    \"title\": \"Bar with Background\",\n    \"titleCN\": \"带背景色的柱状图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"bar-histogram\",\n    \"tags\": [],\n    \"title\": \"Histogram with Custom Series\",\n    \"titleCN\": \"直方图（自定义系列）\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Bar\",\n    \"titleCN\": \"基础柱状图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-tick-align\",\n    \"tags\": [],\n    \"title\": \"Axis Align with Tick\",\n    \"titleCN\": \"坐标轴刻度与标签对齐\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-simple\",\n    \"tags\": [],\n    \"title\": \"Simple Calendar\",\n    \"titleCN\": \"基础日历图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Candlestick\",\n    \"titleCN\": \"基础 K 线图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\",\n      \"transform\"\n    ],\n    \"id\": \"data-transform-sort-bar\",\n    \"tags\": [],\n    \"title\": \"Sort Data in Bar Chart\",\n    \"titleCN\": \"柱状图排序\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-cartesian\",\n    \"tags\": [],\n    \"title\": \"Heatmap on Cartesian\",\n    \"titleCN\": \"笛卡尔坐标系上的热力图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Line Chart\",\n    \"titleCN\": \"基础折线图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-smooth\",\n    \"tags\": [],\n    \"title\": \"Smoothed Line Chart\",\n    \"titleCN\": \"基础平滑折线图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-simple\",\n    \"tags\": [],\n    \"title\": \"Referer of a website\",\n    \"titleCN\": \"某站点用户访问来源\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar\",\n    \"tags\": [],\n    \"title\": \"Basic Radar Chart\",\n    \"titleCN\": \"基础雷达图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Sankey\",\n    \"titleCN\": \"基础桑基图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Scatter Chart\",\n    \"titleCN\": \"基础散点图\",\n    \"difficulty\": 0\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-basic\",\n    \"tags\": [],\n    \"title\": \"Basic area chart\",\n    \"titleCN\": \"基础面积图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-data-color\",\n    \"tags\": [],\n    \"title\": \"Set Style of Single Bar.\",\n    \"titleCN\": \"自定义单个柱子颜色\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-waterfall\",\n    \"tags\": [],\n    \"title\": \"Waterfall Chart\",\n    \"titleCN\": \"瀑布图（柱状图模拟）\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"heatmap\"\n    ],\n    \"id\": \"calendar-heatmap\",\n    \"tags\": [],\n    \"title\": \"Calendar Heatmap\",\n    \"titleCN\": \"日历热力图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"heatmap\"\n    ],\n    \"id\": \"calendar-vertical\",\n    \"tags\": [],\n    \"title\": \"Calendar Heatmap Vertical\",\n    \"titleCN\": \"纵向日历图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"custom-ohlc\",\n    \"tags\": [],\n    \"title\": \"OHLC Chart\",\n    \"titleCN\": \"OHLC 图（使用自定义系列）\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-profit\",\n    \"tags\": [],\n    \"title\": \"Profit\",\n    \"titleCN\": \"利润分布直方图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-encode0\",\n    \"tags\": [],\n    \"title\": \"Simple Encode\",\n    \"titleCN\": \"指定数据到坐标轴的映射\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge\",\n    \"tags\": [],\n    \"title\": \"Gauge Basic chart\",\n    \"titleCN\": \"基础仪表盘\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-simple\",\n    \"tags\": [],\n    \"title\": \"Simple Gauge\",\n    \"titleCN\": \"带标签数字动画的基础仪表盘\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-force2\",\n    \"tags\": [],\n    \"title\": \"Force Layout\",\n    \"titleCN\": \"力引导布局\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked Line Chart\",\n    \"titleCN\": \"折线图堆叠\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"parallel\"\n    ],\n    \"id\": \"parallel-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Parallel\",\n    \"titleCN\": \"基础平行坐标\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-borderRadius\",\n    \"tags\": [],\n    \"title\": \"Doughnut Chart with Rounded Corner\",\n    \"titleCN\": \"圆角环形图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-doughnut\",\n    \"tags\": [],\n    \"title\": \"Doughnut Chart\",\n    \"titleCN\": \"环形图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar-aqi\",\n    \"tags\": [],\n    \"title\": \"AQI - Radar Chart\",\n    \"titleCN\": \"AQI - 雷达图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-vertical\",\n    \"tags\": [],\n    \"title\": \"Sankey Orient Vertical\",\n    \"titleCN\": \"垂直方向的桑基图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-anscombe-quartet\",\n    \"tags\": [],\n    \"title\": \"Anscomb's quartet\",\n    \"titleCN\": \"Anscomb's quartet\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-clustering\",\n    \"tags\": [],\n    \"title\": \"Clustering Process\",\n    \"titleCN\": \"数据聚合\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-clustering-process\",\n    \"tags\": [],\n    \"title\": \"Clustering Process\",\n    \"titleCN\": \"聚合过程可视化\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-exponential-regression\",\n    \"tags\": [],\n    \"title\": \"Exponential Regression\",\n    \"titleCN\": \"指数回归（使用统计插件）\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Sunburst\",\n    \"titleCN\": \"基础旭日图\",\n    \"difficulty\": 1\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked area chart\",\n    \"titleCN\": \"堆叠面积图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-stack-gradient\",\n    \"tags\": [],\n    \"title\": \"Gradient Stacked area chart\",\n    \"titleCN\": \"渐变堆叠面积图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-negative2\",\n    \"tags\": [],\n    \"title\": \"Bar Chart with Negative Value\",\n    \"titleCN\": \"交错正负轴标签\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-y-category\",\n    \"tags\": [],\n    \"title\": \"World Total Population\",\n    \"titleCN\": \"世界人口总量 - 条形图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-horizontal\",\n    \"tags\": [],\n    \"title\": \"Calendar Heatmap Horizontal\",\n    \"titleCN\": \"横向日力图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-sh\",\n    \"tags\": [],\n    \"title\": \"ShangHai Index\",\n    \"titleCN\": \"上证指数\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"dataZoom\"\n    ],\n    \"id\": \"custom-error-scatter\",\n    \"tags\": [],\n    \"title\": \"Error Scatter on Catesian\",\n    \"titleCN\": \"使用自定系列给散点图添加误差范围\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"effectScatter-map\",\n    \"tags\": [],\n    \"title\": \"Air Quality\",\n    \"titleCN\": \"全国主要城市空气质量\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-speed\",\n    \"tags\": [],\n    \"title\": \"Speed Gauge\",\n    \"titleCN\": \"速度仪表盘\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-grid\",\n    \"tags\": [],\n    \"title\": \"Graph on Cartesian\",\n    \"titleCN\": \"笛卡尔坐标系上的 Graph\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-simple\",\n    \"tags\": [],\n    \"title\": \"Simple Graph\",\n    \"titleCN\": \"Graph 简单示例\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-large\",\n    \"tags\": [],\n    \"title\": \"Heatmap - 2w data\",\n    \"titleCN\": \"热力图 - 2w 数据\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-large-piecewise\",\n    \"tags\": [],\n    \"title\": \"Heatmap - Discrete Mapping of Color\",\n    \"titleCN\": \"热力图 - 颜色的离散映射\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-marker\",\n    \"tags\": [],\n    \"title\": \"Temperature Change in the coming week\",\n    \"titleCN\": \"未来一周气温变化\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"parallel\"\n    ],\n    \"id\": \"parallel-aqi\",\n    \"tags\": [],\n    \"title\": \"Parallel Aqi\",\n    \"titleCN\": \"AQI 分布（平行坐标）\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-custom\",\n    \"tags\": [],\n    \"title\": \"Customized Pie\",\n    \"titleCN\": \"饼图自定义样式\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-pattern\",\n    \"tags\": [],\n    \"title\": \"Texture on Pie Chart\",\n    \"titleCN\": \"饼图纹理\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-roseType\",\n    \"tags\": [],\n    \"title\": \"Nightingale's Rose Diagram\",\n    \"titleCN\": \"南丁格尔玫瑰图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-roseType-simple\",\n    \"tags\": [],\n    \"title\": \"Nightingale's Rose Diagram\",\n    \"titleCN\": \"基础南丁格尔玫瑰图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar-custom\",\n    \"tags\": [],\n    \"title\": \"Customized Radar Chart\",\n    \"titleCN\": \"自定义雷达图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-itemstyle\",\n    \"tags\": [],\n    \"title\": \"Specify ItemStyle for Each Node in Sankey\",\n    \"titleCN\": \"桑基图节点自定义样式\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-levels\",\n    \"tags\": [],\n    \"title\": \"Sankey with Levels Setting\",\n    \"titleCN\": \"桑基图层级自定义样式\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-effect\",\n    \"tags\": [],\n    \"title\": \"Effect Scatter Chart\",\n    \"titleCN\": \"涟漪特效散点图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-linear-regression\",\n    \"tags\": [],\n    \"title\": \"Linear Regression\",\n    \"titleCN\": \"线性回归（使用统计插件）\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-polynomial-regression\",\n    \"tags\": [],\n    \"title\": \"Polynomial Regression\",\n    \"titleCN\": \"多项式回归（使用统计插件）\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-borderRadius\",\n    \"tags\": [],\n    \"title\": \"Sunburst with Rounded Corner\",\n    \"titleCN\": \"圆角旭日图\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-label-rotate\",\n    \"tags\": [],\n    \"title\": \"Sunburst Label Rotate\",\n    \"titleCN\": \"旭日图标签旋转\",\n    \"difficulty\": 2\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"visualMap\"\n    ],\n    \"id\": \"area-pieces\",\n    \"tags\": [],\n    \"title\": \"Area Pieces\",\n    \"titleCN\": \"折线图区域高亮\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-gradient\",\n    \"tags\": [],\n    \"title\": \"Clickable Column Chart with Gradient\",\n    \"titleCN\": \"特性示例：渐变色 阴影 点击缩放\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-label-rotation\",\n    \"tags\": [],\n    \"title\": \"Bar Label Rotation\",\n    \"titleCN\": \"柱状图标签旋转\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked Column Chart\",\n    \"titleCN\": \"堆叠柱状图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-waterfall2\",\n    \"tags\": [],\n    \"title\": \"Waterfall Chart\",\n    \"titleCN\": \"阶梯瀑布图（柱状图模拟）\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-y-category-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked Horizontal Bar\",\n    \"titleCN\": \"堆叠条形图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-large\",\n    \"tags\": [],\n    \"title\": \"Large Scale Candlestick\",\n    \"titleCN\": \"大数据量K线图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-bar-trend\",\n    \"tags\": [],\n    \"title\": \"Custom Bar Trend\",\n    \"titleCN\": \"使用自定义系列添加柱状图趋势\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-cartesian-polygon\",\n    \"tags\": [],\n    \"title\": \"Custom Cartesian Polygon\",\n    \"titleCN\": \"自定义多边形图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-error-bar\",\n    \"tags\": [],\n    \"title\": \"Error Bar on Catesian\",\n    \"titleCN\": \"使用自定系列给柱状图添加误差范围\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-profile\",\n    \"tags\": [],\n    \"title\": \"Profile\",\n    \"titleCN\": \"性能分析图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"cycle-plot\",\n    \"tags\": [],\n    \"title\": \"Cycle Plot\",\n    \"titleCN\": \"Cycle Plot\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"data-transform-filter\",\n    \"tags\": [],\n    \"title\": \"Data Transform Fitler\",\n    \"titleCN\": \"数据过滤\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"pie\",\n      \"transform\"\n    ],\n    \"id\": \"data-transform-multiple-pie\",\n    \"tags\": [],\n    \"title\": \"Partition Data to Pies\",\n    \"titleCN\": \"分割数据到数个饼图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"pie\"\n    ],\n    \"id\": \"dataset-default\",\n    \"tags\": [],\n    \"title\": \"Default arrangement\",\n    \"titleCN\": \"默认 encode 设置\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"dataset\"\n    ],\n    \"id\": \"dataset-encode1\",\n    \"tags\": [],\n    \"title\": \"Encode and Matrix\",\n    \"titleCN\": \"指定数据到坐标轴的映射\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-progress\",\n    \"tags\": [],\n    \"title\": \"Grogress Gauge\",\n    \"titleCN\": \"进度仪表盘\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-stage\",\n    \"tags\": [],\n    \"title\": \"Stage Speed Gauge\",\n    \"titleCN\": \"阶段速度仪表盘\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-force\",\n    \"tags\": [],\n    \"title\": \"Force Layout\",\n    \"titleCN\": \"力引导布局\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-label-overlap\",\n    \"tags\": [],\n    \"title\": \"Hide Overlapped Label\",\n    \"titleCN\": \"关系图自动隐藏重叠标签\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-bmap\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Heatmap on Baidu Map Extension\",\n    \"titleCN\": \"热力图与百度地图扩展\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"heatmap\"\n    ],\n    \"id\": \"heatmap-map\",\n    \"tags\": [],\n    \"title\": \"Air Qulity\",\n    \"titleCN\": \"全国主要城市空气质量\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-gradient\",\n    \"tags\": [],\n    \"title\": \"Line Gradient\",\n    \"titleCN\": \"折线图的渐变\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-sections\",\n    \"tags\": [],\n    \"title\": \"Distribution of Electricity\",\n    \"titleCN\": \"一天用电量分布\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-alignTo\",\n    \"tags\": [],\n    \"title\": \"Pie Label Align\",\n    \"titleCN\": \"饼图标签对齐\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-labelLine-adjust\",\n    \"tags\": [],\n    \"title\": \"Label Line Adjust\",\n    \"titleCN\": \"饼图引导线调整\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar2\",\n    \"tags\": [],\n    \"title\": \"Proportion of Browsers\",\n    \"titleCN\": \"浏览器占比变化\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-energy\",\n    \"tags\": [],\n    \"title\": \"Gradient Edge\",\n    \"titleCN\": \"桑基图渐变色边\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-nodeAlign-left\",\n    \"tags\": [],\n    \"title\": \"Node Align Left in Sankey\",\n    \"titleCN\": \"桑基图左对齐布局\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"sankey\"\n    ],\n    \"id\": \"sankey-nodeAlign-right\",\n    \"tags\": [],\n    \"title\": \"Node Align Right in Sankey\",\n    \"titleCN\": \"桑基图右对齐布局\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-punchCard\",\n    \"tags\": [],\n    \"title\": \"Punch Card of Github\",\n    \"titleCN\": \"GitHub 打卡气泡图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-single-axis\",\n    \"tags\": [],\n    \"title\": \"Scatter on Single Axis\",\n    \"titleCN\": \"单轴散点图\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-weight\",\n    \"tags\": [],\n    \"title\": \"Distribution of Height and Weight\",\n    \"titleCN\": \"男性女性身高体重分布\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-monochrome\",\n    \"tags\": [],\n    \"title\": \"Monochrome Sunburst\",\n    \"titleCN\": \"Monochrome Sunburst\",\n    \"difficulty\": 3\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"dataZoom\"\n    ],\n    \"id\": \"area-simple\",\n    \"tags\": [],\n    \"title\": \"Large scale area chart\",\n    \"titleCN\": \"大数据量面积图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-brush\",\n    \"tags\": [],\n    \"title\": \"Brush Select on Column Chart\",\n    \"titleCN\": \"柱状图框选\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-negative\",\n    \"tags\": [],\n    \"title\": \"Bar Chart with Negative Value\",\n    \"titleCN\": \"正负条形图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar1\",\n    \"tags\": [],\n    \"title\": \"Rainfall and Evaporation\",\n    \"titleCN\": \"某地区蒸发量和降水量\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"graph\"\n    ],\n    \"id\": \"calendar-graph\",\n    \"tags\": [],\n    \"title\": \"Calendar Graph\",\n    \"titleCN\": \"日历关系图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"calendar\"\n    ],\n    \"id\": \"calendar-lunar\",\n    \"tags\": [],\n    \"title\": \"Calendar Lunar\",\n    \"titleCN\": \"农历日历图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-touch\",\n    \"tags\": [],\n    \"title\": \"Axis Pointer Link and Touch\",\n    \"titleCN\": \"触屏上的坐标轴指示器\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"confidence-band\",\n    \"tags\": [],\n    \"title\": \"Confidence Band\",\n    \"titleCN\": \"Confidence Band\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"dataZoom\",\n      \"drag\"\n    ],\n    \"id\": \"custom-gantt-flight\",\n    \"tags\": [],\n    \"title\": \"Gantt Chart of Airport Flights\",\n    \"titleCN\": \"机场航班甘特图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-polar-heatmap\",\n    \"tags\": [],\n    \"title\": \"Polar Heatmap\",\n    \"titleCN\": \"极坐标热力图（自定义系列）\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"data-transform-aggregate\",\n    \"tags\": [],\n    \"title\": \"Data Transform Simple Aggregate\",\n    \"titleCN\": \"简单的数据聚合\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-grade\",\n    \"tags\": [],\n    \"title\": \"Grade Gauge\",\n    \"titleCN\": \"等级仪表盘\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-multi-title\",\n    \"tags\": [],\n    \"title\": \"Multi Title Gauge\",\n    \"titleCN\": \"多标题仪表盘\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-temperature\",\n    \"tags\": [],\n    \"title\": \"Temperature Gauge chart\",\n    \"titleCN\": \"气温仪表盘\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph\",\n    \"tags\": [],\n    \"title\": \"Les Miserables\",\n    \"titleCN\": \"悲惨世界人物关系图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"grid-multiple\",\n    \"tags\": [],\n    \"title\": \"Rainfall and Water Flow\",\n    \"titleCN\": \"雨量流量关系图\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-aqi\",\n    \"tags\": [],\n    \"title\": \"Beijing AQI\",\n    \"titleCN\": \"北京 AQI 可视化\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"mix-line-bar\",\n    \"tags\": [],\n    \"title\": \"Mixed Line and Bar\",\n    \"titleCN\": \"折柱混合\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"mix-zoom-on-value\",\n    \"tags\": [],\n    \"title\": \"Mix Zoom On Value\",\n    \"titleCN\": \"多数值轴轴缩放\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"multiple-x-axis\",\n    \"tags\": [],\n    \"title\": \"Multiple X Axes\",\n    \"titleCN\": \"多 X 轴\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"multiple-y-axis\",\n    \"tags\": [],\n    \"title\": \"Multiple Y Axes\",\n    \"titleCN\": \"多 Y 轴示例\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"parallel\"\n    ],\n    \"id\": \"parallel-nutrients\",\n    \"tags\": [],\n    \"title\": \"Parallel Nutrients\",\n    \"titleCN\": \"营养结构（平行坐标）\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"pie\"\n    ],\n    \"id\": \"pie-legend\",\n    \"tags\": [],\n    \"title\": \"Pie with Scrollable Legend\",\n    \"titleCN\": \"可滚动的图例\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"pie\",\n      \"rich\"\n    ],\n    \"id\": \"pie-rich-text\",\n    \"tags\": [],\n    \"title\": \"Pie Special Label\",\n    \"titleCN\": \"富文本标签\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-label-align-right\",\n    \"tags\": [],\n    \"title\": \"Align Label on the Top\",\n    \"titleCN\": \"散点图标签顶部对齐\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-label-align-top\",\n    \"tags\": [],\n    \"title\": \"Align Label on the Top\",\n    \"titleCN\": \"散点图标签顶部对齐\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-visualMap\",\n    \"tags\": [],\n    \"title\": \"Sunburst VisualMap\",\n    \"titleCN\": \"旭日图使用视觉编码\",\n    \"difficulty\": 4\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-rainfall\",\n    \"tags\": [],\n    \"title\": \"Rainfall\",\n    \"titleCN\": \"雨量流量关系图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"area-time-axis\",\n    \"tags\": [],\n    \"title\": \"Area Chart with Time Axis\",\n    \"titleCN\": \"时间轴折线图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-animation-delay\",\n    \"tags\": [],\n    \"title\": \"Animation Delay\",\n    \"titleCN\": \"柱状图动画延迟\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-large\",\n    \"tags\": [],\n    \"title\": \"Large Scale Bar Chart\",\n    \"titleCN\": \"大数据量柱图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-race\",\n    \"tags\": [],\n    \"title\": \"Bar Race\",\n    \"titleCN\": \"动态排序柱状图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"line\",\n      \"pie\"\n    ],\n    \"id\": \"dataset-link\",\n    \"tags\": [],\n    \"title\": \"Share Dataset\",\n    \"titleCN\": \"联动和共享数据集\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-series-layout-by\",\n    \"tags\": [],\n    \"title\": \"Series Layout By Column or Row\",\n    \"titleCN\": \"系列按行和按列排布\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-simple0\",\n    \"tags\": [],\n    \"title\": \"Simple Example of Dataset\",\n    \"titleCN\": \"最简单的数据集（dataset）\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"dataset\",\n      \"bar\"\n    ],\n    \"id\": \"dataset-simple1\",\n    \"tags\": [],\n    \"title\": \"Dataset in Object Array\",\n    \"titleCN\": \"对象数组的输入格式\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"dynamic-data2\",\n    \"tags\": [],\n    \"title\": \"Dynamic Data + Time Axis\",\n    \"titleCN\": \"动态数据 + 时间坐标轴\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-ring\",\n    \"tags\": [],\n    \"title\": \"Ring Gauge\",\n    \"titleCN\": \"得分环\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-circular-layout\",\n    \"tags\": [],\n    \"title\": \"Les Miserables\",\n    \"titleCN\": \"悲惨世界人物关系图(环形布局)\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-function\",\n    \"tags\": [],\n    \"title\": \"Function Plot\",\n    \"titleCN\": \"函数绘图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-race\",\n    \"tags\": [],\n    \"title\": \"Line Race\",\n    \"titleCN\": \"动态排序折线图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"pie\",\n      \"rich\"\n    ],\n    \"id\": \"pie-nest\",\n    \"tags\": [],\n    \"title\": \"Nested Pies\",\n    \"titleCN\": \"嵌套环形图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-large\",\n    \"tags\": [],\n    \"title\": \"Large Scatter\",\n    \"titleCN\": \"大规模散点图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-nebula\",\n    \"tags\": [],\n    \"title\": \"Scatter Nebula\",\n    \"titleCN\": \"大规模星云散点图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-stream-visual\",\n    \"tags\": [],\n    \"title\": \"Visual interaction with stream\",\n    \"titleCN\": \"流式渲染和视觉映射操作\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-drink\",\n    \"tags\": [],\n    \"title\": \"Drink Flavors\",\n    \"titleCN\": \"Drink Flavors\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"dataZoom\"\n    ],\n    \"id\": \"wind-barb\",\n    \"tags\": [],\n    \"title\": \"Wind Barb\",\n    \"titleCN\": \"风向图\",\n    \"difficulty\": 5\n  },\n  {\n    \"category\": [\n      \"bar\",\n      \"rich\"\n    ],\n    \"id\": \"bar-rich-text\",\n    \"tags\": [],\n    \"title\": \"Wheater Statistics\",\n    \"titleCN\": \"天气统计（富文本）\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"bubble-gradient\",\n    \"tags\": [],\n    \"title\": \"Bubble Chart\",\n    \"titleCN\": \"气泡图\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"pie\"\n    ],\n    \"id\": \"calendar-pie\",\n    \"tags\": [],\n    \"title\": \"Calendar Pie\",\n    \"titleCN\": \"日历饼图\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"map\"\n    ],\n    \"id\": \"custom-hexbin\",\n    \"tags\": [],\n    \"title\": \"Hexagonal Binning\",\n    \"titleCN\": \"六边形分箱图（自定义系列）\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"dynamic-data\",\n    \"tags\": [],\n    \"title\": \"Dynamic Data\",\n    \"titleCN\": \"动态数据\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-barometer\",\n    \"tags\": [],\n    \"title\": \"Gauge Barometer chart\",\n    \"titleCN\": \"气压表\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-force-dynamic\",\n    \"tags\": [],\n    \"title\": \"Graph Dynamic\",\n    \"titleCN\": \"动态增加图节点\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-markline\",\n    \"tags\": [],\n    \"title\": \"Line with Marklines\",\n    \"titleCN\": \"折线图的标记线\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-style\",\n    \"tags\": [],\n    \"title\": \"Line Style and Item Style\",\n    \"titleCN\": \"自定义折线图样式\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"mix-timeline-finance\",\n    \"tags\": [],\n    \"title\": \"Finance Indices 2002\",\n    \"titleCN\": \"2002全国宏观经济指标\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"sunburst\"\n    ],\n    \"id\": \"sunburst-book\",\n    \"tags\": [],\n    \"title\": \"Book Records\",\n    \"titleCN\": \"书籍分布\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"watermark\",\n    \"tags\": [],\n    \"title\": \"Watermark - ECharts Download\",\n    \"titleCN\": \"水印 - ECharts 下载统计\",\n    \"difficulty\": 6\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-polar-real-estate\",\n    \"tags\": [],\n    \"title\": \"Bar Chart on Polar\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-polar-stack\",\n    \"tags\": [],\n    \"title\": \"Stacked Bar Chart on Polar\",\n    \"titleCN\": \"极坐标系下的堆叠柱状图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"bar-polar-stack-radial\",\n    \"tags\": [],\n    \"title\": \"Stacked Bar Chart on Polar(Radial)\",\n    \"titleCN\": \"极坐标系下的堆叠柱状图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"custom\",\n      \"calendar\"\n    ],\n    \"id\": \"custom-calendar-icon\",\n    \"tags\": [],\n    \"title\": \"Custom Calendar Icon\",\n    \"titleCN\": \"日历图自定义图标\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-wind\",\n    \"tags\": [],\n    \"title\": \"Use custom series to draw wind vectors\",\n    \"titleCN\": \"使用自定义系列绘制风场\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-clock\",\n    \"tags\": [],\n    \"title\": \"Clock Gauge\",\n    \"titleCN\": \"时钟仪表盘\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-life-expectancy\",\n    \"tags\": [],\n    \"title\": \"Graph Life Expectancy\",\n    \"titleCN\": \"Graph Life Expectancy\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-in-cartesian-coordinate-system\",\n    \"tags\": [],\n    \"title\": \"Line Chart in Cartesian Coordinate System\",\n    \"titleCN\": \"双数值轴折线图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-log\",\n    \"tags\": [],\n    \"title\": \"Log Axis\",\n    \"titleCN\": \"对数轴示例\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-step\",\n    \"tags\": [],\n    \"title\": \"Step Line\",\n    \"titleCN\": \"阶梯折线图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"bar\"\n    ],\n    \"id\": \"polar-roundCap\",\n    \"tags\": [],\n    \"title\": \"Rounded Bar on Polar\",\n    \"titleCN\": \"圆角环形图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-aqi-color\",\n    \"tags\": [],\n    \"title\": \"Scatter Aqi Color\",\n    \"titleCN\": \"AQI 气泡图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-nutrients\",\n    \"tags\": [],\n    \"title\": \"Scatter Nutrients\",\n    \"titleCN\": \"营养分布散点图\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-nutrients-matrix\",\n    \"tags\": [],\n    \"title\": \"Scatter Nutrients Matrix\",\n    \"titleCN\": \"营养分布散点矩阵\",\n    \"difficulty\": 7\n  },\n  {\n    \"category\": [\n      \"gauge\"\n    ],\n    \"id\": \"gauge-car\",\n    \"tags\": [],\n    \"title\": \"Gauge Car\",\n    \"titleCN\": \"Gauge Car\",\n    \"difficulty\": 8\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-webkit-dep\",\n    \"tags\": [],\n    \"title\": \"Graph Webkit Dep\",\n    \"titleCN\": \"WebKit 模块关系依赖图\",\n    \"difficulty\": 8\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-easing\",\n    \"tags\": [],\n    \"title\": \"Line Easing Visualizing\",\n    \"titleCN\": \"缓动函数可视化\",\n    \"difficulty\": 8\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-y-category\",\n    \"tags\": [],\n    \"title\": \"Line Y Category\",\n    \"titleCN\": \"垂直折线图（Y轴为类目轴）\",\n    \"difficulty\": 8\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-polar-punchCard\",\n    \"tags\": [],\n    \"title\": \"Punch Card of Github\",\n    \"titleCN\": \"GitHub 打卡气泡图（极坐标）\",\n    \"difficulty\": 8\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-gauge\",\n    \"tags\": [],\n    \"title\": \"Custom Gauge\",\n    \"titleCN\": \"自定义仪表\",\n    \"difficulty\": 9\n  },\n  {\n    \"category\": [\n      \"graph\"\n    ],\n    \"id\": \"graph-npm\",\n    \"tags\": [],\n    \"title\": \"NPM Dependencies\",\n    \"titleCN\": \"NPM 依赖关系图\",\n    \"difficulty\": 9\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-graphic\",\n    \"tags\": [],\n    \"title\": \"Custom Graphic Component\",\n    \"titleCN\": \"自定义图形组件\",\n    \"difficulty\": 9\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-pen\",\n    \"tags\": [],\n    \"title\": \"Click to Add Points\",\n    \"titleCN\": \"点击添加折线图拐点\",\n    \"difficulty\": 9\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-life-expectancy-timeline\",\n    \"tags\": [],\n    \"title\": \"Life Expectancy and GDP\",\n    \"titleCN\": \"各国人均寿命与GDP关系演变\",\n    \"difficulty\": 9\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-painter-choice\",\n    \"tags\": [],\n    \"title\": \"Master Painter Color Choices Throughout History\",\n    \"titleCN\": \"Master Painter Color Choices Throughout History\",\n    \"difficulty\": 9\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"boxplot-light-velocity\",\n    \"tags\": [],\n    \"title\": \"Boxplot Light Velocity\",\n    \"titleCN\": \"基础盒须图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"boxplot-light-velocity2\",\n    \"tags\": [],\n    \"title\": \"Boxplot Light Velocity2\",\n    \"titleCN\": \"垂直方向盒须图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"boxplot\"\n    ],\n    \"id\": \"boxplot-multi\",\n    \"tags\": [],\n    \"title\": \"Multiple Categories\",\n    \"titleCN\": \"多系列盒须图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [],\n    \"id\": \"calendar-effectscatter\",\n    \"tags\": [],\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-brush\",\n    \"tags\": [],\n    \"title\": \"Candlestick Brush\",\n    \"titleCN\": \"日力图刷选\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"candlestick\"\n    ],\n    \"id\": \"candlestick-sh-2015\",\n    \"tags\": [],\n    \"title\": \"ShangHai Index, 2015\",\n    \"titleCN\": \"2015 年上证指数\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [],\n    \"id\": \"covid-america\",\n    \"tags\": [],\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\",\n      \"map\"\n    ],\n    \"id\": \"effectScatter-bmap\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Air Quality - Baidu Map\",\n    \"titleCN\": \"全国主要城市空气质量 - 百度地图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel\",\n    \"tags\": [],\n    \"title\": \"Funnel Chart\",\n    \"titleCN\": \"漏斗图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel-align\",\n    \"tags\": [],\n    \"title\": \"Funnel (align)\",\n    \"titleCN\": \"漏斗图(对比)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel-customize\",\n    \"tags\": [],\n    \"title\": \"Customized Funnel\",\n    \"titleCN\": \"漏斗图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"funnel\"\n    ],\n    \"id\": \"funnel-mutiple\",\n    \"tags\": [],\n    \"title\": \"Multiple Funnels\",\n    \"titleCN\": \"漏斗图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"geo-lines\",\n    \"tags\": [],\n    \"title\": \"Migration\",\n    \"titleCN\": \"模拟迁徙\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"geo-map-scatter\",\n    \"tags\": [],\n    \"title\": \"map and scatter share a geo\",\n    \"titleCN\": \"map and scatter share a geo\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"drag\"\n    ],\n    \"id\": \"line-draggable\",\n    \"tags\": [],\n    \"title\": \"Try Dragging these Points\",\n    \"titleCN\": \"可拖拽点\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-polar\",\n    \"tags\": [],\n    \"title\": \"Two Value-Axes in Polar\",\n    \"titleCN\": \"极坐标双数值轴\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\"\n    ],\n    \"id\": \"line-polar2\",\n    \"tags\": [],\n    \"title\": \"Two Value-Axes in Polar\",\n    \"titleCN\": \"极坐标双数值轴\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"line\",\n      \"dataZoom\"\n    ],\n    \"id\": \"line-tooltip-touch\",\n    \"tags\": [],\n    \"title\": \"Tooltip and DataZoom on Mobile\",\n    \"titleCN\": \"移动端上的 dataZoom 和 tooltip\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-airline\",\n    \"tags\": [],\n    \"title\": \"65k+ Airline\",\n    \"titleCN\": \"65k+ 飞机航线\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-bmap\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"A Hiking Trail in Hangzhou - Baidu Map\",\n    \"titleCN\": \"杭州热门步行路线 - 百度地图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-bmap-bus\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Bus Lines of Beijing - Baidu Map\",\n    \"titleCN\": \"北京公交路线 - 百度地图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-bmap-effect\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Bus Lines of Beijing - Line Effect\",\n    \"titleCN\": \"北京公交路线 - 线特效\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\",\n      \"lines\"\n    ],\n    \"id\": \"lines-ny\",\n    \"tags\": [],\n    \"title\": \"Use lines to draw 1 million ny streets.\",\n    \"titleCN\": \"使用线图绘制近 100 万的纽约街道数据\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-bin\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Binning on Map\",\n    \"titleCN\": \"Binning on Map\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-china\",\n    \"tags\": [],\n    \"title\": \"Map China\",\n    \"titleCN\": \"Map China\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-china-dataRange\",\n    \"tags\": [],\n    \"title\": \"Sales of iphone\",\n    \"titleCN\": \"iphone销量\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-HK\",\n    \"tags\": [],\n    \"title\": \"Population Density of HongKong (2011)\",\n    \"titleCN\": \"香港18区人口密度 （2011）\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-labels\",\n    \"tags\": [],\n    \"title\": \"Rich Text Labels on Map\",\n    \"titleCN\": \"地图上的富文本标签\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-locate\",\n    \"tags\": [],\n    \"title\": \"Map Locate\",\n    \"titleCN\": \"Map Locate\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-polygon\",\n    \"tags\": [\n      \"bmap\"\n    ],\n    \"title\": \"Draw Polygon on Map\",\n    \"titleCN\": \"在地图上绘制多边形\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-province\",\n    \"tags\": [],\n    \"title\": \"Switch among 34 Provinces\",\n    \"titleCN\": \"34 省切换查看\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-usa\",\n    \"tags\": [],\n    \"title\": \"USA Population Estimates (2012)\",\n    \"titleCN\": \"USA Population Estimates (2012)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-world\",\n    \"tags\": [],\n    \"title\": \"Map World\",\n    \"titleCN\": \"Map World\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"map\"\n    ],\n    \"id\": \"map-world-dataRange\",\n    \"tags\": [],\n    \"title\": \"World Population (2010)\",\n    \"titleCN\": \"World Population (2010)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-body-fill\",\n    \"tags\": [],\n    \"title\": \"Water Content\",\n    \"titleCN\": \"人体含水量\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-dotted\",\n    \"tags\": [],\n    \"title\": \"Dotted bar\",\n    \"titleCN\": \"虚线柱状图效果\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-forest\",\n    \"tags\": [],\n    \"title\": \"Expansion of forest\",\n    \"titleCN\": \"森林的增长\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-hill\",\n    \"tags\": [],\n    \"title\": \"Wish List and Mountain Height\",\n    \"titleCN\": \"圣诞愿望清单和山峰高度\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-spirit\",\n    \"tags\": [],\n    \"title\": \"Spirits\",\n    \"titleCN\": \"精灵\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-vehicle\",\n    \"tags\": [],\n    \"title\": \"Vehicles\",\n    \"titleCN\": \"交通工具\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"pictorialBar\"\n    ],\n    \"id\": \"pictorialBar-velocity\",\n    \"tags\": [],\n    \"title\": \"Velocity of Christmas Reindeers\",\n    \"titleCN\": \"驯鹿的速度\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"radar\"\n    ],\n    \"id\": \"radar-multiple\",\n    \"tags\": [],\n    \"title\": \"Multiple Radar\",\n    \"titleCN\": \"多雷达图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-map\",\n    \"tags\": [],\n    \"title\": \"Air Quality\",\n    \"titleCN\": \"全国主要城市空气质量\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-map-brush\",\n    \"tags\": [],\n    \"title\": \"Scatter Map Brush\",\n    \"titleCN\": \"Scatter Map Brush\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"parallel\",\n      \"scatter\"\n    ],\n    \"id\": \"scatter-matrix\",\n    \"tags\": [],\n    \"title\": \"Scatter Matrix\",\n    \"titleCN\": \"散点矩阵和平行坐标\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-weibo\",\n    \"tags\": [],\n    \"title\": \"Sign in of weibo\",\n    \"titleCN\": \"微博签到数据点亮中国\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-world-population\",\n    \"tags\": [],\n    \"title\": \"World Population (2011)\",\n    \"titleCN\": \"World Population (2011)\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"themeRiver\"\n    ],\n    \"id\": \"themeRiver-basic\",\n    \"tags\": [],\n    \"title\": \"ThemeRiver\",\n    \"titleCN\": \"主题河流图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"themeRiver\"\n    ],\n    \"id\": \"themeRiver-lastfm\",\n    \"tags\": [],\n    \"title\": \"ThemeRiver Lastfm\",\n    \"titleCN\": \"ThemeRiver Lastfm\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-basic\",\n    \"tags\": [],\n    \"title\": \"From Left to Right Tree\",\n    \"titleCN\": \"从左到右树状图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-legend\",\n    \"tags\": [],\n    \"title\": \"Multiple Trees\",\n    \"titleCN\": \"多棵树\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-orient-bottom-top\",\n    \"tags\": [],\n    \"title\": \"From Bottom to Top Tree\",\n    \"titleCN\": \"从下到上树状图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-orient-right-left\",\n    \"tags\": [],\n    \"title\": \"From Right to Left Tree\",\n    \"titleCN\": \"从右到左树状图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-polyline\",\n    \"tags\": [],\n    \"title\": \"Tree with Polyline Edge\",\n    \"titleCN\": \"折线树图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-radial\",\n    \"tags\": [],\n    \"title\": \"Radial Tree\",\n    \"titleCN\": \"径向树状图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"tree\"\n    ],\n    \"id\": \"tree-vertical\",\n    \"tags\": [],\n    \"title\": \"From Top to Bottom Tree\",\n    \"titleCN\": \"从上到下树状图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-disk\",\n    \"tags\": [],\n    \"title\": \"Disk Usage\",\n    \"titleCN\": \"磁盘占用\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-drill-down\",\n    \"tags\": [],\n    \"title\": \"ECharts Option Query\",\n    \"titleCN\": \"ECharts 配置项查询分布\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-obama\",\n    \"tags\": [],\n    \"title\": \"How $3.7 Trillion is Spent\",\n    \"titleCN\": \"How $3.7 Trillion is Spent\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-show-parent\",\n    \"tags\": [],\n    \"title\": \"Show Parent Labels\",\n    \"titleCN\": \"显示父层级标签\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-simple\",\n    \"tags\": [],\n    \"title\": \"Basic Treemap\",\n    \"titleCN\": \"基础矩形树图\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"treemap\"\n    ],\n    \"id\": \"treemap-visual\",\n    \"tags\": [],\n    \"title\": \"Gradient Mapping\",\n    \"titleCN\": \"映射为渐变色\",\n    \"difficulty\": 10\n  },\n  {\n    \"category\": [\n      \"calendar\",\n      \"scatter\"\n    ],\n    \"id\": \"calendar-charts\",\n    \"tags\": [],\n    \"title\": \"Calendar Charts\",\n    \"titleCN\": \"日力图\",\n    \"difficulty\": 11\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"circle-packing-with-d3\",\n    \"tags\": [],\n    \"title\": \"Circle Packing with d3\",\n    \"titleCN\": \"Circle Packing with d3\",\n    \"difficulty\": 11\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-combine-separate-morph\",\n    \"tags\": [],\n    \"title\": \"Combine-Separate Morphing\",\n    \"titleCN\": \"聚合分割形变\",\n    \"difficulty\": 11\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-one-to-one-morph\",\n    \"tags\": [],\n    \"title\": \"One-to-one Morphing\",\n    \"titleCN\": \"一对一映射形变\",\n    \"difficulty\": 11\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-spiral-race\",\n    \"tags\": [],\n    \"title\": \"Custom Spiral Race\",\n    \"titleCN\": \"自定义螺旋线竞速\",\n    \"difficulty\": 11\n  },\n  {\n    \"category\": [\n      \"custom\"\n    ],\n    \"id\": \"custom-story-transition\",\n    \"tags\": [],\n    \"title\": \"Simple Story Transition\",\n    \"titleCN\": \"极简场景变换示例\",\n    \"difficulty\": 11\n  },\n  {\n    \"category\": [\n      \"scatter\"\n    ],\n    \"id\": \"scatter-logarithmic-regression\",\n    \"tags\": [],\n    \"title\": \"Logarithmic Regression\",\n    \"titleCN\": \"对数回归（使用统计插件）\",\n    \"difficulty\": 16\n  }\n]","\n// THIS FILE IS GENERATED, DON'T MODIFY */\n\n/* eslint-disable  */\nexport const keywords = {\"grid\": 108210,\"series\": 1161721,\"pie\": 173151,\"legend\": 278319,\"right\": 12224,\"tooltip\": 188049,\"xAxis\": 374619,\"bar\": 182040,\"label\": 163527,\"emphasis\": 50000,\"formatter\": 62138,\"line\": 306801,\"data\": 232156,\"left\": 24464,\"top\": 18094,\"scatter\": 48954,\"type\": 92134,\"yAxis\": 238764,\"axisLabel\": 73604,\"legendHoverLink\": 14243,\"textStyle\": 129159,\"hoverAnimation\": 9062,\"dataZoom\": 90999,\"nameLocation\": 15800,\"nameTextStyle\": 30596,\"nameGap\": 14640,\"singleAxis\": 15977,\"splitLine\": 30047,\"nameRotate\": 10483,\"inverse\": 12997,\"boundaryGap\": 18533,\"clockwise\": 4411,\"lineStyle\": 81857,\"selectedOffset\": 2984,\"width\": 17962,\"slider\": 28321,\"dataBackground\": 2287,\"areaStyle\": 19428,\"color\": 94439,\"height\": 7954,\"orient\": 17218,\"align\": 10373,\"symbol\": 35613,\"xAxisIndex\": 15405,\"stack\": 10602,\"clipOverflow\": 3229,\"center\": 9827,\"padding\": 12855,\"itemStyle\": 143518,\"itemGap\": 11914,\"shadowBlur\": 17233,\"shadowColor\": 13929,\"normal\": 211293,\"borderColor\": 20648,\"shadowOffsetX\": 11499,\"shadowOffsetY\": 9210,\"opacity\": 12301,\"heatmap\": 13825,\"value\": 21111,\"fillerColor\": 797,\"borderWidth\": 15576,\"itemWidth\": 7123,\"effectScatter\": 31179,\"coordinateSystem\": 15302,\"axisLine\": 53628,\"axisTick\": 38765,\"selectedMode\": 15177,\"fontSize\": 14906,\"inactiveColor\": 5720,\"selected\": 10921,\"gauge\": 55176,\"markLine\": 65539,\"handleStyle\": 1852,\"borderType\": 5717,\"title\": 158568,\"show\": 82000,\"length\": 4814,\"zlevel\": 22293,\"labelPrecision\": 746,\"position\": 48349,\"labelFormatter\": 727,\"alignWithLabel\": 3785,\"interval\": 28810,\"showDetail\": 694,\"yAxisIndex\": 10560,\"showDataShadow\": 591,\"realtime\": 2611,\"onZero\": 3690,\"silent\": 22883,\"radar\": 61070,\"axisPointer\": 23175,\"trigger\": 15344,\"barCategoryGap\": 3511,\"splitNumber\": 19992,\"inside\": 32482,\"name\": 61072,\"showSymbol\": 4778,\"containLabel\": 6413,\"offset\": 15619,\"max\": 12538,\"backgroundColor\": 32864,\"visualMap\": 95262,\"fontStyle\": 14443,\"fontWeight\": 11970,\"fontFamily\": 10141,\"symbolSize\": 21077,\"blurSize\": 360,\"geo\": 65283,\"radius\": 8533,\"markArea\": 19906,\"map\": 102385,\"brush\": 29508,\"parallel\": 20673,\"parallelAxis\": 13713,\"gridIndex\": 20650,\"piecewise\": 25231,\"showContent\": 6960,\"zoom\": 3997,\"polar\": 23175,\"controller\": 2892,\"radiusAxis\": 24146,\"angleAxis\": 18771,\"toolbox\": 101543,\"timeline\": 34619,\"precision\": 3306,\"curveness\": 1378,\"x\": 2753,\"valueIndex\": 2807,\"itemHeight\": 5180,\"icon\": 10336,\"valueDim\": 2013,\"symbolOffset\": 10017,\"y\": 1590,\"transitionDuration\": 3814,\"radarIndex\": 715,\"extraCssText\": 3640,\"animation\": 17864,\"animationThreshold = 2000\": 11727,\"minInterval\": 11278,\"animationDelay\": 7620,\"layoutCenter\": 2348,\"animationDurationUpdate\": 6972,\"animationEasingUpdate\": 6816,\"animationDelayUpdate\": 6642,\"symbolRotate\": 10221,\"feature\": 50238,\"axis\": 1794,\"crossStyle\": 1830,\"funnel\": 11042,\"scaleLimit\": 4792,\"roam\": 7112,\"itemSize\": 1966,\"showTitle\": 1851,\"smooth\": 5185,\"saveAsImage\": 9915,\"showAllSymbol\": 3417,\"polarIndex\": 5235,\"graph\": 76898,\"layout\": 2633,\"excludeComponents\": 447,\"restore\": 3693,\"dataView\": 10258,\"magicType\": 10505,\"iconStyle\": 9088,\"nodeScaleRatio\": 892,\"hoverLayerThreshold\": 6480,\"textAlign\": 9402,\"splitArea\": 16447,\"nameMap\": 4584,\"text\": 11691,\"pixelRatio\": 357,\"readOnly\": 491,\"optionToContent\": 936,\"lang\": 549,\"textareaColor\": 233,\"textareaBorderColor\": 177,\"option\": 2003,\"seriesIndex\": 4483,\"back\": 199,\"rect\": 323,\"polygon\": 254,\"min\": 16646,\"scale\": 14303,\"logBase\": 7456,\"start\": 2889,\"z\": 15867,\"link\": 5348,\"textBaseline\": 4210,\"subtext\": 5086,\"sublink\": 2618,\"subtarget\": 2373,\"subtextStyle\": 7732,\"triggerEvent\": 9175,\"blendMode\": 6359,\"progressiveThreshold\": 4699,\"continuous\": 42105,\"lines\": 31608,\"markPoint\": 81254,\"roseType\": 4221,\"animationEasing\": 8836,\"animationDuration\": 9562,\"calculable\": 3953,\"progressive\": 5761,\"treemap\": 16948,\"links\": 9573,\"edgeSymbol\": 1211,\"bottom\": 13969,\"edges\": 1122,\"edgeLabel\": 1685,\"edgeSymbolSize\": 769,\"focusNodeAdjacency\": 888,\"draggable\": 965,\"force\": 5601,\"geoIndex\": 2856,\"circular\": 1862,\"avoidLabelOverlap\": 3694,\"target\": 5476,\"coord\": 3995,\"startValue\": 2182,\"triggerOn\": 6741,\"showDelay\": 3535,\"alwaysShowContent\": 4928,\"enterable\": 3871,\"hideDelay\": 3018,\"step\": 3437,\"detail\": 5434,\"startAngle\": 5421,\"handleIcon\": 1051,\"handleSize\": 932,\"zoomLock\": 1979,\"throttle\": 1757,\"boxplot\": 6233,\"candlestick\": 14005,\"sankey\": 10101,\"loop\": 678,\"rewind\": 439,\"controlStyle\": 1269,\"labelLine\": 17838,\"distance\": 452,\"rotate\": 4666,\"margin\": 4342,\"barWidth\": 6641,\"category\": 1318,\"barGap\": 4832,\"nodes\": 2085,\"pieces\": 2683,\"smoothMonotone\": 2203,\"itemSymbol\": 882,\"axisType\": 902,\"currentIndex\": 583,\"effectType\": 1364,\"areaColor\": 2808,\"showEffectOn\": 1285,\"rippleEffect\": 3617,\"minAngle\": 2527,\"barMaxWidth\": 3073,\"rotateLabel\": 523,\"dimension\": 1922,\"end\": 1426,\"inRange\": 4604,\"outOfRange\": 2262,\"checkpointStyle\": 1036,\"sampling\": 2458,\"regions\": 6273,\"large\": 1055,\"showLegendSymbol\": 1600,\"layoutSize\": 1981,\"mapValueCalculation\": 1447,\"categories\": 4362,\"indicator\": 2995,\"barBorderRadius\": 1455,\"range\": 2009,\"connectNulls\": 3411,\"pointer\": 2665,\"effect\": 5446,\"parallelAxisDefault\": 927,\"coords\": 750,\"shadowStyle\": 1670,\"largeThreshold\": 754,\"hoverLink\": 1276,\"repulsion\": 865,\"textGap\": 1121,\"breadcrumb\": 828,\"baseline\": 1316,\"endAngle\": 895,\"period\": 1153,\"brushType\": 1421,\"minOpacity\": 216,\"brushLink\": 913,\"brushMode\": 465,\"transformable\": 418,\"brushStyle\": 507,\"throttleType\": 448,\"throttleDelay\": 369,\"removeOnClick\": 648,\"inBrush\": 500,\"outOfBrush\": 466,\"offsetCenter\": 981,\"barMinHeight\": 2279,\"parallelIndex\": 235,\"nodeClick\": 732,\"source\": 869,\"color0\": 210,\"filterMode\": 2252,\"tiled\": 352,\"autoPlay\": 496,\"playInterval\": 440,\"sort\": 484,\"polyline\": 929,\"initLayout\": 966,\"controlPosition\": 408,\"children\": 89,\"contentToOption\": 590,\"maxOpacity\": 215,\"squareRatio\": 281,\"leafDepth\": 347,\"zoomToNodeRatio\": 300,\"childrenVisibleMin\": 303,\"shape\": 1054,\"length2\": 891,\"endValue\": 1107,\"gravity\": 634,\"edgeLength\": 662,\"layoutAnimation\": 485,\"colorAlpha\": 389,\"constantSpeed\": 451,\"trailLength\": 530,\"dim\": 313,\"areaSelectStyle\": 253,\"funnelAlign\": 334,\"buttonTextColor\": 177,\"buttonColor\": 205,\"levels\": 2267,\"textColor\": 178,\"lineX\": 46,\"lineY\": 32,\"showPlayBtn\": 64,\"showPrevBtn\": 43,\"showNextBtn\": 43,\"playIcon\": 90,\"stopIcon\": 48,\"prevIcon\": 39,\"nextIcon\": 36,\"ellipsis\": 76,\"clear\": 114,\"colorMappingBy\": 424,\"maxSize\": 131,\"minSize\": 147,\"gap\": 175,\"visibleMin\": 315,\"axisExpandable\": 134,\"layoutIterations\": 226,\"nodeGap\": 158,\"nodeWidth\": 134,\"axisExpandCenter\": 79,\"axisExpandCount\": 56,\"axisExpandWidth\": 51,\"boxWidth\": 46,\"gapWidth\": 78,\"borderColorSaturation\": 56,\"inactiveOpacity\": 51,\"keep\": 41,\"colorSaturation\": 343,\"visualDimension\": 471,\"id\": 138,\"borderColor0\": 67,\"emptyItemWidth\": 60,\"activeOpacity\": 43,\"radiusAxisIndex\": 574,\"angleAxisIndex\": 478,\"textPosition\": 232,\"minOpen\": 194,\"maxOpen\": 125,\"graphic\": 5617,\"elements\": 3108,\"image\": 673,\"group\": 488,\"$action\": 82,\"style\": 431,\"textVerticalAlign\": 13,\"fill\": 55,\"stroke\": 47,\"lineWidth\": 34,\"sector\": 93,\"bezier-curve\": 6,\"cpx2\": 1,\"cpy2\": 1,\"circle\": 256,\"arc\": 61,\"bezierCurve\": 61,\"onclick\": 101,\"onmouseover\": 32,\"font\": 17,\"bounding\": 75,\"cursor\": 54,\"themeRiver\": 11,\"confine\": 580,\"ring\": 103,\"ondragleave\": 3,\"ondragstart\": 4,\"ondragover\": 4,\"disabled\": 221,\"visualMin\": 44,\"visualMax\": 18,\"onmousemove\": 14,\"ondrag\": 8,\"ondragend\": 2,\"x2\": 7,\"x1\": 4,\"y1\": 2,\"y2\": 3,\"percent\": 6,\"ondrop\": 9,\"cx\": 7,\"smoothConstraint\": 20,\"cpx1\": 2,\"points\": 16,\"onmousewheel\": 13,\"onmouseout\": 7,\"barBorderWidth\": 2,\"ondragenter\": 2,\"onmouseup\": 1,\"cy\": 1,\"r\": 2,\"onmousedown\": 1,\"animationThreshold\": 1};\nexport const fullKeywordsList = [\"0\",\"1\",\"title\",\"show\",\"text\",\"link\",\"target\",\"textStyle\",\"color\",\"fontStyle\",\"fontWeight\",\"fontFamily\",\"fontSize\",\"textAlign\",\"textBaseline\",\"subtext\",\"sublink\",\"subtarget\",\"subtextStyle\",\"padding\",\"itemGap\",\"zlevel\",\"z\",\"left\",\"top\",\"right\",\"bottom\",\"backgroundColor\",\"borderColor\",\"borderWidth\",\"shadowBlur\",\"shadowColor\",\"shadowOffsetX\",\"shadowOffsetY\",\"legend\",\"width\",\"height\",\"orient\",\"align\",\"itemWidth\",\"itemHeight\",\"formatter\",\"selectedMode\",\"inactiveColor\",\"selected\",\"tooltip\",\"data\",\"name\",\"icon\",\"grid\",\"containLabel\",\"trigger\",\"axisPointer\",\"type\",\"axis\",\"snap\",\"label\",\"precision\",\"margin\",\"lineStyle\",\"opacity\",\"shadowStyle\",\"crossStyle\",\"position\",\"extraCssText\",\"xAxis\",\"gridIndex\",\"offset\",\"nameLocation\",\"nameTextStyle\",\"nameGap\",\"nameRotate\",\"inverse\",\"boundaryGap\",\"min\",\"max\",\"scale\",\"splitNumber\",\"minInterval\",\"interval\",\"logBase\",\"silent\",\"triggerEvent\",\"axisLine\",\"onZero\",\"axisTick\",\"alignWithLabel\",\"inside\",\"length\",\"axisLabel\",\"rotate\",\"showMinLabel\",\"showMaxLabel\",\"baseline\",\"splitLine\",\"splitArea\",\"areaStyle\",\"value\",\"tiggerTooltip\",\"status\",\"handle\",\"size\",\"throttle\",\"yAxis\",\"polar\",\"center\",\"radius\",\"radiusAxis\",\"polarIndex\",\"angleAxis\",\"startAngle\",\"clockwise\",\"radar\",\"shape\",\"indicator\",\"dataZoom\",\"disabled\",\"xAxisIndex\",\"yAxisIndex\",\"radiusAxisIndex\",\"angleAxisIndex\",\"filterMode\",\"start\",\"end\",\"startValue\",\"endValue\",\"minSpan\",\"maxSpan\",\"minValueSpan\",\"maxValueSpan\",\"zoomLock\",\"dataBackground\",\"fillerColor\",\"handleIcon\",\"handleSize\",\"handleStyle\",\"borderType\",\"labelPrecision\",\"labelFormatter\",\"showDetail\",\"showDataShadow\",\"realtime\",\"visualMap\",\"range\",\"calculable\",\"textGap\",\"dimension\",\"seriesIndex\",\"hoverLink\",\"inRange\",\"outOfRange\",\"controller\",\"pieces\",\"categories\",\"minOpen\",\"maxOpen\",\"showLabel\",\"itemSymbol\",\"showContent\",\"alwaysShowContent\",\"triggerOn\",\"showDelay\",\"hideDelay\",\"enterable\",\"confine\",\"transitionDuration\",\"toolbox\",\"itemSize\",\"showTitle\",\"feature\",\"saveAsImage\",\"excludeComponents\",\"iconStyle\",\"normal\",\"textPosition\",\"emphasis\",\"pixelRatio\",\"restore\",\"dataView\",\"readOnly\",\"optionToContent\",\"contentToOption\",\"lang\",\"textareaColor\",\"textareaBorderColor\",\"textColor\",\"buttonColor\",\"buttonTextColor\",\"zoom\",\"back\",\"magicType\",\"line\",\"bar\",\"stack\",\"tiled\",\"option\",\"brush\",\"rect\",\"polygon\",\"lineX\",\"lineY\",\"keep\",\"clear\",\"brushLink\",\"geoIndex\",\"brushType\",\"brushMode\",\"transformable\",\"brushStyle\",\"throttleType\",\"throttleDelay\",\"removeOnClick\",\"inBrush\",\"outOfBrush\",\"geo\",\"map\",\"roam\",\"aspectScale\",\"boundingCoords\",\"scaleLimit\",\"nameMap\",\"itemStyle\",\"layoutCenter\",\"layoutSize\",\"regions\",\"areaColor\",\"parallel\",\"layout\",\"axisExpandable\",\"axisExpandCenter\",\"axisExpandCount\",\"axisExpandWidth\",\"axisExpandTriggerOn\",\"parallelAxisDefault\",\"parallelAxis\",\"dim\",\"parallelIndex\",\"areaSelectStyle\",\"singleAxis\",\"timeline\",\"axisType\",\"currentIndex\",\"autoPlay\",\"rewind\",\"loop\",\"playInterval\",\"controlPosition\",\"symbol\",\"symbolSize\",\"symbolRotate\",\"symbolOffset\",\"checkpointStyle\",\"animation\",\"animationDuration\",\"animationEasing\",\"controlStyle\",\"showPlayBtn\",\"showPrevBtn\",\"showNextBtn\",\"playIcon\",\"stopIcon\",\"prevIcon\",\"nextIcon\",\"graphic\",\"elements\",\"id\",\"$action\",\"bounding\",\"invisible\",\"cursor\",\"draggable\",\"progressive\",\"children\",\"onclick\",\"onmouseover\",\"onmouseout\",\"onmousemove\",\"onmousewheel\",\"onmousedown\",\"onmouseup\",\"ondrag\",\"ondragstart\",\"ondragend\",\"ondragenter\",\"ondragleave\",\"ondragover\",\"ondrop\",\"style\",\"image\",\"x\",\"y\",\"fill\",\"stroke\",\"lineWidth\",\"font\",\"textVerticalAlign\",\"cx\",\"cy\",\"r\",\"r0\",\"endAngle\",\"points\",\"smooth\",\"smoothConstraint\",\"x1\",\"y1\",\"x2\",\"y2\",\"percent\",\"cpx1\",\"cpy1\",\"cpx2\",\"cpy2\",\"calendar\",\"cellSize\",\"dayLabel\",\"firstDay\",\"monthLabel\",\"yearLabel\",\"series\",\"coordinateSystem\",\"showSymbol\",\"showAllSymbol\",\"hoverAnimation\",\"legendHoverLink\",\"connectNulls\",\"clipOverflow\",\"step\",\"smoothMonotone\",\"sampling\",\"markPoint\",\"valueIndex\",\"valueDim\",\"coord\",\"animationThreshold\",\"animationDelay\",\"animationDurationUpdate\",\"animationEasingUpdate\",\"animationDelayUpdate\",\"markLine\",\"curveness\",\"markArea\",\"barBorderRadius\",\"barWidth\",\"barMaxWidth\",\"barMinHeight\",\"barGap\",\"barCategoryGap\",\"selectedOffset\",\"minAngle\",\"roseType\",\"avoidLabelOverlap\",\"stillShowZeroSum\",\"labelLine\",\"length2\",\"animationType\",\"large\",\"largeThreshold\",\"effectType\",\"showEffectOn\",\"rippleEffect\",\"period\",\"radarIndex\",\"squareRatio\",\"leafDepth\",\"nodeClick\",\"zoomToNodeRatio\",\"levels\",\"visualDimension\",\"visualMin\",\"visualMax\",\"colorAlpha\",\"colorSaturation\",\"colorMappingBy\",\"visibleMin\",\"childrenVisibleMin\",\"ellipsis\",\"gapWidth\",\"borderColorSaturation\",\"breadcrumb\",\"emptyItemWidth\",\"boxWidth\",\"barMinWidth\",\"color0\",\"borderColor0\",\"blurSize\",\"minOpacity\",\"maxOpacity\",\"mapValueCalculation\",\"showLegendSymbol\",\"inactiveOpacity\",\"activeOpacity\",\"polyline\",\"effect\",\"delay\",\"constantSpeed\",\"trailLength\",\"coords\",\"circular\",\"rotateLabel\",\"force\",\"initLayout\",\"repulsion\",\"gravity\",\"edgeLength\",\"layoutAnimation\",\"nodeScaleRatio\",\"focusNodeAdjacency\",\"edgeSymbol\",\"edgeSymbolSize\",\"edgeLabel\",\"category\",\"nodes\",\"links\",\"source\",\"edges\",\"nodeWidth\",\"nodeGap\",\"layoutIterations\",\"minSize\",\"maxSize\",\"sort\",\"gap\",\"funnelAlign\",\"distance\",\"pointer\",\"offsetCenter\",\"detail\",\"symbolPosition\",\"symbolRepeat\",\"symbolRepeatDirection\",\"symbolMargin\",\"symbolClip\",\"symbolBoundingData\",\"symbolPatternSize\",\"singleAxisIndex\",\"date\",\"progressiveThreshold\",\"blendMode\",\"hoverLayerThreshold\",\"useUTC\"];","var DebugRect = (function () {\n    function DebugRect(style) {\n        var dom = this.dom = document.createElement('div');\n        dom.className = 'ec-debug-dirty-rect';\n        style = Object.assign({}, style);\n        Object.assign(style, {\n            backgroundColor: 'rgba(0, 0, 255, 0.2)',\n            border: '1px solid #00f'\n        });\n        dom.style.cssText = \"\\nposition: absolute;\\nopacity: 0;\\ntransition: opacity 0.5s linear;\\npointer-events: none;\\n\";\n        for (var key in style) {\n            if (style.hasOwnProperty(key)) {\n                dom.style[key] = style[key];\n            }\n        }\n    }\n    DebugRect.prototype.update = function (rect) {\n        var domStyle = this.dom.style;\n        domStyle.width = rect.width + 'px';\n        domStyle.height = rect.height + 'px';\n        domStyle.left = rect.x + 'px';\n        domStyle.top = rect.y + 'px';\n    };\n    DebugRect.prototype.hide = function () {\n        this.dom.style.opacity = '0';\n    };\n    DebugRect.prototype.show = function () {\n        var _this = this;\n        clearTimeout(this._hideTimeout);\n        this.dom.style.opacity = '1';\n        this._hideTimeout = setTimeout(function () {\n            _this.hide();\n        }, 500);\n    };\n    return DebugRect;\n}());\nexport default function (zr, opts) {\n    opts = opts || {};\n    var painter = zr.painter;\n    if (!painter.getLayers) {\n        throw new Error('Debug dirty rect can only been used on canvas renderer.');\n    }\n    if (painter.isSingleCanvas()) {\n        throw new Error('Debug dirty rect can only been used on zrender inited with container.');\n    }\n    var debugViewRoot = document.createElement('div');\n    debugViewRoot.style.cssText = \"\\nposition:absolute;\\nleft:0;\\ntop:0;\\nright:0;\\nbottom:0;\\npointer-events:none;\\n\";\n    debugViewRoot.className = 'ec-debug-dirty-rect-container';\n    var debugRects = [];\n    var dom = zr.dom;\n    dom.appendChild(debugViewRoot);\n    var computedStyle = getComputedStyle(dom);\n    if (computedStyle.position === 'static') {\n        dom.style.position = 'relative';\n    }\n    zr.on('rendered', function () {\n        if (painter.getLayers) {\n            var idx_1 = 0;\n            painter.eachBuiltinLayer(function (layer) {\n                if (!layer.debugGetPaintRects) {\n                    return;\n                }\n                var paintRects = layer.debugGetPaintRects();\n                for (var i = 0; i < paintRects.length; i++) {\n                    if (!debugRects[idx_1]) {\n                        debugRects[idx_1] = new DebugRect(opts.style);\n                        debugViewRoot.appendChild(debugRects[idx_1].dom);\n                    }\n                    debugRects[idx_1].show();\n                    debugRects[idx_1].update(paintRects[i]);\n                    idx_1++;\n                }\n            });\n            for (var i = idx_1; i < debugRects.length; i++) {\n                debugRects[i].hide();\n            }\n        }\n    });\n}\n","import { render, staticRenderFns } from \"./CodeAce.vue?vue&type=template&id=37ad02ad&\"\nimport script from \"./CodeAce.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeAce.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeAce.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('37ad02ad')) {\n      api.createRecord('37ad02ad', component.options)\n    } else {\n      api.reload('37ad02ad', component.options)\n    }\n    module.hot.accept(\"./CodeAce.vue?vue&type=template&id=37ad02ad&\", function () {\n      api.rerender('37ad02ad', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/CodeAce.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeAce.vue?vue&type=template&id=37ad02ad&\"","import { render, staticRenderFns } from \"./CodeMonaco.vue?vue&type=template&id=f5fd2472&\"\nimport script from \"./CodeMonaco.vue?vue&type=script&lang=js&\"\nexport * from \"./CodeMonaco.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodeMonaco.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('f5fd2472')) {\n      api.createRecord('f5fd2472', component.options)\n    } else {\n      api.reload('f5fd2472', component.options)\n    }\n    module.hot.accept(\"./CodeMonaco.vue?vue&type=template&id=f5fd2472&\", function () {\n      api.rerender('f5fd2472', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/CodeMonaco.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodeMonaco.vue?vue&type=template&id=f5fd2472&\"","import { render, staticRenderFns } from \"./Editor.vue?vue&type=template&id=3a753434&\"\nimport script from \"./Editor.vue?vue&type=script&lang=js&\"\nexport * from \"./Editor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Editor.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3a753434')) {\n      api.createRecord('3a753434', component.options)\n    } else {\n      api.reload('3a753434', component.options)\n    }\n    module.hot.accept(\"./Editor.vue?vue&type=template&id=3a753434&\", function () {\n      api.rerender('3a753434', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/Editor.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Editor.vue?vue&type=template&id=3a753434&\"","import { render, staticRenderFns } from \"./Preview.vue?vue&type=template&id=66bf6e1f&\"\nimport script from \"./Preview.vue?vue&type=script&lang=js&\"\nexport * from \"./Preview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Preview.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('66bf6e1f')) {\n      api.createRecord('66bf6e1f', component.options)\n    } else {\n      api.reload('66bf6e1f', component.options)\n    }\n    module.hot.accept(\"./Preview.vue?vue&type=template&id=66bf6e1f&\", function () {\n      api.rerender('66bf6e1f', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/Preview.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Preview.vue?vue&type=template&id=66bf6e1f&\"","import { render, staticRenderFns } from \"./View.vue?vue&type=template&id=3d6bc75e&\"\nimport script from \"./View.vue?vue&type=script&lang=js&\"\nexport * from \"./View.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('3d6bc75e')) {\n      api.createRecord('3d6bc75e', component.options)\n    } else {\n      api.reload('3d6bc75e', component.options)\n    }\n    module.hot.accept(\"./View.vue?vue&type=template&id=3d6bc75e&\", function () {\n      api.rerender('3d6bc75e', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/editor/View.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=script&lang=js&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=template&id=3d6bc75e&\"","import {store} from '../common/store';\nimport {URL_PARAMS, SCRIPT_URLS} from '../common/config';\n\nconst hasRootPath = store.code.indexOf('ROOT_PATH') >= 0;\nconst rootPathCode = hasRootPath ? `var ROOT_PATH = '${store.cdnRoot}'` : '';\n\nexport function download() {\n    const code = `<!DOCTYPE html>\n<html style=\"height: 100%\">\n    <head>\n        <meta charset=\"utf-8\">\n    </head>\n    <body style=\"height: 100%; margin: 0\">\n        <div id=\"container\" style=\"height: 100%\"></div>\n\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsMinJS}\"></script>\n        <!-- Uncomment this line if you want to dataTool extension\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/dist/extension/dataTool.min.js\"></script>\n        -->\n        <!-- Uncomment this line if you want to use gl extension\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsGLMinJS}\"></script>\n        -->\n        <!-- Uncomment this line if you want to echarts-stat extension\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsStatMinJS}\"></script>\n        -->\n        <!-- Uncomment this line if you want to use map\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/map/js/china.js\"></script>\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/map/js/world.js\"></script>\n        -->\n        <!-- Uncomment these two lines if you want to use bmap extension\n        <script type=\"text/javascript\" src=\"https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>\"></script>\n        <script type=\"text/javascript\" src=\"${SCRIPT_URLS.echartsDir}/dist/extension/bmap.min.js\"></script>\n        -->\n\n        <script type=\"text/javascript\">\nvar dom = document.getElementById(\"container\");\nvar myChart = echarts.init(dom);\nvar app = {};\n\nvar option;\n\n${rootPathCode}\n\n${store.code}\n\nif (option && typeof option === 'object') {\n    myChart.setOption(option);\n}\n\n        </script>\n    </body>\n</html>\n    `;\n    const file = new Blob([code], {\n        type: 'text/html;charset=UTF-8',\n        encoding: 'UTF-8'\n    });\n    const a = document.createElement('a');\n    a.href = URL.createObjectURL(file);\n    a.download = URL_PARAMS.c + '.html';\n    a.click();\n}","import showDebugDirtyRect from '../dep/showDebugDirtyRect';\n\nexport function createSandbox(optionUpdated) {\n    let appEnv = {};\n    let gui;\n\n    let _intervalIdList = [];\n    let _timeoutIdList = [];\n\n    const _oldSetTimeout = window.setTimeout;\n    const _oldSetInterval = window.setInterval;\n\n    function setTimeout(func, delay) {\n        var id = _oldSetTimeout(func, delay);\n        _timeoutIdList.push(id);\n        return id;\n    };\n    function setInterval(func, gap) {\n        var id = _oldSetInterval(func, gap);\n        _intervalIdList.push(id);\n        return id;\n    };\n    function _clearTimeTickers() {\n        for (var i = 0; i < _intervalIdList.length; i++) {\n            clearInterval(_intervalIdList[i]);\n        }\n        for (var i = 0; i < _timeoutIdList.length; i++) {\n            clearTimeout(_timeoutIdList[i]);\n        }\n        _intervalIdList = [];\n        _timeoutIdList = [];\n    }\n    const _events = [];\n    function _wrapOnMethods(chart) {\n        const oldOn = chart.on;\n        const oldSetOption = chart.setOption;\n        chart.on = function (eventName) {\n            const res = oldOn.apply(chart, arguments);\n            _events.push(eventName);\n            return res;\n        };\n        chart.setOption = function () {\n            const res = oldSetOption.apply(this, arguments);\n            optionUpdated && optionUpdated(chart);\n            return res;\n        };\n    }\n\n    function _clearChartEvents(chart) {\n        _events.forEach(function (eventName) {\n            if (chart) {\n                chart.off(eventName);\n            }\n        });\n\n        _events.length = 0;\n    }\n\n    let chartInstance;\n\n    return {\n        resize() {\n            if (chartInstance) {\n                chartInstance.resize();\n            }\n        },\n\n        dispose() {\n            if (chartInstance) {\n                chartInstance.dispose();\n                chartInstance = null;\n            }\n        },\n\n        getDataURL() {\n            return chartInstance.getDataURL({\n                pixelRatio: 2,\n                excludeComponents: ['toolbox']\n            });\n        },\n\n        run(el, store) {\n\n            if (!chartInstance) {\n                chartInstance = echarts.init(el, store.darkMode ? 'dark' : '', {\n                    renderer: store.renderer,\n                    useDirtyRect: store.useDirtyRect\n                });\n                if (store.useDirtyRect && store.renderer === 'canvas') {\n                    try {\n                        showDebugDirtyRect(chartInstance.getZr(), {\n                            autoHideDelay: 500\n                        });\n                    }\n                    catch (e) {\n                        console.error(e);\n                    }\n                }\n                _wrapOnMethods(chartInstance);\n            }\n\n            // if (this.hasEditorError()) {\n            //     log(this.$t('editor.errorInEditor'), 'error');\n            //     return;\n            // }\n\n            // TODO Scope the variables in component.\n            _clearTimeTickers();\n            _clearChartEvents(chartInstance);\n            // Reset\n            appEnv.config = null;\n\n            // run the code\n\n            const compiledCode = store.runCode;\n\n            const func = new Function(\n                'myChart', 'app', 'setTimeout', 'setInterval', 'ROOT_PATH',\n                'var option;\\n' + compiledCode + '\\nreturn option;'\n            );\n            const option = func(chartInstance, appEnv, setTimeout, setInterval, store.cdnRoot);\n            let updateTime = 0;\n\n            if (option && typeof option === 'object') {\n                const startTime = +new Date();\n                chartInstance.setOption(option, true);\n                const endTime = +new Date();\n                updateTime = endTime - startTime;\n            }\n\n            if (gui) {\n                $(gui.domElement).remove();\n                gui.destroy();\n                gui = null;\n            }\n\n            if (appEnv.config) {\n                gui = new dat.GUI({\n                    autoPlace: false\n                });\n                $(gui.domElement).css({\n                    position: 'absolute',\n                    right: 5,\n                    top: 0,\n                    zIndex: 1000\n                });\n                $('.right-container').append(gui.domElement);\n\n                var configParameters = appEnv.configParameters || {};\n                for (var name in appEnv.config) {\n                    var value = appEnv.config[name];\n                    if (name !== 'onChange' && name !== 'onFinishChange') {\n                        var isColor = false;\n                        // var value = obj;\n                        var controller = null;\n                        if (configParameters[name]) {\n                            if (configParameters[name].options) {\n                                controller = gui.add(appEnv.config, name, configParameters[name].options);\n                            }\n                            else if (configParameters[name].min != null) {\n                                controller = gui.add(appEnv.config, name, configParameters[name].min, configParameters[name].max);\n                            }\n                        }\n                        if (typeof obj === 'string') {\n                            try {\n                                var colorArr = echarts.color.parse(value);\n                                isColor = !!colorArr;\n                                if (isColor) {\n                                    value = echarts.color.stringify(colorArr, 'rgba');\n                                }\n                            }\n                            catch (e) {}\n                        }\n                        if (!controller) {\n                            controller = gui[isColor ? 'addColor' : 'add'](appEnv.config, name);\n                        }\n                        appEnv.config.onChange && controller.onChange(appEnv.config.onChange);\n                        appEnv.config.onFinishChange && controller.onFinishChange(appEnv.config.onFinishChange);\n                    }\n                }\n            }\n\n            return updateTime;\n        }\n    };\n};","import { render, staticRenderFns } from \"./ExampleCard.vue?vue&type=template&id=01229e96&\"\nimport script from \"./ExampleCard.vue?vue&type=script&lang=js&\"\nexport * from \"./ExampleCard.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ExampleCard.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('01229e96')) {\n      api.createRecord('01229e96', component.options)\n    } else {\n      api.reload('01229e96', component.options)\n    }\n    module.hot.accept(\"./ExampleCard.vue?vue&type=template&id=01229e96&\", function () {\n      api.rerender('01229e96', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/explore/ExampleCard.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ExampleCard.vue?vue&type=template&id=01229e96&\"","import { render, staticRenderFns } from \"./Explore.vue?vue&type=template&id=050c84ae&\"\nimport script from \"./Explore.vue?vue&type=script&lang=js&\"\nexport * from \"./Explore.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Explore.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\n/* hot reload */\nif (module.hot) {\n  var api = require(\"/Users/s/sushuangwork/met/act/tigall/echarts/echarts-examples-next/node_modules/vue-hot-reload-api/dist/index.js\")\n  api.install(require('vue'))\n  if (api.compatible) {\n    module.hot.accept()\n    if (!api.isRecorded('050c84ae')) {\n      api.createRecord('050c84ae', component.options)\n    } else {\n      api.reload('050c84ae', component.options)\n    }\n    module.hot.accept(\"./Explore.vue?vue&type=template&id=050c84ae&\", function () {\n      api.rerender('050c84ae', {\n        render: render,\n        staticRenderFns: staticRenderFns\n      })\n    })\n  }\n}\ncomponent.options.__file = \"src/explore/Explore.vue\"\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=script&lang=js&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sassjs-loader/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Explore.vue?vue&type=template&id=050c84ae&\"","import Vue from 'vue';\nimport VueI18n from 'vue-i18n';\nimport messages from './common/i18n';\nimport EditorPage from './editor/Editor.vue';\nimport ExplorePage from './explore/Explore.vue';\nimport ViewPage from './editor/View.vue';\nimport {store} from './common/store';\nimport VueScrollactive from 'vue-scrollactive';\n\nVue.use(VueScrollactive);\n\n/**\n *\n * @param {*} el\n * @param {Object} option\n * @param {string} [option.cdnRoot]\n * @param {string} [option.page] editor | explore\n * @param {string} [option.locale] zh | en\n * @param {string} [option.version]\n */\nexport function init(el, option) {\n    const i18n = new VueI18n({\n        locale: option.locale,\n        fallbackLocale: 'en',\n        messages\n    });\n    store.cdnRoot = option.cdnRoot;\n    store.version = option.version;\n    store.locale = option.locale || 'en';\n\n\n    if (typeof el === 'string') {\n        el = document.querySelector(el);\n    }\n    if (!el) {\n        throw new Error('Can\\'t find el.');\n    }\n\n    const container = document.createElement('div');\n    el.appendChild(container);\n\n    new Vue({\n        i18n,\n        el: container,\n        render: h => {\n            return h(({\n                editor: EditorPage,\n                explore: ExplorePage,\n                view: ViewPage\n            })[option.page] || ExplorePage);\n        }\n    });\n}","module.exports = Vue;"],"sourceRoot":""}