logo DERO HE BlockChain Explorer Mainnet

Tx hash: e61b34137296c54ab16037e6ad9abc76e10d26fbb0234d73a687da9e7fae768e Type SC

Block: 2ab731694c80d69587dda078450cf8e420c241ff6b3ffd1c1d8d2dbd62de81a9 (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 0
SCID string variables
key value
C 46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c20227365617263682e6a7322290a33312053544f524528226465736372486472222c2022426c6f636b636861696e207365617263682066756e6374696f6e616c69747922290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c20226578706c6f7265722e74656c6122290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c202234363836303136653264623737393737393431623839313739376237653963386133393630616236386634346237333134396233383237343766613962353722290a33372053544f5245282266696c65436865636b53222c20223239333836303261363638316464623531323331306633626435623334653762336661653137313335306435646436303065323037643966396364663065646222290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a0a287b0a202020206e616d653a2027736561726368272c0a2020202076657273696f6e3a2027312e302e30272c0a0a202020202f2f2052656e64657220736561726368206261722048544d4c0a2020202072656e6465725365617263684261723a2066756e6374696f6e2829207b0a202020202020202072657475726e20273c64697620636c6173733d2263617264223e3c64697620636c6173733d2273656374696f6e2d686561646572223e3c68323e426c6f636b636861696e205365617263683c2f68323e3c64697620636c6173733d2273656374696f6e2d696e666f223e53656172636820626c6f636b732c207472616e73616374696f6e732c20616e6420616464726573736573206f6e20746865204445524f20626c6f636b636861696e3c2f6469763e3c2f6469763e3c64697620636c6173733d227365617263682d62617222207374796c653d226d617267696e2d746f703a303b6d617267696e2d626f74746f6d3a3172656d223e3c696e70757420747970653d2274657874222069643d2264617368626f6172642d7365617263682d696e7075742220706c616365686f6c6465723d22426c6f636b206865696768742c20686173682c207472616e73616374696f6e20686173682c206f7220534349442e2e2e22206f6e6b657970726573733d226966286576656e742e6b65793d3d3d5c27456e7465725c272977696e646f772e7365617263684d6f64756c652e706572666f726d5365617263682829223e3c627574746f6e206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e706572666f726d5365617263682829223e5365617263683c2f627574746f6e3e3c2f6469763e3c64697620636c6173733d227365617263682d68696e74223e3c7374726f6e673e4578616d706c65733a3c2f7374726f6e673e3c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c27305c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e426c6f636b20303c2f613e20e280a2203c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c273534333231305c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e426c6f636b203534333231303c2f613e20e280a2203c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c276c61746573745c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e4c61746573743c2f613e20e280a2203c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c27706f6f6c5c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e4d656d706f6f6c3c2f613e3c62723e3c7374726f6e673e416c736f20737570706f7274733a3c2f7374726f6e673e205472616e73616374696f6e206861736865732c20426c6f636b206861736865732c20536d61727420436f6e74726163742049447320285343494473293c2f6469763e3c2f6469763e273b0a202020207d2c0a0a202020202f2f20517569636b20736561726368207769746820707265646566696e65642071756572790a20202020717569636b5365617263683a2066756e6374696f6e28717565727929207b0a2020202020202020636f6e737420696e707574203d20646f63756d656e742e676574456c656d656e7442794964282764617368626f6172642d7365617263682d696e7075742729207c7c20646f63756d656e742e676574456c656d656e744279496428277365617263682d696e70757427293b0a202020202020202069662028696e70757429207b0a202020202020202020202020696e7075742e76616c7565203d2071756572793b0a202020202020202020202020746869732e706572666f726d53656172636828293b0a20202020202020207d0a202020207d2c0a0a202020202f2f204465746563742073656172636820717565727920747970650a20202020646574656374547970653a2066756e6374696f6e28717565727929207b0a20202020202020207175657279203d2071756572792e7472696d28293b0a2020202020202020636f6e736f6c652e6c6f672827446574656374696e67207479706520666f722071756572793a272c2071756572792c20276c656e6774683a272c2071756572792e6c656e677468293b0a20202020202020200a20202020202020202f2f20436865636b20666f722036342d6368617261637465722068657820737472696e677320464952535420286265666f726520636865636b696e6720666f72206e756d62657273290a20202020202020202f2f20546869732070726576656e7473205458494473206c696b6520223030303030302e2e2e222066726f6d206265696e67206d69736964656e74696669656420617320626c6f636b20686569676874730a2020202020202020696620282f5e5b302d39612d66412d465d7b36347d242f692e746573742871756572792929207b0a202020202020202020202020636f6e736f6c652e6c6f67282744657465637465642061732036342d6368617220686173682028545849442f426c6f636b20486173682f534349442927293b0a20202020202020202020202072657475726e202768617368273b0a20202020202020207d0a20202020202020200a20202020202020202f2f2044697361626c65643a2036362d6368617261637465722068657820737472696e67732063617573652062726f7773657220667265657a65730a20202020202020202f2f20696620282f5e5b302d39612d66412d465d7b36367d242f692e746573742871756572792929207b0a20202020202020202f2f2020202020636f6e736f6c652e6c6f67282744657465637465642061732036362d6368617220686578206461746120285343207661726961626c652f656e636f64656420646174612927293b0a20202020202020202f2f202020202072657475726e202773635f64617461273b0a20202020202020202f2f207d0a20202020202020200a20202020202020202f2f20436865636b20666f7220626c6f636b2068656967687420286e756d62657273206f6e6c7929202d20627574206f6e6c79206966206e6f742036342063686172730a2020202020202020696620282f5e5c642b242f2e74657374287175657279292026262071756572792e6c656e677468203c20323029207b0a202020202020202020202020636f6e736f6c652e6c6f672827446574656374656420617320626c6f636b2068656967687427293b0a20202020202020202020202072657475726e2027686569676874273b0a20202020202020207d0a20202020202020200a20202020202020202f2f205370656369616c206b6579776f7264730a20202020202020206966202871756572792e746f4c6f776572436173652829203d3d3d20276c61746573742729207b0a202020202020202020202020636f6e736f6c652e6c6f6728274465746563746564206173206c617465737427293b0a20202020202020202020202072657475726e20276c6174657374273b0a20202020202020207d0a20202020202020206966202871756572792e746f4c6f776572436173652829203d3d3d2027706f6f6c2729207b0a202020202020202020202020636f6e736f6c652e6c6f672827446574656374656420617320706f6f6c27293b0a20202020202020202020202072657475726e2027706f6f6c273b0a20202020202020207d0a20202020202020200a20202020202020202f2f205061727469616c206861736820286c657373207468616e2036342063686172732062757420686578290a2020202020202020696620282f5e5b302d39612d66412d465d7b382c7d242f692e74657374287175657279292026262071756572792e6c656e677468203c2036342026262071756572792e6c656e677468203e3d203829207b0a202020202020202020202020636f6e736f6c652e6c6f6728274465746563746564206173207061727469616c206861736827293b0a20202020202020202020202072657475726e20277061727469616c273b0a20202020202020207d0a20202020202020200a2020202020202020636f6e736f6c652e6c6f672827446574656374656420617320756e6b6e6f776e27293b0a202020202020202072657475726e2027756e6b6e6f776e273b0a202020207d2c0a0a202020202f2f20506572666f726d20736561726368206261736564206f6e2071756572790a20202020706572666f726d5365617263683a206173796e632066756e6374696f6e2829207b0a2020202020202020636f6e737420696e707574203d20646f63756d656e742e676574456c656d656e7442794964282764617368626f6172642d7365617263682d696e7075742729207c7c20646f63756d656e742e676574456c656d656e744279496428277365617263682d696e70757427293b0a2020202020202020636f6e7374207175657279203d20696e707574203f20696e7075742e76616c75652e7472696d2829203a2027273b0a20202020202020200a20202020202020206966202821717565727929207b0a202020202020202020202020746869732e73686f774572726f722827506c6561736520656e74657220612073656172636820717565727927293b0a20202020202020202020202072657475726e3b0a20202020202020207d0a20202020202020200a2020202020202020746869732e73686f7750726f67726573732827536561726368696e672e2e2e27293b0a20202020202020200a2020202020202020747279207b0a202020202020202020202020636f6e73742074797065203d20746869732e64657465637454797065287175657279293b0a2020202020202020202020200a20202020202020202020202073776974636820287479706529207b0a20202020202020202020202020202020636173652027686569676874273a0a2020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b2071756572793b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a202020202020202020202020202020206361736520276c6174657374273a0a20202020202020202020202020202020202020206966202877696e646f772e73746174732026262077696e646f772e73746174732e68656967687429207b0a202020202020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a20202020202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b2077696e646f772e73746174732e6865696768743b0a20202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020202020636f6e737420696e666f203d2061776169742077696e646f772e78737764436f72652e6765744e6574776f726b496e666f28293b0a20202020202020202020202020202020202020202020202069662028696e666f20262620696e666f2e68656967687429207b0a20202020202020202020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b20696e666f2e6865696768743b0a2020202020202020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020202020202020202020746869732e73686f774572726f722827556e61626c6520746f20676574206c617465737420626c6f636b2068656967687427293b0a2020202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a20202020202020202020202020202020636173652027706f6f6c273a0a2020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027706f6f6c273b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a2020202020202020202020202020202063617365202768617368273a0a2020202020202020202020202020202020202020617761697420746869732e73656172636848617368287175657279293b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a2020202020202020202020202020202063617365202773635f64617461273a0a2020202020202020202020202020202020202020746869732e73686f77534344617461496e666f287175657279293b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a202020202020202020202020202020206361736520277061727469616c273a0a2020202020202020202020202020202020202020746869732e73686f774572726f72282748617368206170706561727320696e636f6d706c6574652e20506c656173652070726f76696465207468652066756c6c2036342d63686172616374657220686173682e27293b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a2020202020202020202020202020202064656661756c743a0a2020202020202020202020202020202020202020746869732e73686f774572726f722827496e76616c6964207365617263682071756572792e2055736520626c6f636b206865696768742c20626c6f636b20686173682c207472616e73616374696f6e20686173682c20534349442c20226c6174657374222c206f722022706f6f6c222e27293b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020746869732e73686f774572726f722827536561726368206661696c65643a2027202b206572726f722e6d657373616765293b0a20202020202020207d0a202020207d2c0a0a202020202f2f2053656172636820666f7220686173682028636f756c6420626520626c6f636b206f72207472616e73616374696f6e290a20202020736561726368486173683a206173796e632066756e6374696f6e286861736829207b0a2020202020202020696620282177696e646f772e78737764436f7265207c7c202177696e646f772e78737764436f72652e6973436f6e6e656374656429207b0a202020202020202020202020746869732e73686f774572726f7228275853574420636f6e6e656374696f6e20726571756972656427293b0a20202020202020202020202072657475726e3b0a20202020202020207d0a20202020202020200a2020202020202020636f6e736f6c652e6c6f672827536561726368696e6720686173683a272c2068617368293b0a20202020202020200a20202020202020202f2f20547279206173205452414e53414354494f4e20484153482046495253542073696e636520746861742773207768617420757365727320757375616c6c792073656172636820666f720a2020202020202020747279207b0a2020202020202020202020202f2f20547279206173207472616e73616374696f6e2068617368202d20757365206d756c7469706c652041504920617070726f616368657320666f722062657474657220636f6d7061746962696c6974790a202020202020202020202020636f6e736f6c652e6c6f672827547279696e67206173207472616e73616374696f6e20686173682e2e2e27293b0a2020202020202020202020200a2020202020202020202020202f2f205472792077697468206465636f64655f61735f6a736f6e206669727374202873616d65206173207472616e73616374696f6e206d6f64756c65290a2020202020202020202020206c6574207478526573756c74203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b686173685d2c200a202020202020202020202020202020206465636f64655f61735f6a736f6e3a2031200a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e2041504920726573706f6e7365202877697468206465636f64655f61735f6a736f6e293a272c207478526573756c74293b0a2020202020202020202020200a2020202020202020202020202f2f20436865636b206966207472616e73616374696f6e2065786973747320696e207072696d61727920666f726d61740a202020202020202020202020696620287478526573756c74202626207478526573756c742e747873202626207478526573756c742e7478732e6c656e677468203e203029207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e64206173207472616e73616374696f6e206861736820287072696d61727920666f726d61742927293b0a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d202774782f27202b20686173683b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a2020202020202020202020200a2020202020202020202020202f2f2054727920776974686f7574206465636f64655f61735f6a736f6e20666f7220546573744e657420636f6d7061746962696c6974790a202020202020202020202020636f6e736f6c652e6c6f672827547279696e67207472616e73616374696f6e2073656172636820776974686f7574206465636f64655f61735f6a736f6e2e2e2e27293b0a2020202020202020202020207478526573756c74203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b686173685d0a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e2041504920726573706f6e73652028776974686f7574206465636f6465293a272c207478526573756c74293b0a2020202020202020202020200a2020202020202020202020202f2f20436865636b206d756c7469706c6520706f737369626c6520726573706f6e736520666f726d6174730a202020202020202020202020696620287478526573756c7420262620280a20202020202020202020202020202020287478526573756c742e747873202626207478526573756c742e7478732e6c656e677468203e203029207c7c0a20202020202020202020202020202020287478526573756c742e7478735f61735f686578202626207478526573756c742e7478735f61735f6865782e6c656e677468203e203029207c7c0a20202020202020202020202020202020287478526573756c742e726573756c74202626207478526573756c742e726573756c742e747873202626207478526573756c742e726573756c742e7478732e6c656e677468203e2030290a2020202020202020202020202929207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e64206173207472616e73616374696f6e20686173682028616c7465726e617469766520666f726d61742927293b0a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d202774782f27202b20686173683b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e206e6f7420666f756e6420696e20616e7920726573706f6e736520666f726d617427293b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e2073656172636820415049206572726f723a272c206572726f722e6d657373616765293b0a20202020202020207d0a20202020202020200a20202020202020202f2f2054727920617320626c6f636b2068617368204f4e4c59206966207472616e73616374696f6e20736561726368206661696c730a2020202020202020747279207b0a202020202020202020202020636f6e736f6c652e6c6f672827547279696e6720617320626c6f636b20686173682e2e2e27293b0a202020202020202020202020636f6e737420626c6f636b526573756c74203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e476574426c6f636b486561646572427948617368272c207b20686173683a2068617368207d293b0a2020202020202020202020200a20202020202020202020202069662028626c6f636b526573756c7420262620626c6f636b526573756c742e626c6f636b5f68656164657229207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e6420617320626c6f636b20686173682c206865696768743a272c20626c6f636b526573756c742e626c6f636b5f6865616465722e686569676874293b0a202020202020202020202020202020200a202020202020202020202020202020202f2f205370656369616c20636173653a2069662074686973206c6f6f6b73206c696b652061205458494420627574206973206265696e6720666f756e6420617320426c6f636b20302c0a202020202020202020202020202020202f2f2073686f7720612068656c7066756c206d6573736167650a2020202020202020202020202020202069662028626c6f636b526573756c742e626c6f636b5f6865616465722e686569676874203d3d3d203020262620686173682e6c656e677468203d3d3d20363429207b0a2020202020202020202020202020202020202020636f6e736f6c652e6c6f672827545849442d6c696b65206861736820666f756e6420617320426c6f636b2030202d206d6967687420626520546573744e6574206265686176696f7227293b0a202020202020202020202020202020207d0a202020202020202020202020202020200a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b20626c6f636b526573756c742e626c6f636b5f6865616465722e6865696768743b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f6728274e6f74206120626c6f636b20686173683a272c206572726f722e6d657373616765293b0a20202020202020207d0a20202020202020200a20202020202020202f2f2046696e616c2066616c6c6261636b3a2074727920617320534349440a2020202020202020747279207b0a202020202020202020202020636f6e736f6c652e6c6f672827547279696e6720617320736d61727420636f6e74726163742049442e2e2e27293b0a202020202020202020202020636f6e7374206e6f726d616c697a656453434944203d20686173682e746f4c6f7765724361736528293b0a202020202020202020202020636f6e7374207363496e666f203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745343272c207b200a20202020202020202020202020202020736369643a206e6f726d616c697a6564534349442c0a20202020202020202020202020202020636f64653a2066616c73652c0a202020202020202020202020202020207661726961626c65733a20747275650a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020696620287363496e666f20262620287363496e666f2e737461747573203d3d3d20274f4b27207c7c207363496e666f2e62616c616e636520213d3d20756e646566696e65642929207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e6420617320736d61727420636f6e747261637420494427293b0a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027736d617274636f6e7472616374732f27202b206e6f726d616c697a6564534349443b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202020636f6e736f6c652e6c6f6728274e6f7420612076616c696420736d61727420636f6e747261637420494427293b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f672827536d61727420636f6e747261637420736561726368206572726f723a272c206572726f722e6d657373616765293b0a20202020202020207d0a20202020202020200a2020202020202020636f6e736f6c652e6c6f67282748617368206e6f7420666f756e6420696e20616e792063617465676f72793a272c2068617368293b0a20202020202020200a20202020202020202f2f20435249544943414c3a2050726576656e74206e617669676174696f6e20746f20426c6f636b203020627920656e737572696e6720776520646f6e2774206368616e67652074686520686173680a20202020202020202f2f207768656e2074686520736561726368206661696c730a2020202020202020746869732e73686f774572726f72282748617368206e6f7420666f756e6420696e20626c6f636b636861696e2e20506c656173652076657269667920697420697320612076616c696420626c6f636b20686173682c207472616e73616374696f6e20686173682c206f7220736d61727420636f6e7472616374204944202853434944292e27293b0a20202020202020200a20202020202020202f2f20456e737572652077652073746179206f6e207468652063757272656e74207061676520616e6420646f6e2774206e6176696761746520616e7977686572650a202020202020202072657475726e2066616c73653b0a202020207d2c0a0a202020202f2f2053656172636820666f7220534349442028536d61727420436f6e7472616374204944290a20202020736561726368534349443a206173796e632066756e6374696f6e287363696429207b0a2020202020202020696620282177696e646f772e78737764436f7265207c7c202177696e646f772e78737764436f72652e6973436f6e6e656374656429207b0a202020202020202020202020746869732e73686f774572726f7228275853574420636f6e6e656374696f6e20726571756972656427293b0a20202020202020202020202072657475726e3b0a20202020202020207d0a20202020202020200a2020202020202020747279207b0a2020202020202020202020202f2f204e6f726d616c697a65205343494420746f206c6f776572636173650a202020202020202020202020636f6e7374206e6f726d616c697a656453434944203d20736369642e746f4c6f7765724361736528293b0a2020202020202020202020200a2020202020202020202020202f2f2054727920746f2067657420736d61727420636f6e747261637420696e666f726d6174696f6e0a202020202020202020202020636f6e7374207363496e666f203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745343272c207b200a20202020202020202020202020202020736369643a206e6f726d616c697a6564534349442c0a20202020202020202020202020202020636f64653a2066616c73652c0a202020202020202020202020202020207661726961626c65733a20747275650a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020696620287363496e666f20262620287363496e666f2e737461747573203d3d3d20274f4b27207c7c207363496e666f2e62616c616e636520213d3d20756e646566696e65642929207b0a202020202020202020202020202020202f2f205343494420657869737473202d206e6176696761746520746f20736d61727420636f6e74726163747320706167652077697468207468697320534349440a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027736d617274636f6e7472616374732f27202b206e6f726d616c697a6564534349443b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a20202020202020207d0a20202020202020200a20202020202020202f2f2049662053434944206c6f6f6b7570206661696c65642c20747279206173206120726567756c617220686173682028636f756c64206265206d69736964656e746966696564290a2020202020202020747279207b0a202020202020202020202020617761697420746869732e736561726368486173682873636964293b0a20202020202020202020202072657475726e3b0a20202020202020207d20636174636820286572726f7229207b0a2020202020202020202020202f2f2046696e616c2066616c6c6261636b206572726f720a202020202020202020202020746869732e73686f774572726f72282753434944202227202b2073636964202b202722206e6f7420666f756e642e20506c656173652076657269667920697420697320612076616c696420736d61727420636f6e74726163742049442c20626c6f636b20686173682c206f72207472616e73616374696f6e20686173682e27293b0a20202020202020207d0a202020207d2c0a0a202020202f2f20436c6561722073656172636820696e7075740a20202020636c6561725365617263683a2066756e6374696f6e2829207b0a2020202020202020636f6e737420696e707574203d20646f63756d656e742e676574456c656d656e7442794964282764617368626f6172642d7365617263682d696e7075742729207c7c20646f63756d656e742e676574456c656d656e744279496428277365617263682d696e70757427293b0a202020202020202069662028696e70757429207b0a202020202020202020202020696e7075742e76616c7565203d2027273b0a20202020202020207d0a202020207d2c0a0a202020202f2f2053686f77207365617263682070726f67726573730a2020202073686f7750726f67726573733a2066756e6374696f6e286d65737361676529207b0a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20273c64697620636c6173733d226c6f6164696e672d696e64696361746f72223e27202b206d657373616765202b20273c2f6469763e273b0a20202020202020207d0a202020207d2c0a0a202020202f2f2053686f7720736561726368206572726f720a2020202073686f774572726f723a2066756e6374696f6e286d65737361676529207b0a2020202020202020636f6e736f6c652e6c6f672827536561726368204572726f723a272c206d657373616765293b0a20202020202020200a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20273c64697620636c6173733d22656e68616e6365642d63617264223e3c64697620636c6173733d226572726f722d63617264223e3c68333e536561726368204572726f723c2f68333e3c703e27202b206d657373616765202b20273c2f703e3c2f6469763e3c2f6469763e273b0a20202020202020207d20656c7365207b0a2020202020202020202020202f2f204966206e6f2073656172636820726573756c7420636f6e7461696e65722c2073686f77206572726f7220696e206d61696e20636f6e74656e74206f7220616c6572740a202020202020202020202020636f6e7374206d61696e436f6e74656e74203d20646f63756d656e742e676574456c656d656e744279496428276d61696e2d636f6e74656e7427293b0a202020202020202020202020696620286d61696e436f6e74656e7420262620216d61696e436f6e74656e742e696e6e657248544d4c2e696e636c7564657328274c6f6164696e67272929207b0a202020202020202020202020202020202f2f2053686f77206572726f72206f7665726c61790a20202020202020202020202020202020636f6e7374206572726f72446976203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020202020202020206572726f724469762e7374796c652e63737354657874203d2027706f736974696f6e3a66697865643b746f703a323070783b72696768743a323070783b6261636b67726f756e643a72676261283233392c36382c36382c302e39293b636f6c6f723a77686974653b70616464696e673a3172656d3b626f726465722d7261646975733a3870783b7a2d696e6465783a313030303b6d61782d77696474683a33303070783b273b0a202020202020202020202020202020206572726f724469762e696e6e657248544d4c203d20273c7374726f6e673e536561726368204572726f723a3c2f7374726f6e673e3c62722f3e27202b206d657373616765202b20273c62722f3e3c627574746f6e206f6e636c69636b3d22746869732e706172656e74456c656d656e742e72656d6f7665282922207374796c653d226d617267696e2d746f703a302e3572656d3b70616464696e673a302e323572656d20302e3572656d3b6261636b67726f756e643a72676261283235352c3235352c3235352c302e32293b626f726465723a6e6f6e653b636f6c6f723a77686974653b626f726465722d7261646975733a3470783b637572736f723a706f696e7465723b223e436c6f73653c2f627574746f6e3e273b0a20202020202020202020202020202020646f63756d656e742e626f64792e617070656e644368696c64286572726f72446976293b0a202020202020202020202020202020200a202020202020202020202020202020202f2f204175746f2d72656d6f76652061667465722038207365636f6e64730a2020202020202020202020202020202073657454696d656f7574282829203d3e207b0a2020202020202020202020202020202020202020696620286572726f724469762e706172656e74456c656d656e7429207b0a2020202020202020202020202020202020202020202020206572726f724469762e72656d6f766528293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020207d2c2038303030293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202020616c657274286d657373616765293b0a2020202020202020202020207d0a20202020202020207d0a202020207d2c0a0a202020202f2f2053686f772073656172636820737563636573730a2020202073686f77537563636573733a2066756e6374696f6e286d65737361676529207b0a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20273c64697620636c6173733d22656e68616e6365642d63617264223e3c64697620636c6173733d22737563636573732d63617264223e3c68333e53656172636820436f6d706c6574653c2f68333e3c703e27202b206d657373616765202b20273c2f703e3c2f6469763e3c2f6469763e273b0a20202020202020207d0a202020207d2c0a202020200a202020202f2f2044656275672066756e6374696f6e20666f722074657374696e67207472616e73616374696f6e2073656172636865730a202020207465737454785365617263683a206173796e632066756e6374696f6e2874784861736829207b0a2020202020202020636f6e736f6c652e6c6f672827f09fa7aa2054657374696e67207472616e73616374696f6e2073656172636820666f723a272c20747848617368293b0a20202020202020200a2020202020202020696620282177696e646f772e78737764436f7265207c7c202177696e646f772e78737764436f72652e6973436f6e6e656374656429207b0a202020202020202020202020636f6e736f6c652e6c6f672827e29d8c2058535744206e6f7420636f6e6e656374656427293b0a20202020202020202020202072657475726e2066616c73653b0a20202020202020207d0a20202020202020200a2020202020202020747279207b0a2020202020202020202020202f2f2054657374207468652065786163742073616d652063616c6c20617320746865207365617263682066756e6374696f6e0a202020202020202020202020636f6e7374207478526573756c7431203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b7478486173685d2c200a202020202020202020202020202020206465636f64655f61735f6a736f6e3a2031200a2020202020202020202020207d293b0a202020202020202020202020636f6e736f6c652e6c6f672827f09fa7aa205465737420726573756c742031202877697468206465636f6465293a272c207478526573756c7431293b0a2020202020202020202020200a202020202020202020202020636f6e7374207478526573756c7432203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b7478486173685d0a2020202020202020202020207d293b0a202020202020202020202020636f6e736f6c652e6c6f672827f09fa7aa205465737420726573756c7420322028776974686f7574206465636f6465293a272c207478526573756c7432293b0a2020202020202020202020200a20202020202020202020202072657475726e207b20726573756c74313a207478526573756c74312c20726573756c74323a207478526573756c7432207d3b0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f672827f09fa7aa2054657374206572726f723a272c206572726f72293b0a20202020202020202020202072657475726e207b206572726f723a206572726f722e6d657373616765207d3b0a20202020202020207d0a202020207d2c0a0a2020202073686f77534344617461496e666f3a2066756e6374696f6e286865784461746129207b0a2020202020202020636f6e736f6c652e6c6f67282753686f77696e67205343206461746120696e666f20666f723a272c2068657844617461293b0a2020202020202020746869732e636c65617253656172636828293b0a20202020202020200a20202020202020202f2f20517569636b20616e64207361666520686578206465636f64696e672077697468206c696d6974730a20202020202020206c6574206465636f64656454657874203d2027486578206461746120616e616c797369732064697361626c656420666f7220706572666f726d616e6365273b0a20202020202020200a20202020202020202f2f20466f72206e6f772c206a7573742073686f772074686520686578206461746120776974686f75742068656176792070726f63657373696e670a20202020202020202f2f205468652043505520667265657a6520776173206c696b656c79206361757365642062792074686520686578206465636f64696e67206c6f6f700a0a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20600a202020202020202020202020202020203c64697620636c6173733d22656e68616e6365642d63617264223e0a20202020202020202020202020202020202020203c64697620636c6173733d22636172642d686561646572223e0a2020202020202020202020202020202020202020202020203c6832207374796c653d22636f6c6f723a20236239353962363b20666f6e742d73697a653a20312e3672656d3b20666f6e742d7765696768743a203730303b206d617267696e3a20303b223e536d61727420436f6e7472616374205661726961626c6520446174613c2f68323e0a20202020202020202020202020202020202020203c2f6469763e0a20202020202020202020202020202020202020203c64697620636c6173733d22636172642d636f6e74656e74223e0a2020202020202020202020202020202020202020202020203c646976207374796c653d226d617267696e2d626f74746f6d3a203172656d3b223e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22636f6c6f723a20236233623362333b20666f6e742d73697a653a20302e3972656d3b206d617267696e2d626f74746f6d3a20302e3572656d3b223e48657820446174612028247b686578446174612e6c656e6774687d2063686172616374657273293a3c2f6469763e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22666f6e742d66616d696c793a206d6f6e6f73706163653b20636f6c6f723a20233461646538303b20666f6e742d73697a653a20302e3872656d3b20776f72642d627265616b3a20627265616b2d616c6c3b206261636b67726f756e643a207267626128302c302c302c302e33293b2070616464696e673a203172656d3b20626f726465722d7261646975733a203670783b20637572736f723a20706f696e7465723b22206f6e636c69636b3d226e6176696761746f722e636c6970626f6172642e7772697465546578742827247b686578446174617d272922207469746c653d22436c69636b20746f20636f7079223e247b686578446174617d3c2f6469763e0a2020202020202020202020202020202020202020202020203c2f6469763e0a2020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020203c646976207374796c653d226d617267696e2d626f74746f6d3a203172656d3b223e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22636f6c6f723a20236233623362333b20666f6e742d73697a653a20302e3972656d3b206d617267696e2d626f74746f6d3a20302e3572656d3b223e4465636f646564205465787420286966207265616461626c65293a3c2f6469763e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22666f6e742d66616d696c793a206d6f6e6f73706163653b20636f6c6f723a20236662626632343b20666f6e742d73697a653a20302e3872656d3b206261636b67726f756e643a207267626128302c302c302c302e33293b2070616464696e673a203172656d3b20626f726465722d7261646975733a203670783b223e247b6465636f646564546578747d3c2f6469763e0a2020202020202020202020202020202020202020202020203c2f6469763e0a2020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020203c646976207374796c653d22636f6c6f723a20233838383b20666f6e742d73697a653a20302e3872656d3b206c696e652d6865696768743a20312e343b223e0a2020202020202020202020202020202020202020202020202020202054686973206170706561727320746f20626520736d61727420636f6e7472616374207661726961626c6520646174612e2049742773206e6f742061207374616e6461726420545849442f534349442f426c6f636b20686173682c20627574206d617920636f6e7461696e20656e636f64656420696e666f726d6174696f6e206f72207265666572656e6365732e0a2020202020202020202020202020202020202020202020203c2f6469763e0a20202020202020202020202020202020202020203c2f6469763e0a202020202020202020202020202020203c2f6469763e0a202020202020202020202020603b0a20202020202020207d0a202020207d0a7d293b0a2a2f
dURL 6578706c6f7265722e74656c61
descrHdr 426c6f636b636861696e207365617263682066756e6374696f6e616c697479
dislikes 0
docType 54454c412d4a532d31
docVersion 312e302e30
fileCheckC 343638363031366532646237373937373934316238393137393762376539633861333936306162363866343462373331343962333832373437666139623537
fileCheckS 32393338363032613636383164646235313233313066336264356233346537623366616531373133353064356464363030653230376439663963646630656462
hash 65363162333431333732393663353461623136303337653661643961626337366531306432366662623032333464373361363837646139653766616537363865
iconURLHdr
likes 0
nameHdr 7365617263682e6a73
owner 616e6f6e
subDir
SCID uint64 variables
key value
built BLID : b067a19090b0c55b80dacb69ae03b77811b58c541b7d13f926342d83e6347fa2
Tx RootHash: b3c85faf1365d8dab55701997eb88746a50ae040ffd22d2c765c1392d07cfc7f built height : 6013924
Timestamp: 1759380428817 Timestamp [UTC]: 2025-10-01 21:47:08 Age [y:d:h:m:s]: 16:32:15.208
Block: 6013929 Fee: 0.18927 Tx size: 21.379 kB
Tx version: 1 No of confirmations: 3108 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 16 inputs/outputs (RING size) Fees 0.18927 Deposited to SC 0.00000
Sender :
address
dero1qyh7lh4wdr9u4hkdgkjn0xgvestv48ne550jyjjes4cpzza5dn2tjqg4vhsjz
dero1qysmn5h7sjt4dv90ek5k4tn0uhlh2arnmd6qakxr8j3a048ku9wfvqqe2s07a
dero1qyrcndjmv2g0ahtd3xq7k57vt8egks467pd44glq2k7rjhzpd8ud2qq3mulw7
dero1qys5vugyntgks847g295ye7vgncugy0vjwqn0kkkpeg6t9qp6q9v5qq3tn7rj
dero1qydav5ksdxgv0vg33fpamwgft4gegetntquw7n8h6znxjx8jlxznxqg6my44w
dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270
dero1qyqu6kdla44msn0ky5skpv4fahj2ay80ycjpz27kgc4wf7jk4ys0kqq6s36fh
dero1qyvavp4g5xzpg5nj4xthytdngx2v4kv93zfvz02vkk68ghzfqahrxqqyk3htn
dero1qyyuwryun9x6z82khq4fprgru2j3xuvajhezktrkdd97m7kqy6xvxqghxrp02
dero1qyne2ptaqg8e3khj7ksen3mt4nw4dufqu0vj5ef0g3cpf933jw9h2qqugulee
dero1qywatgqnl9gvhw8vqmal8y94athqpl9600q2f9nsq6vcnshmyshq5qqvvxq30
dero1qyk8as2tu65wwavrz8uv4tewnn0lel3zd8p9ahdq9dsrv88jprk3zqg7ayrzz
dero1qydeswy3n3jrfdaeqgw3u7gsne9x9r2t7wt6ug8ggxkxmpfjfpxzzqg3pg9hy
dero1qy33u3463y39qs0sff5c8628q658qyvgpe7xnlwprzncmv3w5mtj6qgmj08aa
dero1qyrawg4x89cn837y3ytunkmcmkgt2uuhpd0sq6a8g9hk3hlaqg2uwqgm2cl4w
dero1qy34049ewg2x06y5y32zmj206nql8zfq0ndw443fackms2yg0ktv6qgxr5866
SC Balance: 0.00000 DERO
SC CODE:
  Function InitializePrivate() Uint64
10 IF init() == 0 THEN GOTO 30
20 RETURN 1
30 STORE("nameHdr", "search.js")
31 STORE("descrHdr", "Blockchain search functionality")
32 STORE("iconURLHdr", "")
33 STORE("dURL", "explorer.tela")
34 STORE("docType", "TELA-JS-1")
35 STORE("subDir", "")
36 STORE("fileCheckC", "4686016e2db77977941b891797b7e9c8a3960ab68f44b73149b382747fa9b57")
37 STORE("fileCheckS", "2938602a6681ddb512310f3bd5b34e7b3fae171350d5dd600e207d9f9cdf0edb")
100 RETURN 0
End Function

Function init() Uint64
10 IF EXISTS("owner") == 0 THEN GOTO 30
20 RETURN 1
30 STORE("owner", address())
50 STORE("docVersion", "1.0.0")
60 STORE("hash", HEX(TXID()))
70 STORE("likes", 0)
80 STORE("dislikes", 0)
100 RETURN 0
End Function

Function address() String
10 DIM s as String
20 LET s = SIGNER()
30 IF IS_ADDRESS_VALID(s) THEN GOTO 50
40 RETURN "anon"
50 RETURN ADDRESS_STRING(s)
End Function

Function Rate(r Uint64) Uint64
10 DIM addr as String
15 LET addr = address()
16 IF r < 100 && EXISTS(addr) == 0 && addr != "anon" THEN GOTO 30
20 RETURN 1
30 STORE(addr, ""+r+"_"+BLOCK_HEIGHT())
40 IF r < 50 THEN GOTO 70
50 STORE("likes", LOAD("likes")+1)
60 RETURN 0
70 STORE("dislikes", LOAD("dislikes")+1)
100 RETURN 0
End Function

/*
({
    name: 'search',
    version: '1.0.0',

    // Render search bar HTML
    renderSearchBar: function() {
        return '<div class="card"><div class="section-header"><h2>Blockchain Search</h2><div class="section-info">Search blocks, transactions, and addresses on the DERO blockchain</div></div><div class="search-bar" style="margin-top:0;margin-bottom:1rem"><input type="text" id="dashboard-search-input" placeholder="Block height, hash, transaction hash, or SCID..." onkeypress="if(event.key===\'Enter\')window.searchModule.performSearch()"><button onclick="window.searchModule.performSearch()">Search</button></div><div class="search-hint"><strong>Examples:</strong><a href="#" onclick="window.searchModule.quickSearch(\'0\')" style="color:var(--primary-color);margin:0 8px">Block 0</a> • <a href="#" onclick="window.searchModule.quickSearch(\'543210\')" style="color:var(--primary-color);margin:0 8px">Block 543210</a> • <a href="#" onclick="window.searchModule.quickSearch(\'latest\')" style="color:var(--primary-color);margin:0 8px">Latest</a> • <a href="#" onclick="window.searchModule.quickSearch(\'pool\')" style="color:var(--primary-color);margin:0 8px">Mempool</a><br><strong>Also supports:</strong> Transaction hashes, Block hashes, Smart Contract IDs (SCIDs)</div></div>';
    },

    // Quick search with predefined query
    quickSearch: function(query) {
        const input = document.getElementById('dashboard-search-input') || document.getElementById('search-input');
        if (input) {
            input.value = query;
            this.performSearch();
        }
    },

    // Detect search query type
    detectType: function(query) {
        query = query.trim();
        console.log('Detecting type for query:', query, 'length:', query.length);
        
        // Check for 64-character hex strings FIRST (before checking for numbers)
        // This prevents TXIDs like "000000..." from being misidentified as block heights
        if (/^[0-9a-fA-F]{64}$/i.test(query)) {
            console.log('Detected as 64-char hash (TXID/Block Hash/SCID)');
            return 'hash';
        }
        
        // Disabled: 66-character hex strings cause browser freezes
        // if (/^[0-9a-fA-F]{66}$/i.test(query)) {
        //     console.log('Detected as 66-char hex data (SC variable/encoded data)');
        //     return 'sc_data';
        // }
        
        // Check for block height (numbers only) - but only if not 64 chars
        if (/^\d+$/.test(query) && query.length < 20) {
            console.log('Detected as block height');
            return 'height';
        }
        
        // Special keywords
        if (query.toLowerCase() === 'latest') {
            console.log('Detected as latest');
            return 'latest';
        }
        if (query.toLowerCase() === 'pool') {
            console.log('Detected as pool');
            return 'pool';
        }
        
        // Partial hash (less than 64 chars but hex)
        if (/^[0-9a-fA-F]{8,}$/i.test(query) && query.length < 64 && query.length >= 8) {
            console.log('Detected as partial hash');
            return 'partial';
        }
        
        console.log('Detected as unknown');
        return 'unknown';
    },

    // Perform search based on query
    performSearch: async function() {
        const input = document.getElementById('dashboard-search-input') || document.getElementById('search-input');
        const query = input ? input.value.trim() : '';
        
        if (!query) {
            this.showError('Please enter a search query');
            return;
        }
        
        this.showProgress('Searching...');
        
        try {
            const type = this.detectType(query);
            
            switch (type) {
                case 'height':
                    this.clearSearch();
                    window.location.hash = 'block/' + query;
                    break;
                    
                case 'latest':
                    if (window.stats && window.stats.height) {
                        this.clearSearch();
                        window.location.hash = 'block/' + window.stats.height;
                    } else {
                        const info = await window.xswdCore.getNetworkInfo();
                        if (info && info.height) {
                            this.clearSearch();
                            window.location.hash = 'block/' + info.height;
                        } else {
                            this.showError('Unable to get latest block height');
                        }
                    }
                    break;
                    
                case 'pool':
                    this.clearSearch();
                    window.location.hash = 'pool';
                    break;
                    
                case 'hash':
                    await this.searchHash(query);
                    break;
                    
                case 'sc_data':
                    this.showSCDataInfo(query);
                    break;
                    
                case 'partial':
                    this.showError('Hash appears incomplete. Please provide the full 64-character hash.');
                    break;
                    
                default:
                    this.showError('Invalid search query. Use block height, block hash, transaction hash, SCID, "latest", or "pool".');
            }
        } catch (error) {
            this.showError('Search failed: ' + error.message);
        }
    },

    // Search for hash (could be block or transaction)
    searchHash: async function(hash) {
        if (!window.xswdCore || !window.xswdCore.isConnected) {
            this.showError('XSWD connection required');
            return;
        }
        
        console.log('Searching hash:', hash);
        
        // Try as TRANSACTION HASH FIRST since that's what users usually search for
        try {
            // Try as transaction hash - use multiple API approaches for better compatibility
            console.log('Trying as transaction hash...');
            
            // Try with decode_as_json first (same as transaction module)
            let txResult = await window.xswdCore.call('DERO.GetTransaction', { 
                txs_hashes: [hash], 
                decode_as_json: 1 
            });
            
            console.log('Transaction API response (with decode_as_json):', txResult);
            
            // Check if transaction exists in primary format
            if (txResult && txResult.txs && txResult.txs.length > 0) {
                console.log('Found as transaction hash (primary format)');
                this.clearSearch();
                window.location.hash = 'tx/' + hash;
                return;
            }
            
            // Try without decode_as_json for TestNet compatibility
            console.log('Trying transaction search without decode_as_json...');
            txResult = await window.xswdCore.call('DERO.GetTransaction', { 
                txs_hashes: [hash]
            });
            
            console.log('Transaction API response (without decode):', txResult);
            
            // Check multiple possible response formats
            if (txResult && (
                (txResult.txs && txResult.txs.length > 0) ||
                (txResult.txs_as_hex && txResult.txs_as_hex.length > 0) ||
                (txResult.result && txResult.result.txs && txResult.result.txs.length > 0)
            )) {
                console.log('Found as transaction hash (alternative format)');
                this.clearSearch();
                window.location.hash = 'tx/' + hash;
                return;
            } else {
                console.log('Transaction not found in any response format');
            }
        } catch (error) {
            console.log('Transaction search API error:', error.message);
        }
        
        // Try as block hash ONLY if transaction search fails
        try {
            console.log('Trying as block hash...');
            const blockResult = await window.xswdCore.call('DERO.GetBlockHeaderByHash', { hash: hash });
            
            if (blockResult && blockResult.block_header) {
                console.log('Found as block hash, height:', blockResult.block_header.height);
                
                // Special case: if this looks like a TXID but is being found as Block 0,
                // show a helpful message
                if (blockResult.block_header.height === 0 && hash.length === 64) {
                    console.log('TXID-like hash found as Block 0 - might be TestNet behavior');
                }
                
                this.clearSearch();
                window.location.hash = 'block/' + blockResult.block_header.height;
                return;
            }
        } catch (error) {
            console.log('Not a block hash:', error.message);
        }
        
        // Final fallback: try as SCID
        try {
            console.log('Trying as smart contract ID...');
            const normalizedSCID = hash.toLowerCase();
            const scInfo = await window.xswdCore.call('DERO.GetSC', { 
                scid: normalizedSCID,
                code: false,
                variables: true
            });
            
            if (scInfo && (scInfo.status === 'OK' || scInfo.balance !== undefined)) {
                console.log('Found as smart contract ID');
                this.clearSearch();
                window.location.hash = 'smartcontracts/' + normalizedSCID;
                return;
            } else {
                console.log('Not a valid smart contract ID');
            }
        } catch (error) {
            console.log('Smart contract search error:', error.message);
        }
        
        console.log('Hash not found in any category:', hash);
        
        // CRITICAL: Prevent navigation to Block 0 by ensuring we don't change the hash
        // when the search fails
        this.showError('Hash not found in blockchain. Please verify it is a valid block hash, transaction hash, or smart contract ID (SCID).');
        
        // Ensure we stay on the current page and don't navigate anywhere
        return false;
    },

    // Search for SCID (Smart Contract ID)
    searchSCID: async function(scid) {
        if (!window.xswdCore || !window.xswdCore.isConnected) {
            this.showError('XSWD connection required');
            return;
        }
        
        try {
            // Normalize SCID to lowercase
            const normalizedSCID = scid.toLowerCase();
            
            // Try to get smart contract information
            const scInfo = await window.xswdCore.call('DERO.GetSC', { 
                scid: normalizedSCID,
                code: false,
                variables: true
            });
            
            if (scInfo && (scInfo.status === 'OK' || scInfo.balance !== undefined)) {
                // SCID exists - navigate to smart contracts page with this SCID
                this.clearSearch();
                window.location.hash = 'smartcontracts/' + normalizedSCID;
                return;
            }
        } catch (error) {
        }
        
        // If SCID lookup failed, try as a regular hash (could be misidentified)
        try {
            await this.searchHash(scid);
            return;
        } catch (error) {
            // Final fallback error
            this.showError('SCID "' + scid + '" not found. Please verify it is a valid smart contract ID, block hash, or transaction hash.');
        }
    },

    // Clear search input
    clearSearch: function() {
        const input = document.getElementById('dashboard-search-input') || document.getElementById('search-input');
        if (input) {
            input.value = '';
        }
    },

    // Show search progress
    showProgress: function(message) {
        const searchResult = document.getElementById('search-result');
        if (searchResult) {
            searchResult.innerHTML = '<div class="loading-indicator">' + message + '</div>';
        }
    },

    // Show search error
    showError: function(message) {
        console.log('Search Error:', message);
        
        const searchResult = document.getElementById('search-result');
        if (searchResult) {
            searchResult.innerHTML = '<div class="enhanced-card"><div class="error-card"><h3>Search Error</h3><p>' + message + '</p></div></div>';
        } else {
            // If no search result container, show error in main content or alert
            const mainContent = document.getElementById('main-content');
            if (mainContent && !mainContent.innerHTML.includes('Loading')) {
                // Show error overlay
                const errorDiv = document.createElement('div');
                errorDiv.style.cssText = 'position:fixed;top:20px;right:20px;background:rgba(239,68,68,0.9);color:white;padding:1rem;border-radius:8px;z-index:1000;max-width:300px;';
                errorDiv.innerHTML = '<strong>Search Error:</strong><br/>' + message + '<br/><button onclick="this.parentElement.remove()" style="margin-top:0.5rem;padding:0.25rem 0.5rem;background:rgba(255,255,255,0.2);border:none;color:white;border-radius:4px;cursor:pointer;">Close</button>';
                document.body.appendChild(errorDiv);
                
                // Auto-remove after 8 seconds
                setTimeout(() => {
                    if (errorDiv.parentElement) {
                        errorDiv.remove();
                    }
                }, 8000);
            } else {
                alert(message);
            }
        }
    },

    // Show search success
    showSuccess: function(message) {
        const searchResult = document.getElementById('search-result');
        if (searchResult) {
            searchResult.innerHTML = '<div class="enhanced-card"><div class="success-card"><h3>Search Complete</h3><p>' + message + '</p></div></div>';
        }
    },
    
    // Debug function for testing transaction searches
    testTxSearch: async function(txHash) {
        console.log('🧪 Testing transaction search for:', txHash);
        
        if (!window.xswdCore || !window.xswdCore.isConnected) {
            console.log('❌ XSWD not connected');
            return false;
        }
        
        try {
            // Test the exact same call as the search function
            const txResult1 = await window.xswdCore.call('DERO.GetTransaction', { 
                txs_hashes: [txHash], 
                decode_as_json: 1 
            });
            console.log('🧪 Test result 1 (with decode):', txResult1);
            
            const txResult2 = await window.xswdCore.call('DERO.GetTransaction', { 
                txs_hashes: [txHash]
            });
            console.log('🧪 Test result 2 (without decode):', txResult2);
            
            return { result1: txResult1, result2: txResult2 };
        } catch (error) {
            console.log('🧪 Test error:', error);
            return { error: error.message };
        }
    },

    showSCDataInfo: function(hexData) {
        console.log('Showing SC data info for:', hexData);
        this.clearSearch();
        
        // Quick and safe hex decoding with limits
        let decodedText = 'Hex data analysis disabled for performance';
        
        // For now, just show the hex data without heavy processing
        // The CPU freeze was likely caused by the hex decoding loop

        const searchResult = document.getElementById('search-result');
        if (searchResult) {
            searchResult.innerHTML = `
                <div class="enhanced-card">
                    <div class="card-header">
                        <h2 style="color: #b959b6; font-size: 1.6rem; font-weight: 700; margin: 0;">Smart Contract Variable Data</h2>
                    </div>
                    <div class="card-content">
                        <div style="margin-bottom: 1rem;">
                            <div style="color: #b3b3b3; font-size: 0.9rem; margin-bottom: 0.5rem;">Hex Data (${hexData.length} characters):</div>
                            <div style="font-family: monospace; color: #4ade80; font-size: 0.8rem; word-break: break-all; background: rgba(0,0,0,0.3); padding: 1rem; border-radius: 6px; cursor: pointer;" onclick="navigator.clipboard.writeText('${hexData}')" title="Click to copy">${hexData}</div>
                        </div>
                        
                        <div style="margin-bottom: 1rem;">
                            <div style="color: #b3b3b3; font-size: 0.9rem; margin-bottom: 0.5rem;">Decoded Text (if readable):</div>
                            <div style="font-family: monospace; color: #fbbf24; font-size: 0.8rem; background: rgba(0,0,0,0.3); padding: 1rem; border-radius: 6px;">${decodedText}</div>
                        </div>
                        
                        <div style="color: #888; font-size: 0.8rem; line-height: 1.4;">
                            This appears to be smart contract variable data. It's not a standard TXID/SCID/Block hash, but may contain encoded information or references.
                        </div>
                    </div>
                </div>
            `;
        }
    }
});
*/
SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:'Function InitializePrivate() Uint64 10 IF init() == 0 THEN GOTO 30 20 RETURN 1 30 STORE("nameHdr", "search.js") 31 STORE("descrHdr", "Blockchain search functionality") 32 STORE("iconURLHdr", "") 33 STORE("dURL", "explorer.tela") 34 STORE("docType", "TELA-JS-1") 35 STORE("subDir", "") 36 STORE("fileCheckC", "4686016e2db77977941b891797b7e9c8a3960ab68f44b73149b382747fa9b57") 37 STORE("fileCheckS", "2938602a6681ddb512310f3bd5b34e7b3fae171350d5dd600e207d9f9cdf0edb") 100 RETURN 0 End Function Function init() Uint64 10 IF EXISTS("owner") == 0 THEN GOTO 30 20 RETURN 1 30 STORE("owner", address()) 50 STORE("docVersion", "1.0.0") 60 STORE("hash", HEX(TXID())) 70 STORE("likes", 0) 80 STORE("dislikes", 0) 100 RETURN 0 End Function Function address() String 10 DIM s as String 20 LET s = SIGNER() 30 IF IS_ADDRESS_VALID(s) THEN GOTO 50 40 RETURN "anon" 50 RETURN ADDRESS_STRING(s) End Function Function Rate(r Uint64) Uint64 10 DIM addr as String 15 LET addr = address() 16 IF r < 100 && EXISTS(addr) == 0 && addr != "anon" THEN GOTO 30 20 RETURN 1 30 STORE(addr, ""+r+"_"+BLOCK_HEIGHT()) 40 IF r < 50 THEN GOTO 70 50 STORE("likes", LOAD("likes")+1) 60 RETURN 0 70 STORE("dislikes", LOAD("dislikes")+1) 100 RETURN 0 End Function /* ({ name: 'search', version: '1.0.0', // Render search bar HTML renderSearchBar: function() { return '<div class="card"><div class="section-header"><h2>Blockchain Search</h2><div class="section-info">Search blocks, transactions, and addresses on the DERO blockchain</div></div><div class="search-bar" style="margin-top:0;margin-bottom:1rem"><input type="text" id="dashboard-search-input" placeholder="Block height, hash, transaction hash, or SCID..." onkeypress="if(event.key===\'Enter\')window.searchModule.performSearch()"><button onclick="window.searchModule.performSearch()">Search</button></div><div class="search-hint"><strong>Examples:</strong><a href="#" onclick="window.searchModule.quickSearch(\'0\')" style="color:var(--primary-color);margin:0 8px">Block 0</a> • <a href="#" onclick="window.searchModule.quickSearch(\'543210\')" style="color:var(--primary-color);margin:0 8px">Block 543210</a> • <a href="#" onclick="window.searchModule.quickSearch(\'latest\')" style="color:var(--primary-color);margin:0 8px">Latest</a> • <a href="#" onclick="window.searchModule.quickSearch(\'pool\')" style="color:var(--primary-color);margin:0 8px">Mempool</a><br><strong>Also supports:</strong> Transaction hashes, Block hashes, Smart Contract IDs (SCIDs)</div></div>'; }, // Quick search with predefined query quickSearch: function(query) { const input = document.getElementById('dashboard-search-input') || document.getElementById('search-input'); if (input) { input.value = query; this.performSearch(); } }, // Detect search query type detectType: function(query) { query = query.trim(); console.log('Detecting type for query:', query, 'length:', query.length); // Check for 64-character hex strings FIRST (before checking for numbers) // This prevents TXIDs like "000000..." from being misidentified as block heights if (/^[0-9a-fA-F]{64}$/i.test(query)) { console.log('Detected as 64-char hash (TXID/Block Hash/SCID)'); return 'hash'; } // Disabled: 66-character hex strings cause browser freezes // if (/^[0-9a-fA-F]{66}$/i.test(query)) { // console.log('Detected as 66-char hex data (SC variable/encoded data)'); // return 'sc_data'; // } // Check for block height (numbers only) - but only if not 64 chars if (/^\d+$/.test(query) && query.length < 20) { console.log('Detected as block height'); return 'height'; } // Special keywords if (query.toLowerCase() === 'latest') { console.log('Detected as latest'); return 'latest'; } if (query.toLowerCase() === 'pool') { console.log('Detected as pool'); return 'pool'; } // Partial hash (less than 64 chars but hex) if (/^[0-9a-fA-F]{8,}$/i.test(query) && query.length < 64 && query.length >= 8) { console.log('Detected as partial hash'); return 'partial'; } console.log('Detected as unknown'); return 'unknown'; }, // Perform search based on query performSearch: async function() { const input = document.getElementById('dashboard-search-input') || document.getElementById('search-input'); const query = input ? input.value.trim() : ''; if (!query) { this.showError('Please enter a search query'); return; } this.showProgress('Searching...'); try { const type = this.detectType(query); switch (type) { case 'height': this.clearSearch(); window.location.hash = 'block/' + query; break; case 'latest': if (window.stats && window.stats.height) { this.clearSearch(); window.location.hash = 'block/' + window.stats.height; } else { const info = await window.xswdCore.getNetworkInfo(); if (info && info.height) { this.clearSearch(); window.location.hash = 'block/' + info.height; } else { this.showError('Unable to get latest block height'); } } break; case 'pool': this.clearSearch(); window.location.hash = 'pool'; break; case 'hash': await this.searchHash(query); break; case 'sc_data': this.showSCDataInfo(query); break; case 'partial': this.showError('Hash appears incomplete. Please provide the full 64-character hash.'); break; default: this.showError('Invalid search query. Use block height, block hash, transaction hash, SCID, "latest", or "pool".'); } } catch (error) { this.showError('Search failed: ' + error.message); } }, // Search for hash (could be block or transaction) searchHash: async function(hash) { if (!window.xswdCore || !window.xswdCore.isConnected) { this.showError('XSWD connection required'); return; } console.log('Searching hash:', hash); // Try as TRANSACTION HASH FIRST since that's what users usually search for try { // Try as transaction hash - use multiple API approaches for better compatibility console.log('Trying as transaction hash...'); // Try with decode_as_json first (same as transaction module) let txResult = await window.xswdCore.call('DERO.GetTransaction', { txs_hashes: [hash], decode_as_json: 1 }); console.log('Transaction API response (with decode_as_json):', txResult); // Check if transaction exists in primary format if (txResult && txResult.txs && txResult.txs.length > 0) { console.log('Found as transaction hash (primary format)'); this.clearSearch(); window.location.hash = 'tx/' + hash; return; } // Try without decode_as_json for TestNet compatibility console.log('Trying transaction search without decode_as_json...'); txResult = await window.xswdCore.call('DERO.GetTransaction', { txs_hashes: [hash] }); console.log('Transaction API response (without decode):', txResult); // Check multiple possible response formats if (txResult && ( (txResult.txs && txResult.txs.length > 0) || (txResult.txs_as_hex && txResult.txs_as_hex.length > 0) || (txResult.result && txResult.result.txs && txResult.result.txs.length > 0) )) { console.log('Found as transaction hash (alternative format)'); this.clearSearch(); window.location.hash = 'tx/' + hash; return; } else { console.log('Transaction not found in any response format'); } } catch (error) { console.log('Transaction search API error:', error.message); } // Try as block hash ONLY if transaction search fails try { console.log('Trying as block hash...'); const blockResult = await window.xswdCore.call('DERO.GetBlockHeaderByHash', { hash: hash }); if (blockResult && blockResult.block_header) { console.log('Found as block hash, height:', blockResult.block_header.height); // Special case: if this looks like a TXID but is being found as Block 0, // show a helpful message if (blockResult.block_header.height === 0 && hash.length === 64) { console.log('TXID-like hash found as Block 0 - might be TestNet behavior'); } this.clearSearch(); window.location.hash = 'block/' + blockResult.block_header.height; return; } } catch (error) { console.log('Not a block hash:', error.message); } // Final fallback: try as SCID try { console.log('Trying as smart contract ID...'); const normalizedSCID = hash.toLowerCase(); const scInfo = await window.xswdCore.call('DERO.GetSC', { scid: normalizedSCID, code: false, variables: true }); if (scInfo && (scInfo.status === 'OK' || scInfo.balance !== undefined)) { console.log('Found as smart contract ID'); this.clearSearch(); window.location.hash = 'smartcontracts/' + normalizedSCID; return; } else { console.log('Not a valid smart contract ID'); } } catch (error) { console.log('Smart contract search error:', error.message); } console.log('Hash not found in any category:', hash); // CRITICAL: Prevent navigation to Block 0 by ensuring we don't change the hash // when the search fails this.showError('Hash not found in blockchain. Please verify it is a valid block hash, transaction hash, or smart contract ID (SCID).'); // Ensure we stay on the current page and don't navigate anywhere return false; }, // Search for SCID (Smart Contract ID) searchSCID: async function(scid) { if (!window.xswdCore || !window.xswdCore.isConnected) { this.showError('XSWD connection required'); return; } try { // Normalize SCID to lowercase const normalizedSCID = scid.toLowerCase(); // Try to get smart contract information const scInfo = await window.xswdCore.call('DERO.GetSC', { scid: normalizedSCID, code: false, variables: true }); if (scInfo && (scInfo.status === 'OK' || scInfo.balance !== undefined)) { // SCID exists - navigate to smart contracts page with this SCID this.clearSearch(); window.location.hash = 'smartcontracts/' + normalizedSCID; return; } } catch (error) { } // If SCID lookup failed, try as a regular hash (could be misidentified) try { await this.searchHash(scid); return; } catch (error) { // Final fallback error this.showError('SCID "' + scid + '" not found. Please verify it is a valid smart contract ID, block hash, or transaction hash.'); } }, // Clear search input clearSearch: function() { const input = document.getElementById('dashboard-search-input') || document.getElementById('search-input'); if (input) { input.value = ''; } }, // Show search progress showProgress: function(message) { const searchResult = document.getElementById('search-result'); if (searchResult) { searchResult.innerHTML = '<div class="loading-indicator">' + message + '</div>'; } }, // Show search error showError: function(message) { console.log('Search Error:', message); const searchResult = document.getElementById('search-result'); if (searchResult) { searchResult.innerHTML = '<div class="enhanced-card"><div class="error-card"><h3>Search Error</h3><p>' + message + '</p></div></div>'; } else { // If no search result container, show error in main content or alert const mainContent = document.getElementById('main-content'); if (mainContent && !mainContent.innerHTML.includes('Loading')) { // Show error overlay const errorDiv = document.createElement('div'); errorDiv.style.cssText = 'position:fixed;top:20px;right:20px;background:rgba(239,68,68,0.9);color:white;padding:1rem;border-radius:8px;z-index:1000;max-width:300px;'; errorDiv.innerHTML = '<strong>Search Error:</strong><br/>' + message + '<br/><button onclick="this.parentElement.remove()" style="margin-top:0.5rem;padding:0.25rem 0.5rem;background:rgba(255,255,255,0.2);border:none;color:white;border-radius:4px;cursor:pointer;">Close</button>'; document.body.appendChild(errorDiv); // Auto-remove after 8 seconds setTimeout(() => { if (errorDiv.parentElement) { errorDiv.remove(); } }, 8000); } else { alert(message); } } }, // Show search success showSuccess: function(message) { const searchResult = document.getElementById('search-result'); if (searchResult) { searchResult.innerHTML = '<div class="enhanced-card"><div class="success-card"><h3>Search Complete</h3><p>' + message + '</p></div></div>'; } }, // Debug function for testing transaction searches testTxSearch: async function(txHash) { console.log('🧪 Testing transaction search for:', txHash); if (!window.xswdCore || !window.xswdCore.isConnected) { console.log('❌ XSWD not connected'); return false; } try { // Test the exact same call as the search function const txResult1 = await window.xswdCore.call('DERO.GetTransaction', { txs_hashes: [txHash], decode_as_json: 1 }); console.log('🧪 Test result 1 (with decode):', txResult1); const txResult2 = await window.xswdCore.call('DERO.GetTransaction', { txs_hashes: [txHash] }); console.log('🧪 Test result 2 (without decode):', txResult2); return { result1: txResult1, result2: txResult2 }; } catch (error) { console.log('🧪 Test error:', error); return { error: error.message }; } }, showSCDataInfo: function(hexData) { console.log('Showing SC data info for:', hexData); this.clearSearch(); // Quick and safe hex decoding with limits let decodedText = 'Hex data analysis disabled for performance'; // For now, just show the hex data without heavy processing // The CPU freeze was likely caused by the hex decoding loop const searchResult = document.getElementById('search-result'); if (searchResult) { searchResult.innerHTML = ` <div class="enhanced-card"> <div class="card-header"> <h2 style="color: #b959b6; font-size: 1.6rem; font-weight: 700; margin: 0;">Smart Contract Variable Data</h2> </div> <div class="card-content"> <div style="margin-bottom: 1rem;"> <div style="color: #b3b3b3; font-size: 0.9rem; margin-bottom: 0.5rem;">Hex Data (${hexData.length} characters):</div> <div style="font-family: monospace; color: #4ade80; font-size: 0.8rem; word-break: break-all; background: rgba(0,0,0,0.3); padding: 1rem; border-radius: 6px; cursor: pointer;" onclick="navigator.clipboard.writeText('${hexData}')" title="Click to copy">${hexData}</div> </div> <div style="margin-bottom: 1rem;"> <div style="color: #b3b3b3; font-size: 0.9rem; margin-bottom: 0.5rem;">Decoded Text (if readable):</div> <div style="font-family: monospace; color: #fbbf24; font-size: 0.8rem; background: rgba(0,0,0,0.3); padding: 1rem; border-radius: 6px;">${decodedText}</div> </div> <div style="color: #888; font-size: 0.8rem; line-height: 1.4;"> This appears to be smart contract variable data. It's not a standard TXID/SCID/Block hash, but may contain encoded information or references. </div> </div> </div> `; } } }); */']


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
0100000500e487ef02b067a19090b0c55b80dacb69ae03b77811b58c541b7d13f926342d83e6347fa20100000000000000000000000000000000000000000000000000000000000000000000171fdfbe4b65c01a37a53d83c84f9c67fc6f921e875b3cfa7a033671e15ae3cf5378e56d50418e88907acbe2492ab4788ff9bf907abaa30a15c0f00c7c9dd56f05536198b33fabefcee0eef5f17533e53b6489875eaebc6397f3fb11b3c381b9df1ac30a14d81dc155ec7b28d584870e71ad66dfcf1869ab1507daea7aadf1c99c5a5358d3c7733d1ad8082c514c1c170f0406ef930114efa91b4e169e5480bbb0806c809e2366fb499826af7feb4e01fd0efd21f33100686b23b0aef805270b93ed9124bc94a51703bebe68fc177dccc8d0b06485635d6e4e24822a9f8cb8285e0fbd68ddf7f45a0459a65e0b2ba56239acc8b8cb7cc0eb3e2783d00b98c4641add2191c6c25cbca29ec2eb65537e14c95674d8df103d20499e2c6a58d0b53e16efa655bc71cb518535a591debb4eb45a06e38a15fa8a00067244e906fb1efb6f00d1d19a5ba2a1cd51eb04d6dc551afd1f27141fd614e9010a7af2cd37626bd724534ed1dc3d4ab08b619e01008da56d218ba475dd35b4640004fb7bae2465e005b1a0dfc8f0572553df02e257c1c2585e13da061998d56064002b1cdbdc105cb97b8eee5a855bd52fba8f5972b149c00abd572bc1cc08a940bb0003462e2192160d0ac0c9aac7c5b2f4ebe75f7f4cc2a3452b4f16666deb950895002f7399deba47175a303e4281f794a5c1b1684856ccde38bc5c37a50594a6411800110821a62542cc20ecd59233180d9ef2d8e7ceb813af26e75a3812889272b11b011fba7ffa5d85394b995b75363dc6f239be184d6562a01c9624d1dc6ea5d82ae30018fbf87d36589bae358df980d180d1b233b5a41cfc4587ff1fd6beb971eaf5f20022b32ee60e3e81dc843520fa112ccd5190319e68163135f9a0f00a443a31a5f7011165f7610ec6b49913f56a11613eecacb8847518a499144357acf90aaec2b52300027f2e822ac81d4ae6ef618f7fa5722dcb04073ff5ae8d191d912201977d2c9a002b93b9022892bc66c603945d538ecacfac792a7e60127d58be20f30cd4692f6f0029b1d232b183dfd52f04c216281195f4ee4642d7c7d4deb372e718073fda245901063d33a0ff5305612926a7417825787def50b3db7ffa2b2cde5977b3cff7121400b3c85faf1365d8dab55701997eb88746a50ae040ffd22d2c765c1392d07cfc7fd99101a26853435f434f4445537948c046756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c20227365617263682e6a7322290a33312053544f524528226465736372486472222c2022426c6f636b636861696e207365617263682066756e6374696f6e616c69747922290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c20226578706c6f7265722e74656c6122290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c202222290a33362053544f5245282266696c65436865636b43222c202234363836303136653264623737393737393431623839313739376237653963386133393630616236386634346237333134396233383237343766613962353722290a33372053544f5245282266696c65436865636b53222c20223239333836303261363638316464623531323331306633626435623334653762336661653137313335306435646436303065323037643966396364663065646222290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a0a287b0a202020206e616d653a2027736561726368272c0a2020202076657273696f6e3a2027312e302e30272c0a0a202020202f2f2052656e64657220736561726368206261722048544d4c0a2020202072656e6465725365617263684261723a2066756e6374696f6e2829207b0a202020202020202072657475726e20273c64697620636c6173733d2263617264223e3c64697620636c6173733d2273656374696f6e2d686561646572223e3c68323e426c6f636b636861696e205365617263683c2f68323e3c64697620636c6173733d2273656374696f6e2d696e666f223e53656172636820626c6f636b732c207472616e73616374696f6e732c20616e6420616464726573736573206f6e20746865204445524f20626c6f636b636861696e3c2f6469763e3c2f6469763e3c64697620636c6173733d227365617263682d62617222207374796c653d226d617267696e2d746f703a303b6d617267696e2d626f74746f6d3a3172656d223e3c696e70757420747970653d2274657874222069643d2264617368626f6172642d7365617263682d696e7075742220706c616365686f6c6465723d22426c6f636b206865696768742c20686173682c207472616e73616374696f6e20686173682c206f7220534349442e2e2e22206f6e6b657970726573733d226966286576656e742e6b65793d3d3d5c27456e7465725c272977696e646f772e7365617263684d6f64756c652e706572666f726d5365617263682829223e3c627574746f6e206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e706572666f726d5365617263682829223e5365617263683c2f627574746f6e3e3c2f6469763e3c64697620636c6173733d227365617263682d68696e74223e3c7374726f6e673e4578616d706c65733a3c2f7374726f6e673e3c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c27305c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e426c6f636b20303c2f613e20e280a2203c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c273534333231305c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e426c6f636b203534333231303c2f613e20e280a2203c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c276c61746573745c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e4c61746573743c2f613e20e280a2203c6120687265663d222322206f6e636c69636b3d2277696e646f772e7365617263684d6f64756c652e717569636b536561726368285c27706f6f6c5c272922207374796c653d22636f6c6f723a766172282d2d7072696d6172792d636f6c6f72293b6d617267696e3a3020387078223e4d656d706f6f6c3c2f613e3c62723e3c7374726f6e673e416c736f20737570706f7274733a3c2f7374726f6e673e205472616e73616374696f6e206861736865732c20426c6f636b206861736865732c20536d61727420436f6e74726163742049447320285343494473293c2f6469763e3c2f6469763e273b0a202020207d2c0a0a202020202f2f20517569636b20736561726368207769746820707265646566696e65642071756572790a20202020717569636b5365617263683a2066756e6374696f6e28717565727929207b0a2020202020202020636f6e737420696e707574203d20646f63756d656e742e676574456c656d656e7442794964282764617368626f6172642d7365617263682d696e7075742729207c7c20646f63756d656e742e676574456c656d656e744279496428277365617263682d696e70757427293b0a202020202020202069662028696e70757429207b0a202020202020202020202020696e7075742e76616c7565203d2071756572793b0a202020202020202020202020746869732e706572666f726d53656172636828293b0a20202020202020207d0a202020207d2c0a0a202020202f2f204465746563742073656172636820717565727920747970650a20202020646574656374547970653a2066756e6374696f6e28717565727929207b0a20202020202020207175657279203d2071756572792e7472696d28293b0a2020202020202020636f6e736f6c652e6c6f672827446574656374696e67207479706520666f722071756572793a272c2071756572792c20276c656e6774683a272c2071756572792e6c656e677468293b0a20202020202020200a20202020202020202f2f20436865636b20666f722036342d6368617261637465722068657820737472696e677320464952535420286265666f726520636865636b696e6720666f72206e756d62657273290a20202020202020202f2f20546869732070726576656e7473205458494473206c696b6520223030303030302e2e2e222066726f6d206265696e67206d69736964656e74696669656420617320626c6f636b20686569676874730a2020202020202020696620282f5e5b302d39612d66412d465d7b36347d242f692e746573742871756572792929207b0a202020202020202020202020636f6e736f6c652e6c6f67282744657465637465642061732036342d6368617220686173682028545849442f426c6f636b20486173682f534349442927293b0a20202020202020202020202072657475726e202768617368273b0a20202020202020207d0a20202020202020200a20202020202020202f2f2044697361626c65643a2036362d6368617261637465722068657820737472696e67732063617573652062726f7773657220667265657a65730a20202020202020202f2f20696620282f5e5b302d39612d66412d465d7b36367d242f692e746573742871756572792929207b0a20202020202020202f2f2020202020636f6e736f6c652e6c6f67282744657465637465642061732036362d6368617220686578206461746120285343207661726961626c652f656e636f64656420646174612927293b0a20202020202020202f2f202020202072657475726e202773635f64617461273b0a20202020202020202f2f207d0a20202020202020200a20202020202020202f2f20436865636b20666f7220626c6f636b2068656967687420286e756d62657273206f6e6c7929202d20627574206f6e6c79206966206e6f742036342063686172730a2020202020202020696620282f5e5c642b242f2e74657374287175657279292026262071756572792e6c656e677468203c20323029207b0a202020202020202020202020636f6e736f6c652e6c6f672827446574656374656420617320626c6f636b2068656967687427293b0a20202020202020202020202072657475726e2027686569676874273b0a20202020202020207d0a20202020202020200a20202020202020202f2f205370656369616c206b6579776f7264730a20202020202020206966202871756572792e746f4c6f776572436173652829203d3d3d20276c61746573742729207b0a202020202020202020202020636f6e736f6c652e6c6f6728274465746563746564206173206c617465737427293b0a20202020202020202020202072657475726e20276c6174657374273b0a20202020202020207d0a20202020202020206966202871756572792e746f4c6f776572436173652829203d3d3d2027706f6f6c2729207b0a202020202020202020202020636f6e736f6c652e6c6f672827446574656374656420617320706f6f6c27293b0a20202020202020202020202072657475726e2027706f6f6c273b0a20202020202020207d0a20202020202020200a20202020202020202f2f205061727469616c206861736820286c657373207468616e2036342063686172732062757420686578290a2020202020202020696620282f5e5b302d39612d66412d465d7b382c7d242f692e74657374287175657279292026262071756572792e6c656e677468203c2036342026262071756572792e6c656e677468203e3d203829207b0a202020202020202020202020636f6e736f6c652e6c6f6728274465746563746564206173207061727469616c206861736827293b0a20202020202020202020202072657475726e20277061727469616c273b0a20202020202020207d0a20202020202020200a2020202020202020636f6e736f6c652e6c6f672827446574656374656420617320756e6b6e6f776e27293b0a202020202020202072657475726e2027756e6b6e6f776e273b0a202020207d2c0a0a202020202f2f20506572666f726d20736561726368206261736564206f6e2071756572790a20202020706572666f726d5365617263683a206173796e632066756e6374696f6e2829207b0a2020202020202020636f6e737420696e707574203d20646f63756d656e742e676574456c656d656e7442794964282764617368626f6172642d7365617263682d696e7075742729207c7c20646f63756d656e742e676574456c656d656e744279496428277365617263682d696e70757427293b0a2020202020202020636f6e7374207175657279203d20696e707574203f20696e7075742e76616c75652e7472696d2829203a2027273b0a20202020202020200a20202020202020206966202821717565727929207b0a202020202020202020202020746869732e73686f774572726f722827506c6561736520656e74657220612073656172636820717565727927293b0a20202020202020202020202072657475726e3b0a20202020202020207d0a20202020202020200a2020202020202020746869732e73686f7750726f67726573732827536561726368696e672e2e2e27293b0a20202020202020200a2020202020202020747279207b0a202020202020202020202020636f6e73742074797065203d20746869732e64657465637454797065287175657279293b0a2020202020202020202020200a20202020202020202020202073776974636820287479706529207b0a20202020202020202020202020202020636173652027686569676874273a0a2020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b2071756572793b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a202020202020202020202020202020206361736520276c6174657374273a0a20202020202020202020202020202020202020206966202877696e646f772e73746174732026262077696e646f772e73746174732e68656967687429207b0a202020202020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a20202020202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b2077696e646f772e73746174732e6865696768743b0a20202020202020202020202020202020202020207d20656c7365207b0a202020202020202020202020202020202020202020202020636f6e737420696e666f203d2061776169742077696e646f772e78737764436f72652e6765744e6574776f726b496e666f28293b0a20202020202020202020202020202020202020202020202069662028696e666f20262620696e666f2e68656967687429207b0a20202020202020202020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b20696e666f2e6865696768743b0a2020202020202020202020202020202020202020202020207d20656c7365207b0a20202020202020202020202020202020202020202020202020202020746869732e73686f774572726f722827556e61626c6520746f20676574206c617465737420626c6f636b2068656967687427293b0a2020202020202020202020202020202020202020202020207d0a20202020202020202020202020202020202020207d0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a20202020202020202020202020202020636173652027706f6f6c273a0a2020202020202020202020202020202020202020746869732e636c65617253656172636828293b0a202020202020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027706f6f6c273b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a2020202020202020202020202020202063617365202768617368273a0a2020202020202020202020202020202020202020617761697420746869732e73656172636848617368287175657279293b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a2020202020202020202020202020202063617365202773635f64617461273a0a2020202020202020202020202020202020202020746869732e73686f77534344617461496e666f287175657279293b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a202020202020202020202020202020206361736520277061727469616c273a0a2020202020202020202020202020202020202020746869732e73686f774572726f72282748617368206170706561727320696e636f6d706c6574652e20506c656173652070726f76696465207468652066756c6c2036342d63686172616374657220686173682e27293b0a2020202020202020202020202020202020202020627265616b3b0a20202020202020202020202020202020202020200a2020202020202020202020202020202064656661756c743a0a2020202020202020202020202020202020202020746869732e73686f774572726f722827496e76616c6964207365617263682071756572792e2055736520626c6f636b206865696768742c20626c6f636b20686173682c207472616e73616374696f6e20686173682c20534349442c20226c6174657374222c206f722022706f6f6c222e27293b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020746869732e73686f774572726f722827536561726368206661696c65643a2027202b206572726f722e6d657373616765293b0a20202020202020207d0a202020207d2c0a0a202020202f2f2053656172636820666f7220686173682028636f756c6420626520626c6f636b206f72207472616e73616374696f6e290a20202020736561726368486173683a206173796e632066756e6374696f6e286861736829207b0a2020202020202020696620282177696e646f772e78737764436f7265207c7c202177696e646f772e78737764436f72652e6973436f6e6e656374656429207b0a202020202020202020202020746869732e73686f774572726f7228275853574420636f6e6e656374696f6e20726571756972656427293b0a20202020202020202020202072657475726e3b0a20202020202020207d0a20202020202020200a2020202020202020636f6e736f6c652e6c6f672827536561726368696e6720686173683a272c2068617368293b0a20202020202020200a20202020202020202f2f20547279206173205452414e53414354494f4e20484153482046495253542073696e636520746861742773207768617420757365727320757375616c6c792073656172636820666f720a2020202020202020747279207b0a2020202020202020202020202f2f20547279206173207472616e73616374696f6e2068617368202d20757365206d756c7469706c652041504920617070726f616368657320666f722062657474657220636f6d7061746962696c6974790a202020202020202020202020636f6e736f6c652e6c6f672827547279696e67206173207472616e73616374696f6e20686173682e2e2e27293b0a2020202020202020202020200a2020202020202020202020202f2f205472792077697468206465636f64655f61735f6a736f6e206669727374202873616d65206173207472616e73616374696f6e206d6f64756c65290a2020202020202020202020206c6574207478526573756c74203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b686173685d2c200a202020202020202020202020202020206465636f64655f61735f6a736f6e3a2031200a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e2041504920726573706f6e7365202877697468206465636f64655f61735f6a736f6e293a272c207478526573756c74293b0a2020202020202020202020200a2020202020202020202020202f2f20436865636b206966207472616e73616374696f6e2065786973747320696e207072696d61727920666f726d61740a202020202020202020202020696620287478526573756c74202626207478526573756c742e747873202626207478526573756c742e7478732e6c656e677468203e203029207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e64206173207472616e73616374696f6e206861736820287072696d61727920666f726d61742927293b0a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d202774782f27202b20686173683b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a2020202020202020202020200a2020202020202020202020202f2f2054727920776974686f7574206465636f64655f61735f6a736f6e20666f7220546573744e657420636f6d7061746962696c6974790a202020202020202020202020636f6e736f6c652e6c6f672827547279696e67207472616e73616374696f6e2073656172636820776974686f7574206465636f64655f61735f6a736f6e2e2e2e27293b0a2020202020202020202020207478526573756c74203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b686173685d0a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e2041504920726573706f6e73652028776974686f7574206465636f6465293a272c207478526573756c74293b0a2020202020202020202020200a2020202020202020202020202f2f20436865636b206d756c7469706c6520706f737369626c6520726573706f6e736520666f726d6174730a202020202020202020202020696620287478526573756c7420262620280a20202020202020202020202020202020287478526573756c742e747873202626207478526573756c742e7478732e6c656e677468203e203029207c7c0a20202020202020202020202020202020287478526573756c742e7478735f61735f686578202626207478526573756c742e7478735f61735f6865782e6c656e677468203e203029207c7c0a20202020202020202020202020202020287478526573756c742e726573756c74202626207478526573756c742e726573756c742e747873202626207478526573756c742e726573756c742e7478732e6c656e677468203e2030290a2020202020202020202020202929207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e64206173207472616e73616374696f6e20686173682028616c7465726e617469766520666f726d61742927293b0a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d202774782f27202b20686173683b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e206e6f7420666f756e6420696e20616e7920726573706f6e736520666f726d617427293b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f6728275472616e73616374696f6e2073656172636820415049206572726f723a272c206572726f722e6d657373616765293b0a20202020202020207d0a20202020202020200a20202020202020202f2f2054727920617320626c6f636b2068617368204f4e4c59206966207472616e73616374696f6e20736561726368206661696c730a2020202020202020747279207b0a202020202020202020202020636f6e736f6c652e6c6f672827547279696e6720617320626c6f636b20686173682e2e2e27293b0a202020202020202020202020636f6e737420626c6f636b526573756c74203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e476574426c6f636b486561646572427948617368272c207b20686173683a2068617368207d293b0a2020202020202020202020200a20202020202020202020202069662028626c6f636b526573756c7420262620626c6f636b526573756c742e626c6f636b5f68656164657229207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e6420617320626c6f636b20686173682c206865696768743a272c20626c6f636b526573756c742e626c6f636b5f6865616465722e686569676874293b0a202020202020202020202020202020200a202020202020202020202020202020202f2f205370656369616c20636173653a2069662074686973206c6f6f6b73206c696b652061205458494420627574206973206265696e6720666f756e6420617320426c6f636b20302c0a202020202020202020202020202020202f2f2073686f7720612068656c7066756c206d6573736167650a2020202020202020202020202020202069662028626c6f636b526573756c742e626c6f636b5f6865616465722e686569676874203d3d3d203020262620686173682e6c656e677468203d3d3d20363429207b0a2020202020202020202020202020202020202020636f6e736f6c652e6c6f672827545849442d6c696b65206861736820666f756e6420617320426c6f636b2030202d206d6967687420626520546573744e6574206265686176696f7227293b0a202020202020202020202020202020207d0a202020202020202020202020202020200a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027626c6f636b2f27202b20626c6f636b526573756c742e626c6f636b5f6865616465722e6865696768743b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f6728274e6f74206120626c6f636b20686173683a272c206572726f722e6d657373616765293b0a20202020202020207d0a20202020202020200a20202020202020202f2f2046696e616c2066616c6c6261636b3a2074727920617320534349440a2020202020202020747279207b0a202020202020202020202020636f6e736f6c652e6c6f672827547279696e6720617320736d61727420636f6e74726163742049442e2e2e27293b0a202020202020202020202020636f6e7374206e6f726d616c697a656453434944203d20686173682e746f4c6f7765724361736528293b0a202020202020202020202020636f6e7374207363496e666f203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745343272c207b200a20202020202020202020202020202020736369643a206e6f726d616c697a6564534349442c0a20202020202020202020202020202020636f64653a2066616c73652c0a202020202020202020202020202020207661726961626c65733a20747275650a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020696620287363496e666f20262620287363496e666f2e737461747573203d3d3d20274f4b27207c7c207363496e666f2e62616c616e636520213d3d20756e646566696e65642929207b0a20202020202020202020202020202020636f6e736f6c652e6c6f672827466f756e6420617320736d61727420636f6e747261637420494427293b0a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027736d617274636f6e7472616374732f27202b206e6f726d616c697a6564534349443b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202020636f6e736f6c652e6c6f6728274e6f7420612076616c696420736d61727420636f6e747261637420494427293b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f672827536d61727420636f6e747261637420736561726368206572726f723a272c206572726f722e6d657373616765293b0a20202020202020207d0a20202020202020200a2020202020202020636f6e736f6c652e6c6f67282748617368206e6f7420666f756e6420696e20616e792063617465676f72793a272c2068617368293b0a20202020202020200a20202020202020202f2f20435249544943414c3a2050726576656e74206e617669676174696f6e20746f20426c6f636b203020627920656e737572696e6720776520646f6e2774206368616e67652074686520686173680a20202020202020202f2f207768656e2074686520736561726368206661696c730a2020202020202020746869732e73686f774572726f72282748617368206e6f7420666f756e6420696e20626c6f636b636861696e2e20506c656173652076657269667920697420697320612076616c696420626c6f636b20686173682c207472616e73616374696f6e20686173682c206f7220736d61727420636f6e7472616374204944202853434944292e27293b0a20202020202020200a20202020202020202f2f20456e737572652077652073746179206f6e207468652063757272656e74207061676520616e6420646f6e2774206e6176696761746520616e7977686572650a202020202020202072657475726e2066616c73653b0a202020207d2c0a0a202020202f2f2053656172636820666f7220534349442028536d61727420436f6e7472616374204944290a20202020736561726368534349443a206173796e632066756e6374696f6e287363696429207b0a2020202020202020696620282177696e646f772e78737764436f7265207c7c202177696e646f772e78737764436f72652e6973436f6e6e656374656429207b0a202020202020202020202020746869732e73686f774572726f7228275853574420636f6e6e656374696f6e20726571756972656427293b0a20202020202020202020202072657475726e3b0a20202020202020207d0a20202020202020200a2020202020202020747279207b0a2020202020202020202020202f2f204e6f726d616c697a65205343494420746f206c6f776572636173650a202020202020202020202020636f6e7374206e6f726d616c697a656453434944203d20736369642e746f4c6f7765724361736528293b0a2020202020202020202020200a2020202020202020202020202f2f2054727920746f2067657420736d61727420636f6e747261637420696e666f726d6174696f6e0a202020202020202020202020636f6e7374207363496e666f203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745343272c207b200a20202020202020202020202020202020736369643a206e6f726d616c697a6564534349442c0a20202020202020202020202020202020636f64653a2066616c73652c0a202020202020202020202020202020207661726961626c65733a20747275650a2020202020202020202020207d293b0a2020202020202020202020200a202020202020202020202020696620287363496e666f20262620287363496e666f2e737461747573203d3d3d20274f4b27207c7c207363496e666f2e62616c616e636520213d3d20756e646566696e65642929207b0a202020202020202020202020202020202f2f205343494420657869737473202d206e6176696761746520746f20736d61727420636f6e74726163747320706167652077697468207468697320534349440a20202020202020202020202020202020746869732e636c65617253656172636828293b0a2020202020202020202020202020202077696e646f772e6c6f636174696f6e2e68617368203d2027736d617274636f6e7472616374732f27202b206e6f726d616c697a6564534349443b0a2020202020202020202020202020202072657475726e3b0a2020202020202020202020207d0a20202020202020207d20636174636820286572726f7229207b0a20202020202020207d0a20202020202020200a20202020202020202f2f2049662053434944206c6f6f6b7570206661696c65642c20747279206173206120726567756c617220686173682028636f756c64206265206d69736964656e746966696564290a2020202020202020747279207b0a202020202020202020202020617761697420746869732e736561726368486173682873636964293b0a20202020202020202020202072657475726e3b0a20202020202020207d20636174636820286572726f7229207b0a2020202020202020202020202f2f2046696e616c2066616c6c6261636b206572726f720a202020202020202020202020746869732e73686f774572726f72282753434944202227202b2073636964202b202722206e6f7420666f756e642e20506c656173652076657269667920697420697320612076616c696420736d61727420636f6e74726163742049442c20626c6f636b20686173682c206f72207472616e73616374696f6e20686173682e27293b0a20202020202020207d0a202020207d2c0a0a202020202f2f20436c6561722073656172636820696e7075740a20202020636c6561725365617263683a2066756e6374696f6e2829207b0a2020202020202020636f6e737420696e707574203d20646f63756d656e742e676574456c656d656e7442794964282764617368626f6172642d7365617263682d696e7075742729207c7c20646f63756d656e742e676574456c656d656e744279496428277365617263682d696e70757427293b0a202020202020202069662028696e70757429207b0a202020202020202020202020696e7075742e76616c7565203d2027273b0a20202020202020207d0a202020207d2c0a0a202020202f2f2053686f77207365617263682070726f67726573730a2020202073686f7750726f67726573733a2066756e6374696f6e286d65737361676529207b0a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20273c64697620636c6173733d226c6f6164696e672d696e64696361746f72223e27202b206d657373616765202b20273c2f6469763e273b0a20202020202020207d0a202020207d2c0a0a202020202f2f2053686f7720736561726368206572726f720a2020202073686f774572726f723a2066756e6374696f6e286d65737361676529207b0a2020202020202020636f6e736f6c652e6c6f672827536561726368204572726f723a272c206d657373616765293b0a20202020202020200a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20273c64697620636c6173733d22656e68616e6365642d63617264223e3c64697620636c6173733d226572726f722d63617264223e3c68333e536561726368204572726f723c2f68333e3c703e27202b206d657373616765202b20273c2f703e3c2f6469763e3c2f6469763e273b0a20202020202020207d20656c7365207b0a2020202020202020202020202f2f204966206e6f2073656172636820726573756c7420636f6e7461696e65722c2073686f77206572726f7220696e206d61696e20636f6e74656e74206f7220616c6572740a202020202020202020202020636f6e7374206d61696e436f6e74656e74203d20646f63756d656e742e676574456c656d656e744279496428276d61696e2d636f6e74656e7427293b0a202020202020202020202020696620286d61696e436f6e74656e7420262620216d61696e436f6e74656e742e696e6e657248544d4c2e696e636c7564657328274c6f6164696e67272929207b0a202020202020202020202020202020202f2f2053686f77206572726f72206f7665726c61790a20202020202020202020202020202020636f6e7374206572726f72446976203d20646f63756d656e742e637265617465456c656d656e74282764697627293b0a202020202020202020202020202020206572726f724469762e7374796c652e63737354657874203d2027706f736974696f6e3a66697865643b746f703a323070783b72696768743a323070783b6261636b67726f756e643a72676261283233392c36382c36382c302e39293b636f6c6f723a77686974653b70616464696e673a3172656d3b626f726465722d7261646975733a3870783b7a2d696e6465783a313030303b6d61782d77696474683a33303070783b273b0a202020202020202020202020202020206572726f724469762e696e6e657248544d4c203d20273c7374726f6e673e536561726368204572726f723a3c2f7374726f6e673e3c62722f3e27202b206d657373616765202b20273c62722f3e3c627574746f6e206f6e636c69636b3d22746869732e706172656e74456c656d656e742e72656d6f7665282922207374796c653d226d617267696e2d746f703a302e3572656d3b70616464696e673a302e323572656d20302e3572656d3b6261636b67726f756e643a72676261283235352c3235352c3235352c302e32293b626f726465723a6e6f6e653b636f6c6f723a77686974653b626f726465722d7261646975733a3470783b637572736f723a706f696e7465723b223e436c6f73653c2f627574746f6e3e273b0a20202020202020202020202020202020646f63756d656e742e626f64792e617070656e644368696c64286572726f72446976293b0a202020202020202020202020202020200a202020202020202020202020202020202f2f204175746f2d72656d6f76652061667465722038207365636f6e64730a2020202020202020202020202020202073657454696d656f7574282829203d3e207b0a2020202020202020202020202020202020202020696620286572726f724469762e706172656e74456c656d656e7429207b0a2020202020202020202020202020202020202020202020206572726f724469762e72656d6f766528293b0a20202020202020202020202020202020202020207d0a202020202020202020202020202020207d2c2038303030293b0a2020202020202020202020207d20656c7365207b0a20202020202020202020202020202020616c657274286d657373616765293b0a2020202020202020202020207d0a20202020202020207d0a202020207d2c0a0a202020202f2f2053686f772073656172636820737563636573730a2020202073686f77537563636573733a2066756e6374696f6e286d65737361676529207b0a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20273c64697620636c6173733d22656e68616e6365642d63617264223e3c64697620636c6173733d22737563636573732d63617264223e3c68333e53656172636820436f6d706c6574653c2f68333e3c703e27202b206d657373616765202b20273c2f703e3c2f6469763e3c2f6469763e273b0a20202020202020207d0a202020207d2c0a202020200a202020202f2f2044656275672066756e6374696f6e20666f722074657374696e67207472616e73616374696f6e2073656172636865730a202020207465737454785365617263683a206173796e632066756e6374696f6e2874784861736829207b0a2020202020202020636f6e736f6c652e6c6f672827f09fa7aa2054657374696e67207472616e73616374696f6e2073656172636820666f723a272c20747848617368293b0a20202020202020200a2020202020202020696620282177696e646f772e78737764436f7265207c7c202177696e646f772e78737764436f72652e6973436f6e6e656374656429207b0a202020202020202020202020636f6e736f6c652e6c6f672827e29d8c2058535744206e6f7420636f6e6e656374656427293b0a20202020202020202020202072657475726e2066616c73653b0a20202020202020207d0a20202020202020200a2020202020202020747279207b0a2020202020202020202020202f2f2054657374207468652065786163742073616d652063616c6c20617320746865207365617263682066756e6374696f6e0a202020202020202020202020636f6e7374207478526573756c7431203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b7478486173685d2c200a202020202020202020202020202020206465636f64655f61735f6a736f6e3a2031200a2020202020202020202020207d293b0a202020202020202020202020636f6e736f6c652e6c6f672827f09fa7aa205465737420726573756c742031202877697468206465636f6465293a272c207478526573756c7431293b0a2020202020202020202020200a202020202020202020202020636f6e7374207478526573756c7432203d2061776169742077696e646f772e78737764436f72652e63616c6c28274445524f2e4765745472616e73616374696f6e272c207b200a202020202020202020202020202020207478735f6861736865733a205b7478486173685d0a2020202020202020202020207d293b0a202020202020202020202020636f6e736f6c652e6c6f672827f09fa7aa205465737420726573756c7420322028776974686f7574206465636f6465293a272c207478526573756c7432293b0a2020202020202020202020200a20202020202020202020202072657475726e207b20726573756c74313a207478526573756c74312c20726573756c74323a207478526573756c7432207d3b0a20202020202020207d20636174636820286572726f7229207b0a202020202020202020202020636f6e736f6c652e6c6f672827f09fa7aa2054657374206572726f723a272c206572726f72293b0a20202020202020202020202072657475726e207b206572726f723a206572726f722e6d657373616765207d3b0a20202020202020207d0a202020207d2c0a0a2020202073686f77534344617461496e666f3a2066756e6374696f6e286865784461746129207b0a2020202020202020636f6e736f6c652e6c6f67282753686f77696e67205343206461746120696e666f20666f723a272c2068657844617461293b0a2020202020202020746869732e636c65617253656172636828293b0a20202020202020200a20202020202020202f2f20517569636b20616e64207361666520686578206465636f64696e672077697468206c696d6974730a20202020202020206c6574206465636f64656454657874203d2027486578206461746120616e616c797369732064697361626c656420666f7220706572666f726d616e6365273b0a20202020202020200a20202020202020202f2f20466f72206e6f772c206a7573742073686f772074686520686578206461746120776974686f75742068656176792070726f63657373696e670a20202020202020202f2f205468652043505520667265657a6520776173206c696b656c79206361757365642062792074686520686578206465636f64696e67206c6f6f700a0a2020202020202020636f6e737420736561726368526573756c74203d20646f63756d656e742e676574456c656d656e744279496428277365617263682d726573756c7427293b0a202020202020202069662028736561726368526573756c7429207b0a202020202020202020202020736561726368526573756c742e696e6e657248544d4c203d20600a202020202020202020202020202020203c64697620636c6173733d22656e68616e6365642d63617264223e0a20202020202020202020202020202020202020203c64697620636c6173733d22636172642d686561646572223e0a2020202020202020202020202020202020202020202020203c6832207374796c653d22636f6c6f723a20236239353962363b20666f6e742d73697a653a20312e3672656d3b20666f6e742d7765696768743a203730303b206d617267696e3a20303b223e536d61727420436f6e7472616374205661726961626c6520446174613c2f68323e0a20202020202020202020202020202020202020203c2f6469763e0a20202020202020202020202020202020202020203c64697620636c6173733d22636172642d636f6e74656e74223e0a2020202020202020202020202020202020202020202020203c646976207374796c653d226d617267696e2d626f74746f6d3a203172656d3b223e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22636f6c6f723a20236233623362333b20666f6e742d73697a653a20302e3972656d3b206d617267696e2d626f74746f6d3a20302e3572656d3b223e48657820446174612028247b686578446174612e6c656e6774687d2063686172616374657273293a3c2f6469763e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22666f6e742d66616d696c793a206d6f6e6f73706163653b20636f6c6f723a20233461646538303b20666f6e742d73697a653a20302e3872656d3b20776f72642d627265616b3a20627265616b2d616c6c3b206261636b67726f756e643a207267626128302c302c302c302e33293b2070616464696e673a203172656d3b20626f726465722d7261646975733a203670783b20637572736f723a20706f696e7465723b22206f6e636c69636b3d226e6176696761746f722e636c6970626f6172642e7772697465546578742827247b686578446174617d272922207469746c653d22436c69636b20746f20636f7079223e247b686578446174617d3c2f6469763e0a2020202020202020202020202020202020202020202020203c2f6469763e0a2020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020203c646976207374796c653d226d617267696e2d626f74746f6d3a203172656d3b223e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22636f6c6f723a20236233623362333b20666f6e742d73697a653a20302e3972656d3b206d617267696e2d626f74746f6d3a20302e3572656d3b223e4465636f646564205465787420286966207265616461626c65293a3c2f6469763e0a202020202020202020202020202020202020202020202020202020203c646976207374796c653d22666f6e742d66616d696c793a206d6f6e6f73706163653b20636f6c6f723a20236662626632343b20666f6e742d73697a653a20302e3872656d3b206261636b67726f756e643a207267626128302c302c302c302e33293b2070616464696e673a203172656d3b20626f726465722d7261646975733a203670783b223e247b6465636f646564546578747d3c2f6469763e0a2020202020202020202020202020202020202020202020203c2f6469763e0a2020202020202020202020202020202020202020202020200a2020202020202020202020202020202020202020202020203c646976207374796c653d22636f6c6f723a20233838383b20666f6e742d73697a653a20302e3872656d3b206c696e652d6865696768743a20312e343b223e0a2020202020202020202020202020202020202020202020202020202054686973206170706561727320746f20626520736d61727420636f6e7472616374207661726961626c6520646174612e2049742773206e6f742061207374616e6461726420545849442f534349442f426c6f636b20686173682c20627574206d617920636f6e7461696e20656e636f64656420696e666f726d6174696f6e206f72207265666572656e6365732e0a2020202020202020202020202020202020202020202020203c2f6469763e0a20202020202020202020202020202020202020203c2f6469763e0a202020202020202020202020202020203c2f6469763e0a202020202020202020202020603b0a20202020202020207d0a202020207d0a7d293b0a2a2f6a53435f414354494f4e550118a27d0fb05cc4bb7faaab954e9fd0c02a2a07ac562796ce9ae3208edc45c7db012cf340af45035d2d3fcb1a0921b67d065beeb3667c629a5403029246f5768a1c010020418f2d3abc25ef9a3faa1aaa9c20821fdea504833c2f40c5663fbd86831e001f218dc8de6cfd8bcf4c97b0c6148d41e76f6ab73a0df226ac865ff295b857c900080850cc3fc849a7f8ceba554931e6fb9b099b18d013a8755474f2029476d53c0100f01b9f3ec9c911aca15cc8d27e60c97afb0ead9afe477e9d6ba91123abf15f002b239ca1c7897479f379828ba509e5cc67bed7e300da376789b9a3bc7bde7dfd0100847f863654815487d45931a5173d237e8fb529faffdecc3c542aacbca6ceec0012fbcd28ecd0030e64d4c1b66c6736bc0175d1cb0f5878d536c0b24040ccb6c7012c9dd7d8f2c9d2af1ca04309f8afe4959857d0213a82e4511cb0cb5f130205d0011298931291ff3a4995add8c97ac2c9c0a5597134ec0b436253cfe25d0c0b0d19002b19b7cc716f4ad297af34b04d30816c78f9cc5e8683305c07f33ec24d66417f012f4a5a0fb87e14237a7a0c359f04f21ec5f847c582dc8e89e368f09af3f851db00181b4c052496595823ead0750fa1e86ec2dbc62f570401fa4f89b64ca0e06244010398417168665d37c8430331eacbbf5127eb43781c832e8446188a61791232b60012aadf1ffb469fc58dc4186e9d2e01de30580d42ebebfbb62fc6a9239ac526f3010423e7912ea860b101e295bc65cdcf85885d0d03bde073e4f6c37224ef3407cb011006dd9a6db806d53d80396815f8fcf2553fc71c4a02e1c5f907e5577b4c37ec00278b63cbf8d9a89372958e71a3640536fc065f4a94a06ef2f020aaa9b4c05f9201256b9b9e49f57a19ccc3df8a3547851b3611989c0dd84fbfca8c0eca6b8150d0001086e43543626dcdfcc8e89d23daeb8d2ee2bbaa474cfcc6fbb5e26eae33e66b011454d21f9e0f1024b0f58f5793b49036532b3a242208541e1874cea74097690b0121254731378182cc0bc5eed49ba9c729730a770df07616995bb343f9f7171afe01101cbaffee8adaddb590781a50d8a2ca832f0fb836c2765893b1ca969b10f6460100f3cb1c1bda6ef125f5303cb744ec3aae4ce6b8dfc2f560c16e6d0f4bffda3f001b96b836c1ba833321e6ee19d851d2b98cc4861ad811d62a3e076dd28c2d8c560107b42cf48242015fb16a85d802abb0ffe34f7ce71ee3e7bd6cf740c5e48392a7002bf9705c54a0e38a9fa8443d76434a74447e3ac800b15cafe46323e5c0bf30f00028ec39f18c12e2c8aaec700f738f7f3a4b90e8d941b2317a0665abc0bffef61e0119150dae2ed805725fe24ab22a5af5aad8201386a3a741fe7e2d41c248f4cbca0120aa5a0642f1523adb09e9517d26c0c3822e1d1a00711c29ce87fa297b3669a7002671bbac321c988d691edb00aef9a1443edfd9bcab03a06ec78c004c50ba32bb000273d4ebf8d812e5e80d8b954d92ab5f39a49e17941bc9c1fd6ed6fbbcb4c52e00305a73bd987197e779ab9a5b0988eab2c330c089846b2e1e15256527b7a25cf4000d1fb1d1a7616d9763b165066007eae503e2b8f5d46b5d1dc4f88a70e374361a012dbfecab1621c273b72773fc7dc2d43042bda5505284f206a4571bf9a76052d6001da104c3022f351784c2f2d7b15851296e0068098ef9e54e979da57bb982243e0000000000000000000000000000000000000000000000000000000000000000002fe7c57a6061b886eb193be841efbe0b97f761d87f4d350a3517d9dcc7c17a7f15cadfb5a65765902a43311144d7d9145cb1925443ade5a625dcba18632356b02b5c6dd4b6c533eb5db592321dc8ed2ce571c0fa8d87e6fd3871e8a359b18ff72e7e2c65c92a272add640947b88a415447527821e6d543d3ea2b958505556ab10a54aaddb59980f037d97e8c4fa6e273f759175cb93390f15c390d1dec157a122fe25c68a8dbdf7fca95acd7770fe375d51eeea63efcb48bd273e22403ba65ee29f6284017f8e76548f77fa6c31fffcdd5a6e47a518e76fe4c97cbd580ca56cf17afefd1ca2f8a06671cb8734ac1711cfd47332bc44b7e2023143df06d3ed17c1c81c91d14576b1ff285792aa59296a0e7c26d9cf2fa8a574b1a54eac47867ec0014df9b61e92ae650693fe18a03074c1d629645695b7d3f30149288d209d1ca28010b1f6ecb229858e333e3ea682699a1a14e246eecba0aa991c87a12d2d85addc4167480c91f441f41e17513b44d7fe6695150cbdc04a16ae19c9ae575257a40ea1b93af506a4cec44e516352c062b7f3654fca7ca197f0f2a8b156ebd59eda3d5172083a2fe6ae8945b6557e00bd3c4fa79055994babecb981c8e3fc2e11e78152d125bca0ef6ec2515f201c3b83ebab0676d238f109acde2d70c18b00a236bb8005209af3811191b1fdc344a1fbb7abb44b9815516186b6f9cc7f44daf118ffb280089384e168d68570a532861a207b838a1cc1272f1026739c230c861194cd401ba169441beda607fe8189a729448eefbaaa036a9aa00bd940729016dd4f9cb28016b53d2375e43adcb598a57fe220f7b24903ed52ffae198ee65ede500008618d7ee6c386f852f1177e6ae2e59ee7f45f5ba8f26154c013166d26dc54dfd9700145b648442296467117c04b7448e24deb908b026ad7df09cd05deb232ca638c3011d757903aa845c5e5d859c5247256141933711ab56a035aba6451a07344bc70f000e4fe10ccd14e617c11e339823d401a570e6f2e2acf1599d8e6285bdff11d40b0114f8a71c86baf6b5539ed7a57bb548c0bc12b81281390ac9b762b352d6664303011d783d26a66fee133b03e797e5c18deb3affe60d7bd09d81e99b00c264939f54012547d1f60415d5eff94a3232dfd8e84ff3f33cf6fdf608df6a45e55ce62fc9a0010e67a87c4c2a31d2a56c941fc4aae87e9f5e69e57419d2518dc3cedf6e89d57b0115dc9d908a8ad5e0df8bee7a9ebb70e3a3884a30ebab5e7809e208570bef6b15010b87d3127bce3df27a0c53d7a5ddfdff75c83cefad48dee1fed965bf492089410118868c787a95a20ec58d5546424628e7492eaa4c2112611fe9765e4e4fa2aabd00107e6a9fd6b64c922a3f9ac2f7aefb88e4f5312fbf3f07851195ae6dea1b721b0020aec128c22f99211ade10a920a92392507b95c39ba8f0a73718320c7116eb32012c11e840860d472f5ac1f215d96b1bb9853c846ba01192dbaeac93a70dad95f500
DERO explorer source code | explorer version (api): under development (1.0) | dero version: golang pre-alpha | Copyright 2017-2025 Dero Project