logo DERO HE BlockChain Explorer(v1) Mainnet

Tx hash: 9b9f323fd8973363b8dcd632439a12d94da2f6fc6a37229d7718dd6d507748a5 Type SC

Block: 190d82fe1cdfa3c97364db20a333f567c0ff766ab486270e854ff3ea314323bc (VALID)
SCID current reserves
SCID Amount(in atomic units)
0000000000000000000000000000000000000000000000000000000000000000 0
SCID string variables
key value
C 2f2f2020436f7079726967687420323032342e20436976696c776172652e20416c6c207269676874732072657365727665642e0a2f2f202054454c4120446563656e7472616c697a65642057656220446f63756d656e74202854454c412d444f432d31290a46756e6374696f6e20496e697469616c697a655072697661746528292055696e7436340a313020494620696e69742829203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226e616d65486472222c2022736372697074732e6a7322290a33312053544f524528226465736372486472222c20224a5322290a33322053544f5245282269636f6e55524c486472222c202222290a33332053544f524528226455524c222c2022736372697074732e6a7322290a33342053544f52452822646f6354797065222c202254454c412d4a532d3122290a33352053544f52452822737562446972222c20226a7322290a33362053544f5245282266696c65436865636b43222c20223134333465626634663766376662636165343365636163363538303736663138356233363439303664323539303834323933633063393235633836386234613222290a33372053544f5245282266696c65436865636b53222c20223265666139333838316165313139396637343030663564353430623338396434336632333935666533333264386339376430613338366234396237393165626622290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e20696e697428292055696e7436340a31302049462045584953545328226f776e65722229203d3d2030205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528226f776e6572222c20616464726573732829290a35302053544f52452822646f6356657273696f6e222c2022312e302e3022290a36302053544f5245282268617368222c204845582854584944282929290a37302053544f524528226c696b6573222c2030290a38302053544f524528226469736c696b6573222c2030290a3130302052455455524e20300a456e642046756e6374696f6e0a0a46756e6374696f6e2061646472657373282920537472696e670a31302044494d207320617320537472696e670a3230204c45542073203d205349474e455228290a33302049462049535f414444524553535f56414c4944287329205448454e20474f544f2035300a34302052455455524e2022616e6f6e220a35302052455455524e20414444524553535f535452494e472873290a456e642046756e6374696f6e0a0a46756e6374696f6e205261746528722055696e743634292055696e7436340a31302044494d206164647220617320537472696e670a3135204c45542061646472203d206164647265737328290a31362049462072203c2031303020262620455849535453286164647229203d3d2030202626206164647220213d2022616e6f6e22205448454e20474f544f2033300a32302052455455524e20310a33302053544f524528616464722c2022222b722b225f222b424c4f434b5f4845494748542829290a34302049462072203c203530205448454e20474f544f2037300a35302053544f524528226c696b6573222c204c4f414428226c696b657322292b31290a36302052455455524e20300a37302053544f524528226469736c696b6573222c204c4f414428226469736c696b657322292b31290a3130302052455455524e20300a456e642046756e6374696f6e0a0a2f2a66756e6374696f6e206762696428656c6964297b0a0972657475726e20646f63756d656e742e676574456c656d656e744279496428656c6964293b0a7d0a7661722072616e646f5f646573743d226465726f3171796b797461366e74706432376e6c3079713478747a6166346c733670356539707175306b3278347833707171357861766a73647871676e7938323730222f2f226465746f317179767965797a72636d32667a66366b79713765676b6573327566676e7935786e3737793674797068667839733777336d767964357171796e7235687822226465746f317179326e786774733777646e3238636b63346c3274657770686a637070716a666a363964646b786a6e30617938686c736a7837336a71676d6174357338222f2f0a7661722072616e646f5f7369676e65723d72616e646f5f646573740a76617220646f637479706573656c656374203d20676269642827646f635f7479706527293b0a76617220646f634e616d65486472203d20676269642827646f634e616d6548647227293b0a76617220646f634465736372486472203d20676269642827646f63446573637248647227293b0a76617220646f6349636f6e55524c486472203d20676269642827646f6349636f6e55524c48647227293b0a76617220646f634455524c203d20676269642827646f634455524c27293b0a76617220646f63537562446972203d20676269642827646f6353756244697227293b0a0a76617220646f63696e70757473203d205b646f634e616d654864722c646f6344657363724864722c646f6349636f6e55524c4864722c646f634455524c2c646f635375624469725d3b0a646f63696e707574732e666f72456163682828696e70757429203d3e207b0a09696e7075742e6164644576656e744c697374656e657228226b65797570222c20646f6345646974293b0a09696e7075742e6164644576656e744c697374656e657228226368616e6765222c20646f6345646974293b0a09696e7075742e6164644576656e744c697374656e65722822626c7572222c20646f6345646974293b0a7d293b0a646f637479706573656c6563742e6164644576656e744c697374656e657228226368616e6765222c20646f6345646974293b0a0a66756e6374696f6e20646f6345646974286576656e746f72696429207b200a09736d617274636f6e74726163742e76616c7565203d20676574446f635343436f646528293b0a096c6574206c6173745f6572726f7273203d206572726f72732e6d61702861203d3e20612e6572726f72293b0a096c657420746964203d2027273b0a096966286576656e746f72696420696e7374616e63656f6620537472696e67207c7c20747970656f66206576656e746f726964203d3d3d2027737472696e6727297b09090a0909746964093d206576656e746f7269643b090a097d656c73657b0a0909746964093d206576656e746f7269642e7461726765742e69643b0a097d0a096c6574206f6b203d20636865636b446f63496e7075747328746964293b0a090a202020206966286f6b2e6f6b297b0a0909616464446f63427574746f6e2e72656d6f7665417474726962757465282264697361626c656422293b0a097d656c7365207b0a0909616464446f63427574746f6e2e736574417474726962757465282264697361626c6564222c2074727565293b0a097d0a0a20202020696628696e7374616c6c5f646f63732e6c656e67746820213d2030297b0a09096465706c6f79446f6373427574746f6e2e72656d6f7665417474726962757465282264697361626c656422293b0a097d656c7365207b0a09096465706c6f79446f6373427574746f6e2e736574417474726962757465282264697361626c6564222c2074727565293b0a097d090a0a0a096c65742073616d655f6572726f72203d204a534f4e2e737472696e67696679286f6b2e6572726f72732e6d61702861203d3e20612e6572726f722929203d3d3d204a534f4e2e737472696e67696679286c6173745f6572726f7273293b0a09696628676269642827647761726e272920262620282173616d655f6572726f72207c7c206f6b2e6572726f72732e6c656e677468203d3d3d203029297b676269642827647761726e27292e72656d6f766528293b7d0a096966286f6b2e6572726f72732e6c656e67746820213d2030297b09090a09096c6574206572726f727354657874203d2022223b0a0909666f722028636f6e7374206572726f72206f66206f6b2e6572726f727329207b0a0909096572726f727354657874203d206572726f722e6572726f72202b206572726f727354657874202b20225c6e223b0a0909096966286572726f722e696420213d3d2727202626202173616d655f6572726f72297b0a090909096c6574207761726e203d20646f63756d656e742e637265617465456c656d656e7428227022293b0a090909097761726e2e696e6e657254657874203d206572726f722e6572726f723b0a090909097761726e2e6964203d22647761726e223b0a090909097761726e2e7374796c652e636f6c6f72203d2022726564223b0a0909090967626964286572726f722e6964292e6166746572287761726e293b0a0909097d0a0909090a09097d200a09096966282173616d655f6572726f72297b0909090a090909616c657274286572726f727354657874293b0a09097d0a097d0a7d0a766172206572726f7273203d205b5d3b0a66756e6374696f6e20636865636b446f63496e7075747328746964297b0a090a096c6574206f6b203d20747275653b0a096572726f7273203d205b5d3b090a09626c6f62203d206e657720426c6f62285b4a534f4e2e737472696e676966792867657451756f74654a534f4e28736d617274636f6e74726163742e76616c756529292b2866696c65436865636b43203d3d22223f2730272e72657065617428313238293a2222295d290a09696628626c6f622e73697a65203e203230303030297b0a0909696628746964203d3d3d2022646f63446573637248647222297b0a0909096572726f72732e70757368287b226964223a7469642c2274797065223a2266696c65222c226572726f72223a224465736372697074696f6e206f7220646f6320746f6f206c617267652e2022202b20626c6f622e73697a65202b226279746573227d293b0a09097d656c73657b09090a0909096572726f72732e70757368287b226964223a7469642c2274797065223a2266696c65222c226572726f72223a22446f6320746f6f206c617267652e2022202b20626c6f622e73697a65202b226279746573227d293b0a09097d0a09096f6b203d2066616c73653b0a097d0a090a0a0969662028646f63546578742e76616c75652e6d61746368282f5c75303032415c2f2f2929207b09090a09096572726f72732e70757368287b226964223a7469642c2274797065223a2266696c65222c226572726f72223a224d756c74692d6c696e6520636f6d6d656e7473206e6f7420616c6c6f7765642e227d293b0a09096f6b203d2066616c73653b0a097d090a090a096966280a09646f637479706573656c6563742e76616c75653d3d22227c7c0a09646f634e616d654864722e76616c75653d3d22227c7c0a09646f6344657363724864722e76616c75653d3d22227c7c0a09646f634455524c2e76616c75653d3d22227c7c0a0966696c65436865636b433d3d22227c7c0a0966696c65436865636b533d3d22227c7c0a09646f63546578742e76616c75653d3d22227c7c0a0966696c656e616d653d3d22220a09297b0a09096f6b203d2066616c73653b0a097d0a0969662866696c656e616d6520213d2222297b0a09096c657420746573745f66696c656e616d65203d2022223b0a0909746573745f66696c656e616d65203d2066696c656e616d652e73706c697428272e27292e706f7028293b0a0a09096966282254454c412d222b746573745f66696c656e616d652e746f55707065724361736528292b222d312220213d20646f637479706573656c6563742e76616c7565297b0a0909096572726f72732e70757368287b226964223a7469642c226572726f72223a2246696c6520457874656e73696f6e20646f65736e2774206d617463682073656c656374656420646f63756d656e7420747970652e227d293b0a0909096f6b203d2066616c73653b0a09097d0a0909696628696e7374616c6c5f646f63732e6c656e677468203e2030297b0a0909096c65742066756c6c5f6c6f63203d20646f635375624469722e76616c7565202b20646f634e616d654864722e76616c75653b0a090909666f7220286c6574207820696e20696e7374616c6c5f646f637329207b0a0909090969662866756c6c5f6c6f63203d3d20696e7374616c6c5f646f63735b785d2e737562646972202b20696e7374616c6c5f646f63735b785d2e66696c656e616d65297b0a09090909096572726f72732e70757368287b226964223a7469642c226572726f72223a22446f6320616c726561647920616464656421227d293b0a09090909096f6b203d2066616c73653b0a090909097d0a0909097d0a09097d090a0909696628696e7374616c6c65645f646f63732e6c656e677468203e2030297b0a0909096c65742066756c6c5f6c6f63203d20646f635375624469722e76616c7565202b20646f634e616d654864722e76616c75653b0a090909666f7220286c6574207820696e20696e7374616c6c65645f646f637329207b0a0909090969662866756c6c5f6c6f63203d3d20696e7374616c6c65645f646f63735b785d2e737562646972202b20696e7374616c6c65645f646f63735b785d2e66696c656e616d65297b0a09090909096572726f72732e70757368287b226964223a7469642c226572726f72223a22446f6320616c726561647920696e7374616c6c656421227d293b0a09090909096f6b203d2066616c73653b0a090909097d0a0909097d0a09097d0909090a097d090a0972657475726e207b226f6b223a6f6b2c226572726f7273223a6572726f72737d3b0a7d0a0a0a7661722066696c65436865636b43203d2022223b0a7661722066696c65436865636b53203d2022223b0a0a7661722066696c656e616d653d22223b0a76617220696e7374616c6c5f646f6373203d205b5d3b0a76617220696e7374616c6c65645f646f6373203d205b5d3b0a7661722066696c65436f6e74656e7473203d20646f63756d656e742e717565727953656c6563746f722827696e707574236f70656e5f66696c655b747970653d2266696c65225d27293b0a66696c65436f6e74656e74732e6164644576656e744c697374656e657228276368616e6765272c206173796e6320286529203d3e207b0a0969662866696c65436f6e74656e74732e66696c65732e6c656e67746820213d3d2031297b0a0909646f63546578742e76616c75653d22220a090966696c656e616d653d22220a0909646f634e616d654864722e76616c75653d22220a090966696c65436f6e74656e74732e76616c75653d22220a090966696c65436865636b433d22220a090966696c65436865636b533d22220a0909646f63456469742865290a090972657475726e0a097d0a202020206c65742066696c65203d2066696c65436f6e74656e74732e66696c65735b305d0a202020206c657420726561646572203d206e65772046696c6552656164657228290a202020207265616465722e6f6e6c6f6164203d206173796e63202829203d3e207b0a0909646f63546578742e76616c7565203d207265616465722e726573756c740a090966696c656e616d65203d2066696c652e6e616d650a0909646f634e616d654864722e76616c7565203d2066696c656e616d650a202020202020202066696c65436865636b433d22220a090966696c65436865636b533d22220a0909646f634564697428276f70656e5f66696c6527293b0a09096c6574207369676e6174757265203d2066616c73650a09096c657420726573756c74203d206572726f72732e66696e64286f626a203d3e206f626a2e74797065203d3d3d202266696c6522293b0a0909696628747970656f6620726573756c74203d3d3d2022756e646566696e656422297b0a0909097369676e6174757265203d206177616974207369676e4461746128646f63546578742e76616c7565290a09097d0a0909696628217369676e6174757265297b0a090909646f63546578742e76616c75653d22220a09090966696c656e616d653d22220a090909646f634e616d654864722e76616c75653d22220a09090966696c65436f6e74656e74732e76616c75653d22220a09090966696c65436865636b433d22220a09090966696c65436865636b533d22220a090909646f63456469742865290a09090972657475726e0a09097d0a0a09096c6574207369676e73203d2070617273655369676e656446696c65287369676e6174757265293b0a090966696c65436865636b43203d207369676e732e433b0a090966696c65436865636b53203d207369676e732e533b0a0909646f634564697428276f70656e5f66696c6527293b0a0a202020207d0a202020207265616465722e726561644173546578742866696c65290a7d293b0a0a0a66756e6374696f6e2070617273655369676e656446696c65287369676e6564297b0a096c65742063203d207369676e65642e73706c69742827433a20272c2032295b315d3b0a096c65742073203d20632e73706c69742827533a20272c2032295b315d3b0a0963203d20632e73706c6974282f5c723f5c6e2f2c2032295b305d3b0a0973203d20732e73706c6974282f5c723f5c6e2f2c2032295b305d3b0a0972657475726e207b2243223a632c2253223a737d3b0a7d0a0a0a76617220736d617274636f6e7472616374203d20676269642827736d617274636f6e747261637427293b0a76617220646f6354657874203d20676269642827646f63756d656e7427293b0a76617220616464446f63427574746f6e203d20676269642827616464446f6327293b0a766172206465706c6f79446f6373427574746f6e203d206762696428276465706c6f79446f637327293b0a0a66756e6374696f6e2067657451756f74654a534f4e28736d6172745f636f6e7472616374297b0a096c65742071756f74654a534f4e203d207b7d3b0a0971756f74654a534f4e2e6a736f6e727063203d2022322e30223b0a0971756f74654a534f4e2e6964203d202231223b0a0971756f74654a534f4e2e6d6574686f64203d20224445524f2e476574476173457374696d617465223b0a0971756f74654a534f4e2e706172616d73203d207b7d3b0a0971756f74654a534f4e2e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d200a097d5d3b0a0971756f74654a534f4e2e706172616d732e7363203d20736d6172745f636f6e74726163743b0a0971756f74654a534f4e2e706172616d732e73635f76616c7565203d20303b0a0971756f74654a534f4e2e706172616d732e73635f727063203d205b5d3b0a0971756f74654a534f4e2e706172616d732e72696e6773697a65203d20323b0a0971756f74654a534f4e2e706172616d732e7369676e6572203d2072616e646f5f7369676e65723b0a0972657475726e2071756f74654a534f4e3b0a7d0a0a616464446f63427574746f6e2e6164644576656e744c697374656e65722827636c69636b272c2066756e6374696f6e286576656e7429207b0a096c65742071756f74654a534f4e203d2067657451756f74654a534f4e28736d617274636f6e74726163742e76616c7565293b0a096c657420726573756c74203d20636f6e6669726d2822457374696d6174656420436f73743a20222b286e696365526f756e642871756f74654a534f4e2e706172616d732e73632e6c656e677468202a2032202a202e3030303031292920202b22204445524f2c2041646420446f6320746f2051756575653f22293b0a0969662028726573756c7429207b0a0909616464446f6328293b0a097d20656c7365207b0a0909616c6572742822416374696f6e2063616e63656c65642e22293b0a097d0a7d293b0a0a0a6465706c6f79446f6373427574746f6e2e6164644576656e744c697374656e65722827636c69636b272c206173796e632066756e6374696f6e286576656e7429207b0a096c657420746f74616c5f6c656e677468203d20303b0a09666f7220286c6574207820696e20696e7374616c6c5f646f637329207b0a0909746f74616c5f6c656e677468202b3d20696e7374616c6c5f646f63735b785d2e636f6e74726163742e6c656e6774683b0a097d0a096c657420726573756c74203d20636f6e6669726d2822457374696d6174656420546f74616c20436f737420666f7220446f63733a20222b286e696365526f756e6428746f74616c5f6c656e677468202a2032202a202e3030303031292920202b22204445524f2c20436f6e74696e75653f22293b0a0969662028726573756c7429207b0a09096465706c6f79446f6373427574746f6e2e736574417474726962757465282264697361626c6564222c2074727565293b0a0909617761697420696e7374616c6c446f637328293b0a0909616c6572742822446f63756d656e747320496e7374616c6c65642c2043726561746520616e20496e646578204e6578742e22293b0a090920696628696e7374616c6c5f646f63732e6c656e67746820213d2030297b0a0909096465706c6f79446f6373427574746f6e2e72656d6f7665417474726962757465282264697361626c656422290a0909207d090a097d20656c7365207b0a0909616c6572742822416374696f6e2063616e63656c65642e22293b0a097d0a0a7d293b0a0a2f2f496e7374616c6c204a534f4e0a66756e6374696f6e20676574496e7374616c6c4a534f4e28736d6172745f636f6e7472616374297b0a096c657420696e7374616c6c4a534f4e203d207b7d3b0a09696e7374616c6c4a534f4e2e6a736f6e727063203d2022322e30223b0a09696e7374616c6c4a534f4e2e6964203d202231223b0a09696e7374616c6c4a534f4e2e6d6574686f64203d20227472616e73666572223b0a09696e7374616c6c4a534f4e2e706172616d73203d207b7d3b0a09696e7374616c6c4a534f4e2e706172616d732e66656573203d20303b0a09696e7374616c6c4a534f4e2e706172616d732e7472616e7366657273203d205b7b0a090964657374696e6174696f6e3a2072616e646f5f646573742c0a0909616d6f756e743a302c0a09094275726e3a302c0a09097061796c6f61645f7270633a5b5d200a097d5d3b0a09696e7374616c6c4a534f4e2e706172616d732e7363203d20736d6172745f636f6e74726163743b0a09696e7374616c6c4a534f4e2e706172616d732e73635f76616c7565203d20303b0a09696e7374616c6c4a534f4e2e706172616d732e73635f727063203d205b5d3b0a09696e7374616c6c4a534f4e2e706172616d732e72696e6773697a65203d20323b0a0972657475726e20696e7374616c6c4a534f4e3b0a7d0a0a6173796e632066756e6374696f6e207369676e446174612864617461297b090a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d202230223b0a094a534f4e522e6d6574686f64203d20225369676e44617461223b0a094a534f4e522e706172616d73203d2062746f612864617461293b0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a090972657475726e2061746f6228726573706f6e73652e726573756c742e7369676e6174757265293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909616c65727428726573706f6e73652e6572726f722e6d657373616765293b09090a097d0a0972657475726e2066616c73653b0a7d0a66756e6374696f6e20696e7374616c6c4c69737428297b0a096c657420746578743d22220a09666f7220286c6574207820696e20696e7374616c6c5f646f637329207b0a090974657874202b3d2028696e7374616c6c5f646f63735b785d2e73756264697220213d22223f20696e7374616c6c5f646f63735b785d2e737562646972202b20222f22203a222229202b20696e7374616c6c5f646f63735b785d2e66696c656e616d65202b223c62723e220a097d0a0972657475726e20746578740a7d0a2f2f41646420446f632066756e6374696f6e0a6173796e632066756e6374696f6e20616464446f6328297b0a0a09696e7374616c6c5f646f63732e70757368287b22737562646972223a646f635375624469722e76616c75652e7265706c616365282f5e5c2f7c5c2f7c5c2f242f672c202727292c2266696c656e616d65223a66696c656e616d652c22646f636e616d65686472223a646f634e616d654864722e76616c75652c22636f6e7472616374223a736d617274636f6e74726163742e76616c75657d290a09646f634e616d654864722e76616c75653d22220a0966696c656e616d653d22220a0966696c65436f6e74656e74732e76616c75653d22220a0966696c65436865636b433d22220a0966696c65436865636b533d22220a09676269642822696e7374616c6c5f6f757470757422292e696e6e657248544d4c203d20696e7374616c6c4c69737428293b0a09646f634564697428272729090a7d0a2f2f496e7374616c6c20446f63732066756e6374696f6e0a6173796e632066756e6374696f6e20696e7374616c6c446f637328297b0a090a09696628696e7374616c6c5f646f63732e6c656e677468203e2030297b0a09096c65742070726f6772657373203d20617761697420696e7374616c6c446f6328696e7374616c6c5f646f63735b305d290a090969662870726f677265737320213d3d20227375636365737322297b0a090909676269642822696e7374616c6c65645f6f757470757422292e696e6e657248544d4c203d20224572726f72206f636375727265643a222b2070726f6772657373202b20223c62723e22202b20676269642822696e7374616c6c65645f6f757470757422292e696e6e657248544d4c3b0a09097d0a090972657475726e20617761697420696e7374616c6c446f637328293b09090a097d0a0972657475726e20747275650a7d0a2f2f496e7374616c6c20446f632066756e6374696f6e0a6173796e632066756e6374696f6e20696e7374616c6c446f6328646f63297b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e6428676574496e7374616c6c4a534f4e28646f632e636f6e747261637429293b0a09696628726573706f6e73652e726573756c74297b0a09096c657420696e7374616c6c6564203d20617761697420636f6e6669726d6174696f6e28726573706f6e73652e726573756c742e74786964290a09096966202821696e7374616c6c656429207b0a09090972657475726e202250726f626c656d20496e7374616c6c696e6720446f632c2074727920616761696e2e20545849443a222b726573706f6e73652e726573756c742e747869640a09097d0a0909696e7374616c6c65645f646f63732e70757368287b22737562646972223a646f632e7375626469722c2266696c656e616d65223a646f632e66696c656e616d652c2273636964223a726573706f6e73652e726573756c742e747869647d293b0a0909696e7374616c6c5f646f63732e736869667428293b0a0909676269642822696e7374616c6c5f6f757470757422292e696e6e657248544d4c203d20696e7374616c6c4c69737428293b0a0a09096c6574206f757470757454657874203d22223b0a0909666f7220286c6574207820696e20696e7374616c6c65645f646f637329207b0a0909096f757470757454657874202b3d2028696e7374616c6c65645f646f63735b785d2e73756264697220213d22223f20696e7374616c6c65645f646f63735b785d2e737562646972202b20222f22203a222229202b20696e7374616c6c65645f646f63735b785d2e66696c656e616d6520202b20223a22202b20696e7374616c6c65645f646f63735b785d2e73636964202b223c62723e223b0a09097d0a09096c657420746f74646f6373203d20696e7374616c6c5f646f63732e6c656e677468202b20696e7374616c6c65645f646f63732e6c656e6774683b09090a09096c6574206d7367203d2022496e7374616c6c656420446f632023222b696e7374616c6c65645f646f63732e6c656e677468202b2022206f6620222b20746f74646f6373202b20223c62723e220a0909696628696e7374616c6c65645f646f63732e6c656e677468203d3d20746f74646f6373297b0a200909096d7367203d20746f74646f6373202b202220646f637320696e7374616c6c65642e3c62723e220a09097d0a0909676269642822696e7374616c6c65645f6f757470757422292e696e6e657248544d4c203d206d7367202b206f7574707574546578743b0a090972657475726e202273756363657373220a097d656c736520696628726573706f6e73652e6572726f72297b0a090972657475726e20726573706f6e73652e6572726f722e6d6573736167650a097d09090a7d0a0a2f2f496e7374616c6c20496e6465782066756e6374696f6e0a6173796e632066756e6374696f6e20696e7374616c6c496e64657828297b0a096c657420726573706f6e7365203d20617761697420736f636b657453656e6428676574496e7374616c6c4a534f4e28696e6465785343436f64652e76616c756529293b0a09696628726573706f6e73652e726573756c74297b0a09096c657420696e7374616c6c6564203d20617761697420636f6e6669726d6174696f6e28726573706f6e73652e726573756c742e74786964290a09096966202821696e7374616c6c656429207b0a090909616c657274282250726f626c656d20496e7374616c6c696e6720496e6465782c2074727920616761696e2e20545849443a222b726573706f6e73652e726573756c742e74786964293b0a09090972657475726e2066616c73653b0a09097d0a0909676269642822696e6465787363696422292e696e6e657248544d4c203d202254656c61205369746520496e64657820534349443a22202b20726573706f6e73652e726573756c742e747869643b0a0909616c6572742822436f6e67726174732c20796f7527726520616c6c20646f6e6521205468697320697320796f75722054656c61205369746520534349443a22202b20726573706f6e73652e726573756c742e74786964293b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909616c65727428726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a090a7d0a0a0a76617220696e6465784e616d65486472203d20676269642827696e6465784e616d6548647227293b0a76617220696e6465784465736372486472203d20676269642827696e646578446573637248647227293b0a76617220696e64657849636f6e55524c486472203d20676269642827696e64657849636f6e55524c48647227293b0a76617220696e6465784455524c203d20676269642827696e6465784455524c27293b0a76617220696e6465785343436f6465203d20676269642827696e6465785343436f646527293b0a0a766172206465706c6f79496e646578427574746f6e203d206762696428276465706c6f79496e64657827293b0a7661722067656e6572617465496e646578427574746f6e203d2067626964282767656e6572617465496e64657827293b0a0a0a76617220696e646578696e70757473203d205b696e6465784e616d654864722c696e64657844657363724864722c696e64657849636f6e55524c4864722c696e6465784455524c5d3b0a696e646578696e707574732e666f72456163682828696e70757429203d3e207b0a09696e7075742e6164644576656e744c697374656e657228226b65797570222c20696e64657845646974293b0a09696e7075742e6164644576656e744c697374656e657228226368616e6765222c20696e64657845646974293b0a09696e7075742e6164644576656e744c697374656e65722822626c7572222c20696e64657845646974293b0a7d293b0a0a66756e6374696f6e20696e64657845646974286576656e7429207b0a0a096c657420646f6373203d22223b0a096c6574206c696e655f6e6f203d2034303b0a09666f7220286c6574207820696e20696e7374616c6c65645f646f637329207b0a0909646f6373202b3d20286c696e655f6e6f2b2b29202b20602053544f52452822444f43602b287061727365466c6f6174287829202b203129202b2060222c202260202b696e7374616c6c65645f646f63735b785d2e73636964202b20602229602b225c6e223b0a097d0a09696e6465785343436f64652e76616c7565203d20676574496e646578534328646f6373293b0a0a096c6574206f6b203d20636865636b496e646578496e7075747328293b0a202020206966286f6b2e6f6b297b0a09096465706c6f79496e646578427574746f6e2e72656d6f7665417474726962757465282264697361626c656422293b0a097d656c73657b0a09096465706c6f79496e646578427574746f6e2e736574417474726962757465282264697361626c6564222c2074727565293b0a097d0a096966286f6b2e6572726f72732e6c656e67746820213d2030297b0a09096c6574206572726f727354657874203d2022223b0a0909666f722028636f6e7374206572726f72206f66206f6b2e6572726f727329207b0a0909096572726f727354657874203d206572726f72202b206572726f727354657874202b20225c6e223b0a09097d0a0909616c657274286572726f727354657874293b0a097d0a7d0a0a0a6465706c6f79496e646578427574746f6e2e6164644576656e744c697374656e65722827636c69636b272c2066756e6374696f6e286576656e7429207b0a096c65742071756f74654a534f4e203d2067657451756f74654a534f4e28696e6465785343436f64652e76616c7565293b0a096c657420726573756c74203d20636f6e6669726d2822457374696d6174656420436f73743a20222b286e696365526f756e642871756f74654a534f4e2e706172616d732e73632e6c656e677468202a2032202a202e3030303031292920202b22204445524f2c20496e7374616c6c2054656c612d496e6465783f22293b0a0969662028726573756c7429207b0a0909696e7374616c6c496e64657828696e6465785343436f64652e76616c7565293b0a097d20656c7365207b0a0909636f6e736f6c652e6c6f672822416374696f6e2063616e63656c65642e22293b0a097d0a7d293b0a0a0a66756e6374696f6e20636865636b496e646578496e7075747328297b0a096c6574206f6b203d20747275653b0a096c657420696572726f7273203d205b5d3b0a09626c6f62203d206e657720426c6f62285b696e6465785343436f64652e76616c75655d293b0a09696628626c6f622e73697a65203e203230303030297b0a0909696572726f72732e707573682822446f6320746f6f206c617267652e22293b0a09096f6b203d2066616c73653b0a097d0a096966280a09696e6465784e616d654864722e76616c75653d3d22227c7c0a09696e64657844657363724864722e76616c75653d3d22227c7c0a09696e6465784455524c2e76616c75653d3d22227c7c0a09696e6465785343436f64652e76616c75653d3d22227c7c0a09696e7374616c6c65645f646f63732e6c656e677468203d3d20300a09297b0a09096f6b203d2066616c73653b0a097d0a0972657475726e207b226f6b223a6f6b2c226572726f7273223a696572726f72737d3b0a7d0a0a66756e6374696f6e206e696365526f756e64286e756d626572297b0a0972657475726e204d6174682e726f756e64286e756d6265722a313030303030303030292f3130303030303030303b0a7d0a0a6173796e632066756e6374696f6e2067657448656967687428297b2020200a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6d6574686f64203d20224445524f2e476574486569676874223b0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a090972657475726e20726573706f6e73652e726573756c742e6865696768743b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909617761697420616c65727428726573706f6e73652e6572726f722e6d657373616765293b0a097d09090a7d0a0a6173796e632066756e6374696f6e2067657454785374617475732874786964297b0a096c6574204a534f4e52203d207b7d3b0a094a534f4e522e6a736f6e727063203d2022322e30223b0a094a534f4e522e6964203d20303b0a094a534f4e522e6d6574686f64203d20224445524f2e4765745472616e73616374696f6e223b0a094a534f4e522e706172616d73203d207b7d3b0a094a534f4e522e706172616d732e7478735f686173686573203d205b747869645d3b0a0a09726573706f6e7365203d20617761697420736f636b657453656e64284a534f4e52293b0a09696628726573706f6e73652e726573756c74297b0a0909696628726573706f6e73652e726573756c742e737461747573297b0a090909696628726573706f6e73652e726573756c742e737461747573203d3d20224f4b22297b0a09090909696628726573706f6e73652e726573756c742e74787320213d206e756c6c297b0a09090909096c6574207478203d20726573706f6e73652e726573756c742e7478735b305d3b0a090909090969662028282174782e696e5f706f6f6c2026262074782e76616c69645f626c6f636b3d3d2222297c7c74782e69676e6f72656429207b0a09090909090972657475726e2066616c73650a09090909097d656c73652069662874782e696e5f706f6f6c297b0a09090909090972657475726e2066616c73650a09090909097d656c73657b0a09090909090972657475726e20747275650a09090909097d0909090a090909097d090909090a0909097d0a09097d0a090972657475726e2066616c73653b0a097d656c736520696628726573706f6e73652e6572726f72297b0a0909636f6e736f6c652e6c6f6728726573706f6e73652e6572726f722e6d657373616765293b0a090972657475726e20226572726f72220a097d0a7d0a0a76617220636f6e6669726d5f6865696768743d303b0a6173796e632066756e6374696f6e20636f6e6669726d6174696f6e287478696429207b0a09636f6e6669726d5f686569676874203d2061776169742067657448656967687428293b0a0972657475726e206e65772050726f6d6973652866756e6374696f6e20287265736f6c766529207b09090a09096c657420617474656d707473203d20303b09090a0909090a0909636f6e737420617474656d7074203d206173796e632829203d3e207b090a090909617474656d7074732b2b3b0a0909096c657420746869735f686569676874203d2061776169742067657448656967687428293b0909090a090909696628746869735f686569676874203e20636f6e6669726d5f686569676874297b0a09090909696628617474656d707473203e203336297b0a0909090909636c656172496e74657276616c28726574727954696d6572293b0a09090909097265736f6c76652866616c7365290a090909097d09090a090909096c6574207374617475735f6f6b203d2061776169742067657454785374617475732874786964290a090909096966287374617475735f6f6b203d3d3d2074727565297b0a0909090909636c65617254696d656f757428726574727954696d6572293b0a09090909097265736f6c76652874727565290a090909097d656c7365206966287374617475735f6f6b3d3d3d226572726f7222297b0a0909090909617474656d7074733d617474656d7074733e303f617474656d7074732d313a300a090909097d0a0909097d0a09097d0a09096c657420726574727954696d6572203d20736574496e74657276616c28617474656d70742c2032303030290909090a097d292020200a7d0a2a2f
dURL 736372697074732e6a73
descrHdr 4a53
dislikes 0
docType 54454c412d4a532d31
docVersion 312e302e30
fileCheckC 31343334656266346637663766626361653433656361633635383037366631383562333634393036643235393038343239336330633932356338363862346132
fileCheckS 32656661393338383161653131393966373430306635643534306233383964343366323339356665333332643863393764306133383662343962373931656266
hash 39623966333233666438393733333633623864636436333234333961313264393464613266366663366133373232396437373138646436643530373734386135
iconURLHdr
likes 0
nameHdr 736372697074732e6a73
owner 6465726f317179347966376335373777717a767a7134347833306c7967686135776a7a377772687736646e76356e337071346634643761716c75717133306d37616b
subDir 6a73
SCID uint64 variables
key value
built BLID : ce5cb1089e3e5331cab8cab628a3419f51627d26ea79f5a054fc76d6e1bdf0c9
Tx RootHash: 7330f4dc11c8bb1cdb9545bab47cffc9244445603d4abbde4ade9c69d4079562 built height : 6107032
Timestamp: 1761165793227 Timestamp [UTC]: 2025-10-22 21:43:13 Age [y:d:h:m:s]: 5:55:12.259
Block: 6107033 Fee: 0.22144 Tx size: 16.019 kB
Tx version: 1 No of confirmations: 1124 Signature type: DERO_HOMOMORPHIC
Extra:
DERO : 2 inputs/outputs (RING size) Fees 0.22144 Deposited to SC 0.00000
Sender : dero1qy4yf7c577wqzvzq44x30lygha5wjz7wrhw6dnv5n3pq4f4d7aqluqq30m7ak
address
dero1qy4yf7c577wqzvzq44x30lygha5wjz7wrhw6dnv5n3pq4f4d7aqluqq30m7ak
dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270
SC Balance: 0.00000 DERO
SC CODE:
  //  Copyright 2024. Civilware. All rights reserved.
//  TELA Decentralized Web Document (TELA-DOC-1)
Function InitializePrivate() Uint64
10 IF init() == 0 THEN GOTO 30
20 RETURN 1
30 STORE("nameHdr", "scripts.js")
31 STORE("descrHdr", "JS")
32 STORE("iconURLHdr", "")
33 STORE("dURL", "scripts.js")
34 STORE("docType", "TELA-JS-1")
35 STORE("subDir", "js")
36 STORE("fileCheckC", "1434ebf4f7f7fbcae43ecac658076f185b364906d259084293c0c925c868b4a2")
37 STORE("fileCheckS", "2efa93881ae1199f7400f5d540b389d43f2395fe332d8c97d0a386b49b791ebf")
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

/*function gbid(elid){
	return document.getElementById(elid);
}
var rando_dest="dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270"//"deto1qyvyeyzrcm2fzf6kyq7egkes2ufgny5xn77y6typhfx9s7w3mvyd5qqynr5hx""deto1qy2nxgts7wdn28ckc4l2tewphjcppqjfj69ddkxjn0ay8hlsjx73jqgmat5s8"//
var rando_signer=rando_dest
var doctypeselect = gbid('doc_type');
var docNameHdr = gbid('docNameHdr');
var docDescrHdr = gbid('docDescrHdr');
var docIconURLHdr = gbid('docIconURLHdr');
var docDURL = gbid('docDURL');
var docSubDir = gbid('docSubDir');

var docinputs = [docNameHdr,docDescrHdr,docIconURLHdr,docDURL,docSubDir];
docinputs.forEach((input) => {
	input.addEventListener("keyup", docEdit);
	input.addEventListener("change", docEdit);
	input.addEventListener("blur", docEdit);
});
doctypeselect.addEventListener("change", docEdit);

function docEdit(eventorid) { 
	smartcontract.value = getDocSCCode();
	let last_errors = errors.map(a => a.error);
	let tid = '';
	if(eventorid instanceof String || typeof eventorid === 'string'){		
		tid	= eventorid;	
	}else{
		tid	= eventorid.target.id;
	}
	let ok = checkDocInputs(tid);
	
    if(ok.ok){
		addDocButton.removeAttribute("disabled");
	}else {
		addDocButton.setAttribute("disabled", true);
	}

    if(install_docs.length != 0){
		deployDocsButton.removeAttribute("disabled");
	}else {
		deployDocsButton.setAttribute("disabled", true);
	}	


	let same_error = JSON.stringify(ok.errors.map(a => a.error)) === JSON.stringify(last_errors);
	if(gbid('dwarn') && (!same_error || ok.errors.length === 0)){gbid('dwarn').remove();}
	if(ok.errors.length != 0){		
		let errorsText = "";
		for (const error of ok.errors) {
			errorsText = error.error + errorsText + "\n";
			if(error.id !=='' && !same_error){
				let warn = document.createElement("p");
				warn.innerText = error.error;
				warn.id ="dwarn";
				warn.style.color = "red";
				gbid(error.id).after(warn);
			}
			
		} 
		if(!same_error){			
			alert(errorsText);
		}
	}
}
var errors = [];
function checkDocInputs(tid){
	
	let ok = true;
	errors = [];	
	blob = new Blob([JSON.stringify(getQuoteJSON(smartcontract.value))+(fileCheckC ==""?'0'.repeat(128):"")])
	if(blob.size > 20000){
		if(tid === "docDescrHdr"){
			errors.push({"id":tid,"type":"file","error":"Description or doc too large. " + blob.size +"bytes"});
		}else{		
			errors.push({"id":tid,"type":"file","error":"Doc too large. " + blob.size +"bytes"});
		}
		ok = false;
	}
	

	if (docText.value.match(/\u002A\//)) {		
		errors.push({"id":tid,"type":"file","error":"Multi-line comments not allowed."});
		ok = false;
	}	
	
	if(
	doctypeselect.value==""||
	docNameHdr.value==""||
	docDescrHdr.value==""||
	docDURL.value==""||
	fileCheckC==""||
	fileCheckS==""||
	docText.value==""||
	filename==""
	){
		ok = false;
	}
	if(filename !=""){
		let test_filename = "";
		test_filename = filename.split('.').pop();

		if("TELA-"+test_filename.toUpperCase()+"-1" != doctypeselect.value){
			errors.push({"id":tid,"error":"File Extension doesn't match selected document type."});
			ok = false;
		}
		if(install_docs.length > 0){
			let full_loc = docSubDir.value + docNameHdr.value;
			for (let x in install_docs) {
				if(full_loc == install_docs[x].subdir + install_docs[x].filename){
					errors.push({"id":tid,"error":"Doc already added!"});
					ok = false;
				}
			}
		}	
		if(installed_docs.length > 0){
			let full_loc = docSubDir.value + docNameHdr.value;
			for (let x in installed_docs) {
				if(full_loc == installed_docs[x].subdir + installed_docs[x].filename){
					errors.push({"id":tid,"error":"Doc already installed!"});
					ok = false;
				}
			}
		}			
	}	
	return {"ok":ok,"errors":errors};
}


var fileCheckC = "";
var fileCheckS = "";

var filename="";
var install_docs = [];
var installed_docs = [];
var fileContents = document.querySelector('input#open_file[type="file"]');
fileContents.addEventListener('change', async (e) => {
	if(fileContents.files.length !== 1){
		docText.value=""
		filename=""
		docNameHdr.value=""
		fileContents.value=""
		fileCheckC=""
		fileCheckS=""
		docEdit(e)
		return
	}
    let file = fileContents.files[0]
    let reader = new FileReader()
    reader.onload = async () => {
		docText.value = reader.result
		filename = file.name
		docNameHdr.value = filename
        fileCheckC=""
		fileCheckS=""
		docEdit('open_file');
		let signature = false
		let result = errors.find(obj => obj.type === "file");
		if(typeof result === "undefined"){
			signature = await signData(docText.value)
		}
		if(!signature){
			docText.value=""
			filename=""
			docNameHdr.value=""
			fileContents.value=""
			fileCheckC=""
			fileCheckS=""
			docEdit(e)
			return
		}

		let signs = parseSignedFile(signature);
		fileCheckC = signs.C;
		fileCheckS = signs.S;
		docEdit('open_file');

    }
    reader.readAsText(file)
});


function parseSignedFile(signed){
	let c = signed.split('C: ', 2)[1];
	let s = c.split('S: ', 2)[1];
	c = c.split(/\r?\n/, 2)[0];
	s = s.split(/\r?\n/, 2)[0];
	return {"C":c,"S":s};
}


var smartcontract = gbid('smartcontract');
var docText = gbid('document');
var addDocButton = gbid('addDoc');
var deployDocsButton = gbid('deployDocs');

function getQuoteJSON(smart_contract){
	let quoteJSON = {};
	quoteJSON.jsonrpc = "2.0";
	quoteJSON.id = "1";
	quoteJSON.method = "DERO.GetGasEstimate";
	quoteJSON.params = {};
	quoteJSON.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[] 
	}];
	quoteJSON.params.sc = smart_contract;
	quoteJSON.params.sc_value = 0;
	quoteJSON.params.sc_rpc = [];
	quoteJSON.params.ringsize = 2;
	quoteJSON.params.signer = rando_signer;
	return quoteJSON;
}

addDocButton.addEventListener('click', function(event) {
	let quoteJSON = getQuoteJSON(smartcontract.value);
	let result = confirm("Estimated Cost: "+(niceRound(quoteJSON.params.sc.length * 2 * .00001))  +" DERO, Add Doc to Queue?");
	if (result) {
		addDoc();
	} else {
		alert("Action canceled.");
	}
});


deployDocsButton.addEventListener('click', async function(event) {
	let total_length = 0;
	for (let x in install_docs) {
		total_length += install_docs[x].contract.length;
	}
	let result = confirm("Estimated Total Cost for Docs: "+(niceRound(total_length * 2 * .00001))  +" DERO, Continue?");
	if (result) {
		deployDocsButton.setAttribute("disabled", true);
		await installDocs();
		alert("Documents Installed, Create an Index Next.");
		 if(install_docs.length != 0){
			deployDocsButton.removeAttribute("disabled")
		 }	
	} else {
		alert("Action canceled.");
	}

});

//Install JSON
function getInstallJSON(smart_contract){
	let installJSON = {};
	installJSON.jsonrpc = "2.0";
	installJSON.id = "1";
	installJSON.method = "transfer";
	installJSON.params = {};
	installJSON.params.fees = 0;
	installJSON.params.transfers = [{
		destination: rando_dest,
		amount:0,
		Burn:0,
		payload_rpc:[] 
	}];
	installJSON.params.sc = smart_contract;
	installJSON.params.sc_value = 0;
	installJSON.params.sc_rpc = [];
	installJSON.params.ringsize = 2;
	return installJSON;
}

async function signData(data){	
	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.id = "0";
	JSONR.method = "SignData";
	JSONR.params = btoa(data);
	response = await socketSend(JSONR);
	if(response.result){
		return atob(response.result.signature);
	}else if(response.error){
		alert(response.error.message);		
	}
	return false;
}
function installList(){
	let text=""
	for (let x in install_docs) {
		text += (install_docs[x].subdir !=""? install_docs[x].subdir + "/" :"") + install_docs[x].filename +"<br>"
	}
	return text
}
//Add Doc function
async function addDoc(){

	install_docs.push({"subdir":docSubDir.value.replace(/^\/|\/|\/$/g, ''),"filename":filename,"docnamehdr":docNameHdr.value,"contract":smartcontract.value})
	docNameHdr.value=""
	filename=""
	fileContents.value=""
	fileCheckC=""
	fileCheckS=""
	gbid("install_output").innerHTML = installList();
	docEdit('')	
}
//Install Docs function
async function installDocs(){
	
	if(install_docs.length > 0){
		let progress = await installDoc(install_docs[0])
		if(progress !== "success"){
			gbid("installed_output").innerHTML = "Error occurred:"+ progress + "<br>" + gbid("installed_output").innerHTML;
		}
		return await installDocs();		
	}
	return true
}
//Install Doc function
async function installDoc(doc){
	let response = await socketSend(getInstallJSON(doc.contract));
	if(response.result){
		let installed = await confirmation(response.result.txid)
		if (!installed) {
			return "Problem Installing Doc, try again. TXID:"+response.result.txid
		}
		installed_docs.push({"subdir":doc.subdir,"filename":doc.filename,"scid":response.result.txid});
		install_docs.shift();
		gbid("install_output").innerHTML = installList();

		let outputText ="";
		for (let x in installed_docs) {
			outputText += (installed_docs[x].subdir !=""? installed_docs[x].subdir + "/" :"") + installed_docs[x].filename  + ":" + installed_docs[x].scid +"<br>";
		}
		let totdocs = install_docs.length + installed_docs.length;		
		let msg = "Installed Doc #"+installed_docs.length + " of "+ totdocs + "<br>"
		if(installed_docs.length == totdocs){
 			msg = totdocs + " docs installed.<br>"
		}
		gbid("installed_output").innerHTML = msg + outputText;
		return "success"
	}else if(response.error){
		return response.error.message
	}		
}

//Install Index function
async function installIndex(){
	let response = await socketSend(getInstallJSON(indexSCCode.value));
	if(response.result){
		let installed = await confirmation(response.result.txid)
		if (!installed) {
			alert("Problem Installing Index, try again. TXID:"+response.result.txid);
			return false;
		}
		gbid("indexscid").innerHTML = "Tela Site Index SCID:" + response.result.txid;
		alert("Congrats, you're all done! This is your Tela Site SCID:" + response.result.txid);
	}else if(response.error){
		alert(response.error.message);
	}		
	
}


var indexNameHdr = gbid('indexNameHdr');
var indexDescrHdr = gbid('indexDescrHdr');
var indexIconURLHdr = gbid('indexIconURLHdr');
var indexDURL = gbid('indexDURL');
var indexSCCode = gbid('indexSCCode');

var deployIndexButton = gbid('deployIndex');
var generateIndexButton = gbid('generateIndex');


var indexinputs = [indexNameHdr,indexDescrHdr,indexIconURLHdr,indexDURL];
indexinputs.forEach((input) => {
	input.addEventListener("keyup", indexEdit);
	input.addEventListener("change", indexEdit);
	input.addEventListener("blur", indexEdit);
});

function indexEdit(event) {

	let docs ="";
	let line_no = 40;
	for (let x in installed_docs) {
		docs += (line_no++) + ` STORE("DOC`+(parseFloat(x) + 1) + `", "` +installed_docs[x].scid + `")`+"\n";
	}
	indexSCCode.value = getIndexSC(docs);

	let ok = checkIndexInputs();
    if(ok.ok){
		deployIndexButton.removeAttribute("disabled");
	}else{
		deployIndexButton.setAttribute("disabled", true);
	}
	if(ok.errors.length != 0){
		let errorsText = "";
		for (const error of ok.errors) {
			errorsText = error + errorsText + "\n";
		}
		alert(errorsText);
	}
}


deployIndexButton.addEventListener('click', function(event) {
	let quoteJSON = getQuoteJSON(indexSCCode.value);
	let result = confirm("Estimated Cost: "+(niceRound(quoteJSON.params.sc.length * 2 * .00001))  +" DERO, Install Tela-Index?");
	if (result) {
		installIndex(indexSCCode.value);
	} else {
		console.log("Action canceled.");
	}
});


function checkIndexInputs(){
	let ok = true;
	let ierrors = [];
	blob = new Blob([indexSCCode.value]);
	if(blob.size > 20000){
		ierrors.push("Doc too large.");
		ok = false;
	}
	if(
	indexNameHdr.value==""||
	indexDescrHdr.value==""||
	indexDURL.value==""||
	indexSCCode.value==""||
	installed_docs.length == 0
	){
		ok = false;
	}
	return {"ok":ok,"errors":ierrors};
}

function niceRound(number){
	return Math.round(number*100000000)/100000000;
}

async function getHeight(){   
	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.method = "DERO.GetHeight";
	response = await socketSend(JSONR);
	if(response.result){
		return response.result.height;
	}else if(response.error){
		await alert(response.error.message);
	}		
}

async function getTxStatus(txid){
	let JSONR = {};
	JSONR.jsonrpc = "2.0";
	JSONR.id = 0;
	JSONR.method = "DERO.GetTransaction";
	JSONR.params = {};
	JSONR.params.txs_hashes = [txid];

	response = await socketSend(JSONR);
	if(response.result){
		if(response.result.status){
			if(response.result.status == "OK"){
				if(response.result.txs != null){
					let tx = response.result.txs[0];
					if ((!tx.in_pool && tx.valid_block=="")||tx.ignored) {
						return false
					}else if(tx.in_pool){
						return false
					}else{
						return true
					}			
				}				
			}
		}
		return false;
	}else if(response.error){
		console.log(response.error.message);
		return "error"
	}
}

var confirm_height=0;
async function confirmation(txid) {
	confirm_height = await getHeight();
	return new Promise(function (resolve) {		
		let attempts = 0;		
			
		const attempt = async() => {	
			attempts++;
			let this_height = await getHeight();			
			if(this_height > confirm_height){
				if(attempts > 36){
					clearInterval(retryTimer);
					resolve(false)
				}		
				let status_ok = await getTxStatus(txid)
				if(status_ok === true){
					clearTimeout(retryTimer);
					resolve(true)
				}else if(status_ok==="error"){
					attempts=attempts>0?attempts-1:0
				}
			}
		}
		let retryTimer = setInterval(attempt, 2000)			
	})   
}
*/
SC Arguments: [Name:SC_ACTION Type:uint64 Value:'1' Name:SC_CODE Type:string Value:'// Copyright 2024. Civilware. All rights reserved. // TELA Decentralized Web Document (TELA-DOC-1) Function InitializePrivate() Uint64 10 IF init() == 0 THEN GOTO 30 20 RETURN 1 30 STORE("nameHdr", "scripts.js") 31 STORE("descrHdr", "JS") 32 STORE("iconURLHdr", "") 33 STORE("dURL", "scripts.js") 34 STORE("docType", "TELA-JS-1") 35 STORE("subDir", "js") 36 STORE("fileCheckC", "1434ebf4f7f7fbcae43ecac658076f185b364906d259084293c0c925c868b4a2") 37 STORE("fileCheckS", "2efa93881ae1199f7400f5d540b389d43f2395fe332d8c97d0a386b49b791ebf") 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 /*function gbid(elid){ return document.getElementById(elid); } var rando_dest="dero1qykyta6ntpd27nl0yq4xtzaf4ls6p5e9pqu0k2x4x3pqq5xavjsdxqgny8270"//"deto1qyvyeyzrcm2fzf6kyq7egkes2ufgny5xn77y6typhfx9s7w3mvyd5qqynr5hx""deto1qy2nxgts7wdn28ckc4l2tewphjcppqjfj69ddkxjn0ay8hlsjx73jqgmat5s8"// var rando_signer=rando_dest var doctypeselect = gbid('doc_type'); var docNameHdr = gbid('docNameHdr'); var docDescrHdr = gbid('docDescrHdr'); var docIconURLHdr = gbid('docIconURLHdr'); var docDURL = gbid('docDURL'); var docSubDir = gbid('docSubDir'); var docinputs = [docNameHdr,docDescrHdr,docIconURLHdr,docDURL,docSubDir]; docinputs.forEach((input) => { input.addEventListener("keyup", docEdit); input.addEventListener("change", docEdit); input.addEventListener("blur", docEdit); }); doctypeselect.addEventListener("change", docEdit); function docEdit(eventorid) { smartcontract.value = getDocSCCode(); let last_errors = errors.map(a => a.error); let tid = ''; if(eventorid instanceof String || typeof eventorid === 'string'){ tid = eventorid; }else{ tid = eventorid.target.id; } let ok = checkDocInputs(tid); if(ok.ok){ addDocButton.removeAttribute("disabled"); }else { addDocButton.setAttribute("disabled", true); } if(install_docs.length != 0){ deployDocsButton.removeAttribute("disabled"); }else { deployDocsButton.setAttribute("disabled", true); } let same_error = JSON.stringify(ok.errors.map(a => a.error)) === JSON.stringify(last_errors); if(gbid('dwarn') && (!same_error || ok.errors.length === 0)){gbid('dwarn').remove();} if(ok.errors.length != 0){ let errorsText = ""; for (const error of ok.errors) { errorsText = error.error + errorsText + "\n"; if(error.id !=='' && !same_error){ let warn = document.createElement("p"); warn.innerText = error.error; warn.id ="dwarn"; warn.style.color = "red"; gbid(error.id).after(warn); } } if(!same_error){ alert(errorsText); } } } var errors = []; function checkDocInputs(tid){ let ok = true; errors = []; blob = new Blob([JSON.stringify(getQuoteJSON(smartcontract.value))+(fileCheckC ==""?'0'.repeat(128):"")]) if(blob.size > 20000){ if(tid === "docDescrHdr"){ errors.push({"id":tid,"type":"file","error":"Description or doc too large. " + blob.size +"bytes"}); }else{ errors.push({"id":tid,"type":"file","error":"Doc too large. " + blob.size +"bytes"}); } ok = false; } if (docText.value.match(/\u002A\//)) { errors.push({"id":tid,"type":"file","error":"Multi-line comments not allowed."}); ok = false; } if( doctypeselect.value==""|| docNameHdr.value==""|| docDescrHdr.value==""|| docDURL.value==""|| fileCheckC==""|| fileCheckS==""|| docText.value==""|| filename=="" ){ ok = false; } if(filename !=""){ let test_filename = ""; test_filename = filename.split('.').pop(); if("TELA-"+test_filename.toUpperCase()+"-1" != doctypeselect.value){ errors.push({"id":tid,"error":"File Extension doesn't match selected document type."}); ok = false; } if(install_docs.length > 0){ let full_loc = docSubDir.value + docNameHdr.value; for (let x in install_docs) { if(full_loc == install_docs[x].subdir + install_docs[x].filename){ errors.push({"id":tid,"error":"Doc already added!"}); ok = false; } } } if(installed_docs.length > 0){ let full_loc = docSubDir.value + docNameHdr.value; for (let x in installed_docs) { if(full_loc == installed_docs[x].subdir + installed_docs[x].filename){ errors.push({"id":tid,"error":"Doc already installed!"}); ok = false; } } } } return {"ok":ok,"errors":errors}; } var fileCheckC = ""; var fileCheckS = ""; var filename=""; var install_docs = []; var installed_docs = []; var fileContents = document.querySelector('input#open_file[type="file"]'); fileContents.addEventListener('change', async (e) => { if(fileContents.files.length !== 1){ docText.value="" filename="" docNameHdr.value="" fileContents.value="" fileCheckC="" fileCheckS="" docEdit(e) return } let file = fileContents.files[0] let reader = new FileReader() reader.onload = async () => { docText.value = reader.result filename = file.name docNameHdr.value = filename fileCheckC="" fileCheckS="" docEdit('open_file'); let signature = false let result = errors.find(obj => obj.type === "file"); if(typeof result === "undefined"){ signature = await signData(docText.value) } if(!signature){ docText.value="" filename="" docNameHdr.value="" fileContents.value="" fileCheckC="" fileCheckS="" docEdit(e) return } let signs = parseSignedFile(signature); fileCheckC = signs.C; fileCheckS = signs.S; docEdit('open_file'); } reader.readAsText(file) }); function parseSignedFile(signed){ let c = signed.split('C: ', 2)[1]; let s = c.split('S: ', 2)[1]; c = c.split(/\r?\n/, 2)[0]; s = s.split(/\r?\n/, 2)[0]; return {"C":c,"S":s}; } var smartcontract = gbid('smartcontract'); var docText = gbid('document'); var addDocButton = gbid('addDoc'); var deployDocsButton = gbid('deployDocs'); function getQuoteJSON(smart_contract){ let quoteJSON = {}; quoteJSON.jsonrpc = "2.0"; quoteJSON.id = "1"; quoteJSON.method = "DERO.GetGasEstimate"; quoteJSON.params = {}; quoteJSON.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; quoteJSON.params.sc = smart_contract; quoteJSON.params.sc_value = 0; quoteJSON.params.sc_rpc = []; quoteJSON.params.ringsize = 2; quoteJSON.params.signer = rando_signer; return quoteJSON; } addDocButton.addEventListener('click', function(event) { let quoteJSON = getQuoteJSON(smartcontract.value); let result = confirm("Estimated Cost: "+(niceRound(quoteJSON.params.sc.length * 2 * .00001)) +" DERO, Add Doc to Queue?"); if (result) { addDoc(); } else { alert("Action canceled."); } }); deployDocsButton.addEventListener('click', async function(event) { let total_length = 0; for (let x in install_docs) { total_length += install_docs[x].contract.length; } let result = confirm("Estimated Total Cost for Docs: "+(niceRound(total_length * 2 * .00001)) +" DERO, Continue?"); if (result) { deployDocsButton.setAttribute("disabled", true); await installDocs(); alert("Documents Installed, Create an Index Next."); if(install_docs.length != 0){ deployDocsButton.removeAttribute("disabled") } } else { alert("Action canceled."); } }); //Install JSON function getInstallJSON(smart_contract){ let installJSON = {}; installJSON.jsonrpc = "2.0"; installJSON.id = "1"; installJSON.method = "transfer"; installJSON.params = {}; installJSON.params.fees = 0; installJSON.params.transfers = [{ destination: rando_dest, amount:0, Burn:0, payload_rpc:[] }]; installJSON.params.sc = smart_contract; installJSON.params.sc_value = 0; installJSON.params.sc_rpc = []; installJSON.params.ringsize = 2; return installJSON; } async function signData(data){ let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.id = "0"; JSONR.method = "SignData"; JSONR.params = btoa(data); response = await socketSend(JSONR); if(response.result){ return atob(response.result.signature); }else if(response.error){ alert(response.error.message); } return false; } function installList(){ let text="" for (let x in install_docs) { text += (install_docs[x].subdir !=""? install_docs[x].subdir + "/" :"") + install_docs[x].filename +"<br>" } return text } //Add Doc function async function addDoc(){ install_docs.push({"subdir":docSubDir.value.replace(/^\/|\/|\/$/g, ''),"filename":filename,"docnamehdr":docNameHdr.value,"contract":smartcontract.value}) docNameHdr.value="" filename="" fileContents.value="" fileCheckC="" fileCheckS="" gbid("install_output").innerHTML = installList(); docEdit('') } //Install Docs function async function installDocs(){ if(install_docs.length > 0){ let progress = await installDoc(install_docs[0]) if(progress !== "success"){ gbid("installed_output").innerHTML = "Error occurred:"+ progress + "<br>" + gbid("installed_output").innerHTML; } return await installDocs(); } return true } //Install Doc function async function installDoc(doc){ let response = await socketSend(getInstallJSON(doc.contract)); if(response.result){ let installed = await confirmation(response.result.txid) if (!installed) { return "Problem Installing Doc, try again. TXID:"+response.result.txid } installed_docs.push({"subdir":doc.subdir,"filename":doc.filename,"scid":response.result.txid}); install_docs.shift(); gbid("install_output").innerHTML = installList(); let outputText =""; for (let x in installed_docs) { outputText += (installed_docs[x].subdir !=""? installed_docs[x].subdir + "/" :"") + installed_docs[x].filename + ":" + installed_docs[x].scid +"<br>"; } let totdocs = install_docs.length + installed_docs.length; let msg = "Installed Doc #"+installed_docs.length + " of "+ totdocs + "<br>" if(installed_docs.length == totdocs){ msg = totdocs + " docs installed.<br>" } gbid("installed_output").innerHTML = msg + outputText; return "success" }else if(response.error){ return response.error.message } } //Install Index function async function installIndex(){ let response = await socketSend(getInstallJSON(indexSCCode.value)); if(response.result){ let installed = await confirmation(response.result.txid) if (!installed) { alert("Problem Installing Index, try again. TXID:"+response.result.txid); return false; } gbid("indexscid").innerHTML = "Tela Site Index SCID:" + response.result.txid; alert("Congrats, you're all done! This is your Tela Site SCID:" + response.result.txid); }else if(response.error){ alert(response.error.message); } } var indexNameHdr = gbid('indexNameHdr'); var indexDescrHdr = gbid('indexDescrHdr'); var indexIconURLHdr = gbid('indexIconURLHdr'); var indexDURL = gbid('indexDURL'); var indexSCCode = gbid('indexSCCode'); var deployIndexButton = gbid('deployIndex'); var generateIndexButton = gbid('generateIndex'); var indexinputs = [indexNameHdr,indexDescrHdr,indexIconURLHdr,indexDURL]; indexinputs.forEach((input) => { input.addEventListener("keyup", indexEdit); input.addEventListener("change", indexEdit); input.addEventListener("blur", indexEdit); }); function indexEdit(event) { let docs =""; let line_no = 40; for (let x in installed_docs) { docs += (line_no++) + ` STORE("DOC`+(parseFloat(x) + 1) + `", "` +installed_docs[x].scid + `")`+"\n"; } indexSCCode.value = getIndexSC(docs); let ok = checkIndexInputs(); if(ok.ok){ deployIndexButton.removeAttribute("disabled"); }else{ deployIndexButton.setAttribute("disabled", true); } if(ok.errors.length != 0){ let errorsText = ""; for (const error of ok.errors) { errorsText = error + errorsText + "\n"; } alert(errorsText); } } deployIndexButton.addEventListener('click', function(event) { let quoteJSON = getQuoteJSON(indexSCCode.value); let result = confirm("Estimated Cost: "+(niceRound(quoteJSON.params.sc.length * 2 * .00001)) +" DERO, Install Tela-Index?"); if (result) { installIndex(indexSCCode.value); } else { console.log("Action canceled."); } }); function checkIndexInputs(){ let ok = true; let ierrors = []; blob = new Blob([indexSCCode.value]); if(blob.size > 20000){ ierrors.push("Doc too large."); ok = false; } if( indexNameHdr.value==""|| indexDescrHdr.value==""|| indexDURL.value==""|| indexSCCode.value==""|| installed_docs.length == 0 ){ ok = false; } return {"ok":ok,"errors":ierrors}; } function niceRound(number){ return Math.round(number*100000000)/100000000; } async function getHeight(){ let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.method = "DERO.GetHeight"; response = await socketSend(JSONR); if(response.result){ return response.result.height; }else if(response.error){ await alert(response.error.message); } } async function getTxStatus(txid){ let JSONR = {}; JSONR.jsonrpc = "2.0"; JSONR.id = 0; JSONR.method = "DERO.GetTransaction"; JSONR.params = {}; JSONR.params.txs_hashes = [txid]; response = await socketSend(JSONR); if(response.result){ if(response.result.status){ if(response.result.status == "OK"){ if(response.result.txs != null){ let tx = response.result.txs[0]; if ((!tx.in_pool && tx.valid_block=="")||tx.ignored) { return false }else if(tx.in_pool){ return false }else{ return true } } } } return false; }else if(response.error){ console.log(response.error.message); return "error" } } var confirm_height=0; async function confirmation(txid) { confirm_height = await getHeight(); return new Promise(function (resolve) { let attempts = 0; const attempt = async() => { attempts++; let this_height = await getHeight(); if(this_height > confirm_height){ if(attempts > 36){ clearInterval(retryTimer); resolve(false) } let status_ok = await getTxStatus(txid) if(status_ok === true){ clearTimeout(retryTimer); resolve(true) }else if(status_ok==="error"){ attempts=attempts>0?attempts-1:0 } } } let retryTimer = setInterval(attempt, 2000) }) } */']


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