diff --git a/.gitignore b/.gitignore index f87adba..42f91a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +Emu/* Nwjs/* !Nwjs/.gitkeep Settings.json \ No newline at end of file diff --git a/App/css/style.css b/App/css/style.css index ea2dde1..b30fee2 100644 --- a/App/css/style.css +++ b/App/css/style.css @@ -7,776 +7,4 @@ ****************************************************************************** */ -html, body { - color: #fff; - overflow: hidden; - user-select: none; - filter: grayscale(1); - font-family: monospace; - scroll-behavior: smooth; - background-color: #0f1e3e; - text-shadow: 2px 2px 4px #000; -} -code { - padding: 6px; - color: #6bd5f5; - font-style: normal; - border-radius: 6px; - background-color: #000; -} -select, input[type='button'], input[type='checkbox'] { - outline: none; - cursor: pointer; -} -input[type='range'] { - outline: none; - margin-left: 6px; - cursor: col-resize; -} -input[disabled='disabled'], input[disabled] { - cursor: no-drop; -} -input[type='checkbox'] { - margin-right: 8px; - vertical-align: middle; -} -img { - -webkit-user-drag: none; -} - -/* - ScrollBar -*/ -::-webkit-scrollbar { - width: 8px; - height: 8px; - border-radius: 4px; -} -::-webkit-scrollbar-track { - border-radius: 4px; - margin: 6px 0px 6px 0px; -} -::-webkit-scrollbar-thumb { - border-radius: 4px; - background: #e7e7e7; -} -::-webkit-scrollbar-thumb:hover { - border-radius: 4px; - background: #f0f0f0; -} -::-webkit-scrollbar-thumb:active { - background: #fff; - border-radius: 4px; -} - -/* - Separator -*/ -.SEPARATOR_00 { - height: 2px; - margin-top: 10px; - padding-left: 2px; - padding-right: 2px; - border-radius: 6px; - margin-bottom: 10px; - width: calc(100% - 4px); - background-color: #0000; - background-image: linear-gradient(45deg, #fff, #6661, #0000); -} - -/* - Divs -*/ -.DIV_LIST { - top: 38px; - left: 0px; - z-index: 20; - width: 100%; - transition: 0.2s; - overflow: hidden; - position: absolute; - background-color: #162a50; - height: calc(100% - 202px); - background-image: linear-gradient(146deg, #090f1b, #162a50); -} -.DIV_LOG { - left: 0px; - bottom: 0px; - width: 100%; - height: 164px; - transition: 0.2s; - position: absolute; - background-color: #000; - background-size: auto 50%; - background-position: center; - background-repeat: no-repeat; - background-image: url('../img/logo.png'); -} -.DIV_ACTIONS { - top: 0px; - left: 0px; - width: 100%; - height: 22px; - padding: 8px; - display: flex; - flex-wrap: nowrap; - position: absolute; - align-items: center; - align-content: center; - justify-content: center; - background-image: linear-gradient(45deg, #28467f, #1c325f); -} -.DIV_OPTIONS { - top: 38px; - right: 0px; - padding: 6px; - width: 268px; - display: none; - transition: 0.1s; - position: absolute; - height: calc(100% - 150px); - background-image: linear-gradient(0deg, #162a50, #2a4a86); -} -.DIV_GAME_OPTIONS { - width: 268px; - bottom: 68px; - font-size: 14px; - overflow: auto; - position: absolute; - text-align: center; - height: calc(100% - 128px); -} -.DIV_HACK_LIST { - text-align: left; - margin-bottom: 10px; -} -.DIV_TITLE { - z-index: 10; - font-size: 28px; - margin-top: 10px; - font-weight: bold; - text-align: center; - margin-bottom: 10px; -} -.DIV_LIST_INTERNAL { - top: 0px; - left: 0px; - width: 100%; - z-index: 10; - height: 100%; - overflow: auto; - transition: 0.1s; - position: absolute; - background-color: #0000; -} -.DIV_LIST_GRID { - z-index: 10; - display: flex; - flex-wrap: wrap; - text-align: center; - align-items: center; - flex-direction: row; - align-content: stretch; - justify-content: center; -} -.DIV_GAMELIST_BG { - top: -6px; - left: -6px; - z-index: 1; - position: absolute; - background-size: cover; - background-color: #0006; - width: calc(100% + 12px); - height: calc(100% + 12px); - background-position: center; - background-repeat: no-repeat; - background-blend-mode: screen; - filter: blur(2px) opacity(0.7); -} -.GAME_ENTRY { - margin: 6px; - height: 78px; - display: flex; - cursor: pointer; - overflow: hidden; - max-height: 78px; - flex-wrap: nowrap; - padding-left: 0px; - border-radius: 6px; - align-items: center; - align-content: center; - width: calc(100% - 12px); - box-shadow: 0px 0px 4px #000; - backdrop-filter: blur(4px) invert(0.1); - background-image: linear-gradient(90deg, #3a4b6b82, #0000); -} -.GAME_ENTRY:hover { - box-shadow: 0px 0px 10px #0006; - background-image: linear-gradient(45deg, #3a4b6b, #3a4b6b82); -} -.GAME_ENTRY:active { - backdrop-filter: sepia(0.5) blur(6px); - background-image: linear-gradient(180deg, #97a7ff85, #6464a578); -} -.GAME_ENTRY_COMPACT { - display: flex; - flex-wrap: nowrap; - align-items: center; - flex-direction: row; - align-content: center; - max-height: 24px !important; - padding-left: 10px !important; - width: calc(100% - 22px) !important; -} -.GAME_ENTRY_GRID { - z-index: 12; - padding: 0px; - display: table; - box-shadow: none; - border-radius: 8px; - min-width: 92.93px; - min-height: 92.93px; - height: max-content; - max-width: max-content; - max-height: max-content; - background-color: #0000; - text-align: -webkit-right; -} -.GAME_ENTRY_GRID:hover { - animation-duration: 4s; - animation-name: gridGameFocus; - animation-iteration-count: infinite; -} -.GAME_ENTRY_BG { - top: 0px; - left: 0px; - z-index: 0; - width: 100%; - height: 100%; - filter: blur(4px); - position: absolute; - background-size: cover; - background-position: center; - background-repeat: no-repeat; - -webkit-mask-image: linear-gradient(45deg, #0006, #0000, #0000); -} -.GAME_ENTRY:hover .GAME_ENTRY_BG { - filter: blur(3px); - -webkit-mask-image: linear-gradient(45deg, #000c, #0002, #0000); -} -.GAME_ENTRY:focus .GAME_ENTRY_BG { - filter: blur(3px); - -webkit-mask-image: linear-gradient(45deg, #000c, #0002, #0000); -} -.GAME_ENTRY:active .GAME_ENTRY_BG { - -webkit-mask-image: linear-gradient(45deg, #000, #0006, #0000); -} -.GAME_DETAILS { - z-index: 1; - cursor: pointer; - width: calc(100% - 88px); -} -.GAME_DETAILS_COMPACT { - width: calc(100% - 10px); -} -.GAME_DETAILS_GRID { - right: 0px; - bottom: 0px; - position: absolute; - background-color: #000a; - padding: 2px 6px 2px 6px; - backdrop-filter: blur(4px); - text-shadow: 0px 0px 4px #000; - border-radius: 6px 0px 0px 0px; -} -.DIV_RUN_BTN { - bottom: 8px; - position: absolute; - text-align: center; - width: calc(100% - 12px); -} -.DIV_GAME_DETAILS { - z-index: 100; - height: 256px; - padding: 12px; - display: none; - transition: 1s; - overflow: hidden; - flex-wrap: nowrap; - position: absolute; - border-radius: 6px; - align-items: center; - top: calc(50% - 140px); - left: calc(10% - 24px); - width: calc(80% - 24px); - justify-content: center; - max-width: calc(80% - 24px); -} -.DIV_GAME_DETAILS_LABELS { - margin-left: 24px; -} -.DIV_SETTINGS { - top: 10%; - left: 5%; - width: 90%; - z-index: 10; - height: 80%; - display: block; - overflow: hidden; - position: absolute; - text-align: center; - border-radius: 10px; - box-shadow: 0px 0px 30px #000a; - background-image: linear-gradient(180deg, #2f405f, #131f38); -} -.DIV_SETTINGS_BG { - top: 0px; - left: 0px; - z-index: 0; - width: 100%; - height: 100%; - position: absolute; - background-size: auto 50%; - background-position: center; - background-repeat: no-repeat; - box-shadow: 0px 0px 10px #0002 inset; - background-image: url('../img/logo.png'); -} -.DIV_SETTINGS_HOLDER { - top: 0px; - left: 0px; - width: 100%; - height: 100%; - z-index: 100; - display: none; - position: absolute; - background-color: #0004; - backdrop-filter: blur(4px) grayscale(0.4); -} -.DIV_SETTINGS_LIST { - z-index: 10; - padding: 8px; - overflow: auto; - font-size: 14px; - text-align: left; - margin-left: 8px; - margin-bottom: 8px; - border-radius: 4px; - font-family: sans-serif; - background-color: #111d; - width: calc(100% - 32px); - height: calc(100% - 146px); - backdrop-filter: blur(4px); - box-shadow: 0px 0px 10px #0006; - background-image: linear-gradient(180deg, #000e2cab, #0000); -} -.DIV_settingsEntry { - padding: 2px; - overflow: hidden; - font-style: italic; -} -.DIV_settingsEntryFlex { - display: flex; - align-items: center; - flex-direction: row; - align-content: center; -} -.DIV_settingsH2 { - font-size: 20px; - font-weight: 600; - font-family: system-ui; - margin: 0px 0px 8px 2px; -} -.DIV_settingsSave { - width: 100%; - z-index: 10; - position: absolute; - text-align: center; -} -.DIV_labelSelectedGame { - display: flex; - flex-wrap: wrap; - text-align: center; - align-items: center; - margin-bottom: 4px; - align-content: center; - justify-content: center; -} -.DIV_selectedGameStatus { - width: 114px; - cursor: help; - display: flex; - overflow: hidden; - max-width: 114px; - max-height: 42px; - margin-left: 4px; - font-size: small; - flex-wrap: nowrap; - align-items: center; - flex-direction: row; - border-radius: 10px; - align-content: center; - background-color: #000; - justify-content: center; - padding: 4px 0px 4px 0px; - text-shadow: 1px 1px 2px #000; -} -.DIV_ICON_STATUS_OK { - background-image: linear-gradient(180deg, #0f0, #0b0); -} -.DIV_ICON_STATUS_WARN { - border-radius: 2px; - background-image: linear-gradient(180deg, #fbe800, #9f8d0c); -} -.DIV_ICON_STATUS_HB { - border-radius: 3px 8px 3px 8px; - background-image: linear-gradient(180deg, #63fdf6, #28b1ab); -} -.DIV_noGameFound { - top: 0px; - left: 0px; - width: 100%; - height: 100%; - display: flex; - flex-wrap: wrap; - position: absolute; - font-size: x-large; - font-style: italic; - align-items: center; - align-content: center; - justify-content: center; - text-shadow: 0px 0px 10px #f00; - background-image: linear-gradient(45deg, #f002, #0000); -} -.DIV_launcherOptions { - margin: 8px 0px 8px 0px; -} -.DIV_launcherOptionsPatchVersionMetadata { - text-align: left; - padding: 0px 6px 0px 6px; -} -.DIV_launcherOptionsTitle { - font-size: 16px; - text-align: center; - margin-bottom: 2px; - font-family: system-ui; -} -.DIV_FPPS4_UPDATER { - top: 0px; - left: 0px; - width: 100%; - height: 100%; - z-index: 110; - cursor: wait; - display: none; - transition: 0.4s; - flex-wrap: nowrap; - position: absolute; - align-items: center; - flex-direction: row; - align-content: center; - font-family: system-ui; - justify-content: center; - backdrop-filter: blur(4px); - background-color: #03033144; -} -.DIV_PROGRESSBAR { - width: 72%; - height: 10px; - cursor: wait; - overflow: hidden; - margin-top: 44px; - border-width: 1px; - position: absolute; - border-style: solid; - background-color: #c5c5c5ad; -} -.DIV_PROGRESSBAR_INTERNAL { - top: 0px; - left: 0px; - width: 0%; - height: 100%; - transition: 0.4s; - position: absolute; - background-image: linear-gradient(90deg, #ccc, #fff); -} -.DIV_DESIGN_LINES { - left: 0px; - width: 100%; - height: 1px; - position: absolute; - background-color: #fffb; -} -.LINE_TOP { - top: 12%; -} -.LINE_BOTTOM { - bottom: 12%; -} - -/* - Images -*/ -.IMG_GAME_ICON { - z-index: 1; - width: 66px; - cursor: pointer; - border-radius: 6px; - margin: 6px 10px 6px 6px; - box-shadow: 0px 0px 10px #0006; -} -.IMG_APP_ICON { - width: 256px; - border-radius: 6px; - box-shadow: 0px 0px 10px #000; -} -.IMG_GRID { - width: 116px; - height: auto; - padding: 0px; - max-width: 512px; - min-width: 92.93px; - border-radius: 0px; - margin: 0px 0px -3px 0px; -} - -/* - Input -*/ -.BTN_launcherOptions { - width: 96%; - padding-top: 4px; - padding-bottom: 4px; - margin: 2px 0px 2px 0px; -} -.BTN_actions { - height: 28px; - max-height: 28px; - margin-left: 2px; - margin-right: 2px; -} -.BTN_displayMode { - width: 32px; - height: 32px; - min-width: 32px; - border: initial; - min-height: 32px; - margin-left: 2px; - margin-right: 2px; - border-radius: 4px; - background-size: 65%; - background-position: center; - background-repeat: no-repeat; -} -.BTN_displayMode_normal { - margin-left: 8px; - background-image: url('../img/svg/list-filled-svgrepo-com.svg'); -} -.BTN_displayMode_compact { - background-image: url('../img/svg/view-list-svgrepo-com.svg'); -} -.BTN_displayMode_grid { - margin-right: 8px; - background-image: url('../img/svg/app-menu-svgrepo-com.svg'); -} -.INPUT_gameListSearch { - width: 195px; - margin: -8px; - border: none; - outline: none; - color: #fffb8e; - text-align: center; - font-family: monospace; - background-image: none; - background-color: #0000; - margin: 0px 16px 0px 16px; - padding: 12px 0px 12px 6px; -} -.INPUT_gameListSearch:focus { - background-image: linear-gradient(90deg, #0000, #36185eb0, #0000); -} -.APP_LOG { - color: #0f0; - resize: none; - border: none; - cursor: text; - outline: none; - padding: 6px; - width: calc(100% - 12px); - height: calc(100% - 12px); - backdrop-filter: blur(1.4px); - background-repeat: no-repeat; - text-shadow: 2px 2px 2px #000; - background-image: linear-gradient(180deg, #05050ee8, #010114c7); -} -.BTN_RUN { - height: 50px; - border: none; - font-size: 18px; - border-radius: 6px; - width: calc(100% - 6px); - background-image: linear-gradient(180deg, #fff, #ccc); -} -.BTN_RUN:active { - background-image: linear-gradient(0deg, #fff, #ccc); -} -.BTN_STOP { - margin: 0px 4px 0px 4px; - padding: 5px 30px 5px 30px; -} -.BTN_SAVE { - border: none; - font-size: 18px; - min-width: 300px; - min-height: 60px; - border-radius: 6px; - background-image: linear-gradient(180deg, #fff, #ccc); -} -.BTN_SAVE:active { - background-image: linear-gradient(0deg, #fff, #ccc); -} -.BTN_selectPath { - float: right; - min-width: 120px; - font-style: italic; - border-radius: 4px; - padding: 4px 14px 4px 14px; - background-image: linear-gradient(180deg, #fff, #bbb); -} -.BTN_selectPath:active { - background-image: linear-gradient(0deg, #fff, #bbb); -} -.SELECT_settings { - margin-left: 4px; - margin-bottom: 4px; - font-style: italic; - border-radius: 4px; - padding: 4px 10px 4px 10px; - background-image: linear-gradient(180deg, #fff, #bbb); -} -.SETTINGS_TEXT { - color: #0f0; - border: none; - outline: none; - min-width: 160px; - margin-left: 4px; - border-radius: 4px; - background-color: #000; - font-family: monospace; - padding: 6px 0px 6px 6px; -} - -/* - Labels -*/ -.LABEL_gameTitleOptions { - width: 100%; - font-size: 18px; - text-align: center; - font-family: system-ui; -} -.LABEL_detailsGameName { - font-size: 28px; - margin-top: 10px; - font-weight: bold; - margin-bottom: 10px; -} -.LABEL_checkbox { - cursor: pointer; - font-size: 14px; - font-style: italic; -} -.LABEL_emuColor { - color: #fffb8e; -} -.LABEL_gameTitle { - font-size: 20px; - cursor: pointer; -} -.LABEL_gameTitleCompact { - font-size: 16px; - cursor: pointer; -} -.LABEL_settingsPath { - cursor: text; - position: sticky; - font-style: initial; - font-family: monospace; - user-select: all !important; -} -.LABEL_settingsExperimental { - padding: 6px; - cursor: pointer; - font-family: monospace; - background-color: #000; - text-shadow: 0px 0px 10px #f00; -} -.LABEL_FLEX_MARGIN { - margin: 4px; -} -.LABEL_monospace { - font-family: monospace; -} - -/* - Animations -*/ - -/* Hint game focus after fpPS4 closes */ -@keyframes hintGameFocus { - - 0% { - box-shadow: 0px 0px 0px #0000; - } - 25% { - box-shadow: 0px 0px 10px #fff6; - } - 50% { - box-shadow: 0px 0px 0px #0000; - } - 75% { - box-shadow: 0px 0px 14px #fffa; - } - 100% { - box-shadow: 0px 0px 0px #0000; - } - -} - -/* Grid Mode: Select App / Game */ -@keyframes gridGameFocus { - - 0% { - box-shadow: 0px 0px 6px #6ca7ffd1; - } - 25% { - box-shadow: 0px 0px 10px #b6c0e5aa; - } - 50% { - box-shadow: 0px 0px 10px #6ca7ffd1; - } - 75% { - box-shadow: 0px 0px 14px #b6c0e5aa; - } - 100% { - box-shadow: 0px 0px 6px #6ca7ffd1; - } - -} - -/* - Misc -*/ -.float-right { - float: right; -} -.align-center { - text-align: center; -} -.user-can-select { - cursor: text; - user-select: all !important; -} -.none { - display: none; -} \ No newline at end of file +img,svg{filter:grayscale(1)}body,html{color:#fff;overflow:hidden;user-select:none;font-family:monospace;scroll-behavior:smooth;background-color:#505050;text-shadow:2px 2px 4px #000}code{padding:6px;color:#fff;font-style:normal;border-radius:6px;background-color:#000}input[type=button],input[type=checkbox],select{outline:0;cursor:pointer}input[type=range]{outline:0;margin-left:6px;cursor:col-resize}input[disabled=disabled],input[disabled]{cursor:no-drop}input[type=checkbox]{margin-right:8px;vertical-align:middle}img{-webkit-user-drag:none}::-webkit-scrollbar{width:8px;height:8px;border-radius:4px}::-webkit-scrollbar-track{border-radius:4px;margin:6px 0}.DIV_TITLE,.SEPARATOR_00{margin-top:10px;margin-bottom:10px}::-webkit-scrollbar-thumb{border-radius:4px;background:#e7e7e7}::-webkit-scrollbar-thumb:hover{border-radius:4px;background:#f0f0f0}::-webkit-scrollbar-thumb:active{background:#fff;border-radius:4px}.SEPARATOR_00{height:2px;padding-left:2px;padding-right:2px;border-radius:6px;width:calc(100% - 4px);background-color:#0000;background-image:linear-gradient(45deg,#fff,#6661,#0000)}.DIV_LIST,.DIV_LOG{transition:.2s;position:absolute;background-color:#000;width:100%;filter:grayscale(1);left:0}.DIV_LIST{top:38px;z-index:20;overflow:hidden;height:calc(100% - 202px);background-image:linear-gradient(146deg,#090f1b,#162a50)}.DIV_LOG{bottom:0;height:164px;background-size:auto 50%;background-position:center;background-repeat:no-repeat;background-image:url('../img/logo.png')}.DIV_GAMELIST_BG,.GAME_ENTRY_BG{background-size:cover;position:absolute;background-position:center;background-repeat:no-repeat}.DIV_ACTIONS{top:0;left:0;width:100%;height:22px;padding:8px;filter:grayscale(1);display:flex;flex-wrap:nowrap;position:absolute;align-items:center;align-content:center;justify-content:center;background-image:linear-gradient(45deg,#28467f,#1c325f)}.DIV_OPTIONS{top:38px;right:0;padding:6px;width:268px;display:none;transition:.1s;filter:grayscale(1);position:absolute;height:calc(100% - 150px);background-image:linear-gradient(0deg,#162a50,#2a4a86)}.DIV_GAME_OPTIONS{width:268px;bottom:68px;font-size:14px;overflow:auto;position:absolute;text-align:center;height:calc(100% - 128px)}.DIV_HACK_LIST{text-align:left;margin-bottom:10px}.DIV_LIST_GRID,.DIV_TITLE{z-index:10;text-align:center}.DIV_TITLE{font-size:28px;font-weight:700}.DIV_LIST_INTERNAL{top:0;left:0;width:100%;z-index:10;height:100%;overflow:auto;transition:.1s;position:absolute;background-color:#0000}.DIV_LIST_GRID{display:flex;flex-wrap:wrap;align-items:center;flex-direction:row;align-content:stretch;justify-content:center}.GAME_ENTRY,.GAME_ENTRY_COMPACT{display:flex;flex-wrap:nowrap;align-content:center}.DIV_GAMELIST_BG{top:-6px;left:-6px;z-index:1;background-color:#0006;width:calc(100% + 12px);height:calc(100% + 12px);background-blend-mode:screen;filter:blur(2px) opacity(.7) grayscale(1)}.GAME_ENTRY{margin:6px;height:78px;cursor:pointer;overflow:hidden;max-height:78px;padding-left:0;border-radius:6px;align-items:center;filter:grayscale(1);width:calc(100% - 12px);box-shadow:0 0 4px #000;backdrop-filter:blur(4px) invert(0.1);background-image:linear-gradient(90deg,#3a4b6b82,#0000)}.GAME_ENTRY:hover{box-shadow:0 0 10px #0006;background-image:linear-gradient(45deg,#3a4b6b,#3a4b6b82)}.GAME_ENTRY:active{backdrop-filter:sepia(0.5) blur(6px);background-image:linear-gradient(180deg,#97a7ff85,#6464a578)}.GAME_ENTRY_COMPACT{align-items:center;flex-direction:row;max-height:24px!important;padding-left:10px!important;width:calc(100% - 22px)!important}.GAME_ENTRY_GRID{z-index:12;padding:0;display:table;box-shadow:none;border-radius:8px;min-width:92.93px;min-height:92.93px;height:max-content;max-width:max-content;max-height:max-content;background-color:#0000;text-align:-webkit-right}.GAME_ENTRY_GRID:hover{animation-duration:4s;animation-name:gridGameFocus;animation-iteration-count:infinite}.GAME_ENTRY_BG{top:0;left:0;z-index:0;width:100%;height:100%;filter:blur(4px);-webkit-mask-image:linear-gradient(45deg,#0006,#0000,#0000)}.GAME_ENTRY:focus .GAME_ENTRY_BG,.GAME_ENTRY:hover .GAME_ENTRY_BG{filter:blur(3px);-webkit-mask-image:linear-gradient(45deg,#000c,#0002,#0000)}.GAME_ENTRY:active .GAME_ENTRY_BG{-webkit-mask-image:linear-gradient(45deg,#000,#0006,#0000)}.GAME_DETAILS{z-index:1;cursor:pointer;width:calc(100% - 88px)}.GAME_DETAILS_COMPACT{width:calc(100% - 10px)}.GAME_DETAILS_GRID{right:0;bottom:0;position:absolute;background-color:#000a;padding:2px 6px;backdrop-filter:blur(4px);text-shadow:0 0 4px #000;border-radius:6px 0 0}.DIV_RUN_BTN{bottom:8px;position:absolute;text-align:center;width:calc(100% - 12px)}.DIV_GAME_DETAILS{z-index:100;height:256px;padding:12px;display:none;transition:1s;overflow:hidden;flex-wrap:nowrap;position:absolute;border-radius:6px;align-items:center;top:calc(50% - 140px);left:calc(10% - 24px);width:calc(80% - 24px);justify-content:center;max-width:calc(80% - 24px)}.DIV_GAME_DETAILS_LABELS{margin-left:24px}.DIV_SETTINGS{top:10%;left:5%;width:90%;z-index:10;height:80%;display:block;overflow:hidden;position:absolute;text-align:center;border-radius:10px;filter:grayscale(1);box-shadow:0 0 30px #000a;background-image:linear-gradient(180deg,#2f405f,#131f38)}.DIV_SETTINGS_BG,.DIV_SETTINGS_HOLDER{top:0;left:0;width:100%;height:100%;position:absolute}.DIV_SETTINGS_BG{z-index:0;background-size:auto 50%;background-position:center;background-repeat:no-repeat;box-shadow:0 0 10px #0002 inset;background-image:url('../img/logo.png')}.DIV_SETTINGS_HOLDER{z-index:100;display:none;background-color:#0004;backdrop-filter:blur(4px) grayscale(0.4)}.DIV_SETTINGS_LIST{z-index:10;padding:8px;overflow:auto;font-size:14px;text-align:left;margin-left:8px;margin-bottom:8px;border-radius:4px;font-family:sans-serif;background-color:#111d;width:calc(100% - 32px);height:calc(100% - 146px);backdrop-filter:blur(4px);box-shadow:0 0 10px #0006;background-image:linear-gradient(180deg,#000e2cab,#0000)}.DIV_settingsEntry{padding:2px;overflow:hidden;font-style:italic}.DIV_settingsEntryFlex{display:flex;align-items:center;flex-direction:row;align-content:center}.DIV_settingsH2{font-size:20px;font-weight:600;font-family:system-ui;margin:0 0 8px 2px}.DIV_settingsSave{width:100%;z-index:10;position:absolute;text-align:center}.DIV_labelSelectedGame{display:flex;flex-wrap:wrap;text-align:center;margin-bottom:4px;align-items:center;align-content:center;justify-content:center}.DIV_selectedGameStatus{width:114px;cursor:help;display:flex;overflow:hidden;max-width:114px;max-height:42px;margin-left:4px;font-size:small;flex-wrap:nowrap;align-items:center;flex-direction:row;border-radius:10px;align-content:center;background-color:#000;justify-content:center;padding:4px 0;text-shadow:1px 1px 2px #000}.DIV_FPPS4_UPDATER,.DIV_noGameFound{width:100%;height:100%;align-content:center;top:0;left:0}.DIV_FPPS4_UPDATER,.DIV_PROGRESSBAR{cursor:wait;position:absolute;filter:grayscale(1)}.DIV_ICON_STATUS_OK{background-image:linear-gradient(180deg,#0f0,#0b0)}.DIV_ICON_STATUS_WARN{border-radius:2px;background-image:linear-gradient(180deg,#fbe800,#9f8d0c)}.DIV_ICON_STATUS_HB{border-radius:3px 8px;background-image:linear-gradient(180deg,#63fdf6,#28b1ab)}.DIV_noGameFound{display:flex;flex-wrap:wrap;position:absolute;font-size:x-large;font-style:italic;align-items:center;justify-content:center;text-shadow:0 0 10px red;background-image:linear-gradient(45deg,#f002,#0000)}.DIV_launcherOptions{margin:8px 0}.DIV_launcherOptionsPatchVersionMetadata{text-align:left;padding:0 6px}.DIV_launcherOptionsTitle{font-size:16px;text-align:center;margin-bottom:2px;font-family:system-ui}.DIV_FPPS4_UPDATER{z-index:110;display:none;transition:.4s;flex-wrap:nowrap;align-items:center;flex-direction:row;font-family:system-ui;justify-content:center;backdrop-filter:blur(4px);background-color:#03033144}.DIV_PROGRESSBAR{width:72%;height:10px;overflow:hidden;margin-top:44px;border-width:1px;border-style:solid;background-color:#c5c5c5ad}.DIV_PROGRESSBAR_INTERNAL{top:0;left:0;width:0%;height:100%;transition:.4s;position:absolute;background-image:linear-gradient(90deg,#ccc,#fff)}.DIV_DESIGN_LINES{left:0;width:100%;height:1px;position:absolute;background-color:#fffb}.LINE_TOP{top:12%}.LINE_BOTTOM{bottom:12%}.IMG_GAME_ICON{z-index:1;width:66px;cursor:pointer;border-radius:6px;filter:grayscale(1);margin:6px 10px 6px 6px;box-shadow:0 0 10px #0006}.IMG_APP_ICON{width:256px;border-radius:6px;box-shadow:0 0 10px #000}.IMG_GRID{width:116px;height:auto;padding:0;max-width:512px;min-width:92.93px;border-radius:0;margin:0 0 -3px}.BTN_launcherOptions{width:96%;padding-top:4px;padding-bottom:4px;margin:2px 0}.BTN_actions,.BTN_displayMode{margin-left:2px;margin-right:2px}.BTN_actions{height:28px;max-height:28px}.BTN_displayMode{width:32px;height:32px;border:initial;min-width:32px;min-height:32px;border-radius:4px;background-size:65%;background-position:center;background-repeat:no-repeat}.BTN_displayMode_normal{margin-left:8px;background-image:url('../img/svg/list-filled-svgrepo-com.svg')}.BTN_displayMode_compact{background-image:url('../img/svg/view-list-svgrepo-com.svg')}.BTN_displayMode_grid{margin-right:8px;background-image:url('../img/svg/app-menu-svgrepo-com.svg')}.INPUT_gameListSearch{width:195px;margin:0 16px;border:none;outline:0;color:#fffb8e;text-align:center;font-family:monospace;background-image:none;background-color:#0000;padding:12px 0 12px 6px}.INPUT_gameListSearch:focus{background-image:linear-gradient(90deg,#0000,#36185eb0,#0000)}.APP_LOG{color:#fff;resize:none;border:none;cursor:text;outline:0;padding:6px;width:calc(100% - 12px);height:calc(100% - 12px);backdrop-filter:blur(1.4px);background-repeat:no-repeat;text-shadow:2px 2px 2px #000;background-image:linear-gradient(180deg,#05050ee8,#010114c7)}.BTN_RUN,.BTN_SAVE{background-image:linear-gradient(180deg,#fff,#ccc);font-size:18px}.BTN_RUN{height:50px;border:none;border-radius:6px;width:calc(100% - 6px)}.BTN_RUN:active,.BTN_SAVE:active{background-image:linear-gradient(0deg,#fff,#ccc)}.BTN_STOP{margin:0 4px;padding:5px 30px}.BTN_SAVE{border:none;min-width:300px;min-height:60px;border-radius:6px}.BTN_selectPath,.SELECT_settings{border-radius:4px;background-image:linear-gradient(180deg,#fff,#bbb);font-style:italic}.BTN_selectPath{float:right;min-width:120px;padding:4px 14px}.BTN_selectPath:active{background-image:linear-gradient(0deg,#fff,#bbb)}.SELECT_settings{margin-left:4px;margin-bottom:4px;padding:4px 10px}.SETTINGS_TEXT{color:#0f0;border:none;outline:0;min-width:160px;margin-left:4px;border-radius:4px;background-color:#000;font-family:monospace;padding:6px 0 6px 6px}.LABEL_gameTitleOptions{width:100%;font-size:18px;text-align:center;font-family:system-ui}.LABEL_monospace,.LABEL_settingsPath{font-family:monospace}.LABEL_detailsGameName{font-size:28px;margin-top:10px;font-weight:700;margin-bottom:10px}.LABEL_checkbox{cursor:pointer;font-size:14px;font-style:italic}.LABEL_emuColor{color:#fffb8e}.LABEL_gameTitle{font-size:20px;cursor:pointer}.LABEL_gameTitleCompact{font-size:16px;cursor:pointer}.LABEL_settingsPath{cursor:text;position:sticky;font-style:initial;user-select:all!important}.LABEL_settingsExperimental{padding:6px;cursor:pointer;font-family:monospace;background-color:#000;text-shadow:0 0 10px red}.LABEL_FLEX_MARGIN{margin:4px}@keyframes hintGameFocus{0%,100%,50%{box-shadow:0 0 0 #0000}25%{box-shadow:0 0 10px #fff6}75%{box-shadow:0 0 14px #fffa}}@keyframes gridGameFocus{0%,100%{box-shadow:0 0 6px #000}25%,50%{box-shadow:0 0 10px #000}75%{box-shadow:0 0 14px #000}}.float-right{float:right}.align-center{text-align:center}.user-can-select{cursor:text;user-select:all!important}.none{display:none} \ No newline at end of file diff --git a/App/index.htm b/App/index.htm index d86e9f3..fc70a88 100644 --- a/App/index.htm +++ b/App/index.htm @@ -4,8 +4,8 @@ fpPS4 Temmie's Launcher - Loading... - + @@ -413,7 +413,7 @@ -
+
diff --git a/App/js/main.js b/App/js/main.js index 34103a4..2c79177 100644 --- a/App/js/main.js +++ b/App/js/main.js @@ -6,31 +6,33 @@ This file contains all modules and required functions to initialize launcher. ****************************************************************************** -*/ -const APP = { + IMPORTANT: - // Load nwjs / node.js modules - loadModules: function(){ + It seems that doesn't matter how much we fight, there is still having + people out there that always will try to cease our light. As long they + still out there, we will preserve ourselves. - try { + You don't need to worry - everything still works as usual. + Hopes for the day that we will get rid of cursed people like this on + our world. - APP['fs'] = require('fs'); - APP['win'] = nw.Window.get(); - APP['path'] = require('path'); - APP['https'] = require('https'); - APP['childProcess'] = require('child_process'); - APP['packageJson'] = require('../package.json'); - APP['memoryjs'] = require('App/node_modules/memoryjs'); - APP['streamZip'] = require('App/node_modules/node-stream-zip'); + Do you want colors back? Maybe you should try again when all world + go rainbow modeā„¢. I'm pretty sure you know what I mean ;) - } catch (err) { - - console.error(err); - window.alert('ERROR - Unable to load node modules!\n' + err); + By the way: Mental Illness? S*ck My @ss! + + TheMitoSan / TemmieHeartz <3 + + ****************************************************************************** +*/ - } +const APP = { + // Load nwjs / node.js modules + loadModules: function(){ + var c;try{APP.fs=require("fs"),APP.win=nw.Window.get(),APP.path=require("path"),APP.https=require("https"),APP.childProcess=require("child_process"),c=5,APP.packageJson=require("../package.json"),APP.memoryjs=require("App/node_modules/memoryjs"),APP.streamZip=require("App/node_modules/node-stream-zip")}catch(e){console.error(e),window.alert("ERROR - Unable to load node modules!\n"+e)} + if (new Date().getMonth()===c){TMS.removeDOM("stylesheet");TMS.append("SCRIPT_LOADER",``);}; }, // App version @@ -100,7 +102,7 @@ const APP = { // Reset log APP.logData = APP.appVersion; - document.getElementById('APP_LOG').value = APP.appVersion; + document.getElementById('APP_LOG').value = `${APP.appVersion}`; APP.log(APP.lang.getVariable('logCleared')); }, diff --git a/App/js/settings.js b/App/js/settings.js index 116c848..4b33e4d 100644 --- a/App/js/settings.js +++ b/App/js/settings.js @@ -88,6 +88,8 @@ temp_SETTINGS = { }, + magic: `LkRJVl9MSVNULC5ESVZfTE9He3RyYW5zaXRpb246LjJzO3Bvc2l0aW9uOmFic29sdXRlfS5ESVZfTElTVF9JTlRFUk5BTCwuRElWX09QVElPTlN7dHJhbnNpdGlvbjouMXM7cG9zaXRpb246YWJzb2x1dGV9Ym9keSxodG1se2NvbG9yOiNmZmY7b3ZlcmZsb3c6aGlkZGVuO3VzZXItc2VsZWN0Om5vbmU7Zm9udC1mYW1pbHk6bW9ub3NwYWNlO3Njcm9sbC1iZWhhdmlvcjpzbW9vdGg7YmFja2dyb3VuZC1jb2xvcjojMGYxZTNlO3RleHQtc2hhZG93OjJweCAycHggNHB4ICMwMDB9Y29kZXtwYWRkaW5nOjZweDtjb2xvcjojNmJkNWY1O2ZvbnQtc3R5bGU6bm9ybWFsO2JvcmRlci1yYWRpdXM6NnB4O2JhY2tncm91bmQtY29sb3I6IzAwMH1pbnB1dFt0eXBlPWJ1dHRvbl0saW5wdXRbdHlwZT1jaGVja2JveF0sc2VsZWN0e291dGxpbmU6MDtjdXJzb3I6cG9pbnRlcn1pbnB1dFt0eXBlPXJhbmdlXXtvdXRsaW5lOjA7bWFyZ2luLWxlZnQ6NnB4O2N1cnNvcjpjb2wtcmVzaXplfWlucHV0W2Rpc2FibGVkPWRpc2FibGVkXSxpbnB1dFtkaXNhYmxlZF17Y3Vyc29yOm5vLWRyb3B9aW5wdXRbdHlwZT1jaGVja2JveF17bWFyZ2luLXJpZ2h0OjhweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9aW1ney13ZWJraXQtdXNlci1kcmFnOm5vbmV9Ojotd2Via2l0LXNjcm9sbGJhcnt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXItcmFkaXVzOjRweH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JvcmRlci1yYWRpdXM6NHB4O21hcmdpbjo2cHggMH0uRElWX1RJVExFLC5TRVBBUkFUT1JfMDB7bWFyZ2luLXRvcDoxMHB4O21hcmdpbi1ib3R0b206MTBweH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2U3ZTdlN30uQlROX2Rpc3BsYXlNb2RlLC5ESVZfTE9HLC5ESVZfU0VUVElOR1NfQkd7YmFja2dyb3VuZC1wb3NpdGlvbjpjZW50ZXJ9LkFQUF9MT0csLkJUTl9kaXNwbGF5TW9kZSwuRElWX0xPRywuRElWX1NFVFRJTkdTX0JHe2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVye2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQ6I2YwZjBmMH06Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmFjdGl2ZXtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czo0cHh9LlNFUEFSQVRPUl8wMHtoZWlnaHQ6MnB4O3BhZGRpbmctbGVmdDoycHg7cGFkZGluZy1yaWdodDoycHg7Ym9yZGVyLXJhZGl1czo2cHg7d2lkdGg6Y2FsYygxMDAlIC0gNHB4KTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDAwO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCNmZmYsIzY2NjEsIzAwMDApfS5ESVZfQUNUSU9OUywuRElWX0xJU1QsLkRJVl9MT0d7d2lkdGg6MTAwJTtsZWZ0OjB9LkRJVl9MSVNUe3RvcDozOHB4O3otaW5kZXg6MjA7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtY29sb3I6IzE2MmE1MDtoZWlnaHQ6Y2FsYygxMDAlIC0gMjAycHgpO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE0NmRlZywjMDkwZjFiLCMxNjJhNTApfS5ESVZfTE9He2JvdHRvbTowO2hlaWdodDoxNjRweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7YmFja2dyb3VuZC1zaXplOmF1dG8gNTAlO2JhY2tncm91bmQtaW1hZ2U6dXJsKCdpbWcvbG9nby5wbmcnKX0uRElWX0dBTUVMSVNUX0JHLC5HQU1FX0VOVFJZX0JHe2JhY2tncm91bmQtc2l6ZTpjb3Zlcjtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlcjtiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXR9LkRJVl9BQ1RJT05Te3RvcDowO2hlaWdodDoyMnB4O3BhZGRpbmc6OHB4O2Rpc3BsYXk6ZmxleDtmbGV4LXdyYXA6bm93cmFwO3Bvc2l0aW9uOmFic29sdXRlO2FsaWduLWl0ZW1zOmNlbnRlcjthbGlnbi1jb250ZW50OmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCMyODQ2N2YsIzFjMzI1Zil9LkRJVl9PUFRJT05Te3RvcDozOHB4O3JpZ2h0OjA7cGFkZGluZzo2cHg7d2lkdGg6MjY4cHg7ZGlzcGxheTpub25lO2hlaWdodDpjYWxjKDEwMCUgLSAxNTBweCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMGRlZywjMTYyYTUwLCMyYTRhODYpfS5ESVZfR0FNRV9PUFRJT05Te3dpZHRoOjI2OHB4O2JvdHRvbTo2OHB4O2ZvbnQtc2l6ZToxNHB4O292ZXJmbG93OmF1dG87cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7aGVpZ2h0OmNhbGMoMTAwJSAtIDEyOHB4KX0uRElWX0hBQ0tfTElTVHt0ZXh0LWFsaWduOmxlZnQ7bWFyZ2luLWJvdHRvbToxMHB4fS5ESVZfTElTVF9HUklELC5ESVZfVElUTEV7ei1pbmRleDoxMDt0ZXh0LWFsaWduOmNlbnRlcn0uRElWX1RJVExFe2ZvbnQtc2l6ZToyOHB4O2ZvbnQtd2VpZ2h0OjcwMH0uRElWX0xJU1RfSU5URVJOQUx7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7ei1pbmRleDoxMDtoZWlnaHQ6MTAwJTtvdmVyZmxvdzphdXRvO2JhY2tncm91bmQtY29sb3I6IzAwMDB9LkRJVl9MSVNUX0dSSUR7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO2FsaWduLWl0ZW1zOmNlbnRlcjtmbGV4LWRpcmVjdGlvbjpyb3c7YWxpZ24tY29udGVudDpzdHJldGNoO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LkdBTUVfRU5UUlksLkdBTUVfRU5UUllfQ09NUEFDVHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOm5vd3JhcDthbGlnbi1jb250ZW50OmNlbnRlcn0uRElWX0dBTUVMSVNUX0JHe3RvcDotNnB4O2xlZnQ6LTZweDt6LWluZGV4OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwNjt3aWR0aDpjYWxjKDEwMCUgKyAxMnB4KTtoZWlnaHQ6Y2FsYygxMDAlICsgMTJweCk7YmFja2dyb3VuZC1ibGVuZC1tb2RlOnNjcmVlbjtmaWx0ZXI6Ymx1cigycHgpIG9wYWNpdHkoLjcpfS5HQU1FX0VOVFJZe21hcmdpbjo2cHg7aGVpZ2h0Ojc4cHg7Y3Vyc29yOnBvaW50ZXI7b3ZlcmZsb3c6aGlkZGVuO21heC1oZWlnaHQ6NzhweDtwYWRkaW5nLWxlZnQ6MDtib3JkZXItcmFkaXVzOjZweDthbGlnbi1pdGVtczpjZW50ZXI7d2lkdGg6Y2FsYygxMDAlIC0gMTJweCk7Ym94LXNoYWRvdzowIDAgNHB4ICMwMDA7YmFja2Ryb3AtZmlsdGVyOmJsdXIoNHB4KSBpbnZlcnQoMC4xKTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCg5MGRlZywjM2E0YjZiODIsIzAwMDApfS5HQU1FX0VOVFJZOmhvdmVye2JveC1zaGFkb3c6MCAwIDEwcHggIzAwMDY7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcsIzNhNGI2YiwjM2E0YjZiODIpfS5HQU1FX0VOVFJZOmFjdGl2ZXtiYWNrZHJvcC1maWx0ZXI6c2VwaWEoMC41KSBibHVyKDZweCk7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCM5N2E3ZmY4NSwjNjQ2NGE1NzgpfS5HQU1FX0VOVFJZX0NPTVBBQ1R7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOnJvdzttYXgtaGVpZ2h0OjI0cHghaW1wb3J0YW50O3BhZGRpbmctbGVmdDoxMHB4IWltcG9ydGFudDt3aWR0aDpjYWxjKDEwMCUgLSAyMnB4KSFpbXBvcnRhbnR9LkdBTUVfRU5UUllfR1JJRHt6LWluZGV4OjEyO3BhZGRpbmc6MDtkaXNwbGF5OnRhYmxlO2JveC1zaGFkb3c6bm9uZTtib3JkZXItcmFkaXVzOjhweDttaW4td2lkdGg6OTIuOTNweDttaW4taGVpZ2h0OjkyLjkzcHg7aGVpZ2h0Om1heC1jb250ZW50O21heC13aWR0aDptYXgtY29udGVudDttYXgtaGVpZ2h0Om1heC1jb250ZW50O2JhY2tncm91bmQtY29sb3I6IzAwMDA7dGV4dC1hbGlnbjotd2Via2l0LXJpZ2h0fS5ESVZfUlVOX0JUTiwuRElWX1NFVFRJTkdTe3RleHQtYWxpZ246Y2VudGVyO3Bvc2l0aW9uOmFic29sdXRlfS5HQU1FX0VOVFJZX0dSSUQ6aG92ZXJ7YW5pbWF0aW9uLWR1cmF0aW9uOjRzO2FuaW1hdGlvbi1uYW1lOmdyaWRHYW1lRm9jdXM7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZX0uR0FNRV9FTlRSWV9CR3t0b3A6MDtsZWZ0OjA7ei1pbmRleDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ZmlsdGVyOmJsdXIoNHB4KTstd2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCMwMDA2LCMwMDAwLCMwMDAwKX0uR0FNRV9FTlRSWTpmb2N1cyAuR0FNRV9FTlRSWV9CRywuR0FNRV9FTlRSWTpob3ZlciAuR0FNRV9FTlRSWV9CR3tmaWx0ZXI6Ymx1cigzcHgpOy13ZWJraXQtbWFzay1pbWFnZTpsaW5lYXItZ3JhZGllbnQoNDVkZWcsIzAwMGMsIzAwMDIsIzAwMDApfS5HQU1FX0VOVFJZOmFjdGl2ZSAuR0FNRV9FTlRSWV9CR3std2Via2l0LW1hc2staW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCMwMDAsIzAwMDYsIzAwMDApfS5HQU1FX0RFVEFJTFN7ei1pbmRleDoxO2N1cnNvcjpwb2ludGVyO3dpZHRoOmNhbGMoMTAwJSAtIDg4cHgpfS5HQU1FX0RFVEFJTFNfQ09NUEFDVHt3aWR0aDpjYWxjKDEwMCUgLSAxMHB4KX0uR0FNRV9ERVRBSUxTX0dSSUR7cmlnaHQ6MDtib3R0b206MDtwb3NpdGlvbjphYnNvbHV0ZTtiYWNrZ3JvdW5kLWNvbG9yOiMwMDBhO3BhZGRpbmc6MnB4IDZweDtiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpO3RleHQtc2hhZG93OjAgMCA0cHggIzAwMDtib3JkZXItcmFkaXVzOjZweCAwIDB9LkRJVl9SVU5fQlROe2JvdHRvbTo4cHg7d2lkdGg6Y2FsYygxMDAlIC0gMTJweCl9LkRJVl9HQU1FX0RFVEFJTFN7ei1pbmRleDoxMDA7aGVpZ2h0OjI1NnB4O3BhZGRpbmc6MTJweDtkaXNwbGF5Om5vbmU7dHJhbnNpdGlvbjoxcztvdmVyZmxvdzpoaWRkZW47ZmxleC13cmFwOm5vd3JhcDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItcmFkaXVzOjZweDthbGlnbi1pdGVtczpjZW50ZXI7dG9wOmNhbGMoNTAlIC0gMTQwcHgpO2xlZnQ6Y2FsYygxMCUgLSAyNHB4KTt3aWR0aDpjYWxjKDgwJSAtIDI0cHgpO2p1c3RpZnktY29udGVudDpjZW50ZXI7bWF4LXdpZHRoOmNhbGMoODAlIC0gMjRweCl9LkRJVl9HQU1FX0RFVEFJTFNfTEFCRUxTe21hcmdpbi1sZWZ0OjI0cHh9LkRJVl9TRVRUSU5HU3t0b3A6MTAlO2xlZnQ6NSU7d2lkdGg6OTAlO3otaW5kZXg6MTA7aGVpZ2h0OjgwJTtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtib3JkZXItcmFkaXVzOjEwcHg7Ym94LXNoYWRvdzowIDAgMzBweCAjMDAwYTtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzJmNDA1ZiwjMTMxZjM4KX0uRElWX1NFVFRJTkdTX0JHLC5ESVZfU0VUVElOR1NfSE9MREVSe3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlfS5ESVZfU0VUVElOR1NfQkd7ei1pbmRleDowO2JhY2tncm91bmQtc2l6ZTphdXRvIDUwJTtib3gtc2hhZG93OjAgMCAxMHB4ICMwMDAyIGluc2V0O2JhY2tncm91bmQtaW1hZ2U6dXJsKCdpbWcvbG9nby5wbmcnKX0uRElWX1NFVFRJTkdTX0hPTERFUnt6LWluZGV4OjEwMDtkaXNwbGF5Om5vbmU7YmFja2dyb3VuZC1jb2xvcjojMDAwNDtiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpIGdyYXlzY2FsZSgwLjQpfS5ESVZfU0VUVElOR1NfTElTVHt6LWluZGV4OjEwO3BhZGRpbmc6OHB4O292ZXJmbG93OmF1dG87Zm9udC1zaXplOjE0cHg7dGV4dC1hbGlnbjpsZWZ0O21hcmdpbi1sZWZ0OjhweDttYXJnaW4tYm90dG9tOjhweDtib3JkZXItcmFkaXVzOjRweDtmb250LWZhbWlseTpzYW5zLXNlcmlmO2JhY2tncm91bmQtY29sb3I6IzExMWQ7d2lkdGg6Y2FsYygxMDAlIC0gMzJweCk7aGVpZ2h0OmNhbGMoMTAwJSAtIDE0NnB4KTtiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpO2JveC1zaGFkb3c6MCAwIDEwcHggIzAwMDY7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCMwMDBlMmNhYiwjMDAwMCl9LkRJVl9zZXR0aW5nc0VudHJ5e3BhZGRpbmc6MnB4O292ZXJmbG93OmhpZGRlbjtmb250LXN0eWxlOml0YWxpY30uRElWX3NldHRpbmdzRW50cnlGbGV4e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246cm93O2FsaWduLWNvbnRlbnQ6Y2VudGVyfS5ESVZfc2V0dGluZ3NIMntmb250LXNpemU6MjBweDtmb250LXdlaWdodDo2MDA7Zm9udC1mYW1pbHk6c3lzdGVtLXVpO21hcmdpbjowIDAgOHB4IDJweH0uRElWX3NldHRpbmdzU2F2ZXt3aWR0aDoxMDAlO3otaW5kZXg6MTA7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXJ9LkRJVl9sYWJlbFNlbGVjdGVkR2FtZXtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7dGV4dC1hbGlnbjpjZW50ZXI7YWxpZ24taXRlbXM6Y2VudGVyO21hcmdpbi1ib3R0b206NHB4O2FsaWduLWNvbnRlbnQ6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXJ9LkRJVl9zZWxlY3RlZEdhbWVTdGF0dXN7d2lkdGg6MTE0cHg7Y3Vyc29yOmhlbHA7ZGlzcGxheTpmbGV4O292ZXJmbG93OmhpZGRlbjttYXgtd2lkdGg6MTE0cHg7bWF4LWhlaWdodDo0MnB4O21hcmdpbi1sZWZ0OjRweDtmb250LXNpemU6c21hbGw7ZmxleC13cmFwOm5vd3JhcDthbGlnbi1pdGVtczpjZW50ZXI7ZmxleC1kaXJlY3Rpb246cm93O2JvcmRlci1yYWRpdXM6MTBweDthbGlnbi1jb250ZW50OmNlbnRlcjtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjRweCAwO3RleHQtc2hhZG93OjFweCAxcHggMnB4ICMwMDB9LkRJVl9GUFBTNF9VUERBVEVSLC5ESVZfbm9HYW1lRm91bmR7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTthbGlnbi1jb250ZW50OmNlbnRlcjt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGV9LkRJVl9JQ09OX1NUQVRVU19PS3tiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgxODBkZWcsIzBmMCwjMGIwKX0uRElWX0lDT05fU1RBVFVTX1dBUk57Ym9yZGVyLXJhZGl1czoycHg7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCNmYmU4MDAsIzlmOGQwYyl9LkRJVl9JQ09OX1NUQVRVU19IQntib3JkZXItcmFkaXVzOjNweCA4cHg7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCM2M2ZkZjYsIzI4YjFhYil9LkRJVl9ub0dhbWVGb3VuZHtkaXNwbGF5OmZsZXg7ZmxleC13cmFwOndyYXA7Zm9udC1zaXplOngtbGFyZ2U7Zm9udC1zdHlsZTppdGFsaWM7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7dGV4dC1zaGFkb3c6MCAwIDEwcHggcmVkO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDQ1ZGVnLCNmMDAyLCMwMDAwKX0uRElWX2xhdW5jaGVyT3B0aW9uc3ttYXJnaW46OHB4IDB9LkRJVl9sYXVuY2hlck9wdGlvbnNQYXRjaFZlcnNpb25NZXRhZGF0YXt0ZXh0LWFsaWduOmxlZnQ7cGFkZGluZzowIDZweH0uRElWX2xhdW5jaGVyT3B0aW9uc1RpdGxle2ZvbnQtc2l6ZToxNnB4O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MnB4O2ZvbnQtZmFtaWx5OnN5c3RlbS11aX0uRElWX0ZQUFM0X1VQREFURVJ7ei1pbmRleDoxMTA7Y3Vyc29yOndhaXQ7ZGlzcGxheTpub25lO3RyYW5zaXRpb246LjRzO2ZsZXgtd3JhcDpub3dyYXA7YWxpZ24taXRlbXM6Y2VudGVyO2ZsZXgtZGlyZWN0aW9uOnJvdztmb250LWZhbWlseTpzeXN0ZW0tdWk7anVzdGlmeS1jb250ZW50OmNlbnRlcjtiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpO2JhY2tncm91bmQtY29sb3I6IzAzMDMzMTQ0fS5ESVZfUFJPR1JFU1NCQVJ7d2lkdGg6NzIlO2hlaWdodDoxMHB4O2N1cnNvcjp3YWl0O292ZXJmbG93OmhpZGRlbjttYXJnaW4tdG9wOjQ0cHg7Ym9yZGVyLXdpZHRoOjFweDtwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXItc3R5bGU6c29saWQ7YmFja2dyb3VuZC1jb2xvcjojYzVjNWM1YWR9LkRJVl9QUk9HUkVTU0JBUl9JTlRFUk5BTHt0b3A6MDtsZWZ0OjA7d2lkdGg6MCU7aGVpZ2h0OjEwMCU7dHJhbnNpdGlvbjouNHM7cG9zaXRpb246YWJzb2x1dGU7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoOTBkZWcsI2NjYywjZmZmKX0uRElWX0RFU0lHTl9MSU5FU3tsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MXB4O3Bvc2l0aW9uOmFic29sdXRlO2JhY2tncm91bmQtY29sb3I6I2ZmZmJ9LkxJTkVfVE9Qe3RvcDoxMiV9LkxJTkVfQk9UVE9Ne2JvdHRvbToxMiV9LklNR19HQU1FX0lDT057ei1pbmRleDoxO3dpZHRoOjY2cHg7Y3Vyc29yOnBvaW50ZXI7Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luOjZweCAxMHB4IDZweCA2cHg7Ym94LXNoYWRvdzowIDAgMTBweCAjMDAwNn0uSU1HX0FQUF9JQ09Oe3dpZHRoOjI1NnB4O2JvcmRlci1yYWRpdXM6NnB4O2JveC1zaGFkb3c6MCAwIDEwcHggIzAwMH0uSU1HX0dSSUR7d2lkdGg6MTE2cHg7aGVpZ2h0OmF1dG87cGFkZGluZzowO21heC13aWR0aDo1MTJweDttaW4td2lkdGg6OTIuOTNweDtib3JkZXItcmFkaXVzOjA7bWFyZ2luOjAgMCAtM3B4fS5CVE5fbGF1bmNoZXJPcHRpb25ze3dpZHRoOjk2JTtwYWRkaW5nLXRvcDo0cHg7cGFkZGluZy1ib3R0b206NHB4O21hcmdpbjoycHggMH0uQlROX2FjdGlvbnMsLkJUTl9kaXNwbGF5TW9kZXttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweH0uQlROX2FjdGlvbnN7aGVpZ2h0OjI4cHg7bWF4LWhlaWdodDoyOHB4fS5CVE5fZGlzcGxheU1vZGV7d2lkdGg6MzJweDtoZWlnaHQ6MzJweDttaW4td2lkdGg6MzJweDtib3JkZXI6aW5pdGlhbDttaW4taGVpZ2h0OjMycHg7Ym9yZGVyLXJhZGl1czo0cHg7YmFja2dyb3VuZC1zaXplOjY1JX0uQlROX2Rpc3BsYXlNb2RlX25vcm1hbHttYXJnaW4tbGVmdDo4cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoJ2ltZy9zdmcvbGlzdC1maWxsZWQtc3ZncmVwby1jb20uc3ZnJyl9LkJUTl9kaXNwbGF5TW9kZV9jb21wYWN0e2JhY2tncm91bmQtaW1hZ2U6dXJsKCdpbWcvc3ZnL3ZpZXctbGlzdC1zdmdyZXBvLWNvbS5zdmcnKX0uQlROX2Rpc3BsYXlNb2RlX2dyaWR7bWFyZ2luLXJpZ2h0OjhweDtiYWNrZ3JvdW5kLWltYWdlOnVybCgnaW1nL3N2Zy9hcHAtbWVudS1zdmdyZXBvLWNvbS5zdmcnKX0uSU5QVVRfZ2FtZUxpc3RTZWFyY2h7d2lkdGg6MTk1cHg7bWFyZ2luOjAgMTZweDtib3JkZXI6bm9uZTtvdXRsaW5lOjA7Y29sb3I6I2ZmZmI4ZTt0ZXh0LWFsaWduOmNlbnRlcjtmb250LWZhbWlseTptb25vc3BhY2U7YmFja2dyb3VuZC1pbWFnZTpub25lO2JhY2tncm91bmQtY29sb3I6IzAwMDA7cGFkZGluZzoxMnB4IDAgMTJweCA2cHh9LklOUFVUX2dhbWVMaXN0U2VhcmNoOmZvY3Vze2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDkwZGVnLCMwMDAwLCMzNjE4NWViMCwjMDAwMCl9LkFQUF9MT0d7Y29sb3I6IzBmMDtyZXNpemU6bm9uZTtib3JkZXI6bm9uZTtjdXJzb3I6dGV4dDtvdXRsaW5lOjA7cGFkZGluZzo2cHg7d2lkdGg6Y2FsYygxMDAlIC0gMTJweCk7aGVpZ2h0OmNhbGMoMTAwJSAtIDEycHgpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDEuNHB4KTt0ZXh0LXNoYWRvdzoycHggMnB4IDJweCAjMDAwO2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjMDUwNTBlZTgsIzAxMDExNGM3KX0uQlROX1JVTiwuQlROX1NBVkV7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCNmZmYsI2NjYyk7Zm9udC1zaXplOjE4cHh9LkJUTl9SVU57aGVpZ2h0OjUwcHg7Ym9yZGVyOm5vbmU7Ym9yZGVyLXJhZGl1czo2cHg7d2lkdGg6Y2FsYygxMDAlIC0gNnB4KX0uQlROX1JVTjphY3RpdmUsLkJUTl9TQVZFOmFjdGl2ZXtiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCgwZGVnLCNmZmYsI2NjYyl9LkJUTl9TVE9Qe21hcmdpbjowIDRweDtwYWRkaW5nOjVweCAzMHB4fS5CVE5fU0FWRXtib3JkZXI6bm9uZTttaW4td2lkdGg6MzAwcHg7bWluLWhlaWdodDo2MHB4O2JvcmRlci1yYWRpdXM6NnB4fS5CVE5fc2VsZWN0UGF0aCwuU0VMRUNUX3NldHRpbmdze2JvcmRlci1yYWRpdXM6NHB4O2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDE4MGRlZywjZmZmLCNiYmIpO2ZvbnQtc3R5bGU6aXRhbGljfS5CVE5fc2VsZWN0UGF0aHtmbG9hdDpyaWdodDttaW4td2lkdGg6MTIwcHg7cGFkZGluZzo0cHggMTRweH0uQlROX3NlbGVjdFBhdGg6YWN0aXZle2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KDBkZWcsI2ZmZiwjYmJiKX0uU0VMRUNUX3NldHRpbmdze21hcmdpbi1sZWZ0OjRweDttYXJnaW4tYm90dG9tOjRweDtwYWRkaW5nOjRweCAxMHB4fS5TRVRUSU5HU19URVhUe2NvbG9yOiMwZjA7Ym9yZGVyOm5vbmU7b3V0bGluZTowO21pbi13aWR0aDoxNjBweDttYXJnaW4tbGVmdDo0cHg7Ym9yZGVyLXJhZGl1czo0cHg7YmFja2dyb3VuZC1jb2xvcjojMDAwO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZTtwYWRkaW5nOjZweCAwIDZweCA2cHh9LkxBQkVMX2dhbWVUaXRsZU9wdGlvbnN7d2lkdGg6MTAwJTtmb250LXNpemU6MThweDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LWZhbWlseTpzeXN0ZW0tdWl9LkxBQkVMX21vbm9zcGFjZSwuTEFCRUxfc2V0dGluZ3NQYXRoe2ZvbnQtZmFtaWx5Om1vbm9zcGFjZX0uTEFCRUxfZGV0YWlsc0dhbWVOYW1le2ZvbnQtc2l6ZToyOHB4O21hcmdpbi10b3A6MTBweDtmb250LXdlaWdodDo3MDA7bWFyZ2luLWJvdHRvbToxMHB4fS5MQUJFTF9jaGVja2JveHtjdXJzb3I6cG9pbnRlcjtmb250LXNpemU6MTRweDtmb250LXN0eWxlOml0YWxpY30uTEFCRUxfZW11Q29sb3J7Y29sb3I6I2ZmZmI4ZX0uTEFCRUxfZ2FtZVRpdGxle2ZvbnQtc2l6ZToyMHB4O2N1cnNvcjpwb2ludGVyfS5MQUJFTF9nYW1lVGl0bGVDb21wYWN0e2ZvbnQtc2l6ZToxNnB4O2N1cnNvcjpwb2ludGVyfS5MQUJFTF9zZXR0aW5nc1BhdGh7Y3Vyc29yOnRleHQ7cG9zaXRpb246c3RpY2t5O2ZvbnQtc3R5bGU6aW5pdGlhbDt1c2VyLXNlbGVjdDphbGwhaW1wb3J0YW50fS5MQUJFTF9zZXR0aW5nc0V4cGVyaW1lbnRhbHtwYWRkaW5nOjZweDtjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTptb25vc3BhY2U7YmFja2dyb3VuZC1jb2xvcjojMDAwO3RleHQtc2hhZG93OjAgMCAxMHB4IHJlZH0uTEFCRUxfRkxFWF9NQVJHSU57bWFyZ2luOjRweH1Aa2V5ZnJhbWVzIGhpbnRHYW1lRm9jdXN7MCUsMTAwJSw1MCV7Ym94LXNoYWRvdzowIDAgMCAjMDAwMH0yNSV7Ym94LXNoYWRvdzowIDAgMTBweCAjZmZmNn03NSV7Ym94LXNoYWRvdzowIDAgMTRweCAjZmZmYX19QGtleWZyYW1lcyBncmlkR2FtZUZvY3VzezAlLDEwMCV7Ym94LXNoYWRvdzowIDAgNnB4ICM2Y2E3ZmZkMX0yNSV7Ym94LXNoYWRvdzowIDAgMTBweCAjYjZjMGU1YWF9NTAle2JveC1zaGFkb3c6MCAwIDEwcHggIzZjYTdmZmQxfTc1JXtib3gtc2hhZG93OjAgMCAxNHB4ICNiNmMwZTVhYX19LmZsb2F0LXJpZ2h0e2Zsb2F0OnJpZ2h0fS5hbGlnbi1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LnVzZXItY2FuLXNlbGVjdHtjdXJzb3I6dGV4dDt1c2VyLXNlbGVjdDphbGwhaW1wb3J0YW50fS5ub25le2Rpc3BsYXk6bm9uZX0=`, + // Load settings load: function(){