1
0
Fork 0
mirror of https://github.com/Acamaeda/The-Modding-Tree.git synced 2024-11-24 17:31:50 +00:00

Alpha Build 10

This commit is contained in:
Jacorb90 2020-08-23 15:36:03 -04:00
parent 6a521875b5
commit 76a60008f8
3 changed files with 111 additions and 18 deletions

View file

@ -5,6 +5,7 @@
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript" src="js/break_eternity.min.js"></script> <script type="text/javascript" src="js/break_eternity.min.js"></script>
<script type="text/javascript" src="js/temp.js"></script> <script type="text/javascript" src="js/temp.js"></script>
<script type="text/javascript" src="js/saves.js"></script>
<script type="text/javascript" src="js/game.js"></script> <script type="text/javascript" src="js/game.js"></script>
<script type="text/javascript" src="js/v.js"></script> <script type="text/javascript" src="js/v.js"></script>
<script type="text/javascript" src="js/canvas.js"></script> <script type="text/javascript" src="js/canvas.js"></script>
@ -57,6 +58,11 @@
<li>Fixed a bug with hotkeys</li> <li>Fixed a bug with hotkeys</li>
<li>Balanced up to 1e46,500 points</li> <li>Balanced up to 1e46,500 points</li>
</ul><br><br> </ul><br><br>
<h3>Alpha Build 10</h3>
<ul>
<li>Rebalanced the Super-Booster era (now up to 1e9,250 points)</li>
<li>Implemented a game version variable</li>
</ul><br><br>
</div> </div>
<div v-if="player.tab=='info'" class="col right"> <div v-if="player.tab=='info'" class="col right">
<button class="back" onclick="showTab('tree')"></button><br><br><br><br><br> <button class="back" onclick="showTab('tree')"></button><br><br><br><br><br>
@ -163,7 +169,7 @@
</div> </div>
<div v-if="layer=='sb'"> <div v-if="layer=='sb'">
<table><tr><td v-bind:class="{ milestone: player.sb.best.lt(3), milestoneDone: player.sb.best.gte(3) }">3 Super-Boosters<br>Keep Prestige Upgrades on reset</td></tr></table> <table><tr><td v-bind:class="{ milestone: player.sb.best.lt(3), milestoneDone: player.sb.best.gte(3) }">3 Super-Boosters<br>Keep Prestige Upgrades on reset</td></tr></table>
<table><tr><td v-bind:class="{ milestone: player.sb.best.lt(7), milestoneDone: player.sb.best.gte(7) }">7 Super-Boosters<br>Keep Booster/Generator milestones on reset</td></tr></table> <table><tr><td v-bind:class="{ milestone: player.sb.best.lt(4), milestoneDone: player.sb.best.gte(4) }">4 Super-Boosters<br>Keep Booster/Generator milestones on reset</td></tr></table>
</div> </div>
<br><br><br> <br><br><br>
<button v-if="LAYER_TYPE[layer]=='normal'" v-bind:class="{ [layer]: true, reset: true, locked: tmp.layerAmt[layer].lt(tmp.layerReqs[layer]), can: tmp.layerAmt[layer].gte(tmp.layerReqs[layer]) }" v-on:click="doReset(layer)">+{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}<br>Next at {{ format(tmp.nextAt[layer]) }} {{ LAYER_AMT_NAMES[layer] }}</button> <button v-if="LAYER_TYPE[layer]=='normal'" v-bind:class="{ [layer]: true, reset: true, locked: tmp.layerAmt[layer].lt(tmp.layerReqs[layer]), can: tmp.layerAmt[layer].gte(tmp.layerReqs[layer]) }" v-on:click="doReset(layer)">+{{formatWhole(tmp.resetGain[layer])}} {{LAYER_RES[layer]}}<br>Next at {{ format(tmp.nextAt[layer]) }} {{ LAYER_AMT_NAMES[layer] }}</button>

View file

@ -7,6 +7,9 @@ function getStartPlayer() {
tab: "tree", tab: "tree",
time: Date.now(), time: Date.now(),
autosave: true, autosave: true,
versionType: "alpha",
version: 10,
timePlayed: 0,
points: new Decimal(10), points: new Decimal(10),
p: { p: {
unl: false, unl: false,
@ -146,12 +149,12 @@ const LAYER_EFFS = {
gain: Decimal.pow(3, player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap))).sub(1).times(getTimeEnergyGainMult()), gain: Decimal.pow(3, player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap))).sub(1).times(getTimeEnergyGainMult()),
limit: Decimal.pow(2, player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap))).sub(1).times(100).times(getTimeEnergyLimitMult()), limit: Decimal.pow(2, player.t.points.plus(player.t.extCapsules.plus(tmp.freeExtCap))).sub(1).times(100).times(getTimeEnergyLimitMult()),
}}, }},
sb: function() { return Decimal.mul(45, player.sb.points.times(getSuperBoosterPow()).pow(1.25)) }, sb: function() { return Decimal.pow(1.5, player.sb.points.times(getSuperBoosterPow())) },
} }
const LAYER_UPGS = { const LAYER_UPGS = {
p: { p: {
rows: 2, rows: 3,
cols: 3, cols: 3,
11: { 11: {
desc: "Gain 1 Point every second.", desc: "Gain 1 Point every second.",
@ -195,10 +198,30 @@ const LAYER_UPGS = {
currently: function() { currently: function() {
let ret = player.points.plus(1).log10().cbrt().plus(1) let ret = player.points.plus(1).log10().cbrt().plus(1)
if (player.g.upgrades.includes(23)) ret = ret.pow(LAYER_UPGS.g[23].currently()) if (player.g.upgrades.includes(23)) ret = ret.pow(LAYER_UPGS.g[23].currently())
if (player.p.upgrades.includes(33)) ret = ret.pow(1.25)
return ret; return ret;
}, },
effDisp: function(x) { return format(x)+"x" }, effDisp: function(x) { return format(x)+"x" },
}, },
31: {
desc: "Prestige Point gain is boosted by your Prestige Point amount.",
cost: new Decimal("1e4450"),
unl: function() { return player.e.upgrades.includes(33) },
currently: function() { return player.p.points.plus(1).log10().plus(1).pow(player.p.points.plus(1).log10().div(200).plus(1)).pow(player.p.upgrades.includes(32) ? LAYER_UPGS.p[32].currently() : 1) },
effDisp: function(x) { return format(x)+"x" },
},
32: {
desc: "The upgrade to the left is stronger based on your Points.",
cost: new Decimal("1e5140"),
unl: function() { return player.e.upgrades.includes(33) },
currently: function() { return player.points.plus(1).log10().plus(1).root(16) },
effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" },
},
33: {
desc: "The above upgrade is 25% stronger.",
cost: new Decimal("1e5500"),
unl: function() { return player.e.upgrades.includes(33) },
},
}, },
b: { b: {
rows: 2, rows: 2,
@ -275,7 +298,7 @@ const LAYER_UPGS = {
desc: "Prestige Upgrade 3 is stronger based on your Generators.", desc: "Prestige Upgrade 3 is stronger based on your Generators.",
cost: new Decimal(15), cost: new Decimal(15),
unl: function() { return player.g.upgrades.includes(13) }, unl: function() { return player.g.upgrades.includes(13) },
currently: function() { return player.g.points.sqrt().plus(1) }, currently: function() { return player.g.points.sqrt().plus(1).times((player.e.upgrades.includes(32)) ? LAYER_UPGS.e[32].currently() : 1) },
effDisp: function(x) { return "^"+format(x) }, effDisp: function(x) { return "^"+format(x) },
}, },
21: { 21: {
@ -313,7 +336,7 @@ const LAYER_UPGS = {
}, },
}, },
e: { e: {
rows: 2, rows: 3,
cols: 5, cols: 5,
11: { 11: {
desc: "Boosters & Generators boost each other.", desc: "Boosters & Generators boost each other.",
@ -376,11 +399,45 @@ const LAYER_UPGS = {
unl: function() { return player.t.unl&&player.s.unl&&player.e.best.gte(1e60) }, unl: function() { return player.t.unl&&player.s.unl&&player.e.best.gte(1e60) },
currently: function() { currently: function() {
let ret = player.s.points.plus(player.t.points).div(32).plus(1); let ret = player.s.points.plus(player.t.points).div(32).plus(1);
if (ret.gte(2)) ret = ret.log(2).plus(1).min(ret); if (ret.gte(2)) ret = ret.log(2).plus(1).times(2).sqrt();
return ret; return ret;
}, },
effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" }, effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" },
}, },
31: {
desc: "Enhancers are stronger based on your Super-Boosters.",
cost: new Decimal(1e90),
unl: function() { return player.e.upgrades.includes(25)&&player.sb.unl },
currently: function() { return player.sb.points.pow(0.75).div(4).plus(1) },
effDisp: function(x) { return format(x.sub(1).times(100))+"% stronger" },
},
32: {
desc: "Generator Upgrade 5 is stronger based on your Enhance Points.",
cost: new Decimal(7.5e108),
unl: function() { return player.e.upgrades.includes(25)&&player.sb.unl },
currently: function() {
let ret = Decimal.pow(10, player.e.points.plus(1).log10().pow(0.085)).div(10).max(1);
return ret;
},
effDisp: function(x) { return format(x)+"x" },
},
33: {
desc: "Unlock 3 new Prestige Upgrades.",
cost: new Decimal(2.5e139),
unl: function() { return player.e.upgrades.includes(31)||player.e.upgrades.includes(32) },
},
34: {
desc: "You gain 1e40x as many Prestige Points.",
cost: new Decimal(1e152),
unl: function() { return player.e.upgrades.includes(31)&&player.e.upgrades.includes(32) },
},
35: {
desc: "Points boost Generator Power gain.",
cost: new Decimal(2e189),
unl: function() { return player.e.upgrades.includes(33)||player.e.upgrades.includes(34) },
currently: function() { return player.points.plus(1).pow(0.004) },
effDisp: function(x) { return format(x)+"x" },
},
}, },
t: { t: {
rows: 3, rows: 3,
@ -454,9 +511,9 @@ const LAYER_UPGS = {
}, },
34: { 34: {
desc: "Time Energy caps later and generates faster based on your non-free Time Capsules.", desc: "Time Energy caps later and generates faster based on your non-free Time Capsules.",
cost: new Decimal(25), cost: new Decimal(18),
unl: function() { return player.t.upgrades.includes(33)&&player.sb.unl&&player.sb.points.gte(7) }, unl: function() { return player.t.upgrades.includes(33)&&player.sb.unl },
currently: function() { return Decimal.pow(10, player.t.points.pow(1.1)) }, currently: function() { return Decimal.pow(10, player.t.points.pow(1.2)) },
effDisp: function(x) { return format(x)+"x" }, effDisp: function(x) { return format(x)+"x" },
}, },
}, },
@ -546,15 +603,15 @@ const LAYER_UPGS = {
currently: function() { currently: function() {
let ret = Decimal.pow(10, player.p.points.plus(1).log10().div(1e5).sqrt()); let ret = Decimal.pow(10, player.p.points.plus(1).log10().div(1e5).sqrt());
if (ret.gte(2.5)) ret = ret.log(2.5).plus(1.5).min(ret); if (ret.gte(2.5)) ret = ret.log(2.5).plus(1.5).min(ret);
return ret; return ret.max(1);
}, },
effDisp: function(x) { return format(x)+"x" }, effDisp: function(x) { return format(x)+"x" },
}, },
12: { 12: {
desc: "Super-Boosters are stronger based on your Generators.", desc: "Super-Boosters are stronger based on your Generators.",
cost: new Decimal(8), cost: new Decimal(4),
unl: function() { return player.sb.upgrades.includes(11) }, unl: function() { return player.sb.upgrades.includes(11) },
currently: function() { return player.g.points.div(10).pow(0.04) }, currently: function() { return player.g.points.div(10).pow(0.04).max(1) },
effDisp: function(x) { return format(x)+"x" }, effDisp: function(x) { return format(x)+"x" },
}, },
}, },
@ -608,7 +665,7 @@ function getLayerEffDesc(layer) {
return "which are generating "+format(eff.gain)+" Time Energy/sec, but with a limit of "+format(eff.limit)+" Time Energy" return "which are generating "+format(eff.gain)+" Time Energy/sec, but with a limit of "+format(eff.limit)+" Time Energy"
break; break;
case "sb": case "sb":
return "which are adding "+format(eff)+" to the Booster effect base and providing "+format(eff)+" free Boosters" return "which are multiplying the Booster effect base by "+format(eff)
break; break;
} }
} }
@ -624,6 +681,7 @@ function load() {
player.tab = "tree" player.tab = "tree"
checkForVars(); checkForVars();
convertToDecimal(); convertToDecimal();
versionCheck();
updateTemp(); updateTemp();
loadVue(); loadVue();
} }
@ -640,8 +698,8 @@ function exportSave() {
document.body.removeChild(el); document.body.removeChild(el);
} }
function importSave() { function importSave(imported=undefined) {
let imported = prompt("Paste your save here") if (imported===undefined) imported = prompt("Paste your save here")
try { try {
player = JSON.parse(atob(imported)) player = JSON.parse(atob(imported))
save() save()
@ -651,6 +709,26 @@ function importSave() {
} }
} }
function versionCheck() {
let setVersion = true
if (player.versionType===undefined||player.version===undefined) {
player.versionType = "alpha"
player.version = 0
}
if (player.versionType=="alpha") {
if (player.version<10&&player.sb.unl) {
if (confirm("The Super-Booster era has been rebalanced since the last time you were here, so... would you like to import a built-in save for where you should start at?")) importSave(SAVES.PRE_SUPER_BOOSTERS)
setVersion = false;
}
}
if (setVersion) {
player.versionType = getStartPlayer().versionType
player.version = getStartPlayer().version
}
}
function checkForVars() { function checkForVars() {
if (player.autosave===undefined) player.autosave = true; if (player.autosave===undefined) player.autosave = true;
if (player.b===undefined) player.b = getStartPlayer().b if (player.b===undefined) player.b = getStartPlayer().b
@ -667,6 +745,7 @@ function checkForVars() {
if (player.s.buildings[4] === undefined) player.s.buildings[4] = new Decimal(0); if (player.s.buildings[4] === undefined) player.s.buildings[4] = new Decimal(0);
if (player.s.buildings[5] === undefined) player.s.buildings[5] = new Decimal(0); if (player.s.buildings[5] === undefined) player.s.buildings[5] = new Decimal(0);
if (player.sb === undefined) player.sb = getStartPlayer().sb if (player.sb === undefined) player.sb = getStartPlayer().sb
if (player.timePlayed === undefined) player.timePlayed = 0
} }
function convertToDecimal() { function convertToDecimal() {
@ -710,6 +789,7 @@ function commaFormat(num, precision) {
function format(decimal, precision=3) { function format(decimal, precision=3) {
decimal = new Decimal(decimal) decimal = new Decimal(decimal)
if (decimal.eq(1/0)) return "Infinity"
if (decimal.gte("eee1000")) return exponentialFormat(decimal, precision) if (decimal.gte("eee1000")) return exponentialFormat(decimal, precision)
else if (decimal.gte("ee1000")) return "ee"+format(decimal.log10().log10()) else if (decimal.gte("ee1000")) return "ee"+format(decimal.log10().log10())
else if (decimal.gte("1e1000")) return decimal.div(Decimal.pow(10, decimal.log10().floor())).toStringWithDecimalPlaces(3)+"e"+format(decimal.log10().floor()) else if (decimal.gte("1e1000")) return decimal.div(Decimal.pow(10, decimal.log10().floor())).toStringWithDecimalPlaces(3)+"e"+format(decimal.log10().floor())
@ -768,11 +848,13 @@ function getLayerGainMult(layer) {
case "p": case "p":
if (player.p.upgrades.includes(21)) mult = mult.times(2) if (player.p.upgrades.includes(21)) mult = mult.times(2)
if (player.p.upgrades.includes(23)) mult = mult.times(LAYER_UPGS.p[23].currently()) if (player.p.upgrades.includes(23)) mult = mult.times(LAYER_UPGS.p[23].currently())
if (player.p.upgrades.includes(31)) mult = mult.times(LAYER_UPGS.p[31].currently())
if (player.b.upgrades.includes(11)) mult = mult.times(LAYER_UPGS.b[11].currently()) if (player.b.upgrades.includes(11)) mult = mult.times(LAYER_UPGS.b[11].currently())
if (player.g.upgrades.includes(11)) mult = mult.times(LAYER_UPGS.g[11].currently()) if (player.g.upgrades.includes(11)) mult = mult.times(LAYER_UPGS.g[11].currently())
if (player.e.unl) mult = mult.times(tmp.enhEff) if (player.e.unl) mult = mult.times(tmp.enhEff)
if (player.e.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.e[12].currently()) if (player.e.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.e[12].currently())
if (player.e.upgrades.includes(13)) mult = mult.times(1e10) if (player.e.upgrades.includes(13)) mult = mult.times(1e10)
if (player.e.upgrades.includes(34)) mult = mult.times(1e40)
if (player.t.unl) mult = mult.times(tmp.timeEff) if (player.t.unl) mult = mult.times(tmp.timeEff)
if (player.s.unl && tmp.spaceBuildEff) mult = mult.times(tmp.spaceBuildEff[1]) if (player.s.unl && tmp.spaceBuildEff) mult = mult.times(tmp.spaceBuildEff[1])
break; break;
@ -870,7 +952,7 @@ function rowReset(row, layer) {
player.b.best = new Decimal(prev.b.best) player.b.best = new Decimal(prev.b.best)
player.g.best = new Decimal(prev.g.best) player.g.best = new Decimal(prev.g.best)
} }
} else if (player.sb.best.gte(7)&&layer=="sb") { } else if (player.sb.best.gte(4)&&layer=="sb") {
player.b.best = new Decimal(prev.b.best) player.b.best = new Decimal(prev.b.best)
player.g.best = new Decimal(prev.g.best) player.g.best = new Decimal(prev.g.best)
} }
@ -977,14 +1059,13 @@ function addToBoosterBase() {
if (player.e.unl) toAdd = toAdd.plus(tmp.enhEff2) if (player.e.unl) toAdd = toAdd.plus(tmp.enhEff2)
if (player.e.upgrades.includes(11)) toAdd = toAdd.plus(LAYER_UPGS.e[11].currently().b) if (player.e.upgrades.includes(11)) toAdd = toAdd.plus(LAYER_UPGS.e[11].currently().b)
if (player.s.unl && tmp.spaceBuildEff) toAdd = toAdd.plus(tmp.spaceBuildEff[2]) if (player.s.unl && tmp.spaceBuildEff) toAdd = toAdd.plus(tmp.spaceBuildEff[2])
if (player.sb.unl) toAdd = toAdd.plus(tmp.layerEffs.sb) if (player.sb.unl) toAdd = toAdd.times(tmp.layerEffs.sb)
return toAdd return toAdd
} }
function getFreeBoosters() { function getFreeBoosters() {
let free = new Decimal(0) let free = new Decimal(0)
if (player.t.upgrades.includes(24)) free = free.plus(18) if (player.t.upgrades.includes(24)) free = free.plus(18)
if (player.sb.unl) free = free.plus(tmp.layerEffs.sb)
return free return free
} }
@ -1002,6 +1083,7 @@ function getGenPowerGainMult() {
let mult = new Decimal(1) let mult = new Decimal(1)
if (player.g.upgrades.includes(21)) mult = mult.times(LAYER_UPGS.g[21].currently()) if (player.g.upgrades.includes(21)) mult = mult.times(LAYER_UPGS.g[21].currently())
if (player.g.upgrades.includes(25)) mult = mult.times(LAYER_UPGS.g[25].currently()) if (player.g.upgrades.includes(25)) mult = mult.times(LAYER_UPGS.g[25].currently())
if (player.e.upgrades.includes(35)) mult = mult.times(LAYER_UPGS.e[35].currently())
if (player.s.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.s[12].currently()) if (player.s.upgrades.includes(12)) mult = mult.times(LAYER_UPGS.s[12].currently())
if (player.s.upgrades.includes(13)) mult = mult.times(LAYER_UPGS.s[13].currently()) if (player.s.upgrades.includes(13)) mult = mult.times(LAYER_UPGS.s[13].currently())
return mult return mult
@ -1046,6 +1128,7 @@ function getEnhancerCost() {
function getEnhancerPow() { function getEnhancerPow() {
let pow = new Decimal(1) let pow = new Decimal(1)
if (player.e.upgrades.includes(25)) pow = pow.times(LAYER_UPGS.e[25].currently()) if (player.e.upgrades.includes(25)) pow = pow.times(LAYER_UPGS.e[25].currently())
if (player.e.upgrades.includes(31)) pow = pow.times(LAYER_UPGS.e[31].currently())
return pow return pow
} }
@ -1240,6 +1323,7 @@ function getSuperBoosterPow() {
} }
function gameLoop(diff) { function gameLoop(diff) {
player.timePlayed += diff
if (player.p.upgrades.includes(11)) player.points = player.points.plus(tmp.pointGen.times(diff)) if (player.p.upgrades.includes(11)) player.points = player.points.plus(tmp.pointGen.times(diff))
if (player.g.unl) player.g.power = player.g.power.plus(tmp.layerEffs.g.times(diff)) if (player.g.unl) player.g.power = player.g.power.plus(tmp.layerEffs.g.times(diff))
if (player.g.best.gte(10)) player.p.points = player.p.points.plus(tmp.resetGain.p.times(diff)) if (player.g.best.gte(10)) player.p.points = player.p.points.plus(tmp.resetGain.p.times(diff))

3
js/saves.js Normal file
View file

@ -0,0 +1,3 @@
const SAVES = {
PRE_SUPER_BOOSTERS: "eyJ0YWIiOiJvcHRpb25zIiwidGltZSI6MTU5ODE5ODI4NjQ4OCwiYXV0b3NhdmUiOmZhbHNlLCJwb2ludHMiOiIzLjM2MDE5MjY3OTg3MzQ4M2U0MTQzIiwicCI6eyJ1bmwiOnRydWUsInBvaW50cyI6IjIuMTIyNTcyOTgwNzY0MzE0NmUyNzYzIiwidXBncmFkZXMiOlsxMSwxMiwyMSwyMiwxMywyM10sImJlc3QiOiI1MTAyMjYwMDYifSwiYiI6eyJ1bmwiOnRydWUsInBvaW50cyI6IjE4MCIsInVwZ3JhZGVzIjpbMTEsMTIsMTMsMjIsMjEsMjNdLCJiZXN0IjoiMTgwIiwiYXV0byI6dHJ1ZX0sImciOnsidW5sIjp0cnVlLCJwb2ludHMiOiIxMzkiLCJwb3dlciI6IjIuMzQzMTU4NzU3MzI3NDg1ZTMzOSIsInVwZ3JhZGVzIjpbMTEsMTIsMTMsMTQsMTUsMjIsMjEsMjMsMjQsMjVdLCJiZXN0IjoiMTM5IiwiYXV0byI6dHJ1ZX0sImUiOnsidW5sIjp0cnVlLCJwb2ludHMiOiIxLjcwMTUwMzUzMzA1ODEwNzZlODYiLCJiZXN0IjoiMS43MDE1MDM1MzMwNTgxMDc2ZTg2IiwiZW5oYW5jZXJzIjoiMzMiLCJ1cGdyYWRlcyI6WzExLDEyLDEzLDE0LDE1LDIxLDIzLDIyLDI0LDI1XSwib3JkZXIiOjB9LCJ0Ijp7InVubCI6dHJ1ZSwib3JkZXIiOjAsInBvaW50cyI6IjE2IiwiYmVzdCI6IjE2IiwiZW5lcmd5IjoiMS4wODAzMzg2NzQwOTI4NzZlOTQiLCJleHRDYXBzdWxlcyI6IjI2IiwidXBncmFkZXMiOlsxMSwxMiwxMywxNCwyMSwyMiwyMywyNCwzMSwzMiwzM119LCJzIjp7InVubCI6dHJ1ZSwib3JkZXIiOjAsInBvaW50cyI6IjE2IiwiYmVzdCI6IjE2Iiwic3BlbnQiOiI2OCIsImJ1aWxkaW5ncyI6eyIxIjoiMTciLCIyIjoiMjYiLCIzIjoiMTMiLCI0IjoiOCIsIjUiOiI0In0sInVwZ3JhZGVzIjpbMTEsMTIsMTMsMTQsMjEsMjMsMjQsMzEsMjIsMzIsMzMsMzRdfSwic2IiOnsidW5sIjpmYWxzZSwib3JkZXIiOjAsInBvaW50cyI6IjAiLCJiZXN0IjoiMCIsInVwZ3JhZGVzIjpbXX0sInZlcnNpb25UeXBlIjoiYWxwaGEiLCJ2ZXJzaW9uIjoxMH0",
}