logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: 98582dcbfd5dfcd101278ca66ee23cb579fbfd67453bf25b5cae5e861d15f7bc Type SC

Block: cad186bc227b4fd33b4100f17cff2e910d59ad80659dfafd091928872c7ee4a6 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 5000
SCID string variables
key value
C 0d0a2f2f2047686f73742065786368616e676520696e746572666163650d0a2f2f2055736520617420796f7572206f776e207269736b0d0a2f2f20466f72206d6f726520696e666f2076697369743a2047686f73742e74726164696e670d0a0d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a0931302053544f524528226f776e6572222c205349474e45522829290d0a2020202032302053544f52452822666565546f222c205349474e45522829290d0a093330202052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a46756e6374696f6e204465706f7369745f6465726f28292055696e7436340d0a2020202031302044494d206465726f5f726573657276652061732055696e7436340d0a2020202033302049462045584953545328414444524553535f535452494e47285349474e455228292929205448454e20474f544f2035300d0a2020202034302053544f524528414444524553535f535452494e47285349474e45522829292c30290d0a202020203530204c4554206465726f5f72657365727665203d204c4f414428414444524553535f535452494e47285349474e4552282929290d0a2020202036302053544f524528414444524553535f535452494e47285349474e45522829292c206465726f5f72657365727665202b204445524f56414c55452829290d0a2020202037302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204164644c69717569646974792861737365745f6164647265737320537472696e672c206d696e5f6c69717569646974792055696e743634292055696e7436340d0a2020202030312044494d20746f74616c5f6c69717569646974792c206465726f5f726573657276652c2061737365745f726573657276652c2061737365745f616d6f756e742c206c69717569646974795f6d696e7465642c206465726f5f6465706f73697465642c2061737365745f6465706f73697465642061732055696e7436340d0a202020203032204c4554206465726f5f6465706f7369746564203d206765745f6465726f5f6465706f736974656428290d0a202020203033204c45542061737365745f6465706f7369746564203d20415353455456414c55452861737365745f61646472657373290d0a202020203130204946202861737365745f6465706f7369746564203e20302026206465726f5f6465706f7369746564203e20302029205448454e20474f544f2033300d0a20202020323020474f544f203636360d0a202020203330204c455420746f74616c5f6c6971756964697479203d20206765745f737570706c795f7065725f61737365742861737365745f6164647265737329200d0a202020202f2f205061697220616c7265616479206578697374730d0a20202020343020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f20343120454c534520474f544f2036300d0a20202020202020203431204946206d696e5f6c6971756964697479203e2030205448454e20474f544f2034330d0a2020202020202020343220474f544f2036363620200d0a20202020202020203433204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329200d0a20202020202020203434204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f616464726573732920202020200d0a20202020202020203435206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020202020203436204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f6164647265737329202f2f204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202020202020203437204c45542061737365745f616d6f756e74203d2020206465726f5f6465706f7369746564202a2061737365745f72657365727665202f206465726f5f72657365727665202b20310d0a20202020202020203438204c4554206c69717569646974795f6d696e746564203d206465726f5f6465706f7369746564202a20746f74616c5f6c6971756964697479202f206465726f5f726573657276650d0a202020202020202034392049462061737365745f6465706f7369746564203e3d2061737365745f616d6f756e742026206c69717569646974795f6d696e746564203e3d206d696e5f6c6971756964697479205448454e20474f544f2035310d0a2020202020202020353020474f544f203636360d0a2020202020202020353120696e6372656173655f6c69717569646974795f6279285349474e455228292c206c69717569646974795f6d696e7465642c2061737365745f6164647265737329200d0a20202020202020203532207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a202020202020202035332049462061737365745f6465706f7369746564203d3d2061737365745f616d6f756e74205448454e20474f544f2035350d0a20202020202020202f2f2052657475726e20616e792072656d696e64696e67206173736574730d0a202020202020202035342053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f6465706f7369746564202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a20202020202020202f2f20496e63726561736520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203535207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f6465706f73697465642c2061737365745f61646472657373290d0a20202020202020202f2f20496e637265617365207468652061737365742072657365727665207265636f72640d0a20202020202020203536207365745f61737365745f726573657276652861737365745f72657365727665202b2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020202020202035372053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c2020286465726f5f72657365727665202b206465726f5f6465706f736974656429202a202861737365745f72657365727665202b2061737365745f616d6f756e7429290d0a20202020202020202f2f20546865207573657273206465726f206465706f73697420636f756e7420686173206265656e20757365642c2073657420697420746f207a65726f0d0a202020202020202035382072657365745f6465726f5f6465706f736974656428290d0a20202020202020202f2f2052657475726e20677261636566756c6c790d0a2020202020202020353920474f544f2037300d0a202020202f2f20656c73650d0a202020202f2f204372656174696e67207061697220200d0a202020203630204946206465726f5f6465706f7369746564203e3d2031303030205448454e20474f544f2036320d0a2020202020202020363120474f544f203636360d0a20202020202020202f2f20496e697469616c697a65207468652061737365742072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203632207365745f61737365745f726573657276652861737365745f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036332044494d20696e697469616c5f6c69717569646974792061732055696e7436340d0a20202020202020203634204c455420696e697469616c5f6c6971756964697479203d206465726f5f6465706f73697465640d0a20202020202020203635207365745f737570706c795f7065725f617373657428696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a20202020202020202f2f20496e697469616c697a6520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203636207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036372053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c202861737365745f6465706f736974656429202a20286465726f5f6465706f736974656429290d0a2020202020202020363820696e6372656173655f6c69717569646974795f6279285349474e455228292c20696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a20202020202020202f2f20546865207573657273206465726f206465706f73697420636f756e7420686173206265656e20757365642c2073657420697420746f207a65726f0d0a202020202020202036392072657365745f6465726f5f6465706f736974656428290d0a2020202037302052455455524e20300d0a0d0a202020203636362052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2052656d6f76654c697175696469747928616d6f756e742055696e7436342c206d696e5f6465726f2055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203031202044494d20746f74616c5f6c69717569646974792c2061737365745f726573657276652c206465726f5f616d6f756e742c2061737365745f616d6f756e742061732055696e7436340d0a2020202031302020494620616d6f756e74203e203020202620286d696e5f6465726f203e20302026206d696e5f617373657473203e2030292026204765745f6c6971756964697479285349474e455228292c2061737365745f6164647265737329203e3d20616d6f756e74205448454e20474f544f2033300d0a2020202032302020474f544f203636360d0a20202020333020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a2020202034302020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f2036300d0a2020202035302020474f544f203636360d0a20202020363020204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a20202020373020204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a20202020383020206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020393020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f6164647265737329202f2f204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202031303020204c4554206465726f5f616d6f756e7420203d20616d6f756e74202a206465726f5f7265736572766520202f20746f74616c5f6c69717569646974790d0a20202031313020204c45542061737365745f616d6f756e74203d20616d6f756e74202a2061737365745f72657365727665202f20746f74616c5f6c69717569646974790d0a20202031323020204946206465726f5f616d6f756e74203e3d206d696e5f6465726f20262061737365745f616d6f756e74203e3d206d696e5f617373657473205448454e20474f544f203134300d0a2020203133302020474f544f203636360d0a202020313430202064656372656173655f6c69717569646974795f6279285349474e455228292c20616d6f756e742c2061737365745f61646472657373290d0a20202031353020207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202d20616d6f756e742c2061737365745f61646472657373290d0a20202031363020207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202d206465726f5f616d6f756e742c2061737365745f61646472657373290d0a20202031373020207365745f61737365745f726573657276652861737365745f72657365727665202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020313830202053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c20286465726f5f72657365727665202d206465726f5f616d6f756e7429202a202861737365745f72657365727665202d2061737365745f616d6f756e742920290d0a202020313930202053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f616d6f756e74290d0a202020323030202053454e445f41535345545f544f5f41444452455353285349474e455228292c61737365745f616d6f756e742c2061737365745f61646472657373290d0a202020323130202052455455524e20300d0a0d0a202020363636202052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20676574496e707574507269636528696e7075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d20696e7075745f616d6f756e745f776974685f6665652c206e756d657261746f722c2064656e6f6d696e61746f722061732055696e7436340d0a202020203430204c455420696e7075745f616d6f756e745f776974685f666565203d20696e7075745f616d6f756e74202a203939370d0a202020203530204c4554206e756d657261746f72203d20696e7075745f616d6f756e745f776974685f666565202a206f75747075745f726573657276650d0a202020203630204c45542064656e6f6d696e61746f72203d2028696e7075745f72657365727665202a203130303029202b20696e7075745f616d6f756e745f776974685f6665650d0a2020202037302052455455524e206e756d657261746f72202f2064656e6f6d696e61746f720d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765744f75747075745072696365286f75747075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206e756d657261746f722c2064656e6f6d696e61746f722061732055696e7436340d0a202020203430204c4554206e756d657261746f72203d20696e7075745f72657365727665202a206f75747075745f616d6f756e74202a20313030300d0a202020203530204c45542064656e6f6d696e61746f72203d20286f75747075745f72657365727665202d206f75747075745f616d6f756e7429202a203939370d0a2020202036302052455455524e206e756d657261746f72202f2064656e6f6d696e61746f72202b20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206465726f546f4173736574496e707574286465726f5f736f6c642055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302049462020286465726f5f736f6c64203e20302026206d696e5f617373657473203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206173736574735f626f756768742c2061737365745f726573657276652c206465726f5f726573657276652061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a202020203630204c4554206173736574735f626f75676874203d20676574496e7075745072696365286465726f5f736f6c642c206465726f5f726573657276652c2061737365745f72657365727665290d0a202020203730204946206173736574735f626f75676874203e3d206d696e5f617373657473205448454e20474f544f2039300d0a2020202038302050414e49430d0a2020202039302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204465726f546f417373657453776170496e7075742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c20312c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204465726f546f417373657453776170496e7075744d696e286d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c206d696e5f6173736574732c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a0d0a46756e6374696f6e206465726f546f41737365744f7574707574286173736574735f626f756768742055696e7436342c206d61785f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f626f75676874203e20302026206d61785f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f736f6c642c206465726f5f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f736f6c64203d206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c2061737365745f72657365727665290d0a202020203630204946206465726f5f736f6c64203e206d61785f6465726f205448454e2050414e49430d0a202020203730204c4554206465726f5f726566756e64203d206d61785f6465726f202d206465726f5f736f6c640d0a202020203830204946206465726f5f726566756e64203d3d2030205448454e20474f544f203130300d0a2020202039302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f726566756e64290d0a2020203130302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203133302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204465726f546f4173736574537761704f7574707574286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f41737365744f7574707574286173736574735f626f756768742c204445524f56414c554528292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206173736574546f4465726f496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f736f6c64203e20302026206d696e5f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f626f756768740d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f626f75676874203d20676574496e7075745072696365286173736574735f736f6c642c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020203630204946206465726f5f626f75676874203e3d206d696e5f6465726f205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c6465726f5f626f75676874290d0a202020203930207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204173736574546f4465726f53776170496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f496e70757428415353455456414c55452861737365745f61646472657373292c206d696e5f6465726f2c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a0d0a46756e6374696f6e206173736574546f4465726f4f7574707574286465726f5f626f756768742055696e7436342c206d61785f6173736574732055696e743634202c20646561646c696e652055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206173736574735f736f6c642c2061737365745f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206173736574735f736f6c64203d206765744f75747075745072696365286465726f5f626f756768742c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020202f2f206173736574735f736f6c6420697320616c77617973203e207a65726f0d0a202020203630204946206d61785f617373657473203e3d206173736574735f736f6c64205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f626f75676874290d0a202020203930204c45542061737365745f726566756e64203d206d61785f617373657473202d206173736574735f736f6c640d0a2020203130302049462061737365745f726566756e64203d3d2030205448454e20474f544f203132300d0a2020203131302053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f726566756e642c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313330207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204173736574546f4465726f537761704f7574707574286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f4f7574707574286465726f5f626f756768742c20415353455456414c55452861737365745f61646472657373292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744465726f546f4173736574496e7075745072696365286465726f5f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286465726f5f736f6c642c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744465726f546f41737365744f75747075745072696365286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744173736574546f4465726f496e7075745072696365286173736574735f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286173736574735f736f6c642c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744173736574546f4465726f4f75747075745072696365286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286465726f5f626f756768742c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f737570706c795f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f5245284845582861737365745f61646472657373292b223a424f4f222c20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f737570706c795f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620455849535453284845582861737365745f61646472657373292b223a424f4f2229205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f4144284845582861737365745f61646472657373292b223a424f4f22290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f6465726f5f726573657276655f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f5245284845582861737365745f61646472657373292b223a4445524f222c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f4144284845582861737365745f61646472657373292b223a4445524f22290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f61737365745f7265736572766528616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f5245284845582861737365745f61646472657373292c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f61737365745f726573657276652861737365745f6164647265737320537472696e67292055696e7436340d0a2020202032302052455455524e204c4f4144284845582861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20696e6372656173655f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a20202020313020494620455849535453284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f616464726573732929205448454e20474f544f2034300d0a2020202032302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c20616d6f756e74290d0a2020202033302052455455524e0d0a2020202034302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c204765745f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202b20616d6f756e74290d0a2020202035302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2064656372656173655f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c204765745f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202d20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765745f6c69717569646974792870726f76696465725f6164647265737320537472696e672c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f4144284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2072657365745f6465726f5f6465706f736974656428290d0a2020202031302053544f524528414444524553535f535452494e47285349474e45522829292c30290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f6465726f5f6465706f736974656428292055696e7436340d0a2020202031302049462045584953545328414444524553535f535452494e47285349474e455228292929205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f414428414444524553535f535452494e47285349474e4552282929290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206d696e744665652872657365727665302055696e7436342c2072657365727665312055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302044494d20666565546f20617320537472696e670d0a2020202031312044494d206b4c6173742061732055696e7436340d0a202020203230204c455420666565546f203d204c4f41442822666565546f2229200d0a202020202f2f2047657420746865206c617374206b20666f72207468652061737365740d0a202020203330204c4554206b4c617374203d204c4f4144284845582861737365745f61646472657373292b223a6b4c61737422290d0a202020203430204946206b4c61737420213d2030205448454e20474f544f2035300d0a202020202020202034312052455455524e20300d0a2020202035302044494d20726f6f744b2c20726f6f744b4c6173742061732055696e7436340d0a202020203630204c455420726f6f744b203d2073717274287265736572766530202a207265736572766531290d0a202020203730204c455420726f6f744b4c617374203d2073717274286b4c617374290d0a20202020383020494620726f6f744b203e20726f6f744b4c61737420474f544f2039300d0a202020202020202038312052455455524e20300d0a2020202039302044494d206e756d657261746f722c2064656e6f6d696e61746f722c20737570706c792c206c69717569646974795f6d696e7465642061732055696e7436340d0a202020313030204c455420737570706c79203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a202020313130204c4554206e756d657261746f72203d20737570706c792a28726f6f744b2d726f6f744b4c617374290d0a202020313230204c45542064656e6f6d696e61746f72203d20726f6f744b202a2035202b20726f6f744b4c6173740d0a202020313330204c4554206c69717569646974795f6d696e746564203d206e756d657261746f72202f2064656e6f6d696e61746f720d0a202020313430204946206c69717569646974795f6d696e746564203e2030205448454e20474f544f2031343120454c534520474f544f203135300d0a2020202020202031343120696e6372656173655f6c69717569646974795f627928666565546f2c206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a20202020202020313432207365745f737570706c795f7065725f617373657428737570706c79202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a2020203135302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207371727428792055696e743634292055696e7436340d0a2020202031302049462079203e203320474f544f20323020454c534520474f544f2039300d0a2020202032302044494d20782c7a2061732055696e7436340d0a202020203330204c4554207a203d2079200d0a202020203430204c45542078203d2079202f2032202b20310d0a2020202035302049462078203c207a205448454e20474f544f20363020454c534520474f544f203130300d0a202020203630204c4554207a203d20780d0a202020203730204c45542078203d202879202f2078202b207829202f20320d0a20202020383020474f544f2035300d0a202020203930204946207920213d2030205448454e2052455455524e203120454c53452052455455524e20300d0a2020203130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20557064617465436f646528636f646520537472696e67292055696e743634200d0a20202020313020204946204c4f414428226f776e65722229203d3d205349474e45522829205448454e20474f544f203330200d0a202020203230202052455455524e20310d0a20202020333020205550444154455f53435f434f444528636f6465290d0a202020203430202052455455524e20300d0a456e642046756e6374696f6e0d0a
dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf 5000
feeTo 030327fad2bd3f0f7a6763de46d4cf5c3ea07e83164a6140dd92d4d034378e5901
owner 030327fad2bd3f0f7a6763de46d4cf5c3ea07e83164a6140dd92d4d034378e5901
SCID uint64 variables
key value
built BLID : f8901a1d10d913763e0072884b4f641edf098174b5f0d937508fa6286e4f35f1
Tx RootHash: 0af8229e2a47b9d61a54f7eafa2f65f15b3b50fda14a1703eb539fe5749a1409 built height : 3381294
Timestamp: 1709500629446 Timestamp [UTC]: 2024-03-03 21:17:09 Age [y:d:h:m:s]: 13406:1:10.37
Block: 3381295 Fee: 0.22246 Tx size: 16.075 kB
Tx version: 1 No of confirmations: 2548132 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.22246 Deposited to SC 0.00000
Sender : dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf
address
dero1qypsxfl6627n7rm6va3au3k5eawragr7svty5c2qmkfdf5p5x789jqg8s4trf
dero1qyvzukn0dd6hw0fzeuqkyggdfcmuyn683aulhj3xu8rwe2ur3l5cgqgfw6uvj
SC Balance: 0.00000 DERO
SC CODE:
  
// Ghost exchange interface
// Use at your own risk
// For more info visit: Ghost.trading

Function Initialize() Uint64
	10 STORE("owner", SIGNER())
    20 STORE("feeTo", SIGNER())
	30  RETURN 0
End Function 

Function Deposit_dero() Uint64
    10 DIM dero_reserve as Uint64
    30 IF EXISTS(ADDRESS_STRING(SIGNER())) THEN GOTO 50
    40 STORE(ADDRESS_STRING(SIGNER()),0)
    50 LET dero_reserve = LOAD(ADDRESS_STRING(SIGNER()))
    60 STORE(ADDRESS_STRING(SIGNER()), dero_reserve + DEROVALUE())
    70 RETURN 0
End Function

Function AddLiquidity(asset_address String, min_liquidity Uint64) Uint64
    01 DIM total_liquidity, dero_reserve, asset_reserve, asset_amount, liquidity_minted, dero_deposited, asset_deposited as Uint64
    02 LET dero_deposited = get_dero_deposited()
    03 LET asset_deposited = ASSETVALUE(asset_address)
    10 IF (asset_deposited > 0 & dero_deposited > 0 ) THEN GOTO 30
    20 GOTO 666
    30 LET total_liquidity =  get_supply_per_asset(asset_address) 
    // Pair already exists
    40 IF total_liquidity > 0 THEN GOTO 41 ELSE GOTO 60
        41 IF min_liquidity > 0 THEN GOTO 43
        42 GOTO 666  
        43 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 
        44 LET asset_reserve = get_asset_reserve(asset_address)     
        45 mintFee(dero_reserve, asset_reserve, asset_address)
        46 LET total_liquidity = get_supply_per_asset(asset_address) // Must be defined again since totalSupply can update in mintFee
        47 LET asset_amount =   dero_deposited * asset_reserve / dero_reserve + 1
        48 LET liquidity_minted = dero_deposited * total_liquidity / dero_reserve
        49 IF asset_deposited >= asset_amount & liquidity_minted >= min_liquidity THEN GOTO 51
        50 GOTO 666
        51 increase_liquidity_by(SIGNER(), liquidity_minted, asset_address) 
        52 set_supply_per_asset(total_liquidity + liquidity_minted, asset_address)
        53 IF asset_deposited == asset_amount THEN GOTO 55
        // Return any reminding assets
        54 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_deposited - asset_amount, asset_address)
        // Increase the dero reserve record for this asset
        55 set_dero_reserve_per_asset(dero_reserve + dero_deposited, asset_address)
        // Increase the asset reserve record
        56 set_asset_reserve(asset_reserve + asset_amount, asset_address)
        57 STORE(HEX(asset_address)+":kLast",  (dero_reserve + dero_deposited) * (asset_reserve + asset_amount))
        // The users dero deposit count has been used, set it to zero
        58 reset_dero_deposited()
        // Return gracefully
        59 GOTO 70
    // else
    // Creating pair  
    60 IF dero_deposited >= 1000 THEN GOTO 62
        61 GOTO 666
        // Initialize the asset reserve record for this asset
        62 set_asset_reserve(asset_deposited, asset_address)
        63 DIM initial_liquidity as Uint64
        64 LET initial_liquidity = dero_deposited
        65 set_supply_per_asset(initial_liquidity, asset_address)
        // Initialize the dero reserve record for this asset
        66 set_dero_reserve_per_asset(dero_deposited, asset_address)
        67 STORE(HEX(asset_address)+":kLast", (asset_deposited) * (dero_deposited))
        68 increase_liquidity_by(SIGNER(), initial_liquidity, asset_address)
        // The users dero deposit count has been used, set it to zero
        69 reset_dero_deposited()
    70 RETURN 0

    666 RETURN 1
End Function

Function RemoveLiquidity(amount Uint64, min_dero Uint64, min_assets Uint64, asset_address String) Uint64
    01  DIM total_liquidity, asset_reserve, dero_amount, asset_amount as Uint64
    10  IF amount > 0  & (min_dero > 0 & min_assets > 0) & Get_liquidity(SIGNER(), asset_address) >= amount THEN GOTO 30
    20  GOTO 666
    30  LET total_liquidity = get_supply_per_asset(asset_address)
    40  IF total_liquidity > 0 THEN GOTO 60
    50  GOTO 666
    60  LET asset_reserve = get_asset_reserve(asset_address)
    70  LET dero_reserve = get_dero_reserve_per_asset(asset_address)
    80  mintFee(dero_reserve, asset_reserve, asset_address)
    90  LET total_liquidity = get_supply_per_asset(asset_address) // Must be defined again since totalSupply can update in mintFee
   100  LET dero_amount  = amount * dero_reserve  / total_liquidity
   110  LET asset_amount = amount * asset_reserve / total_liquidity
   120  IF dero_amount >= min_dero & asset_amount >= min_assets THEN GOTO 140
   130  GOTO 666
   140  decrease_liquidity_by(SIGNER(), amount, asset_address)
   150  set_supply_per_asset(total_liquidity - amount, asset_address)
   160  set_dero_reserve_per_asset(dero_reserve - dero_amount, asset_address)
   170  set_asset_reserve(asset_reserve - asset_amount, asset_address)
   180  STORE(HEX(asset_address)+":kLast", (dero_reserve - dero_amount) * (asset_reserve - asset_amount) )
   190  SEND_DERO_TO_ADDRESS(SIGNER(), dero_amount)
   200  SEND_ASSET_TO_ADDRESS(SIGNER(),asset_amount, asset_address)
   210  RETURN 0

   666  RETURN 1
End Function

Function getInputPrice(input_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64
    10 IF input_reserve > 0 & output_reserve > 0 THEN GOTO 30
    20 PANIC
    30 DIM input_amount_with_fee, numerator, denominator as Uint64
    40 LET input_amount_with_fee = input_amount * 997
    50 LET numerator = input_amount_with_fee * output_reserve
    60 LET denominator = (input_reserve * 1000) + input_amount_with_fee
    70 RETURN numerator / denominator
End Function

Function getOutputPrice(output_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64
    10 IF input_reserve > 0 & output_reserve > 0 THEN GOTO 30
    20 PANIC
    30 DIM numerator, denominator as Uint64
    40 LET numerator = input_reserve * output_amount * 1000
    50 LET denominator = (output_reserve - output_amount) * 997
    60 RETURN numerator / denominator + 1
End Function

Function deroToAssetInput(dero_sold Uint64, min_assets Uint64, asset_address String) Uint64
    10 IF  (dero_sold > 0 & min_assets > 0) THEN GOTO 30
    20 PANIC
    30 DIM assets_bought, asset_reserve, dero_reserve as Uint64
    40 LET asset_reserve = get_asset_reserve(asset_address)
    50 LET dero_reserve = get_dero_reserve_per_asset(asset_address)
    60 LET assets_bought = getInputPrice(dero_sold, dero_reserve, asset_reserve)
    70 IF assets_bought >= min_assets THEN GOTO 90
    80 PANIC
    90 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, asset_address)
   100 set_asset_reserve(asset_reserve - assets_bought, asset_address)
   110 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address)
   120 RETURN 0
End Function

Function DeroToAssetSwapInput(asset_address String) Uint64
    10 RETURN deroToAssetInput(DEROVALUE(), 1, asset_address)
End Function

Function DeroToAssetSwapInputMin(min_assets Uint64, asset_address String) Uint64
    10 RETURN deroToAssetInput(DEROVALUE(), min_assets, asset_address)
End Function


Function deroToAssetOutput(assets_bought Uint64, max_dero Uint64, asset_address String) Uint64
    10 IF (assets_bought > 0 & max_dero > 0) THEN GOTO 30
    20 PANIC
    30 DIM asset_reserve, dero_sold, dero_refund as Uint64
    40 LET asset_reserve = get_asset_reserve(asset_address)
    50 LET dero_sold = getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), asset_reserve)
    60 IF dero_sold > max_dero THEN PANIC
    70 LET dero_refund = max_dero - dero_sold
    80 IF dero_refund == 0 THEN GOTO 100
    90 SEND_DERO_TO_ADDRESS(SIGNER(), dero_refund)
   100 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, asset_address)
   110 set_asset_reserve(asset_reserve - assets_bought, asset_address)
   120 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address)
   130 RETURN 0
End Function

Function DeroToAssetSwapOutput(assets_bought Uint64, asset_address String) Uint64
    10 RETURN deroToAssetOutput(assets_bought, DEROVALUE(), asset_address)
End Function

Function assetToDeroInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64
    10 IF (assets_sold > 0 & min_dero > 0) THEN GOTO 30
    20 PANIC
    30 DIM asset_reserve, dero_bought
    40 LET asset_reserve = get_asset_reserve(asset_address)
    50 LET dero_bought = getInputPrice(assets_sold, asset_reserve, get_dero_reserve_per_asset(asset_address))
    60 IF dero_bought >= min_dero THEN GOTO 80
    70 PANIC
    80 SEND_DERO_TO_ADDRESS(SIGNER(),dero_bought)
    90 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address)
   100 set_asset_reserve(asset_reserve + assets_sold, asset_address)
   110 RETURN 0
End Function

Function AssetToDeroSwapInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64
    10 RETURN assetToDeroInput(ASSETVALUE(asset_address), min_dero, asset_address)
End Function


Function assetToDeroOutput(dero_bought Uint64, max_assets Uint64 , deadline Uint64, asset_address String) Uint64
    10 IF  dero_bought > 0 THEN GOTO 30
    20 PANIC
    30 DIM asset_reserve, assets_sold, asset_refund as Uint64
    40 LET asset_reserve = get_asset_reserve(asset_address)
    50 LET assets_sold = getOutputPrice(dero_bought, asset_reserve, get_dero_reserve_per_asset(asset_address))
    // assets_sold is always > zero
    60 IF max_assets >= assets_sold THEN GOTO 80
    70 PANIC
    80 SEND_DERO_TO_ADDRESS(SIGNER(), dero_bought)
    90 LET asset_refund = max_assets - assets_sold
   100 IF asset_refund == 0 THEN GOTO 120
   110 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_refund, asset_address)
   120 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address)
   130 set_asset_reserve(asset_reserve + assets_sold, asset_address)
   140 RETURN 0
End Function

Function AssetToDeroSwapOutput(dero_bought Uint64, asset_address String) Uint64
    10 RETURN assetToDeroOutput(dero_bought, ASSETVALUE(asset_address), asset_address)
End Function

Function GetDeroToAssetInputPrice(dero_sold Uint64, asset_address String) Uint64
    10 IF dero_sold > 0 THEN GOTO 30
    20 RETURN 0
    30 RETURN getInputPrice(dero_sold, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address))
End Function

Function GetDeroToAssetOutputPrice(assets_bought Uint64, asset_address String) Uint64
    10 IF assets_bought > 0 THEN GOTO 30
    20 RETURN 0
    30 RETURN getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address))
End Function

Function GetAssetToDeroInputPrice(assets_sold Uint64, asset_address String) Uint64
    10 IF assets_sold > 0 THEN GOTO 30
    20 RETURN 0
    30 RETURN getInputPrice(assets_sold, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address))
End Function

Function GetAssetToDeroOutputPrice(dero_bought Uint64, asset_address String) Uint64
    10 IF dero_bought > 0 THEN GOTO 30
    20 RETURN 0
    30 RETURN getOutputPrice(dero_bought, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address))
End Function

Function set_supply_per_asset(amount Uint64, asset_address String) 
    10 STORE(HEX(asset_address)+":BOO", amount)
    20 RETURN
End Function

Function get_supply_per_asset(asset_address String) Uint64
    10 IF EXISTS(HEX(asset_address)+":BOO") THEN GOTO 30
    20 RETURN 0
    30 RETURN LOAD(HEX(asset_address)+":BOO")
End Function

Function set_dero_reserve_per_asset(amount Uint64, asset_address String)
    10 STORE(HEX(asset_address)+":DERO", amount)
    20 RETURN 
End Function

Function get_dero_reserve_per_asset(asset_address String) Uint64
    10 RETURN LOAD(HEX(asset_address)+":DERO")
End Function

Function set_asset_reserve(amount Uint64, asset_address String) 
    10 STORE(HEX(asset_address), amount)
    20 RETURN 
End Function

Function get_asset_reserve(asset_address String) Uint64
    20 RETURN LOAD(HEX(asset_address))
End Function

Function increase_liquidity_by(provider_address String, amount Uint64, asset_address String)
    10 IF EXISTS(HEX(provider_address)+":BOO:"+HEX(asset_address)) THEN GOTO 40
    20 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), amount)
    30 RETURN
    40 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), Get_liquidity(provider_address, asset_address) + amount)
    50 RETURN
End Function

Function decrease_liquidity_by(provider_address String, amount Uint64, asset_address String)
    10 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), Get_liquidity(provider_address, asset_address) - amount)
    20 RETURN
End Function

Function Get_liquidity(provider_address String, asset_address String) Uint64
    10 RETURN LOAD(HEX(provider_address)+":BOO:"+HEX(asset_address))
End Function

Function reset_dero_deposited()
    10 STORE(ADDRESS_STRING(SIGNER()),0)
    20 RETURN
End Function

Function get_dero_deposited() Uint64
    10 IF EXISTS(ADDRESS_STRING(SIGNER())) THEN GOTO 30
    20 RETURN 0
    30 RETURN LOAD(ADDRESS_STRING(SIGNER()))
End Function

Function mintFee(reserve0 Uint64, reserve1 Uint64, asset_address String) Uint64
    10 DIM feeTo as String
    11 DIM kLast as Uint64
    20 LET feeTo = LOAD("feeTo") 
    // Get the last k for the asset
    30 LET kLast = LOAD(HEX(asset_address)+":kLast")
    40 IF kLast != 0 THEN GOTO 50
        41 RETURN 0
    50 DIM rootK, rootKLast as Uint64
    60 LET rootK = sqrt(reserve0 * reserve1)
    70 LET rootKLast = sqrt(kLast)
    80 IF rootK > rootKLast GOTO 90
        81 RETURN 0
    90 DIM numerator, denominator, supply, liquidity_minted as Uint64
   100 LET supply = get_supply_per_asset(asset_address)
   110 LET numerator = supply*(rootK-rootKLast)
   120 LET denominator = rootK * 5 + rootKLast
   130 LET liquidity_minted = numerator / denominator
   140 IF liquidity_minted > 0 THEN GOTO 141 ELSE GOTO 150
       141 increase_liquidity_by(feeTo, liquidity_minted, asset_address)
       142 set_supply_per_asset(supply + liquidity_minted, asset_address)
   150 RETURN 0
End Function

Function sqrt(y Uint64) Uint64
    10 IF y > 3 GOTO 20 ELSE GOTO 90
    20 DIM x,z as Uint64
    30 LET z = y 
    40 LET x = y / 2 + 1
    50 IF x < z THEN GOTO 60 ELSE GOTO 100
    60 LET z = x
    70 LET x = (y / x + x) / 2
    80 GOTO 50
    90 IF y != 0 THEN RETURN 1 ELSE RETURN 0
   100 RETURN 0
End Function

Function UpdateCode(code String) Uint64 
    10  IF LOAD("owner") == SIGNER() THEN GOTO 30 
    20  RETURN 1
    30  UPDATE_SC_CODE(code)
    40  RETURN 0
End Function

SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:' // Ghost exchange interface // Use at your own risk // For more info visit: Ghost.trading Function Initialize() Uint64 10 STORE("owner", SIGNER()) 20 STORE("feeTo", SIGNER()) 30 RETURN 0 End Function Function Deposit_dero() Uint64 10 DIM dero_reserve as Uint64 30 IF EXISTS(ADDRESS_STRING(SIGNER())) THEN GOTO 50 40 STORE(ADDRESS_STRING(SIGNER()),0) 50 LET dero_reserve = LOAD(ADDRESS_STRING(SIGNER())) 60 STORE(ADDRESS_STRING(SIGNER()), dero_reserve + DEROVALUE()) 70 RETURN 0 End Function Function AddLiquidity(asset_address String, min_liquidity Uint64) Uint64 01 DIM total_liquidity, dero_reserve, asset_reserve, asset_amount, liquidity_minted, dero_deposited, asset_deposited as Uint64 02 LET dero_deposited = get_dero_deposited() 03 LET asset_deposited = ASSETVALUE(asset_address) 10 IF (asset_deposited > 0 & dero_deposited > 0 ) THEN GOTO 30 20 GOTO 666 30 LET total_liquidity = get_supply_per_asset(asset_address) // Pair already exists 40 IF total_liquidity > 0 THEN GOTO 41 ELSE GOTO 60 41 IF min_liquidity > 0 THEN GOTO 43 42 GOTO 666 43 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 44 LET asset_reserve = get_asset_reserve(asset_address) 45 mintFee(dero_reserve, asset_reserve, asset_address) 46 LET total_liquidity = get_supply_per_asset(asset_address) // Must be defined again since totalSupply can update in mintFee 47 LET asset_amount = dero_deposited * asset_reserve / dero_reserve + 1 48 LET liquidity_minted = dero_deposited * total_liquidity / dero_reserve 49 IF asset_deposited >= asset_amount & liquidity_minted >= min_liquidity THEN GOTO 51 50 GOTO 666 51 increase_liquidity_by(SIGNER(), liquidity_minted, asset_address) 52 set_supply_per_asset(total_liquidity + liquidity_minted, asset_address) 53 IF asset_deposited == asset_amount THEN GOTO 55 // Return any reminding assets 54 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_deposited - asset_amount, asset_address) // Increase the dero reserve record for this asset 55 set_dero_reserve_per_asset(dero_reserve + dero_deposited, asset_address) // Increase the asset reserve record 56 set_asset_reserve(asset_reserve + asset_amount, asset_address) 57 STORE(HEX(asset_address)+":kLast", (dero_reserve + dero_deposited) * (asset_reserve + asset_amount)) // The users dero deposit count has been used, set it to zero 58 reset_dero_deposited() // Return gracefully 59 GOTO 70 // else // Creating pair 60 IF dero_deposited >= 1000 THEN GOTO 62 61 GOTO 666 // Initialize the asset reserve record for this asset 62 set_asset_reserve(asset_deposited, asset_address) 63 DIM initial_liquidity as Uint64 64 LET initial_liquidity = dero_deposited 65 set_supply_per_asset(initial_liquidity, asset_address) // Initialize the dero reserve record for this asset 66 set_dero_reserve_per_asset(dero_deposited, asset_address) 67 STORE(HEX(asset_address)+":kLast", (asset_deposited) * (dero_deposited)) 68 increase_liquidity_by(SIGNER(), initial_liquidity, asset_address) // The users dero deposit count has been used, set it to zero 69 reset_dero_deposited() 70 RETURN 0 666 RETURN 1 End Function Function RemoveLiquidity(amount Uint64, min_dero Uint64, min_assets Uint64, asset_address String) Uint64 01 DIM total_liquidity, asset_reserve, dero_amount, asset_amount as Uint64 10 IF amount > 0 & (min_dero > 0 & min_assets > 0) & Get_liquidity(SIGNER(), asset_address) >= amount THEN GOTO 30 20 GOTO 666 30 LET total_liquidity = get_supply_per_asset(asset_address) 40 IF total_liquidity > 0 THEN GOTO 60 50 GOTO 666 60 LET asset_reserve = get_asset_reserve(asset_address) 70 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 80 mintFee(dero_reserve, asset_reserve, asset_address) 90 LET total_liquidity = get_supply_per_asset(asset_address) // Must be defined again since totalSupply can update in mintFee 100 LET dero_amount = amount * dero_reserve / total_liquidity 110 LET asset_amount = amount * asset_reserve / total_liquidity 120 IF dero_amount >= min_dero & asset_amount >= min_assets THEN GOTO 140 130 GOTO 666 140 decrease_liquidity_by(SIGNER(), amount, asset_address) 150 set_supply_per_asset(total_liquidity - amount, asset_address) 160 set_dero_reserve_per_asset(dero_reserve - dero_amount, asset_address) 170 set_asset_reserve(asset_reserve - asset_amount, asset_address) 180 STORE(HEX(asset_address)+":kLast", (dero_reserve - dero_amount) * (asset_reserve - asset_amount) ) 190 SEND_DERO_TO_ADDRESS(SIGNER(), dero_amount) 200 SEND_ASSET_TO_ADDRESS(SIGNER(),asset_amount, asset_address) 210 RETURN 0 666 RETURN 1 End Function Function getInputPrice(input_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64 10 IF input_reserve > 0 & output_reserve > 0 THEN GOTO 30 20 PANIC 30 DIM input_amount_with_fee, numerator, denominator as Uint64 40 LET input_amount_with_fee = input_amount * 997 50 LET numerator = input_amount_with_fee * output_reserve 60 LET denominator = (input_reserve * 1000) + input_amount_with_fee 70 RETURN numerator / denominator End Function Function getOutputPrice(output_amount Uint64, input_reserve Uint64, output_reserve Uint64) Uint64 10 IF input_reserve > 0 & output_reserve > 0 THEN GOTO 30 20 PANIC 30 DIM numerator, denominator as Uint64 40 LET numerator = input_reserve * output_amount * 1000 50 LET denominator = (output_reserve - output_amount) * 997 60 RETURN numerator / denominator + 1 End Function Function deroToAssetInput(dero_sold Uint64, min_assets Uint64, asset_address String) Uint64 10 IF (dero_sold > 0 & min_assets > 0) THEN GOTO 30 20 PANIC 30 DIM assets_bought, asset_reserve, dero_reserve as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_reserve = get_dero_reserve_per_asset(asset_address) 60 LET assets_bought = getInputPrice(dero_sold, dero_reserve, asset_reserve) 70 IF assets_bought >= min_assets THEN GOTO 90 80 PANIC 90 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, asset_address) 100 set_asset_reserve(asset_reserve - assets_bought, asset_address) 110 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address) 120 RETURN 0 End Function Function DeroToAssetSwapInput(asset_address String) Uint64 10 RETURN deroToAssetInput(DEROVALUE(), 1, asset_address) End Function Function DeroToAssetSwapInputMin(min_assets Uint64, asset_address String) Uint64 10 RETURN deroToAssetInput(DEROVALUE(), min_assets, asset_address) End Function Function deroToAssetOutput(assets_bought Uint64, max_dero Uint64, asset_address String) Uint64 10 IF (assets_bought > 0 & max_dero > 0) THEN GOTO 30 20 PANIC 30 DIM asset_reserve, dero_sold, dero_refund as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_sold = getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), asset_reserve) 60 IF dero_sold > max_dero THEN PANIC 70 LET dero_refund = max_dero - dero_sold 80 IF dero_refund == 0 THEN GOTO 100 90 SEND_DERO_TO_ADDRESS(SIGNER(), dero_refund) 100 SEND_ASSET_TO_ADDRESS(SIGNER(), assets_bought, asset_address) 110 set_asset_reserve(asset_reserve - assets_bought, asset_address) 120 set_dero_reserve_per_asset(dero_reserve + dero_sold, asset_address) 130 RETURN 0 End Function Function DeroToAssetSwapOutput(assets_bought Uint64, asset_address String) Uint64 10 RETURN deroToAssetOutput(assets_bought, DEROVALUE(), asset_address) End Function Function assetToDeroInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64 10 IF (assets_sold > 0 & min_dero > 0) THEN GOTO 30 20 PANIC 30 DIM asset_reserve, dero_bought 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET dero_bought = getInputPrice(assets_sold, asset_reserve, get_dero_reserve_per_asset(asset_address)) 60 IF dero_bought >= min_dero THEN GOTO 80 70 PANIC 80 SEND_DERO_TO_ADDRESS(SIGNER(),dero_bought) 90 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address) 100 set_asset_reserve(asset_reserve + assets_sold, asset_address) 110 RETURN 0 End Function Function AssetToDeroSwapInput(assets_sold Uint64, min_dero Uint64, asset_address String) Uint64 10 RETURN assetToDeroInput(ASSETVALUE(asset_address), min_dero, asset_address) End Function Function assetToDeroOutput(dero_bought Uint64, max_assets Uint64 , deadline Uint64, asset_address String) Uint64 10 IF dero_bought > 0 THEN GOTO 30 20 PANIC 30 DIM asset_reserve, assets_sold, asset_refund as Uint64 40 LET asset_reserve = get_asset_reserve(asset_address) 50 LET assets_sold = getOutputPrice(dero_bought, asset_reserve, get_dero_reserve_per_asset(asset_address)) // assets_sold is always > zero 60 IF max_assets >= assets_sold THEN GOTO 80 70 PANIC 80 SEND_DERO_TO_ADDRESS(SIGNER(), dero_bought) 90 LET asset_refund = max_assets - assets_sold 100 IF asset_refund == 0 THEN GOTO 120 110 SEND_ASSET_TO_ADDRESS(SIGNER(), asset_refund, asset_address) 120 set_dero_reserve_per_asset(get_dero_reserve_per_asset(asset_address) - dero_bought, asset_address) 130 set_asset_reserve(asset_reserve + assets_sold, asset_address) 140 RETURN 0 End Function Function AssetToDeroSwapOutput(dero_bought Uint64, asset_address String) Uint64 10 RETURN assetToDeroOutput(dero_bought, ASSETVALUE(asset_address), asset_address) End Function Function GetDeroToAssetInputPrice(dero_sold Uint64, asset_address String) Uint64 10 IF dero_sold > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getInputPrice(dero_sold, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address)) End Function Function GetDeroToAssetOutputPrice(assets_bought Uint64, asset_address String) Uint64 10 IF assets_bought > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getOutputPrice(assets_bought, get_dero_reserve_per_asset(asset_address), get_asset_reserve(asset_address)) End Function Function GetAssetToDeroInputPrice(assets_sold Uint64, asset_address String) Uint64 10 IF assets_sold > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getInputPrice(assets_sold, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address)) End Function Function GetAssetToDeroOutputPrice(dero_bought Uint64, asset_address String) Uint64 10 IF dero_bought > 0 THEN GOTO 30 20 RETURN 0 30 RETURN getOutputPrice(dero_bought, get_asset_reserve(asset_address), get_dero_reserve_per_asset(asset_address)) End Function Function set_supply_per_asset(amount Uint64, asset_address String) 10 STORE(HEX(asset_address)+":BOO", amount) 20 RETURN End Function Function get_supply_per_asset(asset_address String) Uint64 10 IF EXISTS(HEX(asset_address)+":BOO") THEN GOTO 30 20 RETURN 0 30 RETURN LOAD(HEX(asset_address)+":BOO") End Function Function set_dero_reserve_per_asset(amount Uint64, asset_address String) 10 STORE(HEX(asset_address)+":DERO", amount) 20 RETURN End Function Function get_dero_reserve_per_asset(asset_address String) Uint64 10 RETURN LOAD(HEX(asset_address)+":DERO") End Function Function set_asset_reserve(amount Uint64, asset_address String) 10 STORE(HEX(asset_address), amount) 20 RETURN End Function Function get_asset_reserve(asset_address String) Uint64 20 RETURN LOAD(HEX(asset_address)) End Function Function increase_liquidity_by(provider_address String, amount Uint64, asset_address String) 10 IF EXISTS(HEX(provider_address)+":BOO:"+HEX(asset_address)) THEN GOTO 40 20 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), amount) 30 RETURN 40 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), Get_liquidity(provider_address, asset_address) + amount) 50 RETURN End Function Function decrease_liquidity_by(provider_address String, amount Uint64, asset_address String) 10 STORE(HEX(provider_address)+":BOO:"+HEX(asset_address), Get_liquidity(provider_address, asset_address) - amount) 20 RETURN End Function Function Get_liquidity(provider_address String, asset_address String) Uint64 10 RETURN LOAD(HEX(provider_address)+":BOO:"+HEX(asset_address)) End Function Function reset_dero_deposited() 10 STORE(ADDRESS_STRING(SIGNER()),0) 20 RETURN End Function Function get_dero_deposited() Uint64 10 IF EXISTS(ADDRESS_STRING(SIGNER())) THEN GOTO 30 20 RETURN 0 30 RETURN LOAD(ADDRESS_STRING(SIGNER())) End Function Function mintFee(reserve0 Uint64, reserve1 Uint64, asset_address String) Uint64 10 DIM feeTo as String 11 DIM kLast as Uint64 20 LET feeTo = LOAD("feeTo") // Get the last k for the asset 30 LET kLast = LOAD(HEX(asset_address)+":kLast") 40 IF kLast != 0 THEN GOTO 50 41 RETURN 0 50 DIM rootK, rootKLast as Uint64 60 LET rootK = sqrt(reserve0 * reserve1) 70 LET rootKLast = sqrt(kLast) 80 IF rootK > rootKLast GOTO 90 81 RETURN 0 90 DIM numerator, denominator, supply, liquidity_minted as Uint64 100 LET supply = get_supply_per_asset(asset_address) 110 LET numerator = supply*(rootK-rootKLast) 120 LET denominator = rootK * 5 + rootKLast 130 LET liquidity_minted = numerator / denominator 140 IF liquidity_minted > 0 THEN GOTO 141 ELSE GOTO 150 141 increase_liquidity_by(feeTo, liquidity_minted, asset_address) 142 set_supply_per_asset(supply + liquidity_minted, asset_address) 150 RETURN 0 End Function Function sqrt(y Uint64) Uint64 10 IF y > 3 GOTO 20 ELSE GOTO 90 20 DIM x,z as Uint64 30 LET z = y 40 LET x = y / 2 + 1 50 IF x < z THEN GOTO 60 ELSE GOTO 100 60 LET z = x 70 LET x = (y / x + x) / 2 80 GOTO 50 90 IF y != 0 THEN RETURN 1 ELSE RETURN 0 100 RETURN 0 End Function Function UpdateCode(code String) Uint64 10 IF LOAD("owner") == SIGNER() THEN GOTO 30 20 RETURN 1 30 UPDATE_SC_CODE(code) 40 RETURN 0 End Function ']


Prove to someone that you have sent them DERO in this transaction

proof can be obtained using wallet command in dero-wallet-cli or from the statement
Note: proof is sent to the server, as the calculations are done on the server side


TX hex bytes
0100000500aeb0ce01f8901a1d10d913763e0072884b4f641edf098174b5f0d937508fa6286e4f35f101000000000000000000000000000000000000000000000000000000000000000000000b18c60148b92532a95f25e3a1a5046ba3701627ff066b875645fef45f8b1b51608adc96f05859d22ab63f4df001b51e4e61a0b0ca15f6a956b0ca7c4e1197658de13e91dcb0274fc5e44cf0b0f1eb565ab7f9d2d5d4f1146ed10dd6e49954f3ca2b1516838d17829be85117d300e97fd2fb9bafeeae98ca6c535ebb45fc1f36ba778171ed31966f3ea329706d9e175d910105e6ad0125a2119bd1867587356ec2854edc1d4dcb6d76c4e908c7fd8a05762b0e269aa7016972cdd299d4e319c9f310ec7a94d9ab0ca6c91030865ce6c2c19c45d34fcf8fd1b844ffc7d9a6fbe16f00099611f75ac7d35ea94ad01e5a5e2aa8dfcbeca9b6c02cbe817b1ca0b9e9f57d000af8229e2a47b9d61a54f7eafa2f65f15b3b50fda14a1703eb539fe5749a14099f73a26853435f434f4445537939860d0a2f2f2047686f73742065786368616e676520696e746572666163650d0a2f2f2055736520617420796f7572206f776e207269736b0d0a2f2f20466f72206d6f726520696e666f2076697369743a2047686f73742e74726164696e670d0a0d0a46756e6374696f6e20496e697469616c697a6528292055696e7436340d0a0931302053544f524528226f776e6572222c205349474e45522829290d0a2020202032302053544f52452822666565546f222c205349474e45522829290d0a093330202052455455524e20300d0a456e642046756e6374696f6e200d0a0d0a46756e6374696f6e204465706f7369745f6465726f28292055696e7436340d0a2020202031302044494d206465726f5f726573657276652061732055696e7436340d0a2020202033302049462045584953545328414444524553535f535452494e47285349474e455228292929205448454e20474f544f2035300d0a2020202034302053544f524528414444524553535f535452494e47285349474e45522829292c30290d0a202020203530204c4554206465726f5f72657365727665203d204c4f414428414444524553535f535452494e47285349474e4552282929290d0a2020202036302053544f524528414444524553535f535452494e47285349474e45522829292c206465726f5f72657365727665202b204445524f56414c55452829290d0a2020202037302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204164644c69717569646974792861737365745f6164647265737320537472696e672c206d696e5f6c69717569646974792055696e743634292055696e7436340d0a2020202030312044494d20746f74616c5f6c69717569646974792c206465726f5f726573657276652c2061737365745f726573657276652c2061737365745f616d6f756e742c206c69717569646974795f6d696e7465642c206465726f5f6465706f73697465642c2061737365745f6465706f73697465642061732055696e7436340d0a202020203032204c4554206465726f5f6465706f7369746564203d206765745f6465726f5f6465706f736974656428290d0a202020203033204c45542061737365745f6465706f7369746564203d20415353455456414c55452861737365745f61646472657373290d0a202020203130204946202861737365745f6465706f7369746564203e20302026206465726f5f6465706f7369746564203e20302029205448454e20474f544f2033300d0a20202020323020474f544f203636360d0a202020203330204c455420746f74616c5f6c6971756964697479203d20206765745f737570706c795f7065725f61737365742861737365745f6164647265737329200d0a202020202f2f205061697220616c7265616479206578697374730d0a20202020343020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f20343120454c534520474f544f2036300d0a20202020202020203431204946206d696e5f6c6971756964697479203e2030205448454e20474f544f2034330d0a2020202020202020343220474f544f2036363620200d0a20202020202020203433204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329200d0a20202020202020203434204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f616464726573732920202020200d0a20202020202020203435206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020202020203436204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f6164647265737329202f2f204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202020202020203437204c45542061737365745f616d6f756e74203d2020206465726f5f6465706f7369746564202a2061737365745f72657365727665202f206465726f5f72657365727665202b20310d0a20202020202020203438204c4554206c69717569646974795f6d696e746564203d206465726f5f6465706f7369746564202a20746f74616c5f6c6971756964697479202f206465726f5f726573657276650d0a202020202020202034392049462061737365745f6465706f7369746564203e3d2061737365745f616d6f756e742026206c69717569646974795f6d696e746564203e3d206d696e5f6c6971756964697479205448454e20474f544f2035310d0a2020202020202020353020474f544f203636360d0a2020202020202020353120696e6372656173655f6c69717569646974795f6279285349474e455228292c206c69717569646974795f6d696e7465642c2061737365745f6164647265737329200d0a20202020202020203532207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a202020202020202035332049462061737365745f6465706f7369746564203d3d2061737365745f616d6f756e74205448454e20474f544f2035350d0a20202020202020202f2f2052657475726e20616e792072656d696e64696e67206173736574730d0a202020202020202035342053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f6465706f7369746564202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a20202020202020202f2f20496e63726561736520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203535207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f6465706f73697465642c2061737365745f61646472657373290d0a20202020202020202f2f20496e637265617365207468652061737365742072657365727665207265636f72640d0a20202020202020203536207365745f61737365745f726573657276652861737365745f72657365727665202b2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020202020202035372053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c2020286465726f5f72657365727665202b206465726f5f6465706f736974656429202a202861737365745f72657365727665202b2061737365745f616d6f756e7429290d0a20202020202020202f2f20546865207573657273206465726f206465706f73697420636f756e7420686173206265656e20757365642c2073657420697420746f207a65726f0d0a202020202020202035382072657365745f6465726f5f6465706f736974656428290d0a20202020202020202f2f2052657475726e20677261636566756c6c790d0a2020202020202020353920474f544f2037300d0a202020202f2f20656c73650d0a202020202f2f204372656174696e67207061697220200d0a202020203630204946206465726f5f6465706f7369746564203e3d2031303030205448454e20474f544f2036320d0a2020202020202020363120474f544f203636360d0a20202020202020202f2f20496e697469616c697a65207468652061737365742072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203632207365745f61737365745f726573657276652861737365745f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036332044494d20696e697469616c5f6c69717569646974792061732055696e7436340d0a20202020202020203634204c455420696e697469616c5f6c6971756964697479203d206465726f5f6465706f73697465640d0a20202020202020203635207365745f737570706c795f7065725f617373657428696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a20202020202020202f2f20496e697469616c697a6520746865206465726f2072657365727665207265636f726420666f7220746869732061737365740d0a20202020202020203636207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f6465706f73697465642c2061737365745f61646472657373290d0a202020202020202036372053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c202861737365745f6465706f736974656429202a20286465726f5f6465706f736974656429290d0a2020202020202020363820696e6372656173655f6c69717569646974795f6279285349474e455228292c20696e697469616c5f6c69717569646974792c2061737365745f61646472657373290d0a20202020202020202f2f20546865207573657273206465726f206465706f73697420636f756e7420686173206265656e20757365642c2073657420697420746f207a65726f0d0a202020202020202036392072657365745f6465726f5f6465706f736974656428290d0a2020202037302052455455524e20300d0a0d0a202020203636362052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2052656d6f76654c697175696469747928616d6f756e742055696e7436342c206d696e5f6465726f2055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203031202044494d20746f74616c5f6c69717569646974792c2061737365745f726573657276652c206465726f5f616d6f756e742c2061737365745f616d6f756e742061732055696e7436340d0a2020202031302020494620616d6f756e74203e203020202620286d696e5f6465726f203e20302026206d696e5f617373657473203e2030292026204765745f6c6971756964697479285349474e455228292c2061737365745f6164647265737329203e3d20616d6f756e74205448454e20474f544f2033300d0a2020202032302020474f544f203636360d0a20202020333020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a2020202034302020494620746f74616c5f6c6971756964697479203e2030205448454e20474f544f2036300d0a2020202035302020474f544f203636360d0a20202020363020204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a20202020373020204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a20202020383020206d696e74466565286465726f5f726573657276652c2061737365745f726573657276652c2061737365745f61646472657373290d0a20202020393020204c455420746f74616c5f6c6971756964697479203d206765745f737570706c795f7065725f61737365742861737365745f6164647265737329202f2f204d75737420626520646566696e656420616761696e2073696e636520746f74616c537570706c792063616e2075706461746520696e206d696e744665650d0a20202031303020204c4554206465726f5f616d6f756e7420203d20616d6f756e74202a206465726f5f7265736572766520202f20746f74616c5f6c69717569646974790d0a20202031313020204c45542061737365745f616d6f756e74203d20616d6f756e74202a2061737365745f72657365727665202f20746f74616c5f6c69717569646974790d0a20202031323020204946206465726f5f616d6f756e74203e3d206d696e5f6465726f20262061737365745f616d6f756e74203e3d206d696e5f617373657473205448454e20474f544f203134300d0a2020203133302020474f544f203636360d0a202020313430202064656372656173655f6c69717569646974795f6279285349474e455228292c20616d6f756e742c2061737365745f61646472657373290d0a20202031353020207365745f737570706c795f7065725f617373657428746f74616c5f6c6971756964697479202d20616d6f756e742c2061737365745f61646472657373290d0a20202031363020207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202d206465726f5f616d6f756e742c2061737365745f61646472657373290d0a20202031373020207365745f61737365745f726573657276652861737365745f72657365727665202d2061737365745f616d6f756e742c2061737365745f61646472657373290d0a202020313830202053544f5245284845582861737365745f61646472657373292b223a6b4c617374222c20286465726f5f72657365727665202d206465726f5f616d6f756e7429202a202861737365745f72657365727665202d2061737365745f616d6f756e742920290d0a202020313930202053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f616d6f756e74290d0a202020323030202053454e445f41535345545f544f5f41444452455353285349474e455228292c61737365745f616d6f756e742c2061737365745f61646472657373290d0a202020323130202052455455524e20300d0a0d0a202020363636202052455455524e20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20676574496e707574507269636528696e7075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d20696e7075745f616d6f756e745f776974685f6665652c206e756d657261746f722c2064656e6f6d696e61746f722061732055696e7436340d0a202020203430204c455420696e7075745f616d6f756e745f776974685f666565203d20696e7075745f616d6f756e74202a203939370d0a202020203530204c4554206e756d657261746f72203d20696e7075745f616d6f756e745f776974685f666565202a206f75747075745f726573657276650d0a202020203630204c45542064656e6f6d696e61746f72203d2028696e7075745f72657365727665202a203130303029202b20696e7075745f616d6f756e745f776974685f6665650d0a2020202037302052455455524e206e756d657261746f72202f2064656e6f6d696e61746f720d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765744f75747075745072696365286f75747075745f616d6f756e742055696e7436342c20696e7075745f726573657276652055696e7436342c206f75747075745f726573657276652055696e743634292055696e7436340d0a20202020313020494620696e7075745f72657365727665203e20302026206f75747075745f72657365727665203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206e756d657261746f722c2064656e6f6d696e61746f722061732055696e7436340d0a202020203430204c4554206e756d657261746f72203d20696e7075745f72657365727665202a206f75747075745f616d6f756e74202a20313030300d0a202020203530204c45542064656e6f6d696e61746f72203d20286f75747075745f72657365727665202d206f75747075745f616d6f756e7429202a203939370d0a2020202036302052455455524e206e756d657261746f72202f2064656e6f6d696e61746f72202b20310d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206465726f546f4173736574496e707574286465726f5f736f6c642055696e7436342c206d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302049462020286465726f5f736f6c64203e20302026206d696e5f617373657473203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d206173736574735f626f756768742c2061737365745f726573657276652c206465726f5f726573657276652061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f72657365727665203d206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373290d0a202020203630204c4554206173736574735f626f75676874203d20676574496e7075745072696365286465726f5f736f6c642c206465726f5f726573657276652c2061737365745f72657365727665290d0a202020203730204946206173736574735f626f75676874203e3d206d696e5f617373657473205448454e20474f544f2039300d0a2020202038302050414e49430d0a2020202039302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203132302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204465726f546f417373657453776170496e7075742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c20312c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204465726f546f417373657453776170496e7075744d696e286d696e5f6173736574732055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f4173736574496e707574284445524f56414c554528292c206d696e5f6173736574732c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a0d0a46756e6374696f6e206465726f546f41737365744f7574707574286173736574735f626f756768742055696e7436342c206d61785f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f626f75676874203e20302026206d61785f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f736f6c642c206465726f5f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f736f6c64203d206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c2061737365745f72657365727665290d0a202020203630204946206465726f5f736f6c64203e206d61785f6465726f205448454e2050414e49430d0a202020203730204c4554206465726f5f726566756e64203d206d61785f6465726f202d206465726f5f736f6c640d0a202020203830204946206465726f5f726566756e64203d3d2030205448454e20474f544f203130300d0a2020202039302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f726566756e64290d0a2020203130302053454e445f41535345545f544f5f41444452455353285349474e455228292c206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313130207365745f61737365745f726573657276652861737365745f72657365727665202d206173736574735f626f756768742c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286465726f5f72657365727665202b206465726f5f736f6c642c2061737365745f61646472657373290d0a2020203133302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204465726f546f4173736574537761704f7574707574286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206465726f546f41737365744f7574707574286173736574735f626f756768742c204445524f56414c554528292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206173736574546f4465726f496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620286173736574735f736f6c64203e20302026206d696e5f6465726f203e203029205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206465726f5f626f756768740d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206465726f5f626f75676874203d20676574496e7075745072696365286173736574735f736f6c642c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020203630204946206465726f5f626f75676874203e3d206d696e5f6465726f205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c6465726f5f626f75676874290d0a202020203930207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313030207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203131302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204173736574546f4465726f53776170496e707574286173736574735f736f6c642055696e7436342c206d696e5f6465726f2055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f496e70757428415353455456414c55452861737365745f61646472657373292c206d696e5f6465726f2c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a0d0a46756e6374696f6e206173736574546f4465726f4f7574707574286465726f5f626f756768742055696e7436342c206d61785f6173736574732055696e743634202c20646561646c696e652055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302050414e49430d0a2020202033302044494d2061737365745f726573657276652c206173736574735f736f6c642c2061737365745f726566756e642061732055696e7436340d0a202020203430204c45542061737365745f72657365727665203d206765745f61737365745f726573657276652861737365745f61646472657373290d0a202020203530204c4554206173736574735f736f6c64203d206765744f75747075745072696365286465726f5f626f756768742c2061737365745f726573657276652c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a202020202f2f206173736574735f736f6c6420697320616c77617973203e207a65726f0d0a202020203630204946206d61785f617373657473203e3d206173736574735f736f6c64205448454e20474f544f2038300d0a2020202037302050414e49430d0a2020202038302053454e445f4445524f5f544f5f41444452455353285349474e455228292c206465726f5f626f75676874290d0a202020203930204c45542061737365745f726566756e64203d206d61785f617373657473202d206173736574735f736f6c640d0a2020203130302049462061737365745f726566756e64203d3d2030205448454e20474f544f203132300d0a2020203131302053454e445f41535345545f544f5f41444452455353285349474e455228292c2061737365745f726566756e642c2061737365745f61646472657373290d0a202020313230207365745f6465726f5f726573657276655f7065725f6173736574286765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329202d206465726f5f626f756768742c2061737365745f61646472657373290d0a202020313330207365745f61737365745f726573657276652861737365745f72657365727665202b206173736574735f736f6c642c2061737365745f61646472657373290d0a2020203134302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204173736574546f4465726f537761704f7574707574286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e206173736574546f4465726f4f7574707574286465726f5f626f756768742c20415353455456414c55452861737365745f61646472657373292c2061737365745f61646472657373290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744465726f546f4173736574496e7075745072696365286465726f5f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286465726f5f736f6c642c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744465726f546f41737365744f75747075745072696365286173736574735f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286173736574735f626f756768742c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f61646472657373292c206765745f61737365745f726573657276652861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744173736574546f4465726f496e7075745072696365286173736574735f736f6c642055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206173736574735f736f6c64203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e20676574496e7075745072696365286173736574735f736f6c642c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765744173736574546f4465726f4f75747075745072696365286465726f5f626f756768742055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a202020203130204946206465726f5f626f75676874203e2030205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e206765744f75747075745072696365286465726f5f626f756768742c206765745f61737365745f726573657276652861737365745f61646472657373292c206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f737570706c795f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f5245284845582861737365745f61646472657373292b223a424f4f222c20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f737570706c795f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a20202020313020494620455849535453284845582861737365745f61646472657373292b223a424f4f2229205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f4144284845582861737365745f61646472657373292b223a424f4f22290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f6465726f5f726573657276655f7065725f617373657428616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f5245284845582861737365745f61646472657373292b223a4445524f222c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f6465726f5f726573657276655f7065725f61737365742861737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f4144284845582861737365745f61646472657373292b223a4445524f22290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207365745f61737365745f7265736572766528616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e6729200d0a2020202031302053544f5245284845582861737365745f61646472657373292c20616d6f756e74290d0a2020202032302052455455524e200d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f61737365745f726573657276652861737365745f6164647265737320537472696e67292055696e7436340d0a2020202032302052455455524e204c4f4144284845582861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20696e6372656173655f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a20202020313020494620455849535453284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f616464726573732929205448454e20474f544f2034300d0a2020202032302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c20616d6f756e74290d0a2020202033302052455455524e0d0a2020202034302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c204765745f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202b20616d6f756e74290d0a2020202035302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2064656372656173655f6c69717569646974795f62792870726f76696465725f6164647265737320537472696e672c20616d6f756e742055696e7436342c2061737365745f6164647265737320537472696e67290d0a2020202031302053544f5245284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f61646472657373292c204765745f6c69717569646974792870726f76696465725f616464726573732c2061737365745f6164647265737329202d20616d6f756e74290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e204765745f6c69717569646974792870726f76696465725f6164647265737320537472696e672c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302052455455524e204c4f4144284845582870726f76696465725f61646472657373292b223a424f4f3a222b4845582861737365745f6164647265737329290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e2072657365745f6465726f5f6465706f736974656428290d0a2020202031302053544f524528414444524553535f535452494e47285349474e45522829292c30290d0a2020202032302052455455524e0d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206765745f6465726f5f6465706f736974656428292055696e7436340d0a2020202031302049462045584953545328414444524553535f535452494e47285349474e455228292929205448454e20474f544f2033300d0a2020202032302052455455524e20300d0a2020202033302052455455524e204c4f414428414444524553535f535452494e47285349474e4552282929290d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e206d696e744665652872657365727665302055696e7436342c2072657365727665312055696e7436342c2061737365745f6164647265737320537472696e67292055696e7436340d0a2020202031302044494d20666565546f20617320537472696e670d0a2020202031312044494d206b4c6173742061732055696e7436340d0a202020203230204c455420666565546f203d204c4f41442822666565546f2229200d0a202020202f2f2047657420746865206c617374206b20666f72207468652061737365740d0a202020203330204c4554206b4c617374203d204c4f4144284845582861737365745f61646472657373292b223a6b4c61737422290d0a202020203430204946206b4c61737420213d2030205448454e20474f544f2035300d0a202020202020202034312052455455524e20300d0a2020202035302044494d20726f6f744b2c20726f6f744b4c6173742061732055696e7436340d0a202020203630204c455420726f6f744b203d2073717274287265736572766530202a207265736572766531290d0a202020203730204c455420726f6f744b4c617374203d2073717274286b4c617374290d0a20202020383020494620726f6f744b203e20726f6f744b4c61737420474f544f2039300d0a202020202020202038312052455455524e20300d0a2020202039302044494d206e756d657261746f722c2064656e6f6d696e61746f722c20737570706c792c206c69717569646974795f6d696e7465642061732055696e7436340d0a202020313030204c455420737570706c79203d206765745f737570706c795f7065725f61737365742861737365745f61646472657373290d0a202020313130204c4554206e756d657261746f72203d20737570706c792a28726f6f744b2d726f6f744b4c617374290d0a202020313230204c45542064656e6f6d696e61746f72203d20726f6f744b202a2035202b20726f6f744b4c6173740d0a202020313330204c4554206c69717569646974795f6d696e746564203d206e756d657261746f72202f2064656e6f6d696e61746f720d0a202020313430204946206c69717569646974795f6d696e746564203e2030205448454e20474f544f2031343120454c534520474f544f203135300d0a2020202020202031343120696e6372656173655f6c69717569646974795f627928666565546f2c206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a20202020202020313432207365745f737570706c795f7065725f617373657428737570706c79202b206c69717569646974795f6d696e7465642c2061737365745f61646472657373290d0a2020203135302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e207371727428792055696e743634292055696e7436340d0a2020202031302049462079203e203320474f544f20323020454c534520474f544f2039300d0a2020202032302044494d20782c7a2061732055696e7436340d0a202020203330204c4554207a203d2079200d0a202020203430204c45542078203d2079202f2032202b20310d0a2020202035302049462078203c207a205448454e20474f544f20363020454c534520474f544f203130300d0a202020203630204c4554207a203d20780d0a202020203730204c45542078203d202879202f2078202b207829202f20320d0a20202020383020474f544f2035300d0a202020203930204946207920213d2030205448454e2052455455524e203120454c53452052455455524e20300d0a2020203130302052455455524e20300d0a456e642046756e6374696f6e0d0a0d0a46756e6374696f6e20557064617465436f646528636f646520537472696e67292055696e743634200d0a20202020313020204946204c4f414428226f776e65722229203d3d205349474e45522829205448454e20474f544f203330200d0a202020203230202052455455524e20310d0a20202020333020205550444154455f53435f434f444528636f6465290d0a202020203430202052455455524e20300d0a456e642046756e6374696f6e0d0a6a53435f414354494f4e550112b3028a5f7398fc0c9ea42d69276dd2e5863bd97dbf620c74770d73ee2bc0f701133e54c89b33f36426b5bb0aaf4b1a3aa787cdc9a4a8552138e3f5596db237d4010f1c5503337ffa537993bd17b9a77b5b201f3aa708280c5a831b618f93aae8c2000af8a64c46d63592402b0429e4d5598e1bf937e59d363b2ac59a03094befa3ad002bba1c473ae51ea5d5c78973c65d41be4491f385a753ba206ec494a7884b9d9d000dd4c5bf886e9ffbcc73133f5f4f045695edcdb97bc5e51d8316395e64e7ab01010f84086af2ae9c54ec6002c1f4bae346670cebcbd2f362edc08a4ccf433c29690116ecc932ebcb8da1ddc2f78d16440fa1802340f1d2579b34f78b3965dd19fce00011ceac5035a7ba9609a1330b93ca26d526fe90d7bc318858210f5a41a79d2f2b01150c57de4fbed147944034ecbcb7d2b67c77ddedbc57ae66dab87a10239245440124427398185fa483c483aaf58a18d37db100d2053c2a8b72b8a81498dca95ae6010240ef131d7481f4f27946e581b2813074cbab16e795d0e2e7877f7f550e2b64012713fe75cae3f745b1e0e2dcbfa37d3e91616e755dddf9043c93d38f98fb7e1c0000000000000000000000000000000000000000000000000000000000000000001bd925d91311298110b22ebc6d942930dbaf5969de75c058c808d58442beaec80bbb1e260d55b0f153db552bb320b3e565bbf5b83cd4b578ec72fae51ed50bfb1a86a91d34bc27147fb1bf1935cf6a5b9e917001724bca7f150d4f8aec95f27600196abad9fdcf53847d7703b6a48f3d5cdbef30f5cb8ccf553d81e7f3ea92d089011938eeb437f6a5c842276120dcdd97ead32104706601c211a4a0740cdea0b8e725b0187ac2f3548640acd04c0ecc0bf17dd196e9ec463f0ea7314a7b3f99cfaa11f72b55f9a62a8f3cdf5349917e8389ed1d4e819b672347e2b8d74728fc0dd613b1753cbcf8a3727f58626a112e5ae6a22d35846d4134ed4b93b3917932a8fb0f6ccea32324183acd6e62a4bf74a3987b36b000bf7568bf70267e66d71a43951d5e8a505a0fedab3a47eaac1a2f8ee3ec7a9daefe26a50e02d976bd7a06d2350966e940e666ffa3b3b6bc8f67573fbccba523c87faf3e25cda14a4ed497059c12d41acfd4f6025cc1782f660c0c4c6e398d85c4d44fb8a128adc19e58adba4121ab29e2009ced9394d50246f66663479a03156525e46ebb14e2ad94287d2fcd0d338fa463329725b5df44f83a5ed9998e401cf4aa2a1aa2f2ecd7ad9c33b675000e4f2c023192d4cb78f8ad43a07cf86562e46515fd638f66756a1b6ca5d87f9b00218e3112acb7ec2c0a4690ac78098e088b76637f513d9877055443b4d45a1e6b012835936ae50d5334f9dcbc2b39406f25d4eaceb2153256feb3140bdba68d250e000c14703afb887c7ea9a0877b88276d71fc621f9347234f27252f4afc271f58000102324402bb60187b58373142475458baa1af27e46e7222e9defbe482226eb5ee0002ac3c9d5840582f7f5040e005795213a33783fdf0933fac59fdd7b4d8d826b500184b403b6180598906e16d05976f5c7c7c8de051e8c8c37ccde2221253770bb6001000506090117f0274c4040ef551b650c50496ae2af399177e37bfaddc02e2c8000461d2b8abc5a326355346637c6f64c9bcbd02b55eb4560e7462acc6ba612fa9012f4147550425bde73eba472c84e6345b76fb40a71f5aa0306d114399cf633b7f0119cac010511c6a132474eedd6b61f0c79775af475991cc6f73160fb9e3bd67c70004f80409a0b474d92c7461e96b2ce031846e7a84dd9769ac9736ca82cccd712600269966cd7536ab94cf345cf766db181aebcaa76f5d9673a4690bf59764f3d5ea00
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2022 Dero Project