File: blk05788.txt

HjF=:ETH.USDT:0x3ab690436092991D3c998B5135CcD957B14Ac1de:384529503338/1/0
DjB0x5efb7e72088fe714b3b0a11bb4166dd1e1e6c5345a276db26b107ab4c22414eb
FjDOUT:000007AA960A6D606426B5BDFC6B818590C0D800526FCF0235C340EB03D9BC7F
DjB0x51382a87b1b86d24ec1f1379c1f826619454ff5f43d8927cb2ba75145d2bd9e0
DjB0x7ce8651f55f0174e7d05e599a517441b9d0187b51163a9297e2f776cbaa61533
DjB0x7be4a9cf72fd298425d578e30139eee84865e1961659cf8532dc9bf99d40399c
DjB0x8fc9feb0b18aa598caaa76d190f5dd773ed61347e8c1bec66ea24da8c32c5b71
DjB0xf9fa7241bee7cfde4d0897a05418b7c396b621201bf275c477d62921a21e7b7c
DjB0xc1a7817f0828001f6a8312dddc2477680434d9aefd5fe15f13cb07716ded2e33
DjB0x9935ba294d06709d7b60390ba365c4565f21200d3b930d59b210c5abedc8eacf
DjB0xdb79cbc9d271afe8846aff24f09c07f50045722d3143494d550d1540f02f9166
DjB0xa39c57050baac9c60dea5ae79f85248e19b421d56b2e8b3ebd13c9ffd933e708
DjB0x0e71bcfcb5dbbb59d2aad2d8d73918a8b32315879da44333dccae6653d7d1fab
DjB0x5a17b8482f5d59853843caea7fdf7795e06892cdfe6112784063cbf7a45e2c1f
DjB0x5bfa1555cce3d284043cb8a544651619e9a56908fa2e9b77a8400aec46ebb12d
DjB0x9d366c73cfa0ebffc9fcafcd43baddafadcb3a5e21c43b6b5053a328bd7ddc05
DjB0x6ee88c3ddf88feb1af084311c49496084df4c2915639b57946e21ca83c9d0bb6
DjB0xc2253af070dd1c648e33bf754b4ad82201fba5227cf9ff3a7eac72c6c7f8d716
DjB0x31d0d2477696dfc1f19a883697c2f53444992c60345c325b19c1846868719cd7
FjDOUT:D83669D9D9CC8A1221E388C76360C64F6BA3938966AB3133F417CF1A00BB6531
FjDOUT:7C4B94D97E1725881F4F38A08B9F8F6CD7FFD1E9984725903B3541FE0AF614ED
FjDOUT:B8328CF1FAE2FBFB29BB9046466BDEE71329017A68CEA4BB18E30975EE0D1E19
FjDOUT:4131B19C7873F11DE095A24760F1BFE388A57C06B6897F6EF2FA8AB44A13FB72
FjDOUT:F9EFAB62E9372C2DEA0EB16FF3425B42EFCC6C48031156694DC488B93CAD9B10
FjDOUT:000002AEB1258C7B17C1FE412BF3B272B5E35C5F519751C1D43AE88227328BD1
FjDOUT:00000E642CB26508D61811D38FC870E1C672A5B0E3BC76E4218FC12F59715226
FjDOUT:C531BBD5052DBD0BE597DBEC46FCC0B837D368D9613D2902AAF00D4B27805034
FjDOUT:721735B2D4B1B7AC2F53A09D41F5A0069A0B29A1DD44ACA02148BBBF91A43229
FjDOUT:6EBB711ECDF6B3B2C9A6C5348188768BF7D0046696625BC52B70992CCEBF0EDE
FjDOUT:000004B2D2DDD9DD97CF627DC62959543188B8EAB8AEAF3ACD4C75273D7B8A55
FjDOUT:0000D0EA82F7DDC09812FAA28D8F54A90559242BA84AAE3F00168477FB918AF4
FjDOUT:38046FD625EAFE1E4B20C5E7914CEE7C1FD5B2975662ECE558F5AA1E90BC8DFF
FjDOUT:EEC2EE26B9A55C0A2FD89CA2228E163EF2332118F48D034209C2E61036A62C74
DjB0x994d9d4159d4bd9e8766aabe1c0e40015123c24f0cd4a939dbdfc26df97bb280
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ordi","amt":"200"}h!
DjB0xef6cb4b4f4f7e587da803f798757ace84e5de8d2a5da09e1d39f1b5f49982829
DjB0x6d8c34b39a72c1b7c00adeee62cd388a18e539b2c3869d7d4c9ab180af5a9706
DjB0xf904871c24508575903fdf3559a5e53b3412b1b3460aaab1758f4e51869ae982
OjLL0x6ad989d2c61857f83eb4f103ae995169dad07add1f1b1dd1cf473f0a45c14668=|lifi
DjB0x93870a59c1ffa467637f098fb88681d00104fcf35943b934adab67e1166399a3
DjB0x663251b8ff1d60c62a4f4de711b1eb46bf9e7d06f4d972d2d4148ac787a4fdb5
DjB0x76a46f035c94e079a1f8a1242409654bc10a4b257e62b1481d145891019db10f
DjB0xa898c5d426e7392b4d09ec7ebadd131a201d2f27c1224c384ce23682439d92b9
DjB0x517112bda72ff8a9e3186bc32f2c75f65a7ef4581c92f1f299e9d29179ede17c
DjB0xf80d0225d893ce21f3165ebee1bde7097026d253c4a731cf8daa8c8331e69eab
DjB0x2010b23a6bacf2704a001a9d32984f1f705201125a0c4a1d94f80da63d009336
DjB0xb04342635f4df1f1a6324abe177596cac36603efab7219d720f61ad24dcf593c
FjDOUT:1A123C6E61FEF127927BE603CAAA8EA6A1A78A53E39A6D7D1E5068B5960463F1
FjDOUT:7E32651FF7819DE5F3EFB114283DAF92846F4B81D3A1057B1A90E8DE26EF45A1
FjDOUT:5B68445D924279D4467218F8A7D7779E652801BA5A986169BFBAB6178838864B
DjB0x84a3e4db374b641ef2edd9fc705b0de77f86a2a9d942bfc762f7285da1d6ae85
DjB0xedffcfc4ec841f4670006ab0584acac8f54981b333506ffafab9dcaf7ed35a80
DjB0x09e89b99860152814cf96dea76183c4ec213d82287fb727172ce037188151033
DjB0x0f5fd070373ad074d91d55ba520cf711ca47492fcdb8ce51fc0395b012c82b25
DjB0x2707d0d76946aad4bcaac1b1159a43e20a2d3e0b9c42ff726084275d15ed6091
DjB0xa22b7a97e4a112278a9917aa8249e75489b5d873084c6c78516d1fb7fa1e1b4d
FjDOUT:4E2DE288BB4FEAD6C57710412B78F3CE132AEF954E41D20752DD7C84FF697145
0j.{"p":"crc-20","op":"mint","tick":"SEAL","n":1}J
2j0to:USDT(TRON):TYCaXZpngZSWsupy2qJTgQ54eQqF5dYXjeZ
:j8to:USDC(BASE):0x036324daAfdFB96ba62366cC4c71cda188742534
?j=to:GRAM(TON):UQBotqw51NXSemH_Oa4pkuWomq1SxNFgBepyqeyxEymuJpfa|m
DjB0xf0d98b9d048bfc6ecc107889d8eb8d1b068cd035bea15b4f4428771ce8f161a5
DjB0x54247d5602caefacf936b4b226ae094f378b1ef95c61d346eff7b2c5f9d724b2y
text/plain;charset=utf-8
{"p":"tap","op":"token-auth","sig":{"v":"0","r":"58006931998616529514760695800099303523821904578493060666984341772487180723853","s":"54148128011477033974225377773270858769543635909029597961309281540816799648220"},"hash":"d63bb4ae9f0ea214ad34d2db8662d0d885d5b4da0af4d2014475edb3391483e7","salt":"09224715620581310240230168830300","redeem":{"items":[{"tick":"dmt-nat","amt":"10000000","address":"bc1paz2lqprt023d3pvhfq76r7gqsfth0eyul8mkrtz4y3kr5naysy5s4as2yw"}],"auth":"006e342abff9d455ba63ea20ac6ff2d01323cb67dff18a52fbcf
fb473c8257eei0","data":""}}h!
6j4IHx:to:USDT(TRON):TTAKadLA7garkhVJFC8rcNWwW2Wx2zwRQ5
9j7MgF:to:SOL:8KkyQ2PS1rTxscq7omKjePhCPjTMnwX5fYBXQgD3KRTtb
6j4YUn:to:USDT(TRON):TACWoJzqd4esYMqL5Fjcqq5NYhT7TxYHtiQ
6j4Tju:to:USDT(TRON):TBTaqu2YXfbWYs34qtkVVQEdiTqHWizDn4M
6j44ll:to:USDT(TRON):TWoXbZXh2L8x7ncTqxmzLFkgre3zfvdHPMr
/j-xeN:to:TRX:TK9S53ejoyqzVgCKrNdGY6a7UNLqJzcKix
/j-2MO:to:TRX:TMA6zKag5suQpF725qZSjF84SQ6GEagvJ6p
/j-nNl:to:XRP:rp9kHu9RpSdRcTrLtexueH5fuy6QvorsNH
/j-mda:to:TRX:TEFKuBBK4zW6Sq46pfeeE5LM5x9xhRT4Ga
/j-NNM:to:TRX:TFrHBjQYx2uMDpQcSoNRVuQPaaQiA5kfM7
6j4UT9:to:USDT(TRON):TSETYDpBzxUtsmoB6h6RkVRJQoQuZ2XkFu
6j4aSN:to:USDT(TRON):TCSt63xMrZmjfUBXvhq5W3zvCyWqe4NA3o
=j;Fil:to:USDT(BSC):0xf2DEa5104838466236E7b986189E1a8798e7d2f6
6j4xKZ:to:USDT(TRON):TBnH56i9MjXNsYzk7NcUyCJbVnHQGepTtN
6j4hTU:to:USDT(TRON):TMgdwM1BeoJ69Sh4VUYcar6bB4GrYQJU4c
6j49ha:to:USDT(TRON):TY9JdeibNuN6H4F1aLFPxGc64L3rgH86sV
6j4wZb:to:USDT(TRON):TMTzVyppEAUfsARfCWRognfpxYfdTAMTbZD
6j4rJ8:to:USDT(TRON):TQsyy5xXcyHPzMAuwMwbdTXx5cntnz5K8MM
6j4nfK:to:USDT(TRON):TP7vENRGAmhBQBS44K93Quk6cPtJwT4Jrh
6j4hKr:to:USDT(TRON):TRAjQJCcALG5yxoshYDtQRHed1jRXs198T
6j4r5Y:to:USDT(TRON):TViApQnC299XYfo9VqkGM62difvn4HVb8J
6j4JGV:to:USDT(TRON):TAAbqT5bhMCHvSAvNryvHu67xVpsZ9AFGo
6j4BfI:to:USDT(TRON):TGnY5EYQ1qDdEZPFUGNvpPrxygM9Sm87cv
6j4uZb:to:USDT(TRON):TYPGxkjp73JGYPQ6b9af9TBGEKghup4QAk
9j7Axn:to:SOL:EGtM6xfH1AACW77iusHDGYhzFBJkHCWnHam7ujcYySKu
2j0to:USDT(TRON):TWVqbjb1Rrfzekp2ZpaesS4NK99v3crntK
=j;9u9:to:USDT(BSC):0x7737907a3b1485fdb7e0EdC7659b76b27625E5BE[
?j=YZi:to:USDT(ERC20):0xdbA54cb3993eA25D020EB263828F90669AD6f15E
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
4j2to:USDC:0xBf15375B00c063aEF488c1b93847479E2dBcF759|'
text/plain;charset=utf-8
LV{"p":"brc20-module","op":"withdraw","tick":"crypto","amt":"5199","module":"BRC20PROG"}h!
/Foundry USA Pool #dropgold/|2
6j4Uac:to:USDT(TRON):TG2smyh4pryP1anjicZWj8WU2Ctd9TwtXC
6j4xW5:to:USDT(TRON):TXREYo8aJqcsdjeDEQxa4MFB6V5AhVazDM
DjB0x883307b4371f701e0a068768ec4492417a48ec412250370e72793d3d374deeac
DjB0xc40d59accaf00779a316621a70e3d60e5e88937199717eec536f3ed3bc9888c8
DjB0xf80371a7d82544685ad948b899a678d8167e903a90147c5e148ccff50ee48dbc
?j=from:20.6USDT(BSC):0x60Be399B0B7D090A20086977c8198be38Af47f7CY"
;j9from:0.242LTC:ltc1qqupt6fstjc3h79qy4sgtr7xulsuhglatgxkawd1
DjBfrom:19.545912USDT(BSC):0xc6A6E2d68F5E168563F3F13b8Db5a9Bb02f68baC
>j<from:500USDT(BSC):0x2e1E1FeE9bdf6f1994E87164f81d1237B08c169Bu
?j=from:20.9USDT(BSC):0xFed1A5d075672e5713c3DC421256A0dCe6b2f3B1
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"ordi","amt":"21.4581671"}h!
DjB0xcec98c42238e0a4b056a125379d687b343d412a556bb0e8caa5b5f7fca44298d
DjB0x852feb6264e5810246e0c90a55d21ae62f20c9388677a250281252cb8e22d221
DjB0x35d73d02af76311072dd0c00b4709089aa9dd8827fcc44c9412c847fef4573bb
DjB0x9890e80a060cdbcc558ab0fa8e8ec943de6923e5cc00af52e0e9c7e6e682b6c5
DjB0x36127c634a7aebbba4557632d177cc8f7e9d062cb7e89f42c5978ad575e4316e
DjB0xf79957aedf27cf5b2c2dd3adc255653fcd636bd5089b547a4c9f07c6e5d2a234
DjB0x6d128d22a1e27ede8ae98a20a02ffc384eedd0f2bf907114ee82fa5b4288367e
DjB0xd08fb241229ab979137772c8a02e3d0167211b11e5528c8000c21f702a89e85a
DjB0x94bc36c582f4d7a131924e3e2518276d862154ef026efc04108cd1a7d8d5a934
DjB0x240a8c5442ab1e818925c1f88c620ae0c153bca1dde85cd8cb3db830def88d41
DjB0x70f5b4cb3ab72e5eea2c6fc4f80950d87c077d472bd027c4f66f4d0f0fb32360
DjB0x3a9acec31e3dcdd2f28dd813858f2ac093881bbafef445efb2584224de9b46f9
DjB0xde5a4cc837f6f0c0e498b58a1ff54dff7463caef4b21396267d1166f8562ded3
DjB0xa57e83da9cad13cbcc46c45a8da256895ffdf28fc0337d361b73e24a252ca757
DjB0x26dc760b890c24689502d754d918eb70cfb5284268d25167d503386288540b48
DjB0x7a5e8d1e03ee001edb7348dcd44dbc044789ddc46f10bd71b2778ae41eb02a92
DjB0xbe7a0513f83a8adaf37b8d0ef0819e34fc62c5ef8b2346afe4f6edb995506370
DjB0x7d87e34626a8221bec927e20d974662bc7d43af34fc4c96a6c81ce80badac7d3
DjB0x2fd11cd7cfe0e00c7668fce5f93090fdbc8e955f18f746cc773990c74c45aa61
DjB0x410e9cdc70939f01ce17dadc940e8a8c4166d43a3916bd38f3d9a26fa6419e61
:j8=:e:0xfe738BFa396210241dE30e135A3a4CB0201Db6C1:124070110
DjB0xc01583f02d1e683ce334fea9f7a5f7a1fca9e432b59bbc5d2b2317370d676b71
DjB0x28f622762c7f842caeef3fd6293c8547025d988fb0f9d397ac2c62657c17de9c
DjB0x9b785cdd57cdbdb299a72f417fe58ee1b32718673e2e6b1f720a935abf086766
DjB0xc1806a621cbdc9c1453e0fd7932b576de34b975b8e3ba61a5f6253cdead66b6f
DjB0x2acd5a5d44ebc100ea391e141294d600488a3b8abdef566a348be1a707579871
DjB0x5f43482631c449d056ba4616830ee354ff407c87f3340217ee48cf2d3e6cd4c9
DjB0xea372a52bdccb8bcdf03e21c5d25e5cf5278f8eca6da575a450a256a93172267
DjB0x03644156eb7012f7e3abca1d4dbb52d460b3ca063f7e9de6e6cf5adaed0ae822
DjB0xeae5ebc9c33436e2afaf7d8fa4db037a91e272df5eb65eef49d98d37a6e52e12
6j4f3d:to:USDT(TRON):TKQ2cDr74VzWrENTELQnRGKfXwM3AwaMdLUD
=j;QpL:to:USDT(BSC):0x6770D25C68010875376b98549d5e9f621c04d2B5
6j4xO5:to:USDT(TRON):TWrtJXzoHtwEUXv4gW4JLoM6uDny3WULBw
6j4dFa:to:USDT(TRON):TCiKKNxDacEhFtXqUarTr53kWSPLb4Pn3T<-
6j494K:to:USDT(TRON):TVP7Rh26hqjueZSRDkBpLJfhs2fuBboJ8w
5j3=:tr:TRMix7vhMKyMH1s3RqXo8rDs6KVMrN2pDk:0/1/1:ej:75
OjLL0xbc9c8cdcba8487f51d6867bc80642ab8c37d32c126bbb9e1e0391f4507d7cc5a=|lifiLu
DjB0x2f4f91bae4614f248132dd7cbe6d37dca966d8af6a39a20d7edad3424351f28e
DjB0x75b2578ba3320cb08093f0acc753f8b5859b46b83c2a2e37082ef38d87600bb0
DjB0xb4eafa8b92e4cde12f091e3ef405c49d6684ff5b2aee144266ec55a6a062239a
DjB0x6ef54447095829a1491d9037f5dd9275add1059be1ec766c4001a87729cc0cd8
DjB0x39336390462e92aecd1e16c3699faa54382f487f42a011be7e72396c41be4d9c
DjB0x4fa3ddce7adb180d580fe97251cc14ab37f962c90d5337bc5ef9895fb9403b42
DjB0x78e1c6a466dff3bd472ebb2d4768d73109f18cede20dfdaa3245af5a1b23af9b
DjB0x2a2c2853215816cee35c1d8ffb7672bdf2d8e13df094ccedaba7c21708976152
DjB0xacb31ca6c6f4bddae7a864cbccd48d58f6357d747a3aa3fe0c700bbb3cd9d863
DjB0x588782974dc2ca1a2be5d237d84a1496d17bfa917e67364a6f3adb5d2419b5d6
DjB0x8db4eb3dcd6df648130d3654cc333c548fc8409c2d9d7c529d208b5e3c522dc1
DjB0x03812b98140de04150c9ef5cb27c2366e4c19d4f71f3adf50071cb6828a1d39b
7j5=:l:LTvBNz6NEarkjvcuj83hD2aKdnBJWiXJwo:11186497:ss:60
/j-=:tr:TTaWKDfeBmBUswNaam2cM46i22Rrd51n9V:0/1/0
DjB0xa230ee03839e7ecd01c636f886f5fb7ce5e6d356713861987db2354dc7bb449b
DjB0xb9f15c61f8eba97a53c79073cb6e9615d3b06912fdc15f6a41152f85edc0ee5f
DjB0xb46ebd484e3947cb1761adeacb42c569145d49d2d0204cc06964f8df4d72a3f8
DjB0xfe37fdaab1a9523391d436f540cde4a6d35d1579db6627f63c3f0cd278a238a0
DjB0x7184689fa7090d361e208b95585f1e7ee5af115fc08baee9b1e5844ca37e46de
DjB0x1ba5846b10d5391003e01b71077cfd3fb905fb2e4abddecee65a0393a1bf4059
DjB0xcf29a2e7b3ff959f11e7d63396f2e85e6f1c8f8a10f946a98e3c26d8d88c2775
DjB0xb5a6e9ef803ae81f3efc2dbcf53891a573184bdde8eb9f880039dd003a1dbc62
DjB0xe184ea77f556a98ad099eaec33f8a60101785f33bea42a04c897e6eb0bd789cf
DjB0xff6561713a0cce6c62a47af797be002334ed6a2ddb907829c8fcea2cc84418d3
7j5=:l:ltc1q0eww2xfzlrskuhuxvnj46f3glumfgxm7k3fxh5:0/1/0
7j5=:l:ltc1qm4xr3twtkzx7wa3dn277an7js3n63m92snhpxf:0/1/0
OjLL0x2869f18ac1714308faa49e478574034b117425093a68bce9afb3cc4ba296dfe6=|lifi
DjB0x598ef7343ccbc8a51585ceb55d95bc74c480a47305b2342079b6dba2b87efd2e
FjDOUT:153496F8ED42C7BB7BABEC0C921DFFD3893D44CAD237BE7ADF99FAD27E39B919
FjDOUT:0000008CB1AEDD00FB4FC6AB315863E9296FD6E2CBDA262862BEB06EC510B7E3
FjDOUT:2FCF5A26842761C23D001E4CBB885747E67B0C170784FC47695C9B2063EA9BA1
DjB0x2c4a532cecbd5cf3aeb14b413085ca8344614d3559aa0937d25f8873c48d3f56
DjB0x750a90053d901b73e774ba6de80045349d9e54cb0abfc2534ed8bc4892555bdb
DjB0x3d0eb7d42752a207bd8513fd9b91030d1c824962d139a4b0115c281c239dd4fe
DjB0x0b0831b0ad0f56729f4744a925fd9059fd126e1d12171c79ef47c307727a0c3f
DjB0x1994d9690bc77f3e889ee1036c509ee072d3e28a7ef51833a510f448bc109595
DjB0xae8390a47f3d1ca80c41a59c8f952d4c72f01a6c6543420e42b20ef0fb89c76d
DjB0x088de27f9b96af0c2123425df48df7ead9e65dc6077c9e45d1e4a5f69a29be70
DjB0xb5eaadc7912615be9bae74d65bb6b373e9bfd470ae75e0639d5087eb9b4d10dc
DjB0xbf097122967b10db3bc3ba79b25934bb6e765b937b9afe629c5f69d99e795e42
DjB0x336d327094b1c9fa41a463b03deb66e4f319d779361985ef63227418b3785bb6
DjB0xecd5054c81c5fb6152291c11afe319532678de3ce17ec1675de0f0334075f780
DjB0x326066460cca1d3b642da69a54da9ecb6a64596edbf4bd2fc8d4e052326c0d50
DjB0xeff76c6744a561d18a6e9c4eb2fb5efc9f6e80b7ff5fe8188ef265b1b49979f6
DjB0xd6f45620bf84b6cc50ee99d753bf40f7e323c96230920c0fbc73b1525a63a13c
DjB0x52af6d06ec70dff754060e7547c5c9e60e53f366908add1809acb023a84a5f86
FjDOUT:000094A2274653D1451C6795A809DCCEE9E23D5171B1065BF8009203201E86C4
FjDOUT:F91EEAB14B1838EE7ECFDAD8DC9369C67E42DB2F042A696A4E0AE8282BC3DC5C
FjDOUT:1CFF52C16ED81659DA7A08BD2B4077178C1B286C5DDA87A88ECFAFA1130BA80D
FjDOUT:2D3AFAB4B65D19C9BB77BAAECD496DFFA94DFF58EC6C7746CDEB5E12B17CFB01
FjDOUT:238A74E442F7A1C6378995737A251AC58BF7511251CD7E456B0780C46A2A51B4
FjDOUT:0CBF45DE892C3A71109838FC6C3ADD97324CA8625124D9263589B60A6B6D5EB1
FjDOUT:85A50510736A24C2F855C1BF3CB22323AFB93D7BBF66F47CE9A5F99DC5FCAACE
CjA=:ETH.USDT:0x8E9D88ca4dF118BF9110102f967008D3b57816D7:0/1/1:ej:75
CjA=:ETH.USDT:0xb9Da1d3eD29Ed6806E76233e7b7d3b826462aC3F:0/1/1:ej:75
<j:=:e:0x3d1C2fff384154e407d84aA80794f77C3312dadb:0/1/1:ej:75
DjB0x9d366c73cfa0ebffc9fcafcd43baddafadcb3a5e21c43b6b5053a328bd7ddc05
DjB0x71fa41dd92bd370100451f24de551e4986eb303b2bd57916c9617ed8a0b7e45a
DjB0x7b6123802e74655af2ffd323103857f6c88317b9dc9e957fbd4a31bfc1b50db3
DjB0x525fd1a63e170f31c2945c582d87e401994df510453068d90c07c0e8ccb33eac3
DjB0x869937144ac87be5ef49958218aa9ebbcffe1012ec9bad14a87ea9213ce8b4be%
OjLL0xbc179ceb32cce902aa0e19c71117ab8b708ce2381138d6a7323ead836d5dfa7d=|lifis
6j4ySX:to:USDT(TRON):TLXh5rPtj2NbLN3NKhbzb7UZSyEoRU2H1U
{jLx0x89d1e9c4273ec8f9a0ca002260150bb4999d010fff83b1738cf0375534dc3c5a|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
{jLx0xd9322dad3c6457dd74e193ddf1a1522f3eff32ce6017b8317112b9f16e044a7a|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
FjDOUT:6A21E15624C5C916B2879F5BEABE31BA10946F7CE93CA1AE2C82F6E67A7CE2B5
4j2TRADE+:thor164kgtv7zvlsmhywccyyz073py4s3h0xlq3zpxw
verigent.ai/anchor/v1|chain=btc-main|proof-or-zero
verigent.ai/anchor/v1|chain=btc-main|proof-or-zero
verigent.ai/anchor/v1|chain=btc-main|proof-or-zero
verigent.ai/anchor/v1|chain=btc-main|proof-or-zero
verigent.ai/anchor/v1|chain=btc-main|proof-or-zero
verigent.ai/anchor/v1|chain=btc-main|proof-or-zero
2j0to:USDT(TRON):TAJ9HJwPh8VGr8BnK3hm7Pgu9NkvXX1tuW
6j4JLW:to:USDT(TRON):TWD6bz5SJC1PWbKxw7a2UEqYZwdtM12xWR
6j4XJh:to:USDT(TRON):TPEdJSy4WtnoNUrzpWLxQHbMH84MGCj2v3
?j=from:22.8USDT(BSC):0x037953c935EdBd5007AE301E0d2772c8c2Fa2423!
DjB0x9dee75189bc5ecebaab35c7a4174c157610a1d3868fa57ecf829d4936c9fd448
DjB0xd7ce03ff821d6a636c12fe3accf1dff8ebbbaca41e8871d7bafcd701583c3f2c
DjB0xcd8e504af0998ea3bad1544dec4e9520cc9e2a32a74ec5aadb1868a53068d788
DjB0x5a38fb58c78736e2f7dd720b5dd37f6c0189885c59d06dccc6ce1ff765bae956
DjB0x292ec4acefc338a012b164b1c78269f6477b64c0feccd9eeb553ee22c028a02b
DjB0x7fde8fadf729df73d7020931e9e9833c71ad95b78b0fcdcd5e3d117095b212ca
DjB0xb8497d102312aba76218ca1cd519970bb43458763e77c40dbe13b8a2679847be
DjB0xe9daf2b267220b5fc2d660a2c6e7bdc7e821591b4946eb3fd72a7e542bc0f69c
DjB0x856c7f08332cf805f7686e110da1eeb410058e4f4b26a6ab1bc1ca015ad20525
DjB0x905ab1be0a3f9ce28c6954084e28f8cd5ec7c3d9f2e3b1a11f7163cac785c2dd
DjB0x9aa389246b25913f0bbfc3bab9158d3396ad5e55007e58f4321ac5579118225a
FjDOUT:21EC4070F994D468EE0C2960699D4F475AF4ED56C0A7A2E2AC85066140D06EC1
DjB0x5462d87c68adccd4c4a4841e4ad1df79389921ae394e3fcd63d44907da08611e
DjB0xa1994f0d6133c89c1ab7e124aad6778653c93b7b70fb48c237fbe17a4f06df32
DjB0x529e7d65b033d12e59d3eb3b3cf9dfc0579d42053e99bd42ce8936cf7c356a93
DjB0x8dc4402c1bb7ebf42d0723d72c13fa847733c539cfee767da3b841d00ba15ff9
DjB0x6f69a8279fc68b6d0daf76663fe0e3557d709598d08f2627828fdb58d8833f20
DjB0x0aeeae5ca7063c4cea159d122b95bb9e2111444257061f55cc25d89619fefd00
DjB0xc71ca3c1578c890dbf05c16ef6e38876347ee571789bad274ad5f17387da2647
DjB0xe2e9c9461c78da8fa918d5f1e6c0134894f8f512688651d8ba744e3b45564ecc
DjB0xf9a3af43909264a46d2ab70980d641b7123ca8d2ea3864a153df1d6c597b84f1
9j7to:USDT(BSC):0x8c8587eB457a986635F097B15F6AdBBC10AaA975z
DjB0x36a7c08b5fe16df6c3420ea69ceb318d056e2ca192258c37fed7703189dba19d
DjB0x13e12d130f17d288623d67cbb97109fa758325922e52be66e3d151a77ffdc150
DjB0x144c7529f598b3933995ab56f6ddf03c531d927563d6e7fb0398c1ab81e73c13
DjB0xbaa40918a4d45b83e7be55959a0bd974f906a0017ff529a5eb53d5d30590041c
6j4Vwq:to:USDT(TRON):T9yDAVaRafV7K4yyp1ZepBHcmH6C5J4kz2g<
=j;XGE:to:USDC(POL):0x608263C8C93bfFDaCE1829E8e420EeDD0F0cAa2A
/j-Sb2:to:XRP:rMCiNusipXengfgTKcUDs3Kw7mVuva8gLp
6j4gVX:to:USDT(TRON):TUSQaNhvQgc9UFLAfC2dRfNifwuuDs3mfS
6j4PLa:to:USDT(TRON):TJnB4AP1R12Li3mr5kAdgPc6azcimvDaAsy0
6j47ah:to:USDT(TRON):TJzsM8U4EXSaF44G6BxuR59JDsoNFRrJKv
6j4tZd:to:USDT(TRON):TWtQuFbzCYkkmRUUXoxT5uJCfKYtKNUk64
6j4gCh:to:USDT(TRON):TKDxkqoCfAJdKfZRd8cK4ixaxjnWHdaE8Z
6j4Zko:to:USDT(TRON):TEWvbbasuing8tM8beWb8H9UkfwXe5tLFY
8j6uYs:to:USDC:0x6f23cD0CE5a4fC1974d29B25b32726A5a0Fdd950
6j4Kan:to:USDT(TRON):TYdPVtyLQzCSKTRfDgZUpwRYCA3iQMKHWg
=j;lfJ:to:USDT(BSC):0x79d5066C6Aa7a3EDbeEf44dAfe99deDFe6BF43f4
=j;3qY:to:USDT(BSC):0x5A189EE4f18aE5F9373FdfEbA09Fca15b414ea1D
=j;QGW:to:USDC(POL):0x3E9B48Cdb91B1a366A963E7bC408e58C17670521
=j;y9p:to:USDT(BSC):0x9B3086e4F041b7E32C5a45016A446E04a7cd8C68"L
6j4yQz:to:USDT(TRON):TH7WVQRSL7xpoy7NKcZpK9ScLoqhSZ6u2e
DjB0xbfbfca855a6d16bc4d2de7b4092827f775004522595ee077c465c71da56565c4
DjB0x5bdc5fea0b7693ae481991d1605e48aae5a1d4e12bbe23517fcde5389eb08b94
OjLL0x206485ab1b931c1edbaaa43d9af5d47b2d7ac10d3ddd25061cbf03c9a60266b7=|lifi
CjA=:ETH.USDC:0xeE227fAD621F07e5615cd1c182b602B4FB960D51:0/1/1:ej:75
Bb380ef0c5685c1334e39735e6793357ed893a60d15214ba3b2a80c807883cbc4:0a
6j4fUB:to:USDT(TRON):TD4ryL9pBg2BbTQ8zZuxS2PbU928eoqxid
6j4fi7:to:USDT(TRON):TYZZFJEKGCWX64s88xGSEqHtG2smybQ6Fh
text/plain;charset=utf-8
{"p":"tap","op":"token-auth","sig":{"v":"0","r":"94987833904460538269669829777685549569508143042159233663576262413559643370118","s":"56118915243822066309982513207225674073957750063906903698029435156944831883324"},"hash":"13e1beb2991c03131e9efe070711daac0e9dc97f8e2d585dbb9b5d0e0e7b8dca","salt":"09771461991106682988339267655622","redeem":{"items":[{"tick":"dmt-nat","amt":"99990050419","address":"bc1paz2lqprt023d3pvhfq76r7gqsfth0eyul8mkrtz4y3kr5naysy5s4as2yw"}],"auth":"006e342abff9d455ba63ea20ac6ff2d01323cb67dff18a52f
bcffb473c8257eei0","data":""}}h!
=j;lcd:to:USDT(BSC):0x5BAa4401DdE7d0f07Ad43A15CEec754e3990BB030
6j4u0i:to:USDT(TRON):TE8THatwMYatVkgjGTfp7uMkgu7vhoNSe8
6j4HXB:to:USDT(TRON):TAxHWAHiSVEf8rHp3B2kP8YaXDoUU58aYv
6j4SdZ:to:USDT(TRON):TP3LFpCGVSFmmwYAbk3FUsusu7rdGT26nn
6j4uCr:to:USDT(TRON):TMhJXwnyzrwn7wRzfMbJcz99H7diuh7efg
DjB0x51e2b38f49e4529ca845c00f9d43097ec61e136249c8b8294c487845e3c7aef23
6j4x9Z:to:USDT(TRON):TLNP6xQYdhgUbrsLYqMukdc8vMmtvwfTas
6j4LFm:to:USDT(TRON):TKP3Rm3CEzjM19dVgXk4wu18KNQPR8pmsS
/j-ROL:to:TRX:TKQ2cDr74VzWrENTELQnRGKfXwM3AwaMdLGC
/j-AQx:to:XRP:rDXJ5CE13GB7bzaVC1DwLLyfNLP9VF9pxxZ
9j7jrN:to:SOL:DbPMfyHutbuYyRvktGapzMDRGcbS9YtSXCPtpftsyq8jt
8j6V0S:to:LTC:ltc1q0hudmzfrt7krkcyj3vt8sc228r5v9kupykjxyw
/j-Ecx:to:TRX:TRaNXGnj6Bm4cDztskJ9Dt16jC4Na1yucx
/j-iqR:to:TRX:TWP8mC8PXN99baUaGhqXjSTSdN1ExYkhvZ
=j;J9u:to:USDT(BSC):0x0Bf29657e04d3083b55Beb2C4Fae65775c86643f
2j0to:USDT(TRON):TSWmKkgWorYcKbeHDCiuiVkwZCf5yDiwxJ
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "10000000000",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x18B8B10B14dC06C812c2f86a4C3C9e87Ca34E3F6\"}"
DjB0x24ddf8966caa79ceb33dafc286e0fbbddbcf2891b9aa747078078a708118bd6ew
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"4550"}h!
DjB0x23b8119875eab437e1d3a639543269cbb29ef5c6ed8b564cc5d28b5348c684aec
DjB0x121d39ee42a914d55866ee6645e78606ff6a3d10030f147de231b6ba632b51cd
=j;r43:to:USDT(BSC):0x6A380F559f93B16F9011B0F4FD8513051b832439
=j;0Ws:to:USDT(BSC):0xB0553bdA9E48Fa454825996cEe14f2e59E04666B
>j<mW1:to:USDC(BASE):0x0Ad2027c483A2D57686814FAE92e07ED981B0912
6j4Tdm:to:USDT(TRON):TUk3Z1VZU8q5993pCr9karwB4uZyWtYNps
6j45XO:to:USDT(TRON):THy6FrJ8BPRePJq4ESJcJ2QL3R8QWW95n4
6j4exJ:to:USDT(TRON):TA8YS7eaknd4Bby7u6VARuwaiW1y2sc96M6
6j4A3v:to:USDT(TRON):TKy8dREmKtfTM1EKhGJ7hCh8UNMrfd6Qt1b
6j4CsU:to:USDT(TRON):TLqmcw3ry7LFToPcPRhtBPLoTrPfJwmuEH
6j4QZe:to:USDT(TRON):TQsGV18yWBXzcTomd7wAEZfvADibo5smtw
6j4jLv:to:USDT(TRON):TA56ZNX6hMydN511mXDXBUEBa3Zx2Y5UaS
=j;n3E:to:USDT(BSC):0xA085Cd249354482c8DA9a22bEe9747d272964eB1
=j;8Gz:to:USDC(BSC):0xF781E2f0870D95248355E08BaF953361612f69f5
2j0to:USDT(TRON):TVTUZJUznjtaC5XmjnEFmqAEKf6TXnzNzM
6j4Bdq:to:USDT(TRON):TSwcn9dcbN2kEhKmNeFocTCrQQdhFYuMVk(
6j4D9S:to:USDT(TRON):TFBUkbszqfHPvwqFbtWkWBAkQdBcTeEKSe
6j4QNW:to:USDT(TRON):TE773fsfXdodBoAcBTPzT4iuidiLh7kkGW
6j4Dee:to:USDT(TRON):TRJP4PXWpALnR8euqQWhT6rRwLZbxY17Gv
6j4VNl:to:USDT(TRON):TLn3dbW1iAQQGwCTR2ncFxB3rZm1eGxmE1
6j4e0p:to:USDT(TRON):TCK2DkHqYZ91QyTJ53bdA4g9ej1LkVKa74
6j4kW0:to:USDT(TRON):TYoK1EjEPZoTaSRLmNmUcknjfr9afKYCzd
6j4pkb:to:USDT(TRON):TXfAmHg6ojDwe9SphYGjFJqpvtpKnN6NTj+
6j4E2m:to:USDT(TRON):TYyZU1yY1Fgu2XLkTgvHUophQCXEh1easzK
6j4j5d:to:USDT(TRON):TNHiogNQkcLdg7d6TbBJaP5ze9W8kF8QwP
6j4Cqp:to:USDT(TRON):TLQHfuAzv4tqpEHTSjVzcBF35LbWjG5bHY
6j4ABT:to:USDT(TRON):THYGcDtoXYEWkzNM9JXkZ87xrJT4mqsEv4
6j43XW:to:USDT(TRON):TAZzRCbSXiPQirW3QJe8uKESwT4eCWvVV9
6j44Mu:to:USDT(TRON):TY5DgBz1RKC4xd9hhusA19jrGcc9UPTE4YM
6j4PvE:to:USDT(TRON):TMT8jQpSQKC36akhmBEQBU8U2bm4nkLLRb
7j5EXg:to:QNT:0x234A400A24C6bcaa6aa6dbEA29C455496eE86dFf]'
7j5bDB:to:QNT:0x736B9c3E1fDA26b91BDab0D80a843f85FDe11483PQ
8j6MBY:to:BTCB:0xA45df577Ba3dA1a10ECF742E84650d8C56Ee21a8
<j:zuD:to:BNB(BSC):0x982F890aCe2D3B3731292105e4e5317393bfF07B
<j:rzL:to:XRP(BSC):0xC4b3c5A06E300860762FAC5e9290CBaCc4D66159
6j4y2Y:to:USDT(TRON):TWaYoTwmQk4kGME294hbwyGysWMkVgYTKs
<j:vqH:to:BNB(BSC):0x1e0022D8f3f7075742e49412a5b75c864182b605
=j;pPh:to:USDT(BSC):0x7F8006189B01662Ec839a5fD449Ff301F46bD79D'
=j;rr9:to:USDT(POL):0xe76763f12e4279A92FDb09259979DE46Cad34820O[
=j;M2G:to:USDC(POL):0xd732477465580C445531F05868eA0d4C7a1D6653
=j;D2k:to:USDT(BSC):0x3DF691344D4d46f6B78dbeF6B42eAc7a32Be7a92
=j;Cvc:to:USDT(BSC):0x90592cf32D986D46366601f98146C6a3F7bE0E5d
=j;eWP:to:USDT(BSC):0x24e0429522f646792EdC9a7178B04783a80E6CBc
=j;tWL:to:USDT(BSC):0x3ee50E79c0916977Ae77c36f5319f96c2b301233
=j;6Fx:to:USDT(BSC):0x08Eb73e52B5862506d895Bb02c21513650D9cF62}
?j=PXA:to:USDT(ERC20):0x4613930340CecBC81bd1138b20E2069e230dCA00
>j<1EA:to:DAI(ERC20):0xE69d011be1290c19c93E7B49a40859812D3Cf028
DjB0x05ed9607257892847dfd0ddd51f83fef49fa2d804c706c347ff6c0a23222cb09?O
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","amt":"4870","tick":"ornj"}h!
DjB0xf4ab216ececab9ba7ce9c54c4bc4492f81ebf8b2d3c6a24613beb409cfe62749
6j4from:20USDT(TRON):TP8EY9J1Yk3KbcdeAkxr23kGdECNBdq6Dt
9j7from:666.3USDT(TRON):TRNMmEvihp8YXnz5DELc7aSuQLLddH24iy4
CjAfrom:15GRAM(TON):UQDzWgXFiiIsdxE8Gke1CG4-wldRdx7dxtgjvopE3NwvXkm-
DjB0x9e57abb0de79e1599e1cb002fad7839f5e3d21240deab32edbbdbb62ba3ef310
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"rats","amt":"8282255"}h!
DjB0x185e55678529a24b6ccdbbe51f425d23f9760b810d9907824f355b25b4f36fe8
DjB0x206e12290ee844f8e32f79caf8b6dc4f93bd03321a2b9a9f7c51ae5db1dc3e2f
DjB0xe086be6803d14d717b91963f9f7b0c1dd1ccf73472dbc1e099448f06aeda4b63
DjB0x42a0a935243ab0a5773cec2fc6b3a2802d04a55612b6836e0403533d8220dae4
DjB0x6a9e8e075b8a4d5acaeef4409117c6b5d2e83e099b747a6d2c6e376518960db0
DjB0x40fb8e35d6d98e790dc8079682d6517774f5d36e34c22298617f58c918fadf36
DjB0xbeae6664407264964deecc4eaaa467d638a65279373119051999a2e597fb2141
DjB0x4e010a4dd0b67771457b85547d788775d01d2ab95e95b56d9187b5e9a043b477
DjB0xf296b2ee221e5d91880bb272a337bff62d104eeb674693391204200732b3c590
DjB0x94e9e75ab0f7638f1e0c964d76249aaf03b7a735e3ffe1bea05fc4a4c7ec5446
DjB0xd45840097a4dbad96957a6ccfc29459a75fac315bfdf306bedbd47c4966950e6
4j2TRADE+:thor164kgtv7zvlsmhywccyyz073py4s3h0xlq3zpxw
DjB0x0b88df61f0bf7f40578e0e5a5858c26ea4046ce6dfcfd3804206acaab13fbe73
DjB0xf095d6eb0783b7a83ec7e0a8742e29dc1138d99747cc765d2ab962fddb0ac083
DjB0xb3758d80cdd078a5c8575d18aea0ebe3d54cd5ebfea992a53fafb4873332f8c1
DjB0xcbc9a688534b1c164ab23beda356046eeca001f97f710983aad05782bbcf75f6
DjB0x2e0297bb105f3d2096a60bab44617525b54df9b71fee0a258a37aca3862ff605
DjB0xbe1fb40be408eb02f88d78bd68153dd67aa4212163bb5661aeb7c5d880fd9380
DjB0x62238a2d129d1b4fcda39f7c5d821beefb062701018a0e0a517f9626fad45e42
DjB0x11e151b64a68349b95f09890b048b29938a9adaf853600d7ad06a17376bb1325
DjB0x0ec261d5cb97fed567100b3f63669961b8854016f46fa901035424c63fb6c331
DjB0x517c61707cedd9af72536abc69dced94600f0085a8bfe80ef596ef670fbafbd7
DjB0x88e3bcea40876c25926c70c9c3f33e310500815e5374b0218d49e4eedda879af
DjB0x97cfa6c32a8086b782fd9f83adfd0124482982cc4a406c3b886c8027e86fbf76
text/plain;charset=utf-8
<{"p":"tap","op":"token-transfer","amt":"20000","tick":"tap"}h!
DjB0x9aa8e2969d7f61bd271ac77e478c5e2e1ae44365b4feccb9e7b1f8d9d31e4a2b
FjDOUT:0001135942C8DB13C008D22F816BF37AC7C470E2D05AC3628F7D51508D82DCC3
FjDOUT:573C813988FE7BB9130525FAD324E206852D20F148509E8901177AD45A9EB5EE
DjB0x23b8119875eab437e1d3a639543269cbb29ef5c6ed8b564cc5d28b5348c684ae
DjB0xe31364dab749a87ee2d423002d0263ae460dcbb7a967f452ca47417aaffd4ae2
DjB0x2b20f700fed51ca0a61cbbeda93ddc5303a8ec62509d469eac19a6d2d4543646
DjB0x46bb7cc78e70da07d4d101427e17660d2df3bca112846b37e4e20892aef7bcb6
DjB0x713dc6c4b0f71fd84c2e778066f705ee9d55d5ff454ebf4f84a4b5e2a2795c29
DjB0x4999bf67e5e36d3a06cb46e8270b90ff88ac8549708a70c612bbfdd4ab275add
DjB0x1e04303b78ae59571256bcad503b110d45632778d31286a548aae8b7a857077f
DjB0xa5b8f314d6663aa842e2c3ea2e599617697960c56efc683a0a5387c8e5df59e8
DjB0x1b4e20bfb1fe96fa2c3b3cd73216eaaf4fc62e49136d0a02c299344dbf272eb4
DjB0x70b01e30fe3ef4ff465d556dc03bdf04aee9f2c314a38ace45974d3232c4413f
DjB0x93012cf96ea929d90773a0422fdf85fad74d2f4802afc8f5d5a6963f38b56a99
FjDOUT:00000651E482BCAB9EF02BA1C60E3B5E8CA200A652BA065D2CC6AF16B3568FD0
FjDOUT:000008F2B44B90A6A4A5F2E315BD651DE7F1BE41B0C52E5D5177AA480F092327
FjDOUT:000008C451D86C464D406753BBEA70444510344DC9C32BFEDCF1ACE6593B5735
0j.{"p":"crc-20","op":"mint","tick":"SEAL","n":1}J
6j4M8B:to:USDT(TRON):TF6WwkpPRN6qqXNJknHCxnuT9on3ub6sNE
DjB0xd7d8611dc7a506d62e939a0959a298e042b85f5b53478af7776bd0bb534e5579
DjB0xd15947c2fbf027927ac9f8386a68b4de83b61ff6c447d4c096dde21a137ce1d2
DjB0x246f3028827f7252f931fe016364d7b4fb48fd3004465b5627a1fe540b5c6bcc
DjB0x7af139972b04d77bbc398e26377f9142bf484cb4956b26093a59208ec024c6d6
DjB0xa77b2038d7ce6029f12629d3dcffab98b543bd70eadf1fa9ce2eaefc8952ad9c
DjB0x30a791a36c5a0703c28a2c5c9ddeddb7f3ea77ee30e2e08d69cabd46e1e065893
FjDOUT:495B4A42A49C15008DF6848DE63DB8E8E605B4F707014661B205C92F94B6E580
9j7to:USDT(BSC):0x0901593056df1B15f073c56e689BBB0BFF4b79E1P
DjB0xd26b53a6180ecd850158933f26cda01b7378a159d4b0347dce6fe2f7b5f502ef
6j44pO:to:USDT(TRON):TE5APRBvtgVRCqB6GrrjEQKzTAaQ1krMMg
4j2TRADE+:thor1543ljqn3x3llwlfnyhuhnmtv53kyfkrc6yyklq
8j6IED:to:USDC:0x19ecae936Ac8C9FB29204877540E62Dd40ED0941
=j;ry5:to:USDT(BSC):0x1A0Be763C21596C653B4efD2C658114156AA6015
=j;GYi:to:USDT(BSC):0x5b7DD2865e4Ee06F001b5197e65B691308734C2b
6j4DDF:to:USDT(TRON):TVBuWu1aMorHiY3qrD3iocVt7MZ7gxD27u
6j4Nh3:to:USDT(TRON):TBhC3xvUUB6pa1REtHUCZMyEpnp2vevMFoC*
6j4Aqy:to:USDT(TRON):TGHWiXCs828AhQttqDdaqYHxEVLjBHz4Wd
6j4Qmp:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr1
DjB0x04d2b573464ad6bbe6e69259696d8d24069f85b93257c7895373dab75cf7c962
6j400P:to:USDT(TRON):TXGB4CJoC9ukPhYeigCFJSyNWmZvUpiXKZ
DjB0x718f073ec516c62450b68364182a128c7d13b5cb8eefcb6af09dd7f8c0c5e236Y
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1"}h!
DjB0x2e130344161e15a5d296dbfaf67b1d068b3148d14ee0f8cce15fec4c00ba918e
=j;skh:to:USDT(BSC):0xadcfc4ACC87BD4ce2C9fCAA09E8ed4D08CEB77d4
=j;ktY:to:USDT(BSC):0x0c5ef985849f47d3d9dC6edd6850f1FEB95D8f89
2j0to:USDT(TRON):TLgaUbGY1kThATSqgxmBd8dJKn3pmXVH7T
6j4T85:to:USDT(TRON):TDhQEnrafiGC8gZqRQHGyFMHiLQby4PjZQ
6j4eiR:to:USDT(TRON):TLCmDtkin3G9HkBkSgcQUkpo32545BCc9XB
6j4odL:to:USDT(TRON):TK9F6fPxQoz1zoP2DRMoPXhJj1tJHy5JmA$
6j4fz4:to:USDT(TRON):TFBUkbszqfHPvwqFbtWkWBAkQdBcTeEKSe
6j4xfe:to:USDT(TRON):TL8BQL8NnYQ9BEYD56o9HzWueYGm9EcdmgA_
6j4li2:to:USDT(TRON):TNeVE4gWr1L84uuyRwkfUBLehn3D3xMVSy^
6j4fcA:to:USDT(TRON):TDbAN4mfbrhmUfwLwPyh6YLpwsPxuU8KtN
6j4RN0:to:USDT(TRON):TECHH1d8tmrR17sRk2AjyGfsHDtAu8HkLz
6j4xKI:to:USDT(TRON):TFLBGs99tfHc1cBdwczbCDa2qy1bvCkCpd
6j41R2:to:USDT(TRON):TVfkRnZYVKVh32pxK11ys51bdPjs9ebAes
=j;9sk:to:USDT(BSC):0xDf195Db38A2D0464679F66Ffd8EB2952AfdB5145
=j;YKA:to:USDT(POL):0x77782fFc9aD8ae1Cd5888C2053960Faf8D6c5368
=j;v6a:to:USDT(BSC):0xE81b2927d8745b6362CcDC28824433f53F1A7614
/j-C3e:to:TRX:TAvgUJqUi3ipbxLgkBdXtPRRbNHxDxBLNx
9j77NT:to:SOL:7ZNujpAjy6756WjTv4CCfUeD4UmQfAggi5zcDPMou3is
2j0to:USDT(TRON):TVTUZJUznjtaC5XmjnEFmqAEKf6TXnzNzM
6j4KpZ:to:USDT(TRON):TNnmZnZTPtofAHmEnA6Cgn9L2Cy6Kx3rwr
=j;gdF:to:USDT(BSC):0x4a2A52Bda92DFe1b1cfDD640fC4Ee0DF1bAc1D33
=j;7UU:to:USDT(BSC):0x46d6F565797288dd7e01f8C2f96681a754A13DfA
6j4E3F:to:USDT(TRON):TEmLjtmgWoa7UiSpMsCRnxSKxLJj5uQ5Bw
6j46Ub:to:USDT(TRON):TEk5BCcX9EbqJHecpZY4vko2gedB5uvmFU
/Foundry USA Pool #dropgold/
{jLx0x19a868f17fc7670c21cfdb90c516e44d9475051e26fbafb49cd60de1a9cce661|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
{jLx0xd8573d7a1a3c14ca60d0add02af0bd565d6a5acb3ce8a0c811f1d29965034b91|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0x7d75795b1da59e540b72a3bdecdd3e136ccf10f98b5e1d0366ef57825453204f
DjB0xf296b2ee221e5d91880bb272a337bff62d104eeb674693391204200732b3c590
DjB0xfa45548f57b06105f8cd8f0ed8e1bbbf0d384da398de38ebe139a0a70c65c239
6j46h2:to:USDT(TRON):TF5W9GPaSo85KatH2uBoKdpmLPNpRYmF7r
DjB0x32f43e424c21be4d33dce003df42e5586fa14629ecf853002ce0f632d2480149
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"AP18","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"ordi","amt":"21.4581671"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"1000"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"976000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"2000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"95000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6500000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"950"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"550"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"2000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"6000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"2000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4"}h!
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"300000000000"}J
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"663004808942929"}J
DjB0x42f9392d85ad04dd395d5a57d6c156091f75653c48508214b99c10067b90e021
DjB0x18baacf3bca6c8e35833fd15c3afb4f36bba19b393059e8dfddbe5d783e30439
DjB0x62dc6b4884ddc3932b13dac8fad5b0dba54c7e16f8453d688005cfffed8570b9
DjB0xb02d3cfa750ac66d5305e25c831962a4eabcdc9d3a6ad4f610655f0a5745df02
DjB0xdd267e34a29a8a2db68d0f33b25783ec23f15d55a9cc1980c572314448b210a2
DjB0x6f9049f4222af2b78870a7a11efe192171047923a31aba6c77149abd823d53d4
DjB0x224cb71cdcfb54b28b9a945977c2cad37d84b9c31646f1a87b439660450405a4
DjB0x4d17826820bb5dcee10db76728b6506d10765250b931cf0c92d7fea3355780d6
DjB0xc40a49b76fb293e43cea1a4399e56f826d416bb04ce9ef37304b1949d2180881
DjB0x31d8488c28c63a1cb787e99c3f73c4c5c2e25eadcbefcd08bd55a661184ae81d
DjB0x0bd59d738c20713619026a3e21ecd4805fa00ead8d81e9d2596f2034c79753f8
DjB0x51a9e5890bf4b55397c3ac50220bc616456783936ff0c077d6a03328e10a8329
DjB0xe5b879456e16ed26da466f877a03606990daa95b72f75f2dc2d31292d5935884
{jLx0xc328aa26b404fe23f3a8fd5c2529cef7476dea9d84014d752471fa879b728d50|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
FjDOUT:51DE03692544CCB5C1331E90A9490F9ADB65B111FF90AA8C31F61EBF0F290294
DjB0x330c634809a5672dbad06161852597bcc9fec91957224b7754d753d2a004657f
FjDOUT:00000AC8F55D310FCD76C93CDD4EFACAF37D0143CB456C2D9BD11C620B661AD4
DjB0x64df9c864e251dad792784cacf4ab755b8339b85221b6e8020fec68e9c6488dd
DjB0x375edbafd342a8c720561ba0aa9d9837d420034f47c6b69ee98724ebc05f0a9b
DjB0x9e96b7b6b39487774d94a805e607f62ea606bc82ae38920fd19fc2bbaa1b0dc5
DjB0x5a8d1be48434e3d6e219f044e7f11a908777b6e73ef84134435b7d9d2c0fe753
DjB0xb5ae7f71ee9fdc3d6b099ce2871670586f706161f6fcb3241ee7cbfc54753310
DjB0xaf79facbbe336e236c82fa7ba377b0caef2e346a1f7fa4658b2c45ac8e4b84b6
DjB0x9c7f968125d9d273cc85a3e1464b71859a1d7ba28afcbe4643176583eeb27fce
DjB0x359b41a1949ba789b6b013b8fce6d5289dd6d3b179a621d7ae4eace34e3f3981
OjLL0x4e907a3773dc5983bd92f6bf1e6c26c4e042d39d5ae5738257eb07bd219580fa=|lifi
2j0to:USDT(TRON):TH5ARGcNBh8wcVcYYPSN9ivfuCftoxMb2k
=j;from:15USDT(BSC):0x090e8494bad04E0b14493ebAcCC95F07e19dd333
DjB0xe7110419ea4f423abccb2f4d3dbd23e030583fcb37c3614e5ec31e1dd838f2b8
DjB0x362408ef81939fda3492508a5813db9b500a08ed3d0f4e1bab03720a42d5c58b
DjB0xcd015a4f6d0c9fed21fdc06927619589d7e8a27a7fab11a92f0d8e77b31e1d24
DjB0xfe8c873e7e63c9a029cf58db3e22f7d3ea0cac39bf22eb7142f33af05e54a194
DjB0xd6ce5c54c1865d3decbf517df6e6b0d05b030a50d68c7abeae68240ad1192ec9
9j7to:USDT(BSC):0x858CD1a9e9d685DDb78Eb4567D94e8aE632fF2CF
FjDOUT:000000EC49CC3588672B084ED561EE7F4DED90B3D12CD931EB6F1A5C8F5AE61B
6j4wzz:to:USDT(TRON):TLy26wkG91X5Ri5FnZPBTdC9zcEbMuKkah
6j4y7z:to:USDT(TRON):TYPKkHW6giikJ6DGuMUrhrYc4qnaGn5DEC
6j4v12:to:USDT(TRON):TGvD2poqir3njD15iJAP1f2m7ieh3hn7tj
6j4Z0q:to:USDT(TRON):TD41Z59RVp35xL2ESGzjTC8MZ86SY4nYPkH
6j4i6D:to:USDT(TRON):TH3pUgWNBmexCFayB757PTY7Dfyd7663jb
6j45De:to:USDT(TRON):TFCuzgTiHYNgFDKCZo5EaVSks1cxdJLuUS
6j4T62:to:USDT(TRON):TUYyJzX3WRHdY2TAcqVD3D4bn9NsprRoAu
6j4Gd3:to:USDT(TRON):TUqr58AEhY27hk7QFvG9kF5xVSPx7KYzNr
6j4J8X:to:USDT(TRON):TC9CRteQ5BDwRbUdQPpaLRrGxPbnxudvVc
=j;2o9:to:USDT(BSC):0xfc76Bc9507A9d39A7fA89160b5476D0C0a98b6f7
6j4n2w:to:USDT(TRON):TZ6qrpqgRqeiizdifiKi3VKxbrXPSL4zZ5
6j4tte:to:USDT(TRON):TW1Kuun4HNF5JARQUxyVNv4BnewHLjpADB
9j7Y2E:to:SOL:CrpgfV5ARNaz48ShU9cYjsVghDVcJW9mJbRkvoXVaghe
?j=Egq:to:USDT(SOL):BbdyxotTL88Z49qFiTkauXmjGWxAhNrfdbxYt7tjs2WQ
text/plain;charset=utf-8
  "op": "token-transfer",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x3494A465019535A8dd6EeDDBe3f65d86B2d6a417\"}"
<j:=:e:0x8c6bd468Cfbe15E22230f2Ed455fF0033E093531:0/1/1:ej:75[%
4j2=:x:rGdphH8EWHHXeW1JqnmPaGMM49NGurtmxA:0/1/1:ej:75
?j=Cld:to:USDT(ERC20):0xfb772b65951f04991DaBb40A6DB5F57CD2E0b799
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"13000"}h!
Bc9f125ad208140ccbf8b7510dc4c2373c3e3bbc5df8059f1f1f82bf8ee14e3cb:0a
2j0VLGR|2026-09-30|w8|f0|j0|o0|x25|05c50327ed588fe1
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ordi","amt":"6.3"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"14000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"12000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"14000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"12000000000"}h!
jBackgroundnBitcoin OrangedBodydBulleShirtnHawaiian ShirtdFacedMaxidHatskPumping CapdItemgHot DogjAttributesdNone
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1254 1254"><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i0" width="1254" height="1254"/><image href="/content/b069e369781e2909fe579ff540f6329af55363b507107d29139435aa1727a2d3i18" width="1254" height="1254"/><image href="/content/8c93fba3eca5e68e579678c749c97e83e029a5629f05bb54ebafd5f31f82fd0ai16" width="1254" height="1254"/><image href="/content/e03569dfa90d0ff76eb60efadcb1dd342624fcdceee4b5177c47d0dfde9b2916i16" width="12M
54" height="1254"/><image href="/content/d1b79865b4fb7bdc3b53241f06a4e3ddb053064029d83b095422715f14012e44i27" width="1254" height="1254"/><image href="/content/9f6c7dd3c386fed0387b293382622b84382dfb43e342bc64f574ce810600d7e1i18" width="1254" height="1254"/></svg>hA
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"BTG`","amt":"20000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"ordi","amt":"13.3206512"}h!
text/plain;charset=utf-8
LR{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2738625579.382839241298833253"}h!
>j<=:d:XjCzNpRVTmGQdiV6gkdNqzVpPu7Wo1WU8P:10270444390/1/0:ns:12
DjB0xabc628ceecf375876ace3376b7b5a744545c9915d5c42a6fb49310676b943a45
DjB0xeaa262e5d0123492f5f9741626edfbecb2e560fe683d168f95cc7386dc4f8835
DjB0x71f5ffa4ac9fcf7253c678bc8087f462e3a899ba15751ab71fe64dfd27339e0f
6j4qke:to:USDT(TRON):TDxU6Hty5sJP2fDVZr3vGrx4C9jK3ki7ns
DjB0x46d1201ab568c8342694cdc9ed1a143d799edd2e90e1dc337a57552c6a226071
DjB0x932e4add0b1bd28dc03c4269e517a971b2f43ec8ebc24bdd2e3c7203d88e93e2
DjB0x2683d56d6a2505dec919238dfe194bf6648e2af1b5a8141e7a15996d7b8ea358
DjB0xff9ddd26912d6925e75e945b1126a065bccd84502478a5f40e396bf2b3b13788
DjB0x91991790df91404d97e7af8b4de673760c382b348a191b2e594cda171469b5a5
DjB0xad838019dddfc75fe68d44f6053ffc1999d7f95b3f0f2c359284831d637c6975
DjB0x8ab2dcd20eab9d3dc6653c371190f707447cc79a79d55ab44d5158a7fc7291d3
DjB0xabc628ceecf375876ace3376b7b5a744545c9915d5c42a6fb49310676b943a45
DjB0xeaa262e5d0123492f5f9741626edfbecb2e560fe683d168f95cc7386dc4f8835
DjB0x28b6c45aad54ed2184913f0f351e74ba3cf005889668990ed8b7494f8c5629ad
OjLL0xa2f0554f2615dc805a80ea901a1b8c6342ad61055bd052ed2ef795de579b1428=|lifi-j
DjB0xf75f10ae067d3223605d5611481370984021b625463938bf7778ae830e890a08
DjB0x5afeb02e1000c6823aa8ca1e900069e2722ded9c39fdafa45f9e8f2e8c1c221c
DjB0xc6367f27cdbf681992ea5c5eebd991345ef0ced19f02409b08a445b361f59667
DjB0x6b04a236cf21bfc1b8e9d6cb9016692a51b39368bfd55bea7b711652cf7fe576
DjB0x79fa6a5533b993e21fb1ae0a81a0fab6d5c26ace5054311287c7a8a0eacb0392
DjB0xaa60fdbd2e812cc4ef990c366a32b00ec419141c790d05ceea190c3d60718307
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "100000050419",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x7Bb28cA800595d63Dc849590cC330ad100767E2b\"}"
DjB0x5297751b622f76d05efd55a0ea197527d40883782b22d661494e755aea03bd39
FjDOUT:F299EF23DF38AC4CE6094C708531C49B0BE4732EDCA20F682B91542225215ED2
0j.SJa:to:DOGE:DNxWSEa4aJwuyWWbtvypL45oE1pnXxprseS
8j6nLR:to:USDC:0x865344Fa1E1f2F82B9376E104E4d3C4dcAbB9cd7S
6j4qtO:to:USDT(TRON):TRkJZu74abLhEWZiVELbiixMSzEYA1RRroFF
?j=VmW:to:USDT(ERC20):0x512b3f984Eb5FF462AdCE3eA8747B27af259b8D43
6j4nJW:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr
DjB0xe4f3318aefd7bd6e28f0f4eb683b31d2df61ef415bfc222c5dfa0efffee238e13
DjB0x0967d6fa5a3b94c2d0b13217c5dd9eb9d276202f950fcd0f2dc80b9173ee6701
DjB0xcc7980ccfa811cc30b8b939a111dc1fd164d15d3db20434d4b37eb3f125cbc04
DjB0x1522da90f8e45104e103aea1861669d1e7e371b1a9683920cecfef43e6566b1a
=j;b9i:to:USDT(BSC):0x670Dd305CDB3fBD0Aa1747dFaB81d55761515A0fdi
=j;WDl:to:USDT(BSC):0x8ee3A0B551Ce1D69E975e5581F03066a17FD46ac
6j4z2k:to:USDT(TRON):THtwEtwXasSg8M9HZdni6khTXVsgYZdH3dx
6j4smn:to:USDT(TRON):TKGwJoNMSQkK6mHoQFqWqENuY2hSoxGKED
6j4ZhU:to:USDT(TRON):TSZmfHpE3i4keptHRyuzFRz2KgcuRJPk2s
6j4HOs:to:USDT(TRON):TJdAkeuL4q9czvkaXmkaNuFZdTLCVKJnbX@
=j;fSZ:to:USDT(BSC):0xb6B512E12e9B9EF369517C02b7963Aa9afe88f7F
=j;L56:to:USDT(BSC):0xbDBAc1c9e3dF6493c96C58D94d973e029708c581
=j;X5m:to:USDT(BSC):0xf5E266faAFa0a2079e00953466A36e412108A50F
{jLx0xc5fee85548e1e28af6ec1bf933dd34ef7c29a8456b28d9b2e6333556a3b366ce|depositor=bc1q4sy47j92ny6lmeu9erh57vk6z8ezk47zpeqh3e|
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"NBZC","amt":"390000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"RTZL","amt":"390000"}h!
dnamecPHIpcontent_location
dtypegwitnessfcortex
crefhHNFTPEPEcrelfartist
<!doctype html><html><head><meta charset="utf-8"><base href="https://acme.pics/"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>PHI</title><style>html,body{margin:0;width:100%;height:100%;background:#0E0E0E;color:#E8E3D6;font:12px/1.6 ui-monospace,Menlo,Consolas,monospace}#boot{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;letter-spacing:.25em;text-transform:uppercase}</style></head><body><div id="boot"M
var SUPPLY=161,PREFIX="PHI";
var PALS=["classic","nocturne","sepia","blueprint","mono","neon","pastel","ochre"];
var ANIMS=["none","breathe","draw","reveal","hue","morph","orbit","drift","zoom"];
var TIERS=["ORIGIN","PLATE","DESCENT","LIMIT"];
var PLAN=[[0,1,0,4,0,[9],""],[0,2,0,0,0,[7],""],[0,3,0,0,0,[2],""],[1,12,0,0,1,[0,0,0,0,0,0,0,0,0,0,0,0],""],[1M
,12,1,2,1,[1,1,1,1,1,1,1,1,1,1,1,1],""],[1,12,2,0,1,[2,2,2,2,2,2,2,2,2,2,2,2],""],[1,12,3,0,1,[3,3,3,3,3,3,3,3,3,3,3,3],""],[1,12,4,7,1,[4,4,4,4,4,4,4,4,4,4,4,4],""],[1,12,5,4,1,[5,5,5,5,5,5,5,5,5,5,5,5],""],[1,12,6,1,1,[6,6,6,6,6,6,6,6,6,6,6,6],""],[1,12,7,4,1,[7,7,7,7,7,7,7,7,7,7,7,7],""],[1,12,0,0,1,[8,11,8,11,8,11,8,11,8,11,8,11],""],[1,12,1,6,1,[9,10,9,10,9,10,9,10,9,10,9,10],""],[1,12,2,3,1,[12,13,12,13,12,13,12,13,12,13,12,13],""],[1,12,3,2,1,[14,15,14,15,14,15,14,15,14,15,14,15],""],[1,12,4,5,1,[3,11,3,11,3M
,11,3,11,3,11,3,11],""],[2,5,0,5,4,[15,14,13,12,11],"reverse"],[2,5,0,1,6,[14,0,2,2,0],"mirror"],[2,5,1,6,2,[2,3,2,15,13],"walk"],[2,5,6,1,2,[5,3,1,4,1],"walk"],[2,5,2,5,1,[2,1,0,15,14],"reverse"],[2,5,5,0,4,[4,3,2,1,0],"reverse"],[2,5,6,6,1,[1,6,13,1,6],"triple"],[2,5,3,6,1,[0,2,10,0,2],"triple"],[2,5,2,1,2,[0,3,6,7,5],"walk"],[2,5,2,7,4,[12,15,4,12,15],"triple"],[2,6,6,1,4,[8,7,6,5,4,3],"reverse"],[2,6,2,3,3,[6,7,8,9,10,11],"cyclic"],[2,6,1,2,4,[5,6,7,8,9,10],"cyclic"],[2,6,0,4,3,[0,15,14,13,12,11],"reverse"],[2,M
6,4,2,2,[10,11,12,13,14,15],"cyclic"],[2,6,0,7,7,[7,4,5,6,8,7],"walk"],[2,6,5,1,4,[10,15,2,10,15,2],"triple"],[2,6,1,3,3,[9,10,11,12,13,14],"cyclic"],[2,6,5,3,3,[8,14,4,8,14,4],"triple"],[2,6,6,4,5,[4,6,8,8,6,4],"mirror"],[2,6,7,3,5,[6,5,4,3,2,1],"reverse"],[2,6,6,6,4,[6,12,14,6,12,14],"triple"],[2,7,7,5,2,[11,10,9,8,7,6,5],"reverse"],[2,7,5,1,4,[5,7,13,5,7,13,5],"triple"],[2,7,3,2,6,[2,4,6,8,8,6,4],"mirror"],[2,7,3,6,1,[12,13,14,15,0,1,2],"cyclic"],[2,7,0,7,2,[2,6,10,2,6,10,2],"triple"],[2,7,6,5,2,[5,7,9,11,11,9,7M
],"mirror"],[2,7,7,4,6,[4,7,9,7,10,12,9],"walk"],[2,7,7,0,4,[13,15,1,3,3,1,15],"mirror"],[2,7,4,6,4,[10,8,5,8,9,11,9],"walk"],[2,7,7,6,6,[9,8,7,6,5,4,3],"reverse"],[2,7,6,3,1,[2,3,4,5,6,7,8],"cyclic"],[2,7,3,7,2,[1,14,12,13,15,0,3],"walk"],[2,7,5,3,1,[9,8,10,11,9,7,8],"walk"],[2,7,4,7,6,[14,13,12,11,10,9,8],"reverse"],[2,8,5,4,1,[10,9,8,7,6,5,4,3],"reverse"],[2,8,3,4,1,[14,11,14,12,11,14,15,14],"walk"],[2,8,2,5,3,[1,3,5,7,7,5,3,1],"mirror"],[2,8,4,3,5,[3,4,2,4,2,3,4,7],"walk"],[2,8,4,0,5,[4,6,8,10,10,8,6,4],"mirrorM
"],[2,8,0,7,2,[11,13,15,1,1,15,13,11],"mirror"],[2,8,3,5,4,[11,12,13,14,15,0,1,2],"cyclic"],[2,8,0,6,3,[10,12,6,10,12,6,10,12],"triple"],[2,8,1,6,2,[2,8,13,2,8,13,2,8],"triple"],[2,8,3,7,5,[7,9,11,13,13,11,9,7],"mirror"],[2,8,4,6,5,[15,2,0,14,0,2,0,14],"walk"],[2,8,2,0,2,[8,10,12,14,14,12,10,8],"mirror"],[2,8,0,2,3,[10,7,9,11,13,14,1,3],"walk"],[2,8,2,7,3,[15,0,1,2,3,4,5,6],"cyclic"],[2,8,6,2,5,[14,0,13,14,13,11,10,13],"walk"],[2,8,1,0,3,[14,15,0,1,2,3,4,5],"cyclic"],[2,8,7,5,3,[10,14,6,10,14,6,10,14],"triple"],[2,M
8,5,7,7,[0,5,11,0,5,11,0,5],"triple"],[2,9,5,5,5,[11,12,13,10,9,6,7,8,7],"walk"],[2,9,5,4,5,[5,8,0,5,8,0,5,8,0],"triple"],[2,9,1,0,6,[7,13,15,7,13,15,7,13,15],"triple"],[2,9,1,7,6,[3,4,5,6,7,8,9,10,11],"cyclic"],[2,9,7,7,1,[2,4,6,8,10,10,8,6,4],"mirror"],[2,9,6,4,6,[14,1,7,14,1,7,14,1,7],"triple"],[2,9,6,5,2,[5,2,5,4,6,7,8,6,3],"walk"],[2,9,1,4,2,[1,3,5,7,9,9,7,5,3],"mirror"],[2,9,7,1,4,[1,14,0,2,0,2,15,1,4],"walk"],[2,9,6,2,6,[7,9,2,7,9,2,7,9,2],"triple"],[2,9,7,2,4,[12,14,12,14,15,2,15,2,15],"walk"],[2,9,0,0,6,[1M
5,3,11,15,3,11,15,3,11],"triple"],[2,9,1,2,2,[15,2,3,2,15,0,15,0,3],"walk"],[2,9,7,0,6,[11,1,3,11,1,3,11,1,3],"triple"],[2,9,6,0,4,[10,12,14,0,2,2,0,14,12],"mirror"],[2,9,7,6,2,[3,4,6,8,6,9,11,14,0],"walk"],[2,9,4,5,5,[9,11,13,15,1,1,15,13,11],"mirror"],[2,9,4,3,3,[5,7,9,11,13,13,11,9,7],"mirror"],[2,9,7,3,7,[2,5,14,2,5,14,2,5,14],"triple"],[2,9,4,7,1,[8,7,8,10,11,14,15,0,2],"walk"],[2,10,6,0,5,[15,1,3,5,7,7,5,3,1,15],"mirror"],[2,10,0,7,4,[8,11,9,7,8,10,11,13,11,14],"walk"],[2,10,7,2,1,[5,4,3,2,1,0,15,14,13,12],"rM
everse"],[2,10,0,0,7,[3,2,4,7,5,8,11,14,13,10],"walk"],[2,10,7,3,2,[11,13,15,1,3,3,1,15,13,11],"mirror"],[2,10,1,0,3,[11,14,1,0,15,2,1,0,14,13],"walk"],[2,10,4,2,7,[0,2,4,6,8,8,6,4,2,0],"mirror"],[2,10,5,5,6,[7,6,5,4,3,2,1,0,15,14],"reverse"],[2,10,1,1,7,[0,15,13,0,3,5,7,5,4,2],"walk"],[2,10,6,7,2,[9,7,4,2,0,1,15,12,11,8],"walk"],[2,10,2,3,3,[0,4,11,0,4,11,0,4,11,0],"triple"],[2,10,6,1,6,[13,14,15,0,1,2,3,4,5,6],"cyclic"],[2,10,2,0,3,[8,9,7,4,2,1,3,5,7,6],"walk"],[2,10,3,7,4,[11,14,0,14,11,12,9,7,8,7],"walk"],[2,10M
,2,7,1,[13,12,11,10,9,8,7,6,5,4],"reverse"],[2,10,7,4,1,[3,5,2,4,5,6,7,8,5,8],"walk"],[2,10,5,1,2,[11,10,13,15,14,1,15,13,15,14],"walk"],[2,10,3,2,5,[3,6,14,3,6,14,3,6,14,3],"triple"],[2,10,3,5,2,[3,5,7,9,11,11,9,7,5,3],"mirror"],[2,10,3,1,2,[15,4,7,15,4,7,15,4,7,15],"triple"],[2,10,2,1,5,[6,8,10,12,14,14,12,10,8,6],"mirror"],[2,10,4,4,6,[15,12,10,7,9,8,7,9,7,8],"walk"],[2,11,2,5,6,[11,13,15,1,3,5,5,3,1,15,13],"mirror"],[2,11,3,6,7,[5,7,10,13,11,9,12,13,15,2,4],"walk"],[2,11,4,1,2,[6,10,2,6,10,2,6,10,2,6,10],"triplM
e"],[2,11,0,0,2,[2,15,12,9,8,10,8,10,8,9,10],"walk"],[2,11,4,7,2,[2,4,13,2,4,13,2,4,13,2,4],"triple"],[2,11,1,7,4,[4,6,8,10,12,14,14,12,10,8,6],"mirror"],[2,11,6,5,2,[8,10,12,14,0,2,2,0,14,12,10],"mirror"],[2,11,5,6,4,[7,4,2,4,3,4,3,2,4,7,4],"walk"],[2,11,7,7,6,[1,2,3,4,5,6,7,8,9,10,11],"cyclic"],[2,11,6,7,7,[12,11,10,9,8,7,6,5,4,3,2],"reverse"],[2,11,3,4,4,[3,5,11,3,5,11,3,5,11,3,5],"triple"],[2,11,5,4,2,[6,8,10,12,14,0,0,14,12,10,8],"mirror"],[2,11,0,3,6,[14,11,10,9,7,5,7,4,3,4,1],"walk"],[2,11,7,0,4,[8,5,4,5,4,1M
,14,13,0,2,5],"walk"],[2,11,3,0,7,[1,3,5,7,9,11,11,9,7,5,3],"mirror"],[2,11,5,1,5,[10,12,14,0,2,4,4,2,0,14,12],"mirror"],[2,11,6,2,4,[4,5,6,7,8,9,10,11,12,13,14],"cyclic"],[2,11,4,0,5,[5,7,9,11,13,15,15,13,11,9,7],"mirror"],[2,11,6,0,4,[1,0,15,14,13,12,11,10,9,8,7],"reverse"],[2,11,5,2,1,[7,9,11,13,15,1,1,15,13,11,9],"mirror"],[2,11,6,1,2,[10,12,15,2,15,2,0,1,2,0,3],"walk"],[2,11,2,6,4,[11,14,6,11,14,6,11,14,6,11,14],"triple"],[2,11,7,5,4,[8,9,10,11,12,13,14,15,0,1,2],"cyclic"],[2,11,5,0,5,[12,15,2,5,3,2,4,5,8,11,1M
3],"walk"],[2,12,0,2,4,[15,0,15,1,15,14,0,2,0,3,5,6],"walk"],[2,12,7,2,5,[12,11,10,9,10,9,10,13,10,7,9,10],"walk"],[2,12,6,6,3,[12,2,8,12,2,8,12,2,8,12,2,8],"triple"],[2,12,7,7,6,[9,11,8,9,8,11,13,12,14,15,1,2],"walk"],[2,12,3,3,2,[0,1,2,3,4,5,6,7,8,9,10,11],"cyclic"],[2,12,7,1,2,[2,4,11,2,4,11,2,4,11,2,4,11],"triple"],[2,12,2,1,5,[11,8,7,9,8,9,11,13,15,1,3,5],"walk"],[2,12,7,5,1,[7,8,9,10,11,12,13,14,15,0,1,2],"cyclic"],[2,12,4,0,7,[14,13,12,9,11,10,7,8,6,3,2,4],"walk"],[2,12,5,0,2,[8,13,1,8,13,1,8,13,1,8,13,1],"tM
riple"],[2,12,2,4,1,[3,5,7,9,11,13,13,11,9,7,5,3],"mirror"],[2,12,1,0,3,[9,11,13,15,1,3,3,1,15,13,11,9],"mirror"],[2,12,1,1,5,[6,11,2,6,11,2,6,11,2,6,11,2],"triple"],[2,12,2,0,5,[5,9,15,5,9,15,5,9,15,5,9,15],"triple"],[2,12,7,6,5,[12,0,6,12,0,6,12,0,6,12,0,6],"triple"],[2,12,1,3,5,[7,12,15,7,12,15,7,12,15,7,12,15],"triple"],[2,12,5,4,4,[2,4,6,8,10,12,12,10,8,6,4,2],"mirror"],[2,12,5,3,1,[14,15,1,0,2,4,6,4,7,4,1,4],"walk"],[2,12,2,7,2,[9,10,13,15,0,14,15,0,13,15,1,3],"walk"],[2,12,0,4,6,[4,7,9,6,4,6,4,3,2,3,5,4],"waM
lk"],[2,12,1,7,7,[14,2,6,14,2,6,14,2,6,14,2,6],"triple"],[2,12,6,1,1,[15,1,3,5,7,9,9,7,5,3,1,15],"mirror"],[2,12,4,4,2,[9,6,3,2,15,12,9,6,7,9,11,8],"walk"],[2,12,4,1,5,[8,9,8,6,3,0,14,15,12,13,0,14],"walk"],[3,12,0,0,8,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],""]];
var PHI=(1+Math.sqrt(5))/2,FIB=[1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987];
function rungRatio(n){return FIB[n]/FIB[n-1]}
function cfString(n){if(n===1)return"[1]";if(n===2)return"[2]";var a=[];for(var i=0;i<n-3;i++)a.push("1");a.push("2");return"[1;M
function f(v){var s=v.toFixed(1);if(+s===0)return"0";return s.replace(/\.?0+$/,"")}
function f3(v){var s=v.toFixed(3);if(+s===0)return"0";return s.replace(/\.?0+$/,"")}
function poly(pts,close){var d="M"+pts.map(function(q){return f(q[0])+" "+f(q[1])}).join(" L");return d+(close===false?"":"Z")}
function arcPts(cx,cy,r,a0,a1,n){var o=[];for(var i=0;i<=n;i++){var a=a0+(a1-a0)*i/n;o.push([cx+r*Math.cos(a),cy+r*Math.sin(a)])}return o}
function ang(cx,cy,x,y){return Math.atan2(y-cy,x-cx)}
eep(cen,ent,ex){var cx=cen[0],cy=cen[1],r=Math.hypot(ent[0]-cx,ent[1]-cy),a0=ang(cx,cy,ent[0],ent[1]),a1=ang(cx,cy,ex[0],ex[1]);while(a1-a0>Math.PI)a1-=2*Math.PI;while(a0-a1>Math.PI)a1+=2*Math.PI;return arcPts(cx,cy,r,a0,a1,18)}
function spiralCuts(x,y,w,h,limit){var out=[],mode=0,eps=1e-7;while(w>eps&&h>eps&&out.length<limit){var s=Math.min(w,h),sq,cen,ent,ex;if(mode===0){sq=[x,y,s];cen=[x+s,y];ent=[x,y];ex=[x+s,y+s];x+=s;w-=s}else if(mode===1){sq=[x,y+h-s,s];cen=[x,y+h-s];ent=[x,y+h];ex=[x+s,y+h-s];h-=s}else if(mM
ode===2){sq=[x+w-s,y,s];cen=[x+w-s,y+s];ent=[x+w,y+s];ex=[x+w-s,y];w-=s}else{sq=[x,y,s];cen=[x+s,y+s];ent=[x+s,y];ex=[x,y+s];y+=s;h-=s}out.push([sq,cen,ent,ex]);mode=(mode+1)%4}return out}
function RNG(seed){this.s=((Math.imul(seed,2654435761)+12345)>>>0)||1}
RNG.prototype.r=function(){var s=this.s;s=(s^((s<<13)>>>0))>>>0;s=(s^(s>>>17))>>>0;s=(s^((s<<5)>>>0))>>>0;this.s=s;return s/4294967295};
RNG.prototype.i=function(n){return Math.floor(this.r()*n)%n};
RNG.prototype.pick=function(a){return a[this.i(a.length)]};
classic:{paper:"#F2EBDC",ink:"#1A1A1A",a:"#D62828",b:"#1D4E89",c:"#F4C430",mid:"#8C7A5B",dark:"#0E0E0E"},
nocturne:{paper:"#1A1D24",ink:"#E8E3D6",a:"#E2453C",b:"#4FA8D8",c:"#F2C41E",mid:"#4A4E58",dark:"#0A0C0E"},
sepia:{paper:"#EFE3C8",ink:"#3A2A18",a:"#9B4A2A",b:"#6B5A3A",c:"#C9A063",mid:"#B89A6A",dark:"#2B1F12"},
blueprint:{paper:"#0F2A4A",ink:"#BFE3FF",a:"#FFFFFF",b:"#5FB0E8",c:"#FFD166",mid:"#2E5A8A",dark:"#071A30"},
mono:{paper:"#F4F2EE",ink:"#111111",a:"#333333",b:"#777777",c:"#BBBBBB",mid:"#999999",M
neon:{paper:"#0B0B12",ink:"#F5F5FF",a:"#FF2E88",b:"#00E5FF",c:"#C6FF00",mid:"#4B3F72",dark:"#05050A"},
pastel:{paper:"#FBF6EE",ink:"#5A5560",a:"#F7A9A8",b:"#A7C7E7",c:"#F9E79F",mid:"#C9BBD0",dark:"#8E8A96"},
ochre:{paper:"#E8DCC0",ink:"#2E2418",a:"#C1541F",b:"#6E7C6E",c:"#D9A441",mid:"#8C7A5B",dark:"#3A332B"}};
var DARKPAL={nocturne:1,blueprint:1,neon:1};
function RECT(x,y,s,fill,extra){return'<rect x="'+f(x)+'" y="'+f(y)+'" width="'+f(s)+'" height="'+f(s)+'" fill="'+fill+'"'+(extra||"")+'/>'}
tion L_euclid(x,y,s,p,r){var o=[RECT(x,y,s,p.paper)];for(var k=1;k<6;k++)o.push('<path d="'+poly([[x,y+s*k/6],[x+s,y+s*k/6]])+'" stroke="'+p.ink+'" stroke-width=".5" opacity=".5"/>');o.push('<path d="'+poly([[x,y],[x+s,y+s]])+'" stroke="'+p.ink+'" stroke-width=".8"/>');o.push('<circle cx="'+f(x+s*.5)+'" cy="'+f(y+s*.5)+'" r="'+f(s*.3)+'" fill="none" stroke="'+p.ink+'" stroke-width=".6" opacity=".6"/>');return o.join("")}
function L_renais(x,y,s,p,r){var o=[RECT(x,y,s,p.mid)],k=0;while(k<s){o.push('<path d="'+poly([M
[x+k,y],[x,y+k]])+'" stroke="'+p.dark+'" stroke-width=".7" opacity=".55"/>');k+=6}return o.join("")}
function L_bauhaus(x,y,s,p,r){return RECT(x,y,s,r.pick([p.a,p.b,p.c]))+'<circle cx="'+f(x+s/2)+'" cy="'+f(y+s/2)+'" r="'+f(s/3.2)+'" fill="'+p.ink+'"/>'}
function L_destijl(x,y,s,p,r){var a=s*.38,b=s*.62,w=Math.max(2,s/22);return RECT(x,y,s,p.paper)+'<rect x="'+f(x)+'" y="'+f(y)+'" width="'+f(a)+'" height="'+f(b)+'" fill="'+p.a+'"/><rect x="'+f(x+a)+'" y="'+f(y+b)+'" width="'+f(s-a)+'" height="'+f(s-b)+'" fill="'+p.M
b+'"/><path d="'+poly([[x+a,y],[x+a,y+s]])+'" stroke="'+p.dark+'" stroke-width="'+f(w)+'"/><path d="'+poly([[x,y+b],[x+s,y+b]])+'" stroke="'+p.dark+'" stroke-width="'+f(w)+'"/>'}
function L_cubist(x,y,s,p,r){var cs=[[x,y],[x+s,y],[x+s,y+s],[x,y+s]],m=[x+s*(.3+.4*r.r()),y+s*(.3+.4*r.r())],col=[p.mid,p.paper,p.b,p.dark,p.c],o="";for(var j=0;j<4;j++)o+='<path d="'+poly([cs[j],cs[(j+1)%4],m])+'" fill="'+r.pick(col)+'" stroke="'+p.dark+'" stroke-width=".6"/>';return o}
function L_op(x,y,s,p,r){var o=[RECT(x,y,s,p.paper)M
],w=Math.max(2,s/16),k=0;while(k<s){o.push('<rect x="'+f(x+k)+'" y="'+f(y)+'" width="'+f(Math.min(w,s-k))+'" height="'+f(s)+'" fill="'+p.ink+'"/>');k+=w*2}return'<g class="op">'+o.join("")+'</g>'}
function L_halftone(x,y,s,p,r){var pid="h"+Math.trunc(x)+"_"+Math.trunc(y),cell=Math.max(9,s/12);return'<pattern id="'+pid+'" x="'+f(x)+'" y="'+f(y)+'" width="'+f(cell)+'" height="'+f(cell)+'" patternUnits="userSpaceOnUse"><rect width="'+f(cell)+'" height="'+f(cell)+'" fill="'+p.dark+'"/><circle cx="'+f(cell/2)+'" cy="'+fM
(cell/2)+'" r="'+f(cell*.34)+'" fill="'+p.paper+'"/></pattern><g class="ht"><rect x="'+f(x)+'" y="'+f(y)+'" width="'+f(s)+'" height="'+f(s)+'" fill="url(#'+pid+')"/><rect x="'+f(x)+'" y="'+f(y)+'" width="'+f(s)+'" height="'+f(s)+'" fill="'+p.dark+'" opacity=".0"></rect></g>'}
function L_minimal(x,y,s,p,r){return RECT(x,y,s,p.dark)+RECT(x+s*.191,y+s*.191,s*.618,p.paper)}
function L_constr(x,y,s,p,r){return RECT(x,y,s,p.paper)+'<path d="'+poly([[x,y+s],[x+s,y],[x+s,y+s*.55]])+'" fill="'+p.a+'"/><path d="'+poly([[x,y+M
s*.2],[x+s*.7,y+s*.2]])+'" stroke="'+p.dark+'" stroke-width="'+f(Math.max(1.5,s/30))+'"/><circle cx="'+f(x+s*.22)+'" cy="'+f(y+s*.72)+'" r="'+f(s*.08)+'" fill="'+p.dark+'"/>'}
function L_suprem(x,y,s,p,r){var cx=x+s/2,cy=y+s/2,h=s*.3;return RECT(x,y,s,p.paper)+'<rect x="'+f(cx-h)+'" y="'+f(cy-h)+'" width="'+f(2*h)+'" height="'+f(2*h)+'" fill="'+p.dark+'" transform="rotate(12 '+f(cx)+' '+f(cy)+')"/><rect x="'+f(x+s*.68)+'" y="'+f(y+s*.12)+'" width="'+f(s*.18)+'" height="'+f(s*.06)+'" fill="'+p.a+'" transform="rotateM
(-20 '+f(x+s*.77)+' '+f(y+s*.15)+')"/>'}
function L_deco(x,y,s,p,r){var o=[RECT(x,y,s,p.dark)],cx=x+s/2,cy=y+s;for(var k=0;k<9;k++){var a=Math.PI+k*Math.PI/8;o.push('<path d="'+poly([[cx,cy],[cx+s*1.2*Math.cos(a),cy+s*1.2*Math.sin(a)]])+'" stroke="'+p.c+'" stroke-width="'+f(Math.max(1,s/40))+'"/>')}var id="d"+Math.trunc(x)+Math.trunc(y);o.push('<clipPath id="'+id+'"><rect x="'+f(x)+'" y="'+f(y)+'" width="'+f(s)+'" height="'+f(s)+'"/></clipPath>');return'<g clip-path="url(#'+id+')">'+o.join("")+'</g>'}
rih(x,y,s,p,r){var cx=x+s/2,cy=y+s/2,R=s*.42,outer=[],inner=[],star=[],i;for(i=0;i<5;i++){outer.push([cx+R*Math.cos(-Math.PI/2+i*2*Math.PI/5),cy+R*Math.sin(-Math.PI/2+i*2*Math.PI/5)]);inner.push([cx+R/(PHI*PHI)*Math.cos(Math.PI/2+i*2*Math.PI/5),cy+R/(PHI*PHI)*Math.sin(Math.PI/2+i*2*Math.PI/5)])}for(i=0;i<5;i++){star.push(outer[i]);star.push(inner[(i+3)%5])}return RECT(x,y,s,p.paper)+'<path d="'+poly(star)+'" fill="'+p.a+'" stroke="'+p.ink+'" stroke-width=".8"/><path d="'+poly(inner)+'" fill="'+p.b+'"/>'}
_ukiyoe(x,y,s,p,r){var pts=[];for(var t=0;t<11;t++)pts.push([x+s*t/10,y+s*(.62-.18*Math.sin(t/10*Math.PI*2))]);var wave=poly(pts,false)+" L"+f(x+s)+" "+f(y+s)+" L"+f(x)+" "+f(y+s)+" Z";return RECT(x,y,s,p.paper)+'<path d="'+wave+'" fill="'+p.b+'"/><path d="'+poly(pts,false)+'" fill="none" stroke="'+p.paper+'" stroke-width="'+f(Math.max(1,s/26))+'"/><circle cx="'+f(x+s*.78)+'" cy="'+f(y+s*.22)+'" r="'+f(s*.09)+'" fill="'+p.a+'"/>'}
function L_pop(x,y,s,p,r){var o=[RECT(x,y,s,p.paper)],n=Math.min(9,Math.max(4,Math.trM
unc(s/11))),d=s/n;for(var i=0;i<n;i++)for(var j=0;j<n;j++)if((i+j)%2===0)o.push('<circle cx="'+f(x+(i+.5)*d)+'" cy="'+f(y+(j+.5)*d)+'" r="'+f(d*.36)+'" fill="'+p.a+'"/>');o.push('<path d="'+poly([[x+s,y],[x+s,y+s],[x+s*.45,y+s]])+'" fill="'+p.c+'" opacity=".85"/>');return o.join("")}
function L_brutal(x,y,s,p,r){var o=[RECT(x,y,s,p.mid)],n=4,w=f(Math.max(1.2,s/50));for(var k=1;k<n;k++){o.push('<path d="'+poly([[x+s*k/n,y],[x+s*k/n,y+s]])+'" stroke="'+p.dark+'" stroke-width="'+w+'"/>');o.push('<path d="'+poly([[x,y+M
s*k/n],[x+s,y+s*k/n]])+'" stroke="'+p.dark+'" stroke-width="'+w+'"/>')}o.push(RECT(x+s*.5,y+s*.5,s*.5,p.dark));return o.join("")}
function L_blue(x,y,s,p,r){var cx=x+s/2,cy=y+s/2;return RECT(x,y,s,p.dark)+'<circle cx="'+f(cx)+'" cy="'+f(cy)+'" r="'+f(s*.36)+'" fill="none" stroke="'+p.ink+'" stroke-width=".8"/><rect x="'+f(x+s*.18)+'" y="'+f(y+s*.18)+'" width="'+f(s*.64)+'" height="'+f(s*.64)+'" fill="none" stroke="'+p.ink+'" stroke-width=".8"/><path d="'+poly([[x,y],[x+s,y+s]])+'M'+f(x+s)+' '+f(y)+'L'+f(x)+' '+f(y+M
s)+'" stroke="'+p.ink+'" stroke-width=".5" opacity=".6" fill="none"/><path d="M'+f(cx)+' '+f(y+s*.1)+'V'+f(y+s*.9)+'M'+f(x+s*.1)+' '+f(cy)+'H'+f(x+s*.9)+'" stroke="'+p.ink+'" stroke-width=".5" opacity=".6"/>'}
var LENSES=[["EUCLID",L_euclid],["RENAISSANCE",L_renais],["BAUHAUS",L_bauhaus],["DE STIJL",L_destijl],["CUBIST",L_cubist],["OP ART",L_op],["HALFTONE",L_halftone],["MINIMAL",L_minimal],["CONSTRUCTIVIST",L_constr],["SUPREMATIST",L_suprem],["ART DECO",L_deco],["GIRIH",L_girih],["UKIYO-E",L_ukiyoe],["POP",L_pop],M
["BRUTALIST",L_brutal],["BLUEPRINT",L_blue]];
var MONO="ui-monospace,Menlo,Consolas,monospace",MARGIN=40,CAP=40;
function pad3(n){return(n<10?"00":n<100?"0":"")+n}
function compose(rung,orient,lensSeq,palName,anim,idx,tier,isPhi){
  var p=PAL[palName],r=new RNG(idx*7919+rung*31+orient);
  var ratio=isPhi?PHI:rungRatio(rung),limit=isPhi?12:rung;
  var portrait=(orient%4===1||orient%4===3);
  var CW=portrait?700:1000,CH=portrait?1000:700,aw=CW-2*MARGIN,ah=CH-2*MARGIN-CAP,W,H;
  if(portrait){W=Math.min(ah,aw*ratio);H=M
W/ratio}else{W=Math.min(aw,ah*ratio);H=W/ratio}
  var cuts=spiralCuts(0,0,W,H,limit),ox,oy;
  if(portrait){ox=(CW-H)/2;oy=MARGIN+(ah-W)/2}else{ox=(CW-W)/2;oy=MARGIN+(ah-H)/2}
  var rot=orient%4,T=[
    "translate("+f(ox)+","+f(oy)+")",
    "translate("+f(ox+H)+","+f(oy)+") rotate(90)",
    "translate("+f(ox+W)+","+f(oy+H)+") rotate(180)",
    "translate("+f(ox)+","+f(oy+W)+") rotate(270)"][rot];
  if(orient>=4)T+=" translate("+f(W)+",0) scale(-1,1)";
  var deep=spiralCuts(0,0,W,H,40),last=deep[deep.length-1][0],eyeM
=[last[0]+last[2]/2,last[1]+last[2]/2];
  var squares=[],spiral=[],n=lensSeq.length;
  for(var i=0;i<cuts.length;i++){
    var sq=cuts[i][0],cen=cuts[i][1],ent=cuts[i][2],ex=cuts[i][3],x=sq[0],y=sq[1],s=sq[2];
    var li=lensSeq[i%n],body=LENSES[li][1](x,y,s,p,r);
    if(anim==="morph"){var lj=lensSeq[(i+1)%n],b2=LENSES[lj][1](x,y,s,p,new RNG(idx*13+i));body='<g>'+body+'</g><g opacity="0">'+b2+'<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;.35;.5;.85;1" dur="12s" begin="'+f(i*.3)+'s" repeatCount="M
    if(anim==="reveal"){var t0=.01+i/cuts.length*.6;body='<g>'+body+'<animate attributeName="opacity" values="0;0;1;1;0" keyTimes="0;'+f3(t0)+';'+f3(t0+.06)+';.9;1" dur="9s" repeatCount="indefinite"/></g>'}
    if(anim==="breathe"){var cx=x+s/2,cy=y+s/2;body='<g transform="translate('+f(cx)+','+f(cy)+')"><g><animateTransform attributeName="transform" type="scale" values="1;1.035;1" dur="'+f(4+i*.5)+'s" repeatCount="indefinite"/><g transform="translate('+f(-cx)+','+f(-cy)+')">'+body+'</g></g></g>M
    if(anim==="zoom"){var lk=lensSeq[((i-1)%n+n)%n],b3=LENSES[lk][1](x,y,s,p,new RNG(idx*17+i));body='<g>'+body+'</g><g opacity="0">'+b3+'<animate attributeName="opacity" from="0" to="1" dur="8s" repeatCount="indefinite"/></g>'}
    squares.push(body);spiral=spiral.concat(sweep(cen,ent,ex))
  var spd=poly(spiral,false),spLen=0;
  for(i=0;i<spiral.length-1;i++)spLen+=Math.hypot(spiral[i+1][0]-spiral[i][0],spiral[i+1][1]-spiral[i][1]);
  var line=DARKPAL[palName]?p.ink:p.dark;
  var spiralEl='<path d="'+spd+'"M
 fill="none" stroke="'+line+'" stroke-width="4" stroke-linecap="round" opacity=".88"';
  if(anim==="draw")spiralEl+=' stroke-dasharray="'+f(spLen)+'" stroke-dashoffset="'+f(spLen)+'"><animate attributeName="stroke-dashoffset" values="'+f(spLen)+';0;0;'+f(spLen)+'" keyTimes="0;.45;.7;1" dur="10s" repeatCount="indefinite"/></path>';else spiralEl+='/>';
  var keys="";for(i=0;i<cuts.length;i++){var q=cuts[i][0];keys+='<rect x="'+f(q[0])+'" y="'+f(q[1])+'" width="'+f(q[2])+'" height="'+f(q[2])+'" fill="none" stroke="'+lM
ine+'" stroke-width="1.6"/>'}
  var extra="";if(anim==="orbit")extra='<circle r="7" fill="'+p.c+'" stroke="'+p.dark+'" stroke-width="2"><animateMotion dur="14s" repeatCount="indefinite" path="'+spd+'"/></circle>';
  var inner='<g transform="'+T+'">'+squares.join("")+spiralEl+keys+extra+'</g>';
  if(anim==="zoom"){var vals=[],kt=[];for(var k=0;k<9;k++){vals.push(f3(Math.pow(PHI,k/8)));kt.push(f3(k/8))}
    inner='<clipPath id="cz"><rect x="'+f(MARGIN)+'" y="'+f(MARGIN)+'" width="'+f(aw)+'" height="'+f(ah)+'"/></clipM
Path><g clip-path="url(#cz)"><g transform="'+T+'"><g transform="translate('+f(eye[0])+','+f(eye[1])+')"><g><animateTransform attributeName="transform" type="scale" values="'+vals.join(";")+'" keyTimes="'+kt.join(";")+'" dur="8s" repeatCount="indefinite"/><g><animateTransform attributeName="transform" type="rotate" from="0" to="90" dur="8s" repeatCount="indefinite"/><g transform="translate('+f(-eye[0])+','+f(-eye[1])+')">'+squares.join("")+spiralEl+keys+'</g></g></g></g></g></g>'}
  if(anim==="hue"){fM
ilt='<filter id="hue"><feColorMatrix type="hueRotate" values="0"><animate attributeName="values" from="0" to="360" dur="30s" repeatCount="indefinite"/></feColorMatrix></filter>';inner='<g filter="url(#hue)">'+inner+'</g>'}
  if(anim==="drift")filt+='<style>.op rect:nth-child(n+2){animation:dr 6s linear infinite}@keyframes dr{to{transform:translateX(12px)}}.ht{animation:pu 3s ease-in-out infinite alternate}@keyframes pu{to{opacity:.45}}</style>';
  var cf=isPhi?"[1;1,1,1,\u2026]":cfString(rung),rt=isPhi?"\u03c6":FIBM
[rung]+"/"+FIB[rung-1];
  var cap='<rect x="0" y="'+(CH-CAP)+'" width="'+CW+'" height="'+CAP+'" fill="#0E0E0E"/><text x="22" y="'+(CH-15)+'" font-family="'+MONO+'" font-size="11.5" letter-spacing="1.5" fill="#E8E3D6">'+cf+'  \u00b7  '+rt+'  \u00b7  '+tier+'</text><text x="'+(CW-22)+'" y="'+(CH-15)+'" font-family="'+MONO+'" font-size="11.5" letter-spacing="1.5" text-anchor="end" fill="#E8E3D6">'+pad3(idx)+' / 161</text>';
  var bg=DARKPAL[palName]?p.dark:p.paper;
  return{svg:'<svg xmlns="http://www.w3.org/2000/svg"M
 viewBox="0 0 '+CW+' '+CH+'"><rect width="'+CW+'" height="'+CH+'" fill="'+bg+'"/>'+filt+inner+cap+'</svg>',cf:cf,ratio:rt,squares:cuts.length,CW:CW,CH:CH}
var TAIL='<script>(function(){function painted(){return Promise.race([Promise.resolve(window.__phiPainted).catch(function(){}),new Promise(function(r){setTimeout(r,3000)})])}function shot(){painted().then(function(){var c=document.querySelector("canvas");if(c){try{parent.postMessage({type:"acme:screenshot",dataUrl:c.toDataURL("image/png")},"*")}catch(x){}}})}wM
indow.addEventListener("load",function(){painted().then(function(){try{parent.postMessage({type:"acme:preview:ready"},"*")}catch(e){}})});window.addEventListener("message",function(e){if(e.data&&e.data.type==="acme:capture")shot()});if(window.__phiCap){window.__phiCap=0;shot()}})();<\/script>';
/* PHI.000 -> piece 001 ... PHI.160 -> piece 161 (hard cap 161 => 3-digit, zero-based child names). Parent / unknown / out-of-range -> seeded random piece. */
function tokenOf(A){var n=A.tokenNumber;return(typeof n==="numberM
"&&n>=0&&n<SUPPLY&&n===Math.floor(n))?n+1:Math.floor(A.random()*SUPPLY)+1}
function nameOf(A,t){var p=A.parentAsset||PREFIX;return A.tokenNumber===t-1?(A.assetId||p+"."+pad3(t-1)):p}
function reportTraits(A,d,t,out){
  function trait(name,value){try{A.trait(name,value)}catch(e){}try{window.parent.postMessage({type:"acme:trait",name:name,value:value},"*")}catch(e){}}
  var tier=TIERS[d[0]],isPhi=d[0]===3,uniq={},names=[];
  d[5].forEach(function(i){if(!uniq[i]){uniq[i]=1;names.push(LENSES[i][0])}});
  trait("Rung",isPhi?"\u03c6 (infinite)":String(d[1]));
  trait("Ratio",out.ratio);
  trait("Continued Fraction",out.cf);
  trait("Squares",String(out.squares));
  trait("Orientation",ORIENT[d[2]]);
  trait("Palette",PALS[d[3]]);
  trait("Animation",ANIMS[d[4]]);
  trait("Sequence",isPhi?"all sixteen":tier==="ORIGIN"?"single":tier==="PLATE"?(names.length>1?"pair":"single"):d[6]);
  trait("Lead Lens",LENSES[d[5][0]][0]);
  trait("Distinct Lenses",String(names.length));
  if(isPhi)trait("The Limit","1 of 1");
/* still = a fully composed moment of the loop; used only by automated renderers (navigator.webdriver) so server thumbnails never catch a half-drawn spiral or half-revealed piece */
function buildPieceHtml(t,out,title,anim){
  var still=anim==="draw"?6:anim==="reveal"?7.2:0;
  return '<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>'+title+'</title>'
    +'<style>html,body{margin:0;width:100%;height:100%;background:#0E0E0E;overflow:hidden}#M
w{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}#w svg{width:100%;height:100%}canvas{position:fixed;left:-9999px;top:0}</style></head>'
    +'<body><div id="w">'+out.svg+'</div><canvas width="'+out.CW+'" height="'+out.CH+'"></canvas>'
    +'<script>(function(){var s=document.querySelector("#w svg"),c=document.querySelector("canvas"),x=c.getContext("2d");if(navigator.webdriver){try{s.pauseAnimations();s.setCurrentTime('+still+')}catch(e){}}function paint(){returnM
 new Promise(function(done){try{var k=s.cloneNode(true);k.setAttribute("width",c.width);k.setAttribute("height",c.height);k.querySelectorAll("animateMotion").forEach(function(e){e.parentNode.parentNode.removeChild(e.parentNode)});k.querySelectorAll("animate,animateTransform,style").forEach(function(e){e.parentNode.removeChild(e)});k.querySelectorAll("[stroke-dashoffset]").forEach(function(e){e.removeAttribute("stroke-dashoffset")});var b=new Blob([new XMLSerializer().serializeToString(k)],{type:"image/svg+xml"}),u=M
URL.createObjectURL(b),im=new Image();im.onload=function(){try{x.fillStyle="#0E0E0E";x.fillRect(0,0,c.width,c.height);x.drawImage(im,0,0,c.width,c.height)}catch(e){}URL.revokeObjectURL(u);done()};im.onerror=function(){URL.revokeObjectURL(u);done()};im.src=u}catch(e){done()}})}window.__phiPainted=paint();setTimeout(paint,1500)})();<\/script>'
    +'</body></html>';
function renderPiece(html){html=html.replace("<head>",'<head><base href="https://acme.pics/">').replace("</body></html>",TAIL+"</body></html>");documenM
t.open();document.write(html);document.close()}
function boot(msg){var b=document.getElementById("boot");if(b)b.textContent=msg}
function summon(A,t){
  var name=nameOf(A,t),d=PLAN[t-1];
  boot("converging "+name+"\u2026");
  var out=compose(d[1],d[2],d[5],PALS[d[3]],ANIMS[d[4]],t,TIERS[d[0]],d[0]===3);
  reportTraits(A,d,t,out);
  renderPiece(buildPieceHtml(t,out,name+" \u2014 "+pad3(t)+" / "+SUPPLY+" \u2014 "+TIERS[d[0]],ANIMS[d[4]]));
async function raw(id){
  var res=await fetch("https://acme.pics/api/assets/M
"+encodeURIComponent(id)+"/content");
  if(!res.ok)throw new Error("asset "+id+" HTTP "+res.status);
  var buf=await res.arrayBuffer(),v=new Uint8Array(buf);
  if(v.length>=2&&v[0]===31&&v[1]===139)return await new Response(new Blob([buf]).stream().pipeThrough(new DecompressionStream("gzip"))).text();
  return new TextDecoder().decode(buf);
/* same asset-name parsing as ACMERUNTIME010; only used if the runtime asset cannot be fetched (offline copy, API outage) */
function localRuntime(){
  var m=location.pathnameM
.match(/\/api\/assets\/([^/]+)\/content/),id=m?decodeURIComponent(m[1]):(new URLSearchParams(location.search).get("asset")||null);
  var i=id?id.indexOf("."):-1,n=i<0?NaN:parseInt(id.slice(i+1),10);
  return{assetId:id,parentAsset:id?(i<0?id:id.slice(0,i)):null,childName:i<0?null:id.slice(i+1),tokenNumber:isNaN(n)?null:n,random:Math.random,trait:function(){}};
async function loadRuntime(){
    A=await Promise.race([(async function(){var src=await raw("ACMERUNTIME010");if(lM
ate)throw new Error("late");var s=document.createElement("script");s.textContent=src;document.head.appendChild(s);var R=window.acme;await R.ready;return R})(),new Promise(function(_,no){setTimeout(function(){late=true;no(new Error("runtime timeout"))},10000)})]);
  }catch(e){console.warn("ACME runtime unavailable, using local fallback:",e&&e.message);A=null}
  if(!A||typeof A.random!=="function")A=localRuntime();
  return {api:A,token:tokenOf(A)};
async function main(){
  window.addEventListener("message",functioM
n(e){if(e.data&&e.data.type==="acme:capture")window.__phiCap=1});
  boot("loading ACME runtime\u2026");
  var loaded=await loadRuntime();
  summon(loaded.api,loaded.token);
main().catch(function(e){console.error(e);boot("load failed: "+e.message)});
</script></body></html>h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"16"}h!
DjB0xba6259efb92c3272425b1efeba2be087730609a37c9cb47bff49971938039ce7
DjB0xc33c10a51ed86ab620a32d8a666137b445d49f170d1c1ef9f2cc0d9644aa284e
OjLL0xbdf94b03de7bcff926244a4f66927b2c860cc325e82a57e3315cb1b7403d749d=|lifi
DjB0xfba866afa1401c53b7a24cef25c5a3b70a85064168a9954709972d77705968b8
DjB0x83fe664010530a1a3cf5ca28b15255336b6a8cb0c7143892a33f9e56864404ad
DjB0x960e50d85f905c451efb82579c492b1634513ef0b400b15b46cc982a11f6a07c
DjB0x75b84ebcd4653a5b811d7abf40626e45335970b1c3be5d3b89d397076d37e2a2
DjB0x9efd413e9505ec2d6b86804ea4599d4a1ce08577c74e170dd993d89deb6ff7f7
GjE=:ETH.USDT:0xf1d99b62691c79454cb970453f90e914875d33a2:50754287075/1/0
6j4vVq:to:USDT(TRON):TVApnmpNFPKJ7Za1ixd7AbEERh5f2fkznj
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"1000"}h!
text/html;charset=utf-8
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"101"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"750"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"47643397261"}h!
text/html;charset=utf-8
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ordi","amt":"5"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"TSLAU","amt":"1866928"}h!
text/plain;charset=utf-8
{"p":"tap","op":"token-send","items":[{"tick":"dmt-nat","amt":"23000000000","address":"bc1q58r99w8rghycfdgys9glk7ctk0nspzqlty5pne"}]}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
OCM GENESIS: A CONSTRUCTIVE RECOVERY PROOF
An English and mathematical companion to the Onchain Rosetta Stones
Version 1. Composed 24 September 2026; revised before inscription.
All 10000 static OCM Genesis pictures can be recovered and drawn from the
Bitcoin data identified here. The Onchain Rosetta Stones preserve the
artwork's ingredients and the instructions for reading them. This companion
explains the recovery in English and mathematics, down to the shapes,
colours and position of every sample in every pictuM
re. The claim assumes
intact data, a trustworthy starting reference, a reader who can understand
the instructions, and the means to carry out the calculations. Fingerprint
comparisons also rely on the hash assumption stated in section 1.
A picture can become inaccessible even while its bytes survive. The website
that displayed it may close; the software that understood it may disappear.
Preserving the knowledge needed to read those bytes gives the work another
way to survive. Here that knowledge leads all the way M
each of the ten thousand works has a specified 500 by 500 colour grid.
The Stones were made to function as a modern Rosetta Stone. Across the
series, ideas appear as ordinary language, numerical tables, worked examples,
source code and checks that a reader can repeat. Stone Two includes an
introduction in seven languages. These overlapping clues help a reader
propose meanings for unfamiliar symbols, test those meanings, and gradually
recover the instructions needed to see the pictures.
ChainMonkey) began on Ethereum in September 2021. All 10000 SVG
artworks were already encoded on-chain in its smart contract. The
contract carried the drawing pieces and rules for producing the complete
images and their metadata, so the SVGs could be generated directly from
Ethereum. This was an important achievement in its own right: the
blockchain held what was needed to produce the collection's SVGs.
On 8 February 2023, the collection's generator was inscribed on Bitcoin as
inscription 20219. Its number carriesM
 a special connection to the artwork's
beginning: September 2021, written as the year and month 2021-9, gives 20219
when its digits are joined. The number links the original Ethereum artwork
and its preservation on Bitcoin.
That 2023 Bitcoin OCM Genesis inscription is an HTML/JavaScript
generator. It carries drawing pieces and rules for assembling them. The
Stones built on these achievements with recovery lessons, preserved
copies of the source and data, a precise drawing convention, and checks
for the results. ThM
e recovery described here rests on the original
artwork together with those later preservation instructions. Stone Six
section 1.6 records the original Ethereum contract's identity and source
Running the original page in a browser is one way to display Genesis. The
route here reads its stored pieces as text, selects the pieces for each
work, and joins them in a specified order. The result is an SVG: a text
description of shapes and colours. Simple mathematical tests then decide
which colour belongs at eacM
h position in the picture. These operations can
be implemented on newly built machines without recreating a JavaScript
runtime. Section 5 gives the assembly instructions; section 6 gives the
A finite set of pieces, choices and exact assembly rules can encode a whole
collection. Here those rules determine every finished SVG, which is generated
during recovery. In this proof, "fully on-chain" means that the artwork data
and the rules needed to decode, assemble and draw the specified collection
served in Bitcoin inscriptions. Computation turns that information
into pictures. It still takes reliable equipment, time and storage to do the
work, and a physical medium to show the result.
Three earlier inscribed proofs already record Genesis recovery, including
the complete collection. This companion makes the construction explicit in
English, tables and arithmetic, and explains why it has a definite result
for every work. Section 2.1 credits those proofs and describes their roles.
Section 9 records the calculM
ations and how they were checked.
This document is intended to be inscribed alongside those earlier proofs.
Its added explanations then become part of the surviving Bitcoin record.
The construction uses Stone Two and Stone Six, including the older material
copied inside Stone Six. Their exact locations and identities follow below.
The evidence is open to inspection. Section 2.2 locates the preserved rules;
section 6.1 follows one work from its choices to visible colour samples.
Section 9 records the author's calcM
ulations and a separate reconstruction by
a fresh-context artificial-intelligence (AI) reviewer. It states the
information and tools each used, so a later reader can judge the achievement
from its sources and tests.
WHY IT MATTERS (THE AUTHOR'S STATEMENT)
OCM Genesis is innovative on-chain art. In September 2021, its Ethereum
contract carried the pieces and rules for all 10000 SVG works. The February
2023 Bitcoin inscription, number 20219, carried the collection's generator.
The Stones added lessons for recoverinM
g those pieces, assembling the works
and drawing their images when the original software is no longer available.
The recovery described here reaches every work from two identified Bitcoin
blocks, the preserved instructions and the premises in section 1, including
MEANING and WORK. Its complete results have been reproduced and checked
against the Stones' commitments. A future reader can examine the rules,
calculate the pictures and check the same results. That is why OCM is
significant for the future: the work presM
erves ways to understand and
recover the art alongside the art itself.
======================================================================
1. THE THEOREM AND ITS PREMISES
======================================================================
For each of the 10000 works, the construction recovers its drawing, its
record of traits, and a grid that can be made visible. The following precise
statement fixes what a successful recovery must produce.
Let B contain the authentic, intact, witness-complete Bitcoin blocM
Stone Two and Stone Six identified in section 2. Let T be this companion,
including its tables and literal text fragments. Let n be any integer from
1 through 10000. The procedure R, described here and in the identified
inscriptions, is finite and deterministic: R(B,T,n) produces five objects:
  P0  the seven trait-choice octets of work n;
  P1  its exact SVG2021 static vector string;
  P2  its exact numeric-metadata JSON string;
  P3  its exact tokenURI string;
  P4  its canonical 500 by 500 grid of three M
colour octets per sample.
The target is the corrected static OCM Genesis function defined by Stone
Six, including token 5436's hat correction. "All 10000" means every work in
that static collection. The vector strings, numeric metadata and canonical
colour grids have exact, separately checkable identities. "Canonical" here
means the drawing convention fixed by Stone Six: it settles such questions
as where to sample a circle's edge so that later implementations can agree.
Historical browsers can draw edges differenM
tly. Animation, alternate
presentations, ownership history and later collections are outside this
The construction rests on four practical premises.
DATA. The reader has readable, ordered bits, with octet and block framing,
from the authentic Bitcoin chain. The required blocks include the witness
bytes that carry the inscriptions. A header or a transaction identifier
alone cannot replace those bytes; an archive that has discarded them must
obtain them from a surviving copy. The block checks below bind theM
data to particular headers. Acceptance of those headers as part of the
authentic chain is an input premise, separate from calculating the artwork.
STARTING REFERENCE. The reader has a trustworthy reference connecting this
companion, OCM Genesis and the Stones identified in section 2. Their printed
locators and digests provide an entry point and precise checks on what is
found. Establishing the intended work and its authentic history requires
that reference or other reliable evidence. The discovery experM
section 9 explore recognizing the documents within a supplied sample.
MEANING. The reader understands English and finite mathematics: integers,
ordered finite lists, equality, comparison, counting, addition, subtraction,
multiplication, division with remainder, and following a conditional rule.
The reader can use the preserved language patterns, character lessons and
worked examples to interpret the stored symbols and notation. This premise
concerns the reader's ability to make and test those interpretatM
Section 1.2 describes the clues the Stones provide for doing so.
WORK. The reader has, or can build, a way to perform those operations
faithfully, with enough time and storage. A physical display or marks on a
surface can present the resulting colour grid. Rebuilding this capability
is a further engineering task. The preservation result supplies the
art-specific information and operations that such a machine must implement.
Our tests used present-day computers and newly written translations of the
ns; their particular languages and software need not survive.
Here "Bitcoin, English and math" describes the surviving information and
knowledge used by this route. It includes the required witness data, an
identified starting reference and this companion's text, together with
the ability to read and calculate. It makes recovery possible for a
future reader with those resources; it does not predict whether a future
society will possess or rebuild them.
The result checks use hashes: short numerical fingerprints ofM
Treating a match as evidence of identity assumes that no relevant hash
collision or second preimage exists. A collision means different inputs
with the same required fingerprints; a second preimage is a different input
matching the fingerprints of a given input. Matching finite fingerprints
cannot logically establish equality of arbitrary strings. The finite
construction and its determinism stand separately from this assumption;
the compact identity certificate uses it.
1.1 THE EXISTING STONES AND THM
The existing Stones preserve the pieces, choices, assembly instructions and
drawing rules. Some instructions are English and equations; others are short
programs whose meaning a reader must interpret. The author's connected
recovery (section 9) translated those sources and recovered all 10000 works
without this new companion. Its author had prior programming and
reference-code knowledge. That result establishes a working recovery with
those disclosed aids.
This companion adds a particular EnglisM
h exposition, assembly tables,
literal-reading grammar, worked example and argument about the construction.
Section 2.2 shows where the art rules it expresses were already preserved.
The procedure R(B,T,n) explicitly includes that exposition as input T. Its
successful test supports recovery with this explanation available. Once
inscribed, the explanation itself becomes surviving Bitcoin data.
The separate reviewer in section 9.1 reconstructed the collection from
the existing Stones before receiving this companion.M
implementation supplies additional evidence with the reviewer's
programming knowledge and tools declared. An unfamiliar human reader's
interpretation remains a further question, for which section 9.2
proposes a protocol. The results, source correspondence and reading
assumptions can each be assessed on their own.
1.2 HOW THE STONES HELP A READER FIND THE WAY IN
The Stones preserve guidance for discovering how to read the record.
Stone Two Part 0 repeats its opening message in English, Spanish, French,
ssian, Chinese, Hindi and Arabic. Parallel passages give a reader who
recognizes one of those languages a place to begin. For the reader assumed
in this proof, the English passage provides that foothold. Stone Two then
explains bits, number encodings, text and Bitcoin's data structures, with
a real transaction shown byte by byte and test examples for the reader's
own calculations. Its character table and UTF-8 lesson make the text's
numerical encoding part of the preserved explanation.
English itself supplies usefM
ul clues before a complete character table has
been recovered. For example, the repeated-letter pattern of "little" is
0,1,2,2,0,3: the first and fifth letters agree, as do the third and fourth.
Such a pattern survives replacing every letter by an unfamiliar symbol.
Repeated words and spaces let a reader propose letter assignments and test
them across many passages. The printed alphabet and digit sequences then
provide further checks and missing assignments. These sequences are present
in the Stones: Stone Two sectM
ion 2.1 lists the digits; Stone Six section 2.4
prints capital and small letters and the digits in its Base64 lesson. Stone
Two's Appendix B and Stone Six section 2.2 give the numerical character
tables against which a proposed reading can be checked.
Stone Six section 2.3 calls this approach "REDUNDANCY IS THE TRANSLATION
DEVICE". It presents the same facts through prose, equations, numbered byte
records, reference code, worked examples and known fingerprints. Each form
helps interpret the others. A reader can caM
lculate a small example, compare
its result with the printed answer, correct an interpretation, and continue.
The complete collection's checks extend that process to every artwork.
The order of the lessons also matters. Stone Six preserves Stone Four's
compression lesson in an uncompressed Base64 copy. Its own alphabet and
arithmetic explain how to open that copy; the recovered lesson then
teaches how to open the compressed artwork pieces and choices. The
reader gains one capability from the preserved material andM
reach the next. For drawing, Stone Six fixes the shapes, sample
positions, paint order and colour values. Its boundary examples settle
details such as whether a point exactly on a circle is included. Stone
Six section 6.3 shows how each of the three colour channels can be inspected
as its own field of numbers, without colour names.
First contact therefore involves forming and checking interpretations.
As more text becomes legible, it supplies the rules for reassembling whole
documents and checking theiM
r identities. The discovery calculations in
section 9 exercised this strategy with English word patterns, the alphabet
and digit lessons, and the character table. The separate reconstruction in
section 9.1 used the existing Stones to recover and render every work before
the reviewer received this companion. Those results show the preserved
clues and instructions being used successfully, with each experiment's
background knowledge and tools recorded.
The MEANING premise describes an ability to follow this route usiM
many clues. Whether an unfamiliar human can learn and complete every step
unaided remains the question for a further reader experiment.
======================================================================
2. FIND THE ON-CHAIN SOURCES
======================================================================
An inscription locator below is a transaction identifier followed by i0:
the first inscription in that transaction, numbered from zero. Heights and
transaction positions are redundant aids. Verify the recM
by their lengths and both digests; do not trust a title alone.
STONE SIX: the artwork specification and recovery capsules.
d3806e7d932f9bd46eb9e58b11f0e0767cceb20efc3de4820c20a9497e5e7cddi0
Block height: 961915
0000000000000000000130ff9b7752255329d585263b054d9add41060d7f7178
Transaction position, starting at zero: 1759
Envelope in transaction input, starting at zero: 1
f569075fc85b55a46358dab9886135ef1c619a1c7f51d60b3732a39b0704f5a5
0351c131e03c70973b56c0eddcf96be3217533b92fc2dcec5eac8bacf7d2685e
STONE TWO: the Bitcoin, text and SHA-256 lessons.
24c053845a403cd6442b8e3d549e82b1582b19dabd8a71ac35b37ad141c92a4ci0
Block height: 961093
00000000000000000001f2614a8c26cffe73238efd1b97bff6f05c9148fdfc2c
Transaction position: 2400
Envelope in transaction input: 0
48b058b43e2b19b63c77db416bc9e46d6bee85683e1bf52e70ef013ddb8f9928
70472efed20a0539aa4c9965f4b4dd51c945d8d0396M
34e352d7ae22cf7b51c12
The original Bitcoin OCM Genesis inscription is a further provenance check:
fb162a46943e5d7d31d72ee2c8c850e66c1ca5d0d453068aa63883528285ed21i0
Its block height is 775635, transaction position 1935, input 0. Block hash:
0000000000000000000672010becefe80df4ff8fd2dca42797e376081d7f84c3
Its 19408 body octets are also carried inside Stone Six. Compare the
original body's length and both digests with those of the decoded Genesis
object in section 4. That older inscription is optional for computatioM
provided the authentic copy inside Stone Six survives.
Stone Four's 77344-octet body is likewise inside Stone Six. These preserved
copies make the two identified blocks sufficient as the blockchain inputs for
this route. Stone Two teaches extraction from Bitcoin. Stone Six then supplies
the artwork, its choices, and the older lessons needed to decode and draw it.
This companion spells out the assembly procedure in section 5. The original
recursive pieces are 30000 one-line HTML inscriptions, three for each tokenM
which proofs A, B and C call pieces. They provide another route, recorded in
proof C below, with broader checks on their provenance.
Bootstrap reading is tentative, then checked. The repeated language and
numerical patterns described in section 1.2 provide clues among the block
bytes. Candidate letter assignments reveal runs of prose. Once enough of
the lesson is readable, use Stone Two Parts 2 through 5 to parse complete
blocks, transactions, witnesses and script pushes. Do not concatenate raw
an inscription marker without parsing instruction bounds.
Push-length octets interrupt text and are not part of the document.
For these inscriptions, use the strict Taproot script-path envelope rules
of Stone Six section 1.5 and Stone Two Part 5. Separate any annex, locate
the script before its control block, and parse its push instructions. Find
the empty push, IF and pushed ord marker that open the envelope. Read
tag/value pairs up to the empty push separating fields from the body, then
concatenate body-push payM
loads up to ENDIF. The outer body has no content
encoding tag; do not decompress it. Check all field/control conditions in
Stone Two Part 9 supplies block proof-of-work, transaction-tree and witness
commitment checks. Those bind the recovered bodies to supplied headers.
Full script, difficulty-history, unspent-transaction-output (UTXO) and
chain-selection validation have a broader scope. The two-block artwork
calculation relies on the DATA and STARTING REFERENCE premises in section 1.
ROOFS AND THIS COMPANION'S DISTINCT ROLE
The three earlier research inscriptions below record how Genesis was
recovered and checked. They provide alternative procedures and evidence
against which a later recovery can be compared. Their citations are optional
corroboration for the construction in sections 3 through 8.
Identifier: PROOF-OCM-GENESIS-4751/2
65e0edb23cf660a13353729a32e71eb6300d50cfff9b95c764240bb1351d3f03i0
Block height: 964491
63692d67815965bd69d125a140d63c2647977bbc092c4b65a340
81dd6be094ed94bc0f0703003433d6ea6484fac163f0eb8526162a64cdfd8f3d
A worked recovery of token 4751 from original recursive pieces and their
dependencies. It records traits, vector strings, metadata and raster checks,
including agreement between Stone Four's and Stone Six's renderers. Its
reported execution used repository implementations of the preserved rules.
Identifier: PROOF-OCM-GENESIS-4751-ADDENDUM/4
c4b1c9801c17f6e50b186150ad3b8150f9120bc80f59c029189i0
Block height: 964521
1c6a8c140ccc40c8c9f058ce750f8a3b3c01f42582b3b1177700ec223550b0a2
03abb48534f692bc62963c432e57c3bfb4bc5d39c936b7ea29f3e57c835b5c50
An addendum mapping each rule to its inscription and repeating the recovery
with programs carved from the Stones, plus a connecting program preserved
in the addendum itself. It reports header-chain checks and also reproduces
the roots and all group records for the cM
omplete collection. Its treatment
of parent inscriptions reads only the parent lists that the pieces declare;
proof C extends this to custody through the relevant transactions.
Identifier: PROOF-OCM-GENESIS-ALL/5
acec0d1082e0fd77be156826c1e9ab2d244d3de92a030daf74ee5036143f2446i0
Block height: 964533
2a5654b474c917f6bd6cd0f19d15319694926084c24515b97e5b175dafc8a85b
6de4b94f276f50f5d5292293760a622706a978fe7e262acbd37d4df4084e1112
ete-collection record: 68 blocks, 30000 recursive pieces for 10000
tokens, and the spending of their two parent inscriptions through the 41 batch
transactions that reveal those pieces. The two parents are the generator,
inscription 20219, and inscription 464551,
14bc4de4887332f8d5a5a274874a33e6c7f4b9e5c972e1ce0d41fd450f7660fdi0,
which proofs A, B and C call page #464551.
Of each token's three pieces, the first is a child of both parents, the second
is a child of the generator alone and the third is a child of
iption 464551 alone. Proof C reports that Stone Four's and Stone Six's
renderers agree on every canonical image, and that the bundle fingerprints of
all 10000 tokens reproduce all 100 group records and both complete-bundle
roots. Its header and custody checks cover more provenance than this
companion's two-block recovery. Its full procedure and connecting program
survive in its own inscription. The scope of those checks remains short of
full Bitcoin consensus validation or a determination of historical
WHAT THIS COMPANION ADDS
Proofs B and C already explain that their programs can be read as pseudocode
alongside the Stones' prose. They establish the earlier complete-recovery
record. This companion develops the static-art construction into explicit
English instructions, exact assembly tables and text fragments, and integer
tests for every colour sample. It gives the reasoning that these operations
finish and determine one result for each work.
The chosen route uses Stone Two and Stone Six as its blockchain inpuM
Stone Six's copies supply the older lessons, artwork pieces and trait
records. This keeps the calculation small enough to trace through two
blocks, while proof C retains the broader original-piece and parent-history
account. Together the documents explain both a direct route to the pictures
and the more extensive provenance work already performed.
The author's connected recovery supplies further evidence. It uses
arithmetic hash, decompression and drawing routines and reads the Genesis
body copied inside StoneM
 Six as literal data. It runs without executing the
embedded reference programs or calling installed cryptographic, compression
or graphics engines. Section 9 discloses its modern computation and prior
knowledge; section 9.1 separately describes the reviewer's tools.
Proofs B and C and the author's exact-text replay described in section 9 agree
on both complete-bundle roots; all 100 group records in proof C also agree.
Token 4751's two bundle fingerprints (called leaves in section 8) in B and C
agree with that repM
lay. These matches connect the accounts to the same Stone
Six target under the hash assumption in section 1. The author's citation check
verified the bodies of proofs A, B and C and of the scope note below against
the lengths and digests printed in section 2.1. It compared both roots and the
token-4751 fingerprints recorded in B and C, and the 100 group records
recorded in C, with the results of the exact-text replay described in section
9. The earlier 68-block history exercise has its own preserved record in C.
reserving this companion alongside A, B and C gives a future reader the
English construction, the earlier executable accounts and their recorded
checks. The Stones continue to define the artwork and its canonical render.
Identifier: STONE-ONE-BOUNDARY/1
eb11bc7a390edcf901d736132991c8296803513932a7bc305664e3fd34e10144i0
Block height: 964606
0ba7abe6f903938c8b937bc7661e4daa9205629a7c9704a199810156408ee907
625c9c51625c4382b08c5730827026d7M
cbbe20978fb504db17050b91f22cbff0
This separate inventory records 179 preserved and 238 absent files out of 417
in Stone One's referenced ord source snapshot. It documents the limits of
Stone One's copy. The recovery procedure here follows the Stones' extraction
instructions directly and requires neither a complete ord source tree nor a
working build of that historical program.
2.2 WHERE EACH PART OF THE CONSTRUCTION COMES FROM
The following map makes the correspondence inspectable. S2 and S6 mean the
ed Stone Two and Stone Six bodies above. S4 means the Stone Four
body copied inside S6. K6 means the literal program between S6's STONE SIX
VISUAL KERNEL ASCII markers. These are surviving text, including program
text. Reading the map requires no website, repository or installed runtime.
Each final column is an exact heading or function-definition line to find.
BEGIN SOURCE LOCATORS
A01 | S2 | PART 2. NOTATION: BYTES, HEX, INTEGERS, TEXT, SHA-256
A02 | S2 | PART 3. BITCOIN'S DATA: BLOCKS, TRANSACTIONS, SCRIPTS
 | S2 | PART 5. THE ENVELOPE: THE EXACT RULES
A04 | S2 | PART 9. VERIFYING THAT YOUR DATA IS GENUINE
A05 | S6 | 1.5 THE BOOTSTRAP FIXPOINT AND ACTUAL ENVELOPES
A06 | S6 | PART 2. BEGINNING WITH BITS, NOT A CULTURE
A07 | S4 | PART 4. DEFLATE, COMPLETE
A08 | S6 | 9.8 THE MINIMUM RECOVERY CAPSULE
A09 | S6 | PART 3. THE SEVEN NUMBERS
A10 | S4 | def _scan_literal(src, start):
A11 | S4 | def _gen_tables(html):
A12 | S4 | def genesis_svg(html, token_id):
A13 | S4 | def _gen_eye(e, t2, idx, g):
A14 | S4 | def _gen_mouth(idM
A15 | S4 | def _gen_earring(idx, g):
A16 | K6 | def svg_from_traits(html, traits):
A17 | S6 | 4.1 THE SVG BYTE FORM
A18 | S6 | 4.2 THE JSON GRAMMAR
A19 | S6 | 4.3 THE TOKEN URI
A20 | S6 | 4.4 THE CLOSED VECTOR VOCABULARY
A21 | S6 | PART 5. THE CANONICAL SAMPLE GRID
A22 | S6 | PART 6. COLOUR WITHOUT A COLOUR-NAME DICTIONARY
A23 | S6 | PART 7. THE RAW RASTER AND OPTIONAL CONTAINERS
A24 | S6 | PART 9. FULL-CORPUS COMMITMENTS
A25 | S4 | PART 5. KECCAK-256, FROM THE PERMUTATION UP
 EXTRACTION. A01 defines octets, number encodings, text and
SHA-256. A02-A05 supply the block, transaction, witness and strict envelope
rules used in section 2. A04 supplies the local commitment checks. A06
supplies the character table, decimal notation and Base64 arithmetic used
in sections 3 and 4. The DATA and STARTING REFERENCE premises remain those
OPENING THE CAPSULES. A08 gives their marker names, transport forms and
lengths. Stone Six sections 1.4 and 9.8 print their digests. Its Stone Four
opy is uncompressed, so A07 can be read before gzip/DEFLATE is needed. A07
supplies the bit order, Huffman tables, literal/copy rules, wrapper and
checksum. These open the preserved Genesis piece library and the 70000-octet
CHOICES AND LITERAL PIECES. A09 fixes the seven positions; Stone Four section
1.3 gives the seven option counts used as ranges in section 5.1, listed in a
different trait order. A08 fixes token order and seven-octet records. A10 and
A11 show how the preserved source's strings and M
lists are read, with the two
static-mode animation substitutions. Their surrounding constant lists name the
library entries. Section 5.2 explains that reading in English. Its parser
stops with an error when a literal is followed by anything other than a comma
or semicolon, and rejects unsupported escapes. Those rejection rules delimit
this companion's parser; they add no drawing data.
ASSEMBLY. A12 and A16 give the concatenation order behind BASE, INNER,
OUTER, INITIAL, MOUTH, HAT, CLOTHES and FINAL. Their variablM
the initial sequence is background, outer, inner, inner, outer, inner,
outer, inner, outer, inner, eye colour, eye colour, inserted between
z[0] through z[12]. Both then append the eye helper, z[13], the mouth
entry, z[14], the teeth and earring helpers, hat, clothes and z[15], in that
order. Positive hat and clothes choices use choice minus one.
A13 gives the three cumulative EYE tests: greater than 4, 10 and 16.
A14 gives TEETH, both TOOTH rows and MOUTH_EXTRA. Its condition greater
eater than 8 and less than 16 becomes the inclusive ranges
25..32 and 9..15 in the allowed mouth domain. Its two loops use seven
positions starting at 175 and six starting at 187, each stepping by 25.
Its last condition greater than 15 is the threshold 16. A15 gives all
seven EAR cases: 0 empty; 1 and 2 use ea1; 3 uses cross; 4, 5 and 6 use
ea5 with their respective middle strings. Thus the table's branches can
be checked individually against text already carried inside S6.
EXACT OUTPUT TEXT. A17 gives the four ciM
rcle-space replacements and the
one terminal-space replacement: CIRCLE_OCCURRENCES and the first four
BYTE FRAGMENTS. A18 gives the attribute names, their order, all J and A
fragments, decimal insertion and image Base64. A19 gives U0 and the outer
Base64. These references determine every space and punctuation mark in
sections 5.3 and 5.4. The literal fragments restate those bytes.
DRAWING AND CHECKING. A20 specifies the accepted shapes, attributes and
styles. A21 supplies integer sample positions, paint order and M
shape predicates in section 6. A22 supplies the palette, channel
expansion and intended colour relations. A23 supplies row/channel order
and the square-grid presentation. A24 supplies the framing, corpus
roots, dual bundle roots and group records used in section 8, and the
geometric fixtures (Stone Six section 9.6) used in section 9's checks.
A01 defines SHA-256; A24 section 9.3 defines SHA3 using A25's
permutation with its different padding. The optional independent trait
derivation uses A09, A25 and the M
mirrored generator's salts and weight
This map identifies the source of the artwork rules and explains the main
translation steps. Recognizing a function name does not by itself validate
its translation. Section 9 records the source-correspondence audit and
complete-domain calculations, together with the author's prior knowledge.
The companion's explanations, parser boundaries and proof argument remain
visible additions whose interpretation can be challenged and tested.
===================================M
===================================
3. NOTATION AND THE SMALL SHARED SEED
======================================================================
An octet is eight bits, interpreted as an integer from 0 through 255.
Positions in a string or list start at zero. A[k] means item k of list A.
Length means number of octets unless another unit is stated. Append means
place one finite sequence immediately after another without extra spaces.
The notation X || Y also means append. A quoted fixed string contributes
nts; explanatory surrounding quotation marks contribute nothing.
D(k) is the shortest decimal representation of a nonnegative integer k.
The integer zero is written 0. Repeated division by ten obtains the digits
least significant first; reverse them to write the most significant first.
There are no signs, leading zeroes, grouping characters or terminal newline.
Hexadecimal digits 0 through 9 and a through f have values 0 through 15.
Two hexadecimal digits H,L name the octet 16*H+L. Uppercase A through F
ame numerical values when explicitly used in a hex number.
In equations, * means multiply; a^k is k factors of a multiplied
together for positive integer k, so ^2 means square and 2^32 is 32
factors of 2. The symbol <= includes equality, and a <= x < b means both
comparisons hold. Conditional instructions are performed only when their
stated condition holds. Repeated instructions use increasing integer
order. All arithmetic is exact: no machine overflow, floating-point
rounding, square-root approximation or randomM
Parentheses group operations first. Powers apply next, then *, div and mod,
then + and -. Operations at the same level are performed from left to right.
Thus 16*(a mod 4) + b div 16 adds two terms: 16 times the remainder of a
divided by 4, and the integer quotient of b divided by 16.
The table below supplies the character convention used in this recipe. Each
row starts with a hexadecimal number. The first character listed after that
number has that octet value, and each later character has the next valueM
word space in the first row names a single separation octet. Line feed is 0a.
This companion and Stone Six's outer body need no other control or non-ASCII
character. Stone Two and the mirrored Stone Four also contain UTF-8 text.
  20  space ! " # $ % & ' ( ) * + , - . /
  30  0 1 2 3 4 5 6 7 8 9 : ; < = > ?
  40  @ A B C D E F G H I J K L M N O
  50  P Q R S T U V W X Y Z [ \ ] ^ _
  60  ` a b c d e f g h i j k l m n o
  70  p q r s t u v w x y z { | } ~
Stone Two sections 2.4 and 2.5 teach text and UTF-8. M
recovery is unnecessary for the ASCII OCM piece library and this raster.
Stone Six Part 2 supplies the same small mathematical/character seed.
The practical discovery experiment described later inferred 64 labels and
read 96 numerical assignments without supplying an ASCII table to its
learner. The recipe also explains the punctuation and operations it uses;
recovering numerical character assignments is one part of reading it.
====================================================================M
4. OPEN THE CAPSULES WITHOUT A SOFTWARE REGISTRY
======================================================================
Stone Six contains objects between lines BEGIN name and END name. Use
complete matching marker lines. For a BASE64 object remove only line feeds
between those lines. Its alphabet, in order from position 0 through 63, is:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
For three input octets a,b,c, the four output positions are:
  16*(a mod 4) + b div 16
Here div gives the integer quotient and mod the nonnegative remainder.
For one final octet use b=c=0, output the first two positions then ==.
For two final octets use c=0, output the first three positions then =.
No final padding is added to a complete three-octet group.
To decode, require a multiple of four characters after removing the capsule
line feeds. Empty input decodes to no octets. Process groups of four in order.
Each group contains only alphabet characters, except that the fiM
may end with one or two = characters. No other padding position is allowed.
Give alphabet characters their positions and substitute zero for each =.
The four values p,q,r,s represent 64^3*p + 64^2*q + 64*r + s. Split this
integer into three octets, most significant first. If there is one final =,
require r mod 4 = 0 and keep only the first two octets. If there are two,
require q mod 16 = 0 and keep only the first octet. With no =, keep all three.
Thus discarded octets are always at the end, and unused bitM
Reject every other character or padding form.
First open the object named INSCRIBED STONE FOUR BASE64. It is uncompressed.
Its decoded length is 77344 octets (103128 Base64 characters). SHA-256:
6ddd69be69133483536f5828254a01c8b61e65d97835d74c963f41a5903f8ff0
f55adb674041a8c8891def664f29a77684e034a0911c81f228dff2b26c548d6f
Stone Four Part 4 now supplies the complete gzip/DEFLATE lesson, including
bit order, finite code tables, literals, length/distance copies and CRC.
Its decoder was delM
iberately not compressed inside the format it teaches.
This breaks the would-be circular dependency on a lost decompressor.
Read compressed bits in the prescribed order. A code either emits a literal,
ends a block, or gives a finite length and distance for copying earlier
output. During an overlapping backward copy, copy one octet at a time so newly
emitted octets can become subsequent sources. Reject impossible distances,
reserved symbols, truncation, excess output or wrong checks. The printed
algorithms specify M
the tables; no outside format registry is needed. Use the
exact object lengths from Stone Six section 9.8 and the digests from Stone Six
sections 1.4 and 9.8.
The two minimum artwork-data objects are:
  OCM GENESIS BODY GZIP BASE64
  gzip member 6634 octets after Base64 decoding (8848 Base64 characters)
  decoded length 19408 octets
  a9a11105cf6a7da0f653129247f4bfe631dafa8fc6ea2ca9d50c2678f33d1e14
  e3a49fa4d2d064152b8f7d3b4d973156a06cea1c99ac98817ec0b7e2b294fd72
AIT CORPUS GZIP BASE64
  gzip member 41823 octets after Base64 decoding (55764 Base64 characters)
  decoded length 70000 octets
  ea4228e5b3fe96e8aacdade846aac28fb95f49e3b04e36ae4cf40f646a2a9970
  4aa858a5351d9e03566677396035954720148d2895540d431a552fa95e51bc37
Stone Six also preserves the verified 2021 source, a visual-kernel
translation, and the 3200-octet group-check ladder. These supply additional
cross-checks. The direct construction below obtains its drawing pieces by
ding literal strings from the decoded Genesis body.
For computing hashes, use Stone Two section 2.6 for SHA-256 and Stone Four
Part 5 for the Keccak-f permutation. Stone Six section 9.3 specifies
SHA3-256: rate 136 octets, suffix 06, and the final padding bit. Do not
confuse it with generator Keccak-256's suffix 01. These functions are finite
word arithmetic; SHA3 is a verification aid, not an ingredient of drawing.
======================================================================
5. THE DIRECT CONSTRUCTION,M
======================================================================
The picture is assembled much as a drawing can be made from a kit of parts.
Seven numbers select its background, fur and other features. The preserved
library supplies the shapes, and the following rules put them in order.
5.1 Select the seven stored choices.
For token n, read seven octets beginning at position 7*(n-1) of the decoded
70000-octet trait corpus. Name them, in order:
  bg, fur, ear, hat, eye, clothes, mouth.
espective allowed ranges start at zero and have these lengths:
  8, 19, 7, 37, 23, 44, 33.
Reject any out-of-range record. These stored choices already contain the
special corrected hat for token 5436. Do not apply that correction
again. The direct path uses these preserved choices. Independent
derivation from the generator is an additional cross-check, performed
for all 70000 choices in the author's connected recovery described in
5.2 Read the piece library as literal data.
The decoded Genesis body M
contains named constant lists and strings. A
string here is simply a sequence of characters between stated delimiters.
Reading these values uses the small grammar below; it does not require
implementing or executing general JavaScript.
A whole name has no ASCII letter, digit, underscore, dollar sign or period
immediately before it, and no ASCII letter, digit, underscore or dollar sign
immediately after it. Search for each required whole name followed by =,
allowing separation whitespace around =. Skip an occurrencM
value starts a literal of the kind required for that name: a list or a string
as specified below. Parse that literal completely. After it, the next
non-whitespace character must be a comma or semicolon; if it is anything else,
stop the recovery with an error. Exactly one complete literal binding must
remain for each required name. A literal binding is the name, then =, then one
complete literal of the required kind, then a comma or semicolon. Do not
evaluate a general program. In this pinned GenesM
is body, the only whitespace
octets are space (hexadecimal 20) and line feed (0a).
The surrounding hashing code also assigns expressions to short names such as
z; the required z is the literal list in the artwork generator.
A string starts with ', " or ` and ends at the next unescaped matching
character. Its delimiter is not part of its value. The Genesis body contains
no backslash. If one occurs inside a string, accept only a following backslash
or quote/backtick and copy that second character literally. Reject M
escape forms on this path. In backtick strings, the exact two sequences
${animateStyleClassTags} and ${animateStyleFooter} contribute the empty string
for the canonical static picture. Reject any other interpolation. A string's
other characters are copied unchanged. A list starts with [, ends with ], and
separates its values by commas; its values are ordered from zero. Decimal
integer literals have the meaning of section 3. Whitespace outside strings
separates syntax; inside strings it is data. An end of inpuM
closing delimiter is an error.
The required lists are background, fur1, fur2, eyes, mouth, clothes1,
clothes2, hat1, hat2 and z. The string names needed below appear explicitly
in the assembly tables. Each is copied from the same decoded library.
All choices, colours and piece contents therefore come from Bitcoin data.
The following tables are data for the English procedure in 5.3. In a row
that appends terms, z[13] or eyes[eye] selects a list entry; a bare
string name selects that string. I aM
nd O select the inner and outer fur
colours. BASE, INNER, OUTER and the two list names in each HAT/CLOTHES
row identify lists instead; section 5.3 gives their indexing rules. It
also defines the instruction labels. Blank contribution means an empty
An EYE row applies when the eye index is strictly greater than its
threshold. MOUTH_EXTRA applies when the mouth index is greater than or equal
to its threshold. These comparisons are stated again in section 5.3.
BEGIN ASSEMBLY TABLES
LIMITS 8 19 7 37 23 44 33
INITIAL background[bg] O I I O I O I O I eyes[eye] eyes[eye]
EYE 4 sl1 I sl2 I zz
EYE 10 ey1 O ey2 O zz
MOUTH z[13] mouth[mouth] z[14]
HAT hh1 hat1 hh2 hat2 zz
CLOTHES clo1 clothes1 clo2 clothes2 zz
CIRCLE_OCCURRENCES 4
le the static shape string.
LIMITS gives the seven range lengths in section 5.1. BASE names the list
z; INNER and OUTER name fur1 and fur2, indexed by fur. Let I be
fur1[fur], O be fur2[fur], and start with the empty string. There are
twelve INITIAL terms. For each position i from 0 through 11, append z[i]
and then the value of INITIAL term i. Next append z[12]. Each EYE row
states a threshold and terms: if eye is strictly greater than that
threshold, append those terms in order. Apply the rows in their order;
eral may apply. Next append the MOUTH terms in order.
TEETH gives two inclusive mouth-index intervals. If mouth lies in either,
process both TOOTH rows in order. A TOOTH row contains start, count, middle
and end. For i from 0 through count-1, let d=D(start+25*i). Append mo1,
then d, then the middle string, then d again, then the end string. The
TOOTH_STEP and TOOTH_PREFIX rows explicitly supply 25 and mo1.
Whether or not TEETH applies, if mouth is at least the MOUTH_EXTRA
threshold 16, append its following term mM
Append the terms in the EAR row whose number equals ear. EAR 0 is empty.
If hat is nonzero, the HAT row means append hh1, hat1[hat-1], hh2,
hat2[hat-1], and zz. If clothes is nonzero, the CLOTHES row means append
clo1, clothes1[clothes-1], clo2, clothes2[clothes-1], and zz. Append FINAL.
The result must contain exactly CIRCLE_OCCURRENCES copies of CIRCLE_OLD
and end with CLOSE_OLD, as given in the next block. Replace those four
occurrences by CIRCLE_NEW and the one terminal CLOSE_OLD by CLOSE_NEW.
er changes. This removes the five historical spaces specified
in Stone Six section 4.1 and gives the exact SVG2021 string, called S
In the following block, each name and its first = are labels, not output.
Everything after that first = up to but excluding the line feed is literal
string content. Preserve spaces exactly. The leading space in CLOSE_OLD
and the two adjacent spaces in CIRCLE_OLD are intentional.
BEGIN BYTE FRAGMENTS
CIRCLE_OLD=<circle  cx=
CIRCLE_NEW=<circle cx=
J0={"name": "OnChain Monkey #
J1=", "attributes": [
J2=],"image": "data:image/svg+xml;base64,
U0=data:application/json;base64,
5.4 Recover the exact metadata and tokenURI.
The seven attribute names, in order, are Background, Fur, Earring, Hat,
Eyes, Clothes, Mouth. For name N and the corresponding trait value v, its
attribute string is A0 || N || A1 || D(v) || A2. Join the seven attributes
with one comma between neighbours and no other separatM
The exact metadata string J is:
  J0 || D(n) || J1 || joined attributes || J2 || B64(S) || J3
The tokenURI is U0 || B64(J). B64 uses section 4 with no line breaks.
S, J and the tokenURI have no terminal line feed. The word JSON names this
fixed grammar. The attribute values are the numeric trait indices written
as strings. Their exact characters are specified above.
Stone Four Part 9 and Stone Six's svg_from_traits translation preserve the
same assembly. Stone Six section 9.8 says that Stone Four Part 5 reM
assembly; the assembly is in Stone Four Part 9. Stone Four Part 5 teaches
Keccak. The first sentence of Stone Six Part 3 also points to Part 5 for
several facts. The correct locations are Stone Four Part 5 for Keccak-256;
Stone Four section 1.3 for the salts, the weight totals, the offset
12839-tokenID and the special case whose offset is 7403; and the mirrored
Genesis body for the weight tables. The special token is 5436, since
12839 - 5436 = 7403. The direct recovery reads the stored traits; this secoM
correction also helps a reader independently derive them from the generator.
Two further references in Stone Six need correction. Section 1.2 sends the
reader to Part 9 for eight full body digests; those values occur in sections
1.4 and 1.5. The docstring of svg_from_traits calls its assembly "Part 4.1
restated"; it restates genesis_svg in Stone Four Part 9. Stone Six section
4.1 instead converts the assembled SVG to its September 2021 byte form by
removing the five spaces described above. These four locator coM
preserve every artwork rule. Proofs A, B and C also point to Stone Four Part 5
for the traits and SVG; a reader should use the locations given here.
Under Stone Six sections 1.1 and 1.7, the formal corrections must be inscribed
in Stone Seven, the next Stone. Each must say CORRECTS, name the false
assertion, identify Stone Six by its body digest, give the replacement, and
preserve the false assertion and its replacement in lineage. This companion
records the findings. Stone Seven section 1.1 satisfies thM
It makes all four corrections and a fifth, to the byte-form description in
Stone Six section 9.8. Stone Seven is inscription
1a2a970faf01e6a9c6ce27d5b91df3eb7a709e160c7b036475ec29f4ce5864e6i0,
confirmed at block height 969405. Its body length is 352721 octets. SHA-256:
80d36f3a719bb974752c944d61328d4b5170395f49352f4f6ecb6c15495d7af7
494a72ae6a45643bc502132d407afb958e9638f59416b57c2f6dbc9e9e91a750
======================================================================
6. RENDERING IS A FM
INITE MATHEMATICAL DRAWING
======================================================================
The SVG describes a stack of simple shapes. To draw it, begin with a white
grid and colour the positions covered by each shape in turn. A later shape
paints over an earlier one. The tests below decide exactly which positions
Read S using the closed grammar of Stone Six section 4.4. Its ordered
shapes are rectangles, circles, ellipses and straight lines with explicitly
named integer coordinates and M
exact colour/style values. Reject other shapes
or values. The wrapper's namespace string serves as a label; its apparent
web address is not a resource to fetch. The complete drawing uses the
coordinates, colours and rules given here and in Stone Six.
Make an array C of 500 columns and 500 rows, each entry three integers.
The upper-left coordinate is (0,0); x increases right and y increases down.
Initialize every entry to (255,255,255). For every shape, in document order,
test every integer pair (x,y) with 0 <= x <M
 500 and 0 <= y < 500. If its
predicate holds, replace all three channels at that entry with its colour.
Later shapes overwrite earlier ones. Do not sample at x+1/2 or y+1/2.
RECTANGLE. Position (a,b), width w, height h:
  a <= x < a+w AND b <= y < b+h
CIRCLE. Centre (a,b), radius r:
  (x-a)^2 + (y-b)^2 <= r^2
ELLIPSE. Centre (a,b), radii rx,ry must both be positive:
  (x-a)^2 * ry^2 + (y-b)^2 * rx^2 <= rx^2 * ry^2
LINE. Endpoints (x1,y1),(x2,y2), width w:
  c = (x-x1)*dy - (y-y1)*dx
  L > 0 AND 0 <= q <= L AND 4*c^2 <= w^2*L
Zero-length lines cover nothing. Do not clamp q or add end caps. Differences
may be negative, so use signed exact integers. The squared-distance tests
need no division or square root. Test only coordinates within the grid;
everything outside it is clipped.
For a fill #RGB, each letter represents a hexadecimal digit value, and
the three channels are (17*R,17*G,17*B), in that order. For example #dda
becomes (221,221,170). The exM
act 60 permitted colours are listed in
Stone Six section 6.1. Lines have colour #000 and width exactly 2 or 5.
Reject other line styles. Shape attributes, their orders and all style
syntax must conform to Stone Six section 4.4; do not invent defaults for
Write the array in this order: y from 0 through 499; within each y, x from
0 through 499; within each sample, channel 0, then 1, then 2. The result
has 500*500*3 = 750000 octets. There is no header, padding or final newline.
This is P4. The array itM
self is the fully specified digital rendering.
To present it visibly, assign each sample a congruent square in 500 rows
and 500 columns, with the orientation above. Enlarging a square repeats its
value without interpolation. Stone Six section 6.2 preserves the numerical
transfer and colour-coordinate relations for interpreting those values.
Physical reproduction depends on the available display or marking materials
and viewing conditions; the exact digital grid is the checkable result.
For contemporary software, M
an optional P6 wrapper is the fifteen octets
spelled P6, line feed, 500 500, line feed, 255, line feed, followed by
the 750000 grid octets (product P4). P6 names the RGB image-file format
here; P4 is only this proof's label for its fifth product. The wrapper's
hexadecimal header is 50360a353030203530300a3235350a. The wrapper is a
convenience for software that accepts this format. The grid-and-square
instructions above also specify how to present the image directly.
6.1 A WORKED PICTURE: TOKEN 1
o of the decoded trait stream. The seven choices are
1, 10, 0, 0, 0, 33, 0: background, fur, earring, hat, eyes, clothes, mouth.
Look up background[1], fur1[10], fur2[10] and eyes[0] in the piece library.
They give dda, fc5, 110 and abe respectively. The surrounding SVG fragments
supply the # before each colour. Eye choice zero adds no eye-helper pieces.
Mouth choice zero adds no teeth or extra mouth piece. Earring and hat zero
contribute nothing. Clothes choice 33 selects entry 32 in each clothes list.
rdered insertions in section 5.3 and the five-space conversion.
The resulting SVG has 1314 octets and 22 shapes.
Here are selected complete shape strings from that SVG, in their original
order. Shape numbers start at one. Each SHAPE value occupies two lines for
legibility. Each continuation line begins with three spaces; delete the
first two and keep the third, the space before style. Join it to the line
beginning <, with no line break or added byte. COLOUR entries give the
library's zero-based indexes and literalM
 digits. PIXEL entries give x, y,
then the three final channel values after ALL 22 shapes are painted.
TRAITS 1 10 0 0 0 33 0
COLOUR background 1 dda
<rect x="0" y="0" width="500" height="500"
   style="fill:#dda"/>
<circle cx="200" cy="220" r="20"
   style="fill:#abe"/>
<circle cx="200" cy="220" r="7"
   style="fill:#000"/>
<rect width="300" height="120" x="99" y="400"
 style="fill:#f00"/>
<rect width="50" height="55" x="280" y="430"
   style="fill:#ddd"/>
PIXEL 0 0 221 221 170
PIXEL 208 220 170 187 238
PIXEL 100 450 255 0 0
PIXEL 280 430 221 221 221
PIXEL 330 430 255 0 0
The first shape paints the whole grid #dda: hexadecimal d,d,a is 13,13,10,
so multiplying by 17 gives (221,221,170). At (0,0), no later shape covers
that position, and this remains the final colour.
At (200,220), the radius-20 circle paints #abeM
, or (170,187,238). The
later radius-7 circle paints black over it. At (207,220) the squared
distance from their common centre is 7*7+0*0 = 49. The black circle's
radius squared is also 49, so the inclusive boundary paints that sample
black. At (208,220) the distance squared is 64: outside the black circle,
inside the larger circle's bound of 400. Shape 14 and every shape after the
radius-7 circle cover none of these three samples. Their final colours are as
The final two rectangles demonstrate paint order M
and the rectangle's open
right edge. The large rectangle paints (100,450) red. The last rectangle
paints (280,430) #ddd, or (221,221,221), over that red. At (330,430),
the condition x < 280+50 is false, so the red remains.
Repeat the same finite tests for every shape and each of the 250000 grid
positions. Write each triple at octet position 3*(500*y+x) in row order.
This produces the complete 750000-octet image whose fingerprint is given
in section 8. Assign those triples to the visible square grid described
. The example supplies checkpoints; the preserved recipe supplies
every position, including the ones not printed here.
======================================================================
7. WHY THIS IS A CONSTRUCTIVE PROOF
======================================================================
The argument has three parts: all the ingredients are accounted for, the
instructions finish, and they determine a single result. The
complete-collection calculations described in section 9 check those
results against theM
 identities preserved in Stone Six.
LEMMA 1: THE REQUIRED DATA AND RULES FORM A FINITE CLOSED DEPENDENCY GRAPH.
Bitcoin contains the two identified Stones. Stone Two supplies Bitcoin,
text and SHA-256 instructions. Stone Six supplies its own character table,
base64 equations, shape/colour/grid specification, identity commitments,
the raw Stone Four lesson, and compressed piece/trait data. The raw lesson
supplies decompression before decompression is needed. Its output supplies
the piece library and all seven choicM
es for each work. This companion's
section 5 translates their finite assembly into explicit English operations.
Together these documents account for every art-specific input and rule used
by the construction. Inscribing the companion preserves its added
explanations in the same medium as the Stones.
LEMMA 2: THE CONSTRUCTION TERMINATES ON THESE INPUTS.
The input files are finite. Extraction advances through bounded fields and
script pushes. Base64 consumes finite groups. DEFLATE consumes finite input
s bounded literal/copy lengths, with explicit decoded-size
limits; truncation or impossible references fail instead of inventing data.
Every literal scan advances to a closing delimiter or fails at end of input.
For a valid record, assembly has twelve initial insertions, three eye tests,
at most thirteen tooth repetitions and finitely many remaining appends.
Every assembled shape list is finite. Rendering uses 250000 coordinate
tests per shape and finite integer operations per test. Metadata and hashes
te strings. Repeating for 10000 works remains finite.
LEMMA 3: EACH VALID INPUT HAS ONE SPECIFIED RESULT.
Positions, tables and ordered concatenations fix each trait and vector
string. The five-space conversion and literal metadata fragments fix every
output character. For the raster, argue by induction over shape order.
Initially each sample has the specified triple. At the next shape, the
integer predicate has a definite truth value; either the old triple remains
or the specified new triple replaces it. Thus theM
 array after each shape
is unique. Fixed row/column/channel serialization fixes its final octets.
The printed rules fix each drawing decision.
EMPIRICAL IDENTITY CHECK: THE ENTIRE DOMAIN CAN BE CHECKED.
The target is the Stone-defined corrected OCM Genesis static function,
whose pieces, rules, choices and full-domain commitments survive
together. Section 8 frames every product unambiguously and gives the
inscribed roots. A future reader can perform the construction and the
checks for every n. The author's connecteM
d recovery and the separate
exact-text replay described in section 9 each covered all 10000 works
and matched every expected commitment. This is computational evidence
that their implementations realize the preserved target, subject to
faithful execution and the hash assumption in section 1. The inputs,
recipe and expected values let another reader repeat the check.
COMPOSITION. Apply extraction and decoding, then the direct choice/piece
construction, then the rendering and metadata rules. Lemmas 1 through 3
an explicit finite procedure with a unique result for every valid n.
The separate empirical check tests identity over the complete domain.
Thus every specified static OCM Genesis work is constructively recoverable
and renderable under section 1's premises. A new implementation can follow
these finite operations in whatever computational system is available. The
Stones and this companion supply the artwork-specific knowledge it needs.
======================================================================
RT, RECOMPUTABLE IDENTITY CERTIFICATE
======================================================================
This section gives short fingerprints of the complete recovered collection.
A reader calculates the pictures first, then computes these fingerprints
from the results. Matching them provides a practical check on the recovery.
The exact ordering below makes that check reproducible.
U32(k) is four octets, most significant first, representing 0 <= k < 2^32.
00 means one zero octet, not two printed zero charactM
strings below use the character table in section 3. A displayed 64-digit
digest denotes 32 raw octets. When checking Stone Six's digests, join its
split display lines without whitespace; the digests here are printed whole.
For domain DOMAIN and a per-token payload P(n), the corpus input is:
  DOMAIN || 00 || U32(10000) ||
  for n=1 through 10000: U32(n) || U32(length(P(n))) || P(n)
Hash each complete input with SHA-256. Expected values from Stone Six:
  OCM10K-TRAITS-1, payload P0
a49dc800a870779bb3b6d8b6d797c1d69e38b7fc672409e2e72d8d
  OCM10K-SVG2021-1, payload P1
  7cdeb6214c892ff8c44ea4065a48dc26191d5273859dadf3356551796f1c7966
  OCM10K-METADATA2021-1, payload P2
  6f64083ea5d520eff99c8f678613cc9bb87fa4dc5cd76e7d412d9adad4c0948f
  OCM10K-RGB500-1, payload P4
  bffb0d1d2e43c792dfc891798928f106bd67decec9a4880e7fd2009f8bd547b1
For each token, form this bundle input in the fixed order P0 through P4:
  OCM10K-BUNDLE-1 || 00 || U32(n) || U32(5) ||
  U32(length(P0)) || P0 || U32(length(P1))M
  U32(length(P2)) || P2 || U32(length(P3)) || P3 ||
  U32(length(P4)) || P4
Let S(n) be its SHA-256 and T(n) its SHA3-256, each kept as 32 raw octets.
These per-work fingerprints are called leaves. The parentheses distinguish
S(n) and T(n) from the SVG string S and companion T used earlier.
The two root inputs are:
  OCM10K-BUNDLE-SHA256-ROOT-1 || 00 || U32(10000) ||
  S(1) || S(2) || ... || S(10000)
  OCM10K-BUNDLE-SHA3-ROOT-1 || 00 || U32(10000) ||
  T(1) || T(2) || ... || T(10000)
ive hash family to each input. The expected roots are:
  ece4fb44ec6a683368a704e7302bb69cc82ebd912332144a08ca5c8fbd199b51
  4077a5f95af2dcf1c18fc5a3a53ad94af3de2b50e4b639c5ec08cf88312ca5f4
Stone Six section 9.5 supplies 100 group records for locating errors.
The full roots check the whole collection. If any check fails, inspect the
input, transcription and calculation before claiming recovery, keeping the
preserved rules fixed. The pictures come from the construction; the digests
A small checkpoint, already committed inside Stone Six, is token 1:
  choices: 1 10 0 0 0 33 0
  metadata length: 2101
  tokenURI length: 2833
  raw grid length: 750000
  90d252213e434198b0ccb626be222b426d9838a356ecd4d4a8a025acc7f87d0b
  complete-bundle S(1):
  73c021be9f0902a56b17fdd2c3c5e55a2d9580f963dcf5e8ffc8f507eb872da9
  complete-bundle T(1):
  c3a8326d0a7183bede9186658cd628dcc39931e0f711390b32e406a083d5c38e
Token 5436 has choices 6 16 0 1 14 4 5. The generator derM
token and then adds one; the stored value is 1. This catches an omitted
correction or an erroneous second correction.
======================================================================
9. WHAT THE 2026 EXERCISE ACTUALLY ESTABLISHED
======================================================================
The author's connected recovery reproduced every work and matched all
collection checks. The following account states what entered that
experiment, how it ran, and what its results establish.M
recipe and expected fingerprints let a future reader check the account.
The experiment joined symbol discovery to the full artwork calculation. It
started with three complete raw blocks: the block holding the original OCM
Genesis inscription (height 775635), the block holding Stone Six, and the
block holding Stone Two. Its word-pattern learner searched each of the three
blocks separately, inferred English capital and small letters, decimal
digits, space and line break, and used those 64 labels to reM
numerical code assignments plus line feed. The author's block-reading code
checked the supplied headers' proof of work, transaction-tree roots and
witness commitments, and examined 455 strict-envelope bodies. These checks
tied the extracted bytes to the supplied headers under the DATA premise in
section 1. The experiment's source recognizers selected the documents by
their internal structure, using known capsule grammar, without selectors for
titles, txids, heights, MIME values or minimum sizes. TheM
was an additional discovery sample; the later exact-text replay used only
the two required Stone blocks.
Two controls permuted all byte labels; the second also reversed block
and body order. Both recovered the corresponding 64 labels and 96
numerical assignments. Each learned table restored exactly the 334
bodies whose every symbol appeared in that table. The altered bytes
served only as symbol-recognition tests, outside the Bitcoin-validity
checks. Synthetic noise, incomplete or conflicting tabM
lesson selection were rejected. A failed development attempt had pooled
all three blocks; the per-block strategy was added after that failure.
These controls exercised the Rosetta Stone approach to decipherment. The
learner received English words, ordered alphabets and decimal notation; it
inferred the input symbols' letter assignments and read the numerical table
from the data. The relabelled controls show how relationships among the
symbols support recovery even when their numerical labels areM
The recognizers and later implementation bridge are described below.
The author's connected recovery used arithmetic SHA-256, SHA3 and Keccak
routines, separate capsule/literal readers, and an integer renderer.
These routines implemented the preserved operations directly, without
calling installed hash, base64, compression or graphics engines. Modern
Python/C++, a compiler, an operating system and hardware carried out the
calculation. An operating-system file-content allowlist excluded old
sult files; a separate restriction denied network access.
Nineteen staged input/source/policy/executable files were frozen and
remained unchanged afterward.
It reconstructed all 10000 five-product bundles, matched all four corpus
roots, both bundle roots and 100 group commitments, and independently derived
all 70000 trait choices, each equal to the stored value. It calculated
7500000000 raster octets. The complete run, including discovery controls, took
342.522 seconds on the audit machine. After it finished, its M
leaves and ten saved sample products were compared with the outputs of the
author's earlier exhaustive recovery of the same 10000 five-product bundles;
all agreed byte for byte. In that experiment those earlier outputs were used
only for this subsequent comparison.
The author's implementation was developed with an AI assistant that knew
programming and had seen the reference code. The recognizers were
developed against the same selected blocks, and the recovery used an
explicit bridge from inferred laM
bels to an existing ASCII-based
implementation. Earlier audit implementations also reused parsing and
assembly knowledge. The experiment therefore demonstrates an implemented
recovery with disclosed prior knowledge. The separate exercise below
adds evidence from a fresh AI task context. An unfamiliar human reader's
unaided interpretation remains untested. The symbol tests cover the
stated labels and assignments; they do not establish automatic
understanding of punctuation, program semantics or an unseen archive of
This companion makes the assembly interpretation explicit so that it can be
read, challenged and preserved. Testing it is a separate experiment, the
exact-text replay, run by the author on these exact bytes. The text is
supplied as an additional input, and its actual assembly tables and byte
fragments drive reconstruction of all 10000 works from the two required
blocks. That replay also matched all corpus, bundle and group commitments.
Further checks by the author, run after the replay had finisheM
every bundle leaf with the same earlier exhaustive outputs as in the
comparison that followed the connected recovery, checked the cited
inscriptions, and evaluated the printed drawing equations against Stone Six's
geometric fixtures. The text and its test implementation can be checked again
using the stated procedure.
A second AI reviewer, distinct from the reviewer in section 9.1, had read this
companion and the project's code. It separately executed the original
generator preserved in Bitcoin inscripM
tion 20219 for all 10000 tokens. Every
seven-choice trait record matched the stored record. Every generated SVG,
after removing the five historical spaces described in section 5.3, matched
this text's assembly. The two resulting corpus roots are the trait and SVG2021
roots printed in section 8. Changing one trait and one SVG made both
comparisons fail. This check used a modern JavaScript runtime to test the
correspondence with the original generator; the arithmetic recovery described
above does not execute it.
 argument is a written construction supported by these calculations. It has
not been verified in a formal proof assistant. Testing executable tables and
equations checks those parts of the account; the English explanations and
their interpretation also require review. Identities and reports for this
companion's final bytes are kept in a separate publication record outside this
inscription. That record can identify the exact inscription after
confirmation; this text cannot contain its own final hash without a circulM
The source-correspondence audit checked section 2.2 against the authenticated
Stones and the copies inside Stone Six. It compared the assembly order,
branches, metadata fragments and drawing conventions with those sources.
The worked example was checked against the recovered trait and piece data,
the exact SVG, and the final raster. Its selected shape strings, arithmetic
and colour samples are checkable without accepting a picture from a website.
These checks remain part of the author's disclosed auM
9.1 A SEPARATE RECONSTRUCTION FROM THE STONES
A separate AI task was started without the preceding project conversation.
Before reading the test blocks, the reviewer declared its background: it
recognized OCM as an on-chain artwork name but reported no recollection of
the exact Stones, specification, implementation or proof. It had general
programming and computing knowledge. The model's training exposure could not
be certified absent.
For the first stage it received two complete raw blocks, their identitieM
starting inscription references and a neutral task brief. Authenticity and
entry selection were supplied premises. This companion, repository code, the
earlier proofs A, B and C, saved pictures and prior output files were
withheld. The reviewer recorded the passages it used, its implementation
choices, development failures and any assistance. The trial's custodian, the
coordinating assistant responsible for staging and execution, supplied
operational help with execution but no artwork rule or correction.
e reviewer wrote new extraction, Base64, DEFLATE, Huffman, CRC,
literal-reading, assembly, metadata and integer-rendering routines. It
interpreted the preserved generator's data and functions without running
that generator or the archived visual kernel. It used the stored seven-byte
trait records, an expressly permitted route; it did not repeat the separate
Keccak derivation of those choices. Python and its generic SHA-256/SHA3-256
library carried out the calculation.
The custodian froze the new source and raw bloM
cks and executed the program
in a fresh directory. The operating system denied network access and reads
of repository files, previous results and development caches. Source and
input identities were unchanged after execution. Development used a shared
host with general tool restrictions and the trial's source-access
instructions. The trial-specific operating-system file-content allowlist
applied to the final program runs.
The first stage had two exhaustive attempts. Both reconstructed all 10000
works and matched aM
ll four corpus roots, both bundle roots and all 100 group
records. The first attempt reported one additional size-check failure. The
reviewer had compared 26816613 JSON payload octets with the 26896639-octet
framed metadata corpus. Using the original framing rules, it accounted for
the 80026 framing bytes and corrected that check. No artwork algorithm or
product byte changed. This failure and the earlier development corrections
The corrected run passed all 161 implemented checks in 40.609 seconds.
t calculated 7500000000 raster octets. After execution, comparison with
withheld records matched every seven-byte trait record, all 40000 SVG,
metadata, tokenURI and raster SHA-256 values, and both ordered
10000-leaf bundle streams. Fifteen saved products for tokens 1, 5000 and
10000 also matched the reference identities. The hash assumption in
section 1 applies to those comparisons.
In the second stage the same reviewer received the 60014-octet edition
of this companion written before the trial's results were addM
assembly tables and byte fragments are identical to those printed here.
The reviewer wrote a separate interpreter of those actual tables and
fragments, reusing its own first-stage decoding, rendering and framing
routines. With the companion explicitly added to the frozen raw block
inputs, this path reconstructed all 10000 works and passed all 209
checks in 40.508 seconds. All collection commitments and subsequent
external product comparisons agreed. This was a companion-assisted
continuation with the first M
stage's experience, implementation and
released comparison results declared.
This adds a separately developed implementation and a complete-domain
agreement test. The tested reader was an AI with computing knowledge and
declared modern tools. A fresh conversation establishes that the project
conversation was not supplied; it cannot establish that the material was
absent from model training. The record supports the stated reconstruction
under those conditions.
9.2 A FURTHER READER EXPERIMENT
An unfamiliar human rM
eviewer can test the instructional route under a
separately declared background and toolchain. Record familiarity with OCM,
the Stones and their software before supplying the material. General
computing equipment and implementation skills should be named as allowed
aids. The question is whether that reviewer can interpret and implement the
preserved operations.
First supply the two required witness-complete blocks and starting references.
Withhold this companion, repository code, the earlier proofs A, B and C,
overed pictures and previous outputs. Ask the reviewer to explain and
implement the recovery, logging sources, assumptions, ambiguities and outside
help. Freeze the implementation and inputs before the complete 10000-work run.
Compare actual products and preserve failures.
The reviewer may use every translation, repeated pattern, table, example
and check contained in the supplied sources. Record which clues enabled
each interpretation, together with any supplied character key or external
assistance. This tests howM
 the Stones' own teaching material supports
discovery and reconstruction.
In a separately recorded stage, supply this companion too. Declare what the
first stage taught the reviewer, record which explanations help, and repeat
the complete-domain checks. Results with T available belong to that stage.
They should be reported alongside the first stage's result and its
General discovery in an unlabelled whole chain, missing witness data,
historical attribution and the construction of physical machinery reM
separate questions. These reader experiments can add evidence about
interpretation while preserving the precise scope of each completed test.
======================================================================
10. THE EXACT BOUNDARY OF THE RESULT
======================================================================
The result is a complete route to all 10000 static Genesis pictures as
defined by Stone Six. It recovers the exact vector descriptions and numeric
records, determines every colour sample in thM
e canonical rendering, and
explains how to place those samples in a visible square grid.
The route is finite and explicit:
  surviving Bitcoin bytes
  -> readable instructions and embedded data
  -> seven choices and a finite piece library
  -> exact vector art and metadata
  -> ordered integer geometry and colour triples
  -> every cell of all ten thousand canonical pictures.
Its scope is the static collection named in section 1, under that
section's DATA, STARTING REFERENCE, MEANING and WORK premises.
int comparisons also depend on the hash assumption in section 1.
Recovering those pictures is a specific, checkable achievement. Claims
about animation, later ownership, historical displays or a future
society's ability to rebuild technology would require further work.
The preservation value lies in giving the artwork a path beyond the tools
that first displayed it. The pieces, choices and rules survive with the
Stones, together with clues and lessons for relearning how to read them.
This companion explains their M9
use in English and mathematics and, when
inscribed, preserves that explanation beside the earlier proofs. A future
reader with the stated resources can follow the construction, draw the
pictures, and check the result against the record left on Bitcoin.
END OF OCM GENESIS CONSTRUCTIVE RECOVERY PROOF, VERSION 1.
text/html;charset=utf-8
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no" />
<meta name="color-scheme" content="dark" />
<title>Bitmap Parcel Globe</title>
<meta name="description" content="Onchain 3D explorer of a Bitmap district: every transaction in the block is a parcel on a globe. Shows inscribed parcels, Ordinals, Runes, BRC-20 and inscription reveals, read only from ord recursive endpoints." />
<script type="applicaM
tion/json" id="agent-manual">
  "name": "Bitmap Parcel Globe",
  "for": "AI agents, robots, IoT displays and other software",
  "what": "A Bitmap district (a Bitcoin block claimed as N.bitmap) drawn as a globe. Each transaction is a parcel (index.N.bitmap). Data comes only from ord recursive endpoints (/r/block, /r/children, /r/inscription, /content).",
    "district": "#<height>/<district inscription id>",
    "parcel": "#<height>/<district inscription id>/<parcel index>",
    "by number only": "#<hM
eight> (works when the onchain registry knows the district)",
    "demo": "?demo or #demo
 simulated data, always labelled",
    "kiosk": "?kiosk, #kiosk or append &kiosk
 no menus, endless tour, rescans every 10 minutes"
    "how": "In the page: await window.bitmapGlobe.command(cmd, args). From another window: postMessage({type:\"bitmapGlobe\", id, cmd, args}); reply {type:\"bitmapGlobe:result\", id, ok, result|error}.",
    "describe": "{}
 this manual + status",
 district, counts, layers, selection",
    "load": "{height, id?}
 load a district (id optional if a registry knows it)",
    "parcel": "{index}
 facts about one parcel (txid, outputs, inscription, ordinals, protocol layers, money flow)",
    "select": "{index}
 fly to a parcel and return its facts",
    "search": "{query, run?}
 suggestions for a parcel, txid, address, rune name, BRC-20 ticker or content type; run:n performs suggestion n",
    "layer": "{id: runes|brc20|reveals|null}
    "filter": "{level: 0 all | 1 inscribed | 2 with Ordinals}",
    "inscription": "{id}
 ord inscription details",
 the whole district as JSON",
    "snapshot": "{}
 PNG of the current view (data URL)",
 start/stop the guided tour",
 ambient display mode"
  "events": "Posted to a parent window: {type:\"bitmapGlobe:event\", event:\"district\"|\"parcel\", data}",
  "safety": "Read-only. Returns public chain data. Cannot move funds, sM
ign, or contact any server other than the ord server it is viewed on."
  --bg:#05060a;--panel:rgba(12,14,19,.78);--panel-solid:#0c0e13;--border:rgba(255,255,255,.08);--border-2:rgba(255,255,255,.14);
  --text:#eef0f3;--text-2:#a5acb6;--text-3:#6c737d;--accent:#f7931a;--accent-2:#ffb35c;--cyan:#7fdcf0;--red:#ff7b7b;
  --r:14px;--shadow:0 20px 60px rgba(0,0,0,.5);
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"SeM
goe UI",Roboto,Helvetica,Arial,sans-serif;
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--text);font:13px/1.45 var(--sans);-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
button:disabled{cursor:default;opacity:.4}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
:focus-visible{outline:2px solid rgba(247,147,26,.6);outline-offset:2px}
relative;width:100%;height:100%;overflow:hidden;isolation:isolate;
  background:radial-gradient(60% 60% at 50% 50%,rgba(247,147,26,.05),transparent 70%),var(--bg)}
.stars{position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:radial-gradient(1px 1px at 12% 18%,#fff8,transparent),radial-gradient(1px 1px at 78% 12%,#fff6,transparent),
  radial-gradient(1px 1px at 33% 72%,#fff5,transparent),radial-gradient(1px 1px at 88% 64%,#fff7,transparent),
  radial-gradient(1px 1px at 52% 8%,#fff4,transpareM
nt),radial-gradient(1px 1px at 6% 86%,#fff6,transparent),
  radial-gradient(1px 1px at 64% 92%,#fff4,transparent),radial-gradient(1.5px 1.5px at 22% 44%,#fff5,transparent),
  radial-gradient(1px 1px at 94% 36%,#fff5,transparent),radial-gradient(1px 1px at 44% 28%,#fff3,transparent);
  background-size:520px 520px}
.halo{position:absolute;left:50%;top:50%;width:min(70vw,72vh);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(circle closest-side,rgba(247,M
147,26,.035) 0%,transparent 70%,rgba(247,147,26,.07) 84%,rgba(127,220,240,.025) 90%,transparent 100%)}
#gl{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab;outline:none}
#gl.dragging{cursor:grabbing}
.fallback{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center;color:var(--text-2)}
.title{position:absolute;z-index:20;top:max(18px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;
nt-size:12px;letter-spacing:.24em;text-transform:uppercase;font-weight:700;white-space:nowrap;pointer-events:none;color:#e9ebee}
.logo{display:grid;grid-template-columns:repeat(2,5px);gap:2px}
.logo i{width:5px;height:5px;border-radius:1px;background:var(--accent)}
.logo i:nth-child(2),.logo i:nth-child(3){opacity:.45}.logo i:nth-child(4){background:var(--cyan);opacity:.8}
/* Shared surfaces */
.card{border:1px solid var(--border);border-radius:var(--r);background:var(--panel);backdrop-filter:blur(18px) saturate(1M
.2);-webkit-backdrop-filter:blur(18px) saturate(1.2);box-shadow:var(--shadow)}
.lbl{display:block;margin:0 0 6px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--text-3)}
.field{display:flex;align-items:center;height:38px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.03);transition:border-color .15s,background .15s}
.field:focus-within{border-color:rgba(247,147,26,.45);background:rgba(247,147,26,.04)}
.field input{flex:1;min-width:0;height:100M
%;border:0;outline:0;background:transparent;padding:0 12px;font-size:13px;font-weight:550;font-variant-numeric:tabular-nums}
.field input::placeholder{color:#555c66}
.field .suffix{padding-right:12px;color:var(--text-3);font-size:12px}
.field.mono input{font-family:var(--mono);font-size:11.5px}
.btn{height:38px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.04);padding:0 14px;font-size:12px;font-weight:650;letter-spacing:.02em;transition:background .15s,border-color .15s,color .15s}
.btn:hover:not(:disabled){background:rgba(255,255,255,.08);border-color:var(--border-2)}
.btn.primary{border-color:rgba(247,147,26,.4);background:linear-gradient(180deg,rgba(247,147,26,.22),rgba(247,147,26,.12));color:#ffd29a}
.btn.primary:hover:not(:disabled){background:linear-gradient(180deg,rgba(247,147,26,.32),rgba(247,147,26,.18));border-color:rgba(247,147,26,.6)}
.chip{height:30px;border:1px solid var(--border);border-radius:999px;background:rgba(255,255,255,.03);padding:0 12px;font-size:11.5px;font-weight:60M
0;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}
.chip:hover:not(:disabled){color:var(--text);border-color:var(--border-2)}
.chip.on{border-color:rgba(127,220,240,.4);background:rgba(127,220,240,.1);color:#c8f2fb}
.chip kbd,.kbd{font:10px var(--mono);color:var(--text-3);border:1px solid var(--border);border-radius:4px;padding:0 4px}
.iconBtn{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--border);border-radius:10px;background:var(--panel);backdrop-filter:blur(14px)M
;-webkit-backdrop-filter:blur(14px);color:var(--text-2);font-size:15px;line-height:1}
.iconBtn:hover{color:var(--text);border-color:var(--border-2)}
.iconBtn.on{color:var(--cyan);border-color:rgba(127,220,240,.35)}
.mono{font-family:var(--mono);font-size:.92em}
.muted{color:var(--text-3)}.accent{color:var(--accent-2)}.cyan{color:var(--cyan)}
.panel{position:absolute;z-index:30;left:16px;top:max(56px,calc(env(safe-area-inset-top) + 50px));width:320px;max-height:calc(100% - 140px);overflow:auto;pM
.panel::-webkit-scrollbar{width:6px}.panel::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:9px}
.panelSummary{display:none;width:100%;align-items:center;gap:8px;border:0;background:none;padding:0;text-align:left}
.panelSummary b{flex:1;min-width:0;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.panelSummary span{color:var(--text-3);font-size:11px}
.panelSummary i{font-style:normal;color:var(--text-3);transition:transform .2s}
.panel.expanded .panelSummM
ary i{transform:rotate(180deg)}
.stack{display:grid;gap:12px}
.hint{margin:0;font-size:11.5px;color:var(--text-3);line-height:1.5}
.hint b{color:var(--text-2);font-weight:600}
.hint.err{color:#ffb0b0}
.hint code{font:11px var(--mono);color:var(--text-2);background:rgba(255,255,255,.05);padding:1px 5px;border-radius:5px}
.divider{height:1px;background:var(--border);margin:2px 0}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.stat{padding:9px 10px;border:1px solid var(--border);border-radius:10px;backgroM
und:rgba(255,255,255,.02)}
.stat span{display:block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-weight:700}
.stat b{display:block;margin-top:3px;font-size:14px;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat.wide{grid-column:1/-1}
.stat.wide b{font:12px var(--mono);color:var(--text-2);display:flex;align-items:center;gap:6px}
.stat.wide b em{font-style:normal;flex:1;min-width:0;overflow:hidden;text-overflow:elM
.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.inline .field{flex:1}
.scanMeta{font-size:11.5px;color:var(--text-3);min-height:16px}
.scanMeta b{color:var(--text);font-weight:650}.scanMeta b.hot{color:var(--cyan)}.scanMeta b.ins{color:#ffd896}
.progress{height:3px;border-radius:9px;background:rgba(255,255,255,.06);overflow:hidden;margin-top:6px}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--cyan));transition:width .3s}
ex;align-items:center;gap:7px;font-size:11px;color:var(--text-3)}
.source i{width:7px;height:7px;border-radius:50%;background:#555}
.source.ok i{background:#5fd18b;box-shadow:0 0 8px rgba(95,209,139,.6)}
.source.warn i{background:var(--accent);box-shadow:0 0 8px rgba(247,147,26,.6)}
.source.bad i{background:var(--red)}
.sequence{position:absolute;z-index:18;right:16px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 8px}
r:0;background:none;padding:2px 4px;display:grid;justify-items:center;gap:1px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}
.seqBtn strong{font-size:12px;letter-spacing:0;font-variant-numeric:tabular-nums}
.seqBtn.start strong{color:var(--accent-2)}.seqBtn.end strong{color:var(--cyan)}
.seqBtn:hover{color:var(--text)}
.seqLine{width:4px;height:140px;border-radius:9px;background:linear-gradient(180deg,#f7931a,#c287ca 50%,#63c7e8);position:relative;cursor:pointer}
nel{max-height:calc(100% - 238px)}
#app.inspecting .sequence{opacity:0;pointer-events:none}
.sequence{transition:opacity .2s}
.seqThumb{position:absolute;left:50%;width:12px;height:12px;border-radius:50%;transform:translate(-50%,-50%);background:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.18),0 0 12px #fff8;display:none}
/* Endpoint markers */
.endpoint{position:absolute;z-index:17;display:none;transform:translate(-50%,-140%);align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--border-2);border-radiusM
:999px;background:rgba(7,8,10,.85);backdrop-filter:blur(8px);font-size:10.5px;font-weight:600;color:var(--text-2);white-space:nowrap}
.endpoint.show{display:flex}
.endpoint i{width:7px;height:7px;border-radius:50%}
.endpoint.start i{background:var(--accent);box-shadow:0 0 10px var(--accent)}
.endpoint.end i{background:#63c7e8;box-shadow:0 0 10px #63c7e8}
/* Legend / color mode */
.legend{position:absolute;z-index:19;left:16px;bottom:max(16px,env(safe-area-inset-bottom));width:320px;padding:12px 14px}
grid;grid-template-columns:repeat(4,1fr);gap:3px;padding:3px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.02)}
.seg button{height:28px;border:0;border-radius:7px;background:none;font-size:11.5px;font-weight:600;color:var(--text-3)}
.seg button:hover{color:var(--text)}
.seg button.on{background:rgba(255,255,255,.09);color:var(--text)}
.ramp{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:10.5px;color:var(--text-3)}
.ramp i{flex:1;height:5px;border-radius:9px;backgrM
ound:linear-gradient(90deg,#f7931a,#c287ca,#63c7e8)}
.ramp i.heat{background:linear-gradient(90deg,#29388a,#63c7e8,#fadb73,#f7731a)}
.legendItems{display:flex;gap:6px;margin-top:10px}
.legendToggle{flex:1;min-width:0;height:30px;display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.02);font-size:11.5px;font-weight:600;color:var(--text-2);white-space:nowrap}
.legendToggle b{font-weight:650;color:var(--text);font-variant-numeric:taM
.legendToggle:hover{color:var(--text);border-color:var(--border-2)}
.legendToggle.on{border-color:rgba(255,204,117,.45);background:rgba(255,204,117,.1);color:#ffe2b0}
#filterOrdinals.on{border-color:rgba(127,220,240,.45);background:rgba(127,220,240,.1);color:#c8f2fb}
.glowBtn{flex:0 0 auto;padding:0 10px}
.statBtn{text-align:left;color:inherit;cursor:pointer}
.statBtn:hover{border-color:rgba(255,204,117,.4)}
.statBtn b{color:#ffd896}
.dot{width:8px;height:8px;border-radius:50%;background:#ffd28a;box-shaM
dow:0 0 8px rgba(255,200,110,.75);display:inline-block}
.dot.ordinal{background:#96e7f6;box-shadow:0 0 9px rgba(150,231,246,.7)}
.viewCtl{position:absolute;z-index:19;right:16px;bottom:max(16px,env(safe-area-inset-bottom));display:flex;gap:6px}
.updateBar{position:absolute;z-index:27;left:50%;top:max(48px,calc(env(safe-area-inset-top) + 44px));max-width:min(560px,calc(100vw - 32px));transform:translate(-50%,12px);display:flex;align-items:center;gap:10px;padding:8px 14px;borderM
-radius:999px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,transform .2s,visibility .2s;overflow:hidden}
.updateBar.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
/* On desktop the panel already shows progress; the floating bar is for the collapsed mobile panel. */
@media (min-width:761px){.updateBar{display:none}}
.updateDot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--accent);box-shadow:0 0 9px rgba(247,147,26,.6);animation:pulse 1.2s ease-in-out iM
.updateTitle{font-size:12px;font-weight:650;white-space:nowrap}
.updateDetail{min-width:0;font-size:11.5px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.updateBar.done .updateDot{background:#5fd18b;box-shadow:0 0 9px rgba(95,209,139,.6);animation:none}
.updateBar.error .updateDot{background:var(--red);box-shadow:0 0 9px rgba(255,123,123,.5);animation:none}
@keyframes pulse{50%{opacity:.35}}
.inspector{position:absolute;z-iM
ndex:32;right:16px;top:max(56px,calc(env(safe-area-inset-top) + 50px));width:340px;max-height:calc(100% - 128px);display:flex;flex-direction:column;overflow:hidden;
  transform:translateX(calc(100% + 32px));opacity:0;pointer-events:none;transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .2s}
.inspector.open{transform:none;opacity:1;pointer-events:auto}
.sheetHandle{display:none}
.insHead{display:flex;align-items:center;gap:8px;padding:12px 12px 12px 16px;border-bottom:1px solid var(--border)}
.eyebrow{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-weight:700;margin-bottom:2px}
.parcelName{font-size:16px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.insNav{display:flex;gap:4px}
.insNav button{width:30px;height:30px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.03);color:var(--text-2);font-size:15px;line-height:1}
.insNav button:hover:not(:disabled){color:vaM
r(--text);border-color:var(--border-2)}
.tabs{display:flex;gap:2px;padding:8px 10px 0;border-bottom:1px solid var(--border)}
.tab{flex:1;height:34px;border:0;border-bottom:2px solid transparent;background:none;font-size:12px;font-weight:600;color:var(--text-3);margin-bottom:-1px}
.tab:hover{color:var(--text)}
.tab.on{color:var(--text);border-bottom-color:var(--accent)}
.tab .count{margin-left:4px;font-size:10px;color:var(--cyan)}
.insBody{flex:1;overflow:auto;padding:12px 16px 16px}
.insBody::-webkit-scrollbar{widtM
h:6px}.insBody::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:9px}
.row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:center;padding:7px 0;border-top:1px solid rgba(255,255,255,.05);font-size:12px}
.row:first-child{border-top:0}
.key{color:var(--text-3);white-space:nowrap}
.val{text-align:right;color:var(--text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.tinyLink{color:#c9dcec;border-bottom:1px solid rgba(201,220,236,.25)}
nyLink:hover{color:#fff}
.statusDot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:1px;background:#747b84}
.statusDot.inscribed{background:#ffd28a;box-shadow:0 0 8px rgba(255,200,110,.6)}.statusDot.ordinal{background:#96e7f6;box-shadow:0 0 8px rgba(150,231,246,.6)}
.subhead{margin:16px 0 8px;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);font-weight:700}
.subhead:first-child{margin-top:0}
.copyBtn{height:22px;margin-left:6px;border:1px sM
olid var(--border);border-radius:6px;background:rgba(255,255,255,.03);padding:0 7px;font-size:10px;font-weight:600;color:var(--text-3);vertical-align:1px}
.copyBtn:hover{color:var(--text);border-color:var(--border-2)}
.miniBtn{height:28px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.03);padding:0 10px;font-size:11.5px;font-weight:600;color:var(--text-2)}
.miniBtn:hover{color:var(--text);border-color:var(--border-2)}
.ordinalList{display:grid;gap:6px}
.ordinalItem{width:100%;display:M
grid;grid-template-columns:40px minmax(0,1fr) 14px;align-items:center;gap:10px;padding:7px;border:1px solid var(--border);border-radius:10px;background:rgba(255,255,255,.02);text-align:left}
.ordinalItem:hover{background:rgba(255,255,255,.05);border-color:rgba(127,220,240,.3)}
.ordIcon{width:40px;height:34px;border-radius:7px;border:1px solid var(--border);display:grid;place-items:center;color:var(--cyan);background:rgba(127,220,240,.05);font-size:10px;font-weight:700;letter-spacing:.04em}
.ordMeta{min-width:0}
dMeta b{display:block;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ordMeta span{display:block;margin-top:1px;font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ordArrow{color:var(--text-3)}
details.txDetail{border-top:1px solid rgba(255,255,255,.05);padding:8px 0}
details.txDetail summary{cursor:pointer;list-style:none;font-size:12px;color:var(--text-2);display:flex;justify-content:space-between;gap:8px}
details.txDetail summary::-webkit-deM
tails-marker{display:none}
details.txDetail summary em{font-style:normal;color:var(--text-3);font-variant-numeric:tabular-nums}
details.txDetail summary:after{content:"+";color:var(--text-3)}
details.txDetail[open] summary:after{content:"
.detailBody{padding-top:6px}
.rawMore{margin-top:4px;font-size:11px;color:var(--text-3)}
.rawBox{max-height:160px;overflow:auto;margin-top:6px;padding:8px;border:1px solid var(--border);border-radius:8px;background:#07080b;color:#8f969e;font:10.5px/1.5 var(--mono);overflow-wrM
ap:anywhere;white-space:pre-wrap}
.empty{padding:12px;border:1px dashed var(--border);border-radius:10px;font-size:12px;color:var(--text-3);text-align:center}
.hover{position:absolute;z-index:25;pointer-events:none;opacity:0;transform:translate(14px,14px);padding:8px 10px;border:1px solid var(--border-2);border-radius:10px;background:rgba(8,9,12,.92);font-size:12px;color:var(--text-2);transition:opacity .08s;max-width:260px}
.hover.show{opacity:1}
.hover b{color:#fff;font-variant-numeric:tabular-nums}
.hover small{display:block;margin-top:2px;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}
.hover small.ordinal{color:var(--cyan)}
.hover small.ins{color:#ffd896}
.toast{position:absolute;z-index:70;left:50%;bottom:max(24px,calc(env(safe-area-inset-bottom) + 24px));transform:translate(-50%,10px);padding:9px 14px;border:1px solid var(--border-2);border-radius:999px;background:rgba(14,16,20,.96);font-size:12px;color:var(--text);opacity:0;visibility:hidden;transition:.2s;box-shadow:vaM
.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}
.toast.error{color:#ffc2c2;border-color:rgba(255,123,123,.35)}
.problemBtn{position:relative;display:none;color:#ffa3a3;border-color:rgba(255,123,123,.3)}
.problemBtn.show{display:grid}
.problemCount{position:absolute;right:-5px;top:-6px;min-width:16px;height:16px;padding:0 4px;display:grid;place-items:center;border-radius:999px;background:#c24848;color:#fff;font-size:9.5px;font-weight:700}
.popover{position:absoluM
te;z-index:95;right:16px;bottom:max(62px,calc(env(safe-area-inset-bottom) + 62px));width:min(440px,calc(100vw - 32px));max-height:min(64vh,620px);display:none;flex-direction:column;overflow:hidden}
.popover.open{display:flex}
.popHead{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border)}
.popHead div{flex:1;min-width:0}
.popHead b{display:block;font-size:13px}
.popHead span{display:block;font-size:11.5px;color:var(--text-3)}
#copyText{user-select:all;max-height:40vh}
blemText{margin:0;padding:12px 14px;overflow:auto;white-space:pre-wrap;word-break:break-word;color:var(--text-2);font:11px/1.55 var(--mono)}
.keys{padding:10px 14px 14px;display:grid;grid-template-columns:auto 1fr;gap:8px 14px;font-size:12px;color:var(--text-2);align-items:center}
.keys .kbd{font-size:11px;padding:2px 6px;justify-self:start;color:var(--text)}
.viewer{position:absolute;z-index:80;inset:0;display:none;background:#05060a}
.viewer.open{display:block}
.viewerTop{position:absolute;z-index:3M
;left:0;right:0;top:0;height:56px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;padding:0 14px;border-bottom:1px solid var(--border);background:rgba(8,9,12,.94);backdrop-filter:blur(18px)}
.viewerTitle{text-align:center;min-width:0}
.viewerTitle b{display:block;font-size:14px}
.viewerTitle span{display:block;font:10.5px var(--mono);color:var(--text-3);max-width:40vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewerActions{justify-self:end;display:flex;gap:6px}
ctions .btn{height:34px;font-size:11.5px;display:flex;align-items:center}
.viewerActions .btn.live{border-color:rgba(127,220,240,.4);background:rgba(127,220,240,.1);color:#c8f2fb}
.viewerFrame{position:absolute;left:0;right:0;top:56px;width:100%;height:calc(100% - 96px);border:0;background:#0a0b0e}
.viewerFoot{position:absolute;left:0;right:0;bottom:0;height:40px;display:flex;justify-content:center;align-items:center;gap:14px;padding:0 12px;border-top:1px solid var(--border);background:rgba(8,9,12,.95);font-size:11M
.5px;color:var(--text-3)}
.viewerFoot span{max-width:38vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.viewerHint{color:#e3b06f!important}
.outputBtn{position:absolute;z-index:5;right:14px;bottom:52px;display:none}
.outputBtn.show{display:flex;align-items:center}
.outputPanel{position:absolute;z-index:6;right:14px;bottom:96px;width:min(360px,calc(100vw - 28px));max-height:min(62vh,600px);display:none;flex-direction:column;overflow:hidden}
.outputPanel.open{display:flex}
.outputBody{padding:12px 14px M
.runeList{display:grid;gap:6px}
.runeItem{display:flex;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;font-size:12px}
.runeItem span{font-family:var(--mono);color:var(--cyan)}
.demoRibbon{position:absolute;z-index:40;right:16px;top:max(12px,env(safe-area-inset-top));display:flex;align-items:center;gap:8px;padding:4px 6px 4px 12px;border:1px solid rgba(247,147,26,.5);border-radius:999px;background:rgba(40,24,6,.92);font-size:11M
.5px;color:#ffd29a;white-space:nowrap}
.demoRibbon b{letter-spacing:.14em}
.demoRibbon .short{display:none}
.demoRibbon button{height:22px;border:1px solid rgba(255,210,154,.35);border-radius:999px;background:none;color:#ffd29a;font-size:11px;padding:0 9px}
@media (max-width:1000px){.demoRibbon{right:auto;left:50%;transform:translateX(-50%);top:max(10px,env(safe-area-inset-top))}#app.demo .title{display:none}}
@media (max-width:760px){.demoRibbon{top:max(7px,env(safe-area-inset-top));font-size:10.5px}}
ambient display: just the globe, the title and the parcel card */
#app.kiosk .panel,#app.kiosk .legend,#app.kiosk .viewCtl,#app.kiosk .sequence,#app.kiosk .insNav,#app.kiosk .tabs,#app.kiosk .updateBar{display:none!important}
#app.kiosk #gl{cursor:default}
#vrBtn,#arBtn{font-size:11px;font-weight:700;letter-spacing:.04em}
/* Search, places, share */
.searchWrap{position:relative}
.suggest{position:absolute;z-index:50;left:0;right:0;top:calc(100% + 6px);padding:6px;display:grid;gap:2px;max-height:320px;overflow:autM
o;background:rgba(12,14,19,.98)}
.sug{display:grid;grid-template-columns:22px 1fr;gap:8px;align-items:center;padding:7px 8px;border:0;border-radius:8px;background:none;text-align:left;font-size:12px;color:var(--text)}
.sug:hover,.sug.on{background:rgba(255,255,255,.07)}
.sug i{font-style:normal;text-align:center;color:var(--text-3)}
.sug small{display:block;color:var(--text-3);font-size:11px}
.places summary{cursor:pointer;font-size:10px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--textM
-3);list-style:none}
.places summary::-webkit-details-marker{display:none}
.places summary:after{content:" +"}.places[open] summary:after{content:"
.placeList{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.placeList .chip{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.placeList .sub{width:100%;font-size:10.5px;color:var(--text-3);margin-top:4px}
.insNav #starBtn.on{color:#ffd896;border-color:rgba(255,216,150,.4)}
.insNav #traceBtn.on{color:#ffbf7a;border-color:rgba(247,147,26M
.shareBody{padding:14px;display:grid;justify-items:center;gap:10px}
#qr{background:#fff;border-radius:10px;padding:0;width:232px;height:232px;image-rendering:pixelated}
.shareUrl{max-width:100%;font-size:10.5px;color:var(--text-3);overflow-wrap:anywhere;text-align:center}
.flowList{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
/* Protocol layers */
.layerRow{margin-top:10px}
.layerRow .lbl{margin-bottom:6px}
.layerChips{display:flex;flex-wrap:wrap;gap:6px}
.layerChip{height:28px;display:inline-flex;aliM
gn-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;background:rgba(255,255,255,.02);padding:0 10px;font-size:11.5px;font-weight:600;color:var(--text-2)}
.layerChip i{width:8px;height:8px;border-radius:50%;background:var(--lc);box-shadow:0 0 8px var(--lc)}
.layerChip b{color:var(--text);font-variant-numeric:tabular-nums}
.layerChip:hover:not(:disabled){color:var(--text)}
.layerChip.on{border-color:var(--lc);color:var(--text);background:rgba(255,255,255,.07)}
.layerChip:disabled{opacity:.4}
ayerDot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:0}
.revealImg{display:block;max-width:100%;max-height:220px;margin:8px auto 0;image-rendering:pixelated;border-radius:8px;background:#0b0d11}
/* History timeline */
.timeline{margin-top:10px}
.tlHead{display:flex;justify-content:space-between;align-items:baseline}
.tlHead .lbl{margin:0}
#tlDate{font-size:11px;color:var(--text-2);font-variant-numeric:tabular-nums}
.tlRow{display:flex;align-items:center;gap:8px;marginM
.tlPlay{width:28px;height:28px;flex:0 0 28px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.03);color:var(--text-2);font-size:11px}
.tlPlay:hover{color:var(--text);border-color:var(--border-2)}
#tlRange{flex:1;accent-color:var(--accent);min-width:0}
.chip.on#tourBtn{border-color:rgba(247,147,26,.45);background:rgba(247,147,26,.12);color:#ffd29a}
/* Claims + config */
.lblOpt{color:var(--text-3);letter-spacing:.06em;text-transform:none;font-weight:600}
.linkBtn{border:0;backM
ground:none;padding:6px 0 0;font-size:11.5px;font-weight:600;color:var(--text-3)}
.linkBtn:hover{color:var(--text)}
.challengeInput{width:100%;height:auto;min-height:64px;margin-top:6px;padding:8px 10px;font:11px/1.5 var(--mono);color:var(--text);resize:vertical;outline:0}
.notice{padding:9px 11px;border:1px solid rgba(127,220,240,.3);border-radius:10px;background:rgba(127,220,240,.06);font-size:11.5px;color:var(--text-2);line-height:1.5}
.notice a{color:#c8f2fb;border-bottom:1px solid rgba(200,242,251,.3)}
display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:center;padding:8px 10px;border:1px solid var(--border);border-radius:10px;margin-top:6px;font-size:12px}
.claim.win{border-color:rgba(95,209,139,.45);background:rgba(95,209,139,.06)}
.claim b{font-variant-numeric:tabular-nums}
.claim small{grid-column:1/-1;font-size:11px;color:var(--text-3)}
.claim .tag{justify-self:end;text-align:right;font-size:10.5px;font-weight:700;letter-spacing:.04em;padding:3px 7px;border-radius:999px;background:rgba(255,25M
5,255,.06);color:var(--text-2);white-space:normal}
.claim.win .tag{background:rgba(95,209,139,.16);color:#9ff0bd}
.claim .tag.bad{background:rgba(255,123,123,.12);color:#ffb0b0}
.claim .tag.warn{background:rgba(247,147,26,.14);color:#ffcf94}
/* Inscription globe */
.galleryBar{position:absolute;z-index:31;left:50%;top:max(52px,calc(env(safe-area-inset-top) + 46px));transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:8px 14px 8px 8px;width:min(520px,calc(100vw - 32px))}
.galleryBar .btn{heigM
ht:32px;padding:0 12px;flex:0 0 auto}
.gTitle{flex:1;min-width:0}
.gTitle b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gTitle span{display:block;font-size:11px;color:var(--text-3);font-variant-numeric:tabular-nums}
.gProg{width:64px;height:3px;flex:0 0 auto;border-radius:9px;background:rgba(255,255,255,.08);overflow:hidden}
.gProg i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--cyan));transition:width .3s}
#app.galleryMode .legenM
d,#app.galleryMode .sequence,#app.galleryMode .inspector,#app.galleryMode .endpoint,#app.galleryMode .panel{display:none!important}
.galleryChip{color:#c8f2fb!important;border-color:rgba(127,220,240,.3)!important}
.globeBtn{margin-top:8px;width:100%}
.viewerNav{justify-self:start;display:flex;gap:6px}
.viewerNav .btn{height:34px;font-size:12px}
.infoBtn{left:14px;right:auto}
.viewerImg{position:absolute;left:0;right:0;top:56px;width:100%;height:calc(100% - 96px);object-fit:contain;image-rendering:pixelated;backgrouM
nd:radial-gradient(circle at 50% 40%,#151820,#07080b 70%);padding:24px}
.outputBtn{background:rgba(12,14,19,.92)!important;backdrop-filter:blur(10px)}
.outputBtn.active{border-color:rgba(127,220,240,.4);color:#c8f2fb}
.outputPanel{background:rgba(12,14,19,.97)}
.viewerActions .btn{white-space:nowrap}
.detailPanel{left:14px;right:auto}
/* Preview thumbnails (ord inscription previews / social cards)
 show just the globe and title */
@media (max-width:420px) and (max-height:420px),(min-width:900px) and (max-heightM
  #app:not(.hasBlock) .panel,#app:not(.hasBlock) .viewCtl,#app:not(.hasBlock) .updateBar,#app:not(.hasBlock) .toast{display:none!important}
@media (max-width:200px){.title span{display:none}}
@media (max-width:760px){
  .title{top:max(12px,env(safe-area-inset-top));font-size:10.5px;letter-spacing:.2em}
  .panel{left:10px;right:10px;width:auto;top:max(42px,calc(env(safe-area-inset-top) + 36px));padding:12px 14px;max-height:calc(100% - 120px);transition:opacity .15s}
  #app.hasBlock .panelSumM
  #app.hasBlock .panel{max-height:calc(100% - 150px)}
  #app.hasBlock .panel:not(.expanded) .panelBody{display:none}
  #app.hasBlock .panel.expanded .panelSummary{margin-bottom:12px}
  .sequence,.hover{display:none!important}
  .legend{left:10px;right:58px;width:auto;bottom:max(10px,env(safe-area-inset-bottom));padding:10px 12px;transition:opacity .15s}
  .ramp{display:none}
  .viewCtl{right:10px;bottom:max(10px,env(safe-area-inset-bottom));flex-direction:column}
  .viewCtl .desk{display:none}
.updateBar{top:max(96px,calc(env(safe-area-inset-top) + 90px));bottom:auto;transform:translate(-50%,-8px)}
  .inspector{left:8px;right:8px;top:auto;bottom:max(8px,env(safe-area-inset-bottom));width:auto;max-height:58vh;transform:translateY(calc(100% + 40px));border-radius:20px 20px 16px 16px}
  .inspector.open{transform:none}
  .sheetHandle{display:block;width:38px;height:4px;margin:8px auto 0;border-radius:9px;background:rgba(255,255,255,.2)}
  .insHead{padding:8px 10px 10px 14px}
  #app.globeActive .panel,#app.glM
obeActive .legend,#app.globeActive .endpoint{opacity:.12;pointer-events:none}
  .popover{right:10px;left:10px;width:auto}
  .galleryBar{top:max(40px,calc(env(safe-area-inset-top) + 34px));width:calc(100vw - 20px)}
  .viewerNav #viewerPrev,.viewerNav #viewerNext{display:none}
  .toast{bottom:auto;top:max(140px,calc(env(safe-area-inset-top) + 134px));transform:translate(-50%,-10px)}
  .viewerTop{grid-template-columns:auto 1fr auto;padding:0 8px;gap:6px}
  .viewerActions .btn{padding:0 9px;font-size:11px}
ions #viewerAddressLink{display:none!important}
  .viewerFoot{font-size:10.5px}
/* Short, wide screens (a phone turned sideways, small laptop windows): fold the panel like on phones. */
@media (max-height:500px) and (min-width:761px){
  .title,.sequence{display:none!important}
  .panel{top:max(10px,env(safe-area-inset-top));padding:10px 12px}
  #app.hasBlock .panelSummary{display:flex}
  #app.hasBlock .panel:not(.expanded) .panelBody{display:none}
  #app.hasBlock .panel.expanded .panelSummary{margin-bottom:12px}
  #app.hasBlock .panel.expanded ~ .legend{display:none}
  .legend{bottom:max(10px,env(safe-area-inset-bottom));max-height:calc(100% - 76px);overflow:auto;padding:10px 12px}
  .viewCtl{bottom:max(10px,env(safe-area-inset-bottom))}
  .inspector{top:max(10px,env(safe-area-inset-top));max-height:calc(100% - 20px)}
  .demoRibbon{top:max(10px,env(safe-area-inset-top))!important;left:50%;transform:translateX(-50%)}
  .demoRibbon .long{display:none}.demoRibbon .short{display:inline}
  .galleryBar{top:10px}
s-reduced-motion:reduce){*,*:before,*:after{transition-duration:.001ms!important;animation:none!important}}
  <div class="stars"></div>
  <div class="halo"></div>
  <canvas id="gl" aria-label="Interactive Bitmap parcel globe"></canvas>
  <div class="title"><span class="logo"><i></i><i></i><i></i><i></i></span><span>Bitmap Parcel Globe</span></div>
  <div class="demoRibbon" id="demoRibbon" hidden><b>DEMO</b> <span class="long">simulated data
 not real chain data</span><spaM
n class="short">simulated data</span> <button type="button" id="demoExit">Exit</button></div>
  <section class="panel card" id="panel">
    <button class="panelSummary" id="panelToggle" type="button"><b id="panelSummaryText">
</b><span id="panelSummarySub"></span><i>
    <div class="panelBody stack">
        <label class="lbl" for="bitmapInput">Bitmap district</label>
        <div class="field"><input id="bitmapInput" inputmode="numeric" autocomplete="off" spellcheck="false" placeholdeM
r="840000" /><span class="suffix">.bitmap</span></div>
        <label class="lbl" for="bitmapIdInput">District inscription ID <span class="lblOpt" id="idOptional" hidden>
 optional</span></label>
        <div class="field mono"><input id="bitmapIdInput" autocomplete="off" autocapitalize="off" spellcheck="false" placeholder="txid
        <button class="linkBtn" id="challengeToggle" type="button">+ Compare competing claims</button>
        <div id="challengeBox" hidden>
    <textarea class="field mono challengeInput" id="challengeInput" rows="3" spellcheck="false" placeholder="Other N.bitmap inscription IDs, one per line"></textarea>
      <button class="btn primary" id="bitmapGo" type="button">Explore district</button>
      <p class="hint" id="blockMeta">Paste the ID of the <b>first</b> inscription of <code>N.bitmap</code>. Every claim is checked onchain and the earliest valid one wins.</p>
      <div class="notice" id="configNotice" hidden></div>
    <div id="blockCard" class="stack" hidden>
        <div class="divider"></div>
        <div class="stats">
          <div class="stat"><span>Parcels</span><b id="statParcels">
          <div class="stat"><span>Block size</span><b id="statSize">
          <div class="stat"><span>Mined</span><b id="statTime">
          <button class="stat statBtn" id="statInscribedBtn" type="button" title="Show only inscribed parcels"><span>Inscribed parcels</span><b id="statInscribed">
          <div class="stat wide"><span>Block hash</span><b><em id="statHash">
</em><button class="copyBtn" id="statHashCopy" type="button">Copy</button></b></div>
      <div id="parcelSearch" class="stack" hidden>
          <label class="lbl" for="parcelInput">Search this district</label>
          <div class="searchWrap"><div class="inline"><div class="field"><input id="parcelInput" autocomplete="off" spellcheck="false" placeholder="Parcel, txid, address, runM
" role="combobox" aria-expanded="false" aria-controls="suggest" /></div><button class="btn" id="parcelGo" type="button">Go</button></div>
          <div class="suggest card" id="suggest" role="listbox" hidden></div></div>
        <div class="inline">
          <button class="chip" id="nextInsBtn" type="button">Next inscribed <kbd>N</kbd></button>
          <button class="chip" id="randomBtn" type="button">Random <kbd>R</kbd></button>
          <button class="chip" id="shareBtn" type=M
"button">Share</button>
          <button class="chip" id="myParcelsBtn" type="button" hidden>
 My parcels</button>
          <button class="chip galleryChip" id="districtGalleryBtn" type="button">
 District gallery</button>
        <div class="inline">
          <button class="chip" id="tourBtn" type="button">
 Tour <kbd>T</kbd></button>
        <details class="places" id="places" hidden><summary>Saved &amp; recent</summary><div id="placesBody"></div></details>
s="inline" id="linksRow" hidden></div>
        <div class="inline" id="addonRow" hidden>
          <div class="scanMeta" id="scanMeta"></div>
          <div class="progress" id="scanProgress"><i></i></div>
      <div class="source" id="sourceMeta"><i></i><span>Connecting
      <button class="linkBtn" id="demoBtn" type="button">
 Try the demo (simulated data)</button>
  <div class="sequence card" id="sequence" hidden>M
    <button class="seqBtn start" id="firstBtn" type="button"><strong>0</strong>First</button>
    <span class="seqLine" id="seqLine" title="Jump along parcel order"><span class="seqThumb" id="seqThumb"></span></span>
    <button class="seqBtn end" id="lastBtn" type="button"><strong id="lastIndex">
</strong>Last</button>
  <section class="legend card" id="legend" hidden>
    <span class="lbl">Color parcels by</span>
    <div class="seg" id="modeSeg">
      <button type="button" data-mode="order" class="M
      <button type="button" data-mode="size">Size</button>
      <button type="button" data-mode="value">Value</button>
      <button type="button" data-mode="io">I/O</button>
    <div class="ramp"><span id="rampLo">First</span><i id="rampBar"></i><span id="rampHi">Last</span></div>
    <div class="layerRow" id="layerRow" hidden><span class="lbl">Layers</span><div class="layerChips" id="layerChips"></div></div>
    <div class="timeline" id="timeline" hidden>
      <div class="tlHead"><M
span class="lbl">History</span><span id="tlDate">Now</span></div>
      <div class="tlRow"><button class="tlPlay" id="tlPlay" type="button" title="Replay how the district was settled">
</button><input type="range" id="tlRange" min="0" max="1000" value="1000" aria-label="District history" /></div>
    <div class="legendItems">
      <button class="legendToggle" id="filterInscribed" type="button" title="Show only inscribed parcels (I)"><i class="dot"></i>Inscribed<b id="countInscribed">
     <button class="legendToggle" id="filterOrdinals" type="button" title="Show only parcels with Ordinals (O)"><i class="dot ordinal"></i>Ordinals<b id="countOrdinals">
      <button class="legendToggle glowBtn on" id="glowToggle" type="button" title="Glow around inscribed parcels (G)" aria-label="Glow">
  <div class="viewCtl">
    <button class="iconBtn problemBtn" id="problemBtn" type="button" title="Diagnostics">!<span class="problemCount" id="problemCount">1M
    <button class="iconBtn" id="vrBtn" type="button" title="View in VR" hidden>VR</button>
    <button class="iconBtn" id="arBtn" type="button" title="View in AR" hidden>AR</button>
    <button class="iconBtn desk" id="helpBtn" type="button" title="Keyboard shortcuts">?</button>
    <button class="iconBtn on" id="spinBtn" type="button" title="Auto-rotate">
    <button class="iconBtn" id="zoomIn" type="button" title="Zoom in">+</button>
    <button class="iconBtn" id="zoomOut" type="buttM
on" title="Zoom out">
    <button class="iconBtn" id="resetView" type="button" title="Reset view">
  <button class="endpoint start" id="firstMarker" type="button"><i></i>First
  <button class="endpoint end" id="lastMarker" type="button"><i></i>Last
 <span id="lastMarkerIndex">
  <div class="updateBar card" id="updateBar" role="status" aria-live="polite"><span class="updateDot"></span><span class="updateTitle" id="updateTitle"></span><span class="M
updateDetail" id="updateDetail"></span></div>
  <aside class="inspector card" id="inspector" aria-live="polite">
    <div class="sheetHandle" aria-hidden="true"></div>
    <div class="insHead">
      <div class="insTitle"><div class="eyebrow" id="parcelEyebrow">Parcel</div><div class="parcelName" id="parcelName">
      <div class="insNav">
        <button id="starBtn" type="button" title="Save this parcel">
        <button id="traceBtn" type="button" title="Trace the money (M)">
        <button id="prevParcel" type="button" title="Previous parcel (
        <button id="nextParcel" type="button" title="Next parcel (
        <button id="insClose" type="button" title="Close (Esc)">
    <div class="tabs" id="tabs">
      <button class="tab on" data-section="parcel" type="button">Parcel</button>
      <button class="tab" data-section="transaction" type="button">Transaction</button>
      <button class="tab" data-section="M
bitmap" type="button">Bitmap</button>
      <button class="tab" data-section="ordinals" type="button">Ordinals<span class="count" id="ordCount"></span></button>
    <div class="insBody" id="insBody"></div>
  <section class="galleryBar card" id="galleryBar" hidden>
    <button class="btn" id="galleryBack" type="button">
    <button class="btn" id="galleryShare" type="button" title="Share links to every inscription in this set">Share set</button>
    <div class="gTitle"><b M
id="galleryTitle">Inscriptions</b><span id="gallerySub"></span></div>
    <div class="gProg"><i id="galleryProg"></i></div>
  <div class="hover" id="hover"></div>
  <div class="toast" id="toast"></div>
  <section class="popover card" id="problemPanel" aria-hidden="true">
    <div class="popHead"><div><b>Diagnostics</b><span>Copy this report when something goes wrong.</span></div><button class="miniBtn" id="problemCopy" type="button">Copy</button><button class="miniBtn" id="problemClose" type="button"M
>Close</button></div>
    <pre class="problemText" id="problemText"></pre>
  <section class="popover card" id="sharePanel" aria-hidden="true">
    <div class="popHead"><div><b id="shareTitle">Share this view</b><span>Scan to open it on a phone</span></div><button class="miniBtn" id="shareClose" type="button">Close</button></div>
    <div class="shareBody"><canvas id="qr" width="232" height="232"></canvas><div class="shareUrl mono" id="shareUrl"></div><button class="btn primary" id="shareCopy" type="butM
ton">Copy link</button></div>
  <section class="popover card" id="copyPanel" aria-hidden="true">
    <div class="popHead"><div><b id="copyTitle">Copy</b><span>Copying is blocked here
 it is selected, press Ctrl/Cmd+C</span></div><button class="miniBtn" id="copyClose" type="button">Close</button></div>
    <pre class="problemText" id="copyText"></pre>
  <section class="popover card" id="helpPanel" aria-hidden="true">
    <div class="popHead"><div><b>Keyboard shortcuts</b></div><button clM
ass="miniBtn" id="helpClose" type="button">Close</button></div>
    <div class="keys">
      <span class="kbd">
</span><span>Previous / next parcel</span>
      <span class="kbd">Home End</span><span>First / last parcel</span>
      <span class="kbd">R</span><span>Random parcel</span>
      <span class="kbd">N  P</span><span>Next / previous inscribed parcel</span>
      <span class="kbd">I</span><span>Show only inscribed parcels</span>
      <span class="kbd">O</span><span>Show only parcels with Ordinals</spaM
      <span class="kbd">G</span><span>Toggle inscribed glow</span>
      <span class="kbd">L</span><span>Cycle protocol layers (Runes, BRC-20, Reveals
      <span class="kbd">T</span><span>Start / stop a guided tour</span>
      <span class="kbd">M</span><span>Trace the money in and out of a parcel</span>
      <span class="kbd">S</span><span>Save / unsave the selected parcel</span>
      <span class="kbd">H</span><span>Replay the district history</span>
      <span class="kbd">Double-click</span><spaM
n>Zoom in on a spot</span>
      <span class="kbd">1
4</span><span>Color by order / size / value / I/O</span>
      <span class="kbd">/</span><span>Find parcel</span>
      <span class="kbd">+
</span><span>Zoom</span>
      <span class="kbd">Space</span><span>Toggle auto-rotate</span>
      <span class="kbd">Esc</span><span>Close panel / leave inscription globe</span>
      <span class="kbd">Enter</span><span>Inscription globe: open the highlighted tile</span>
  <section class="viewer"M
 id="viewer" aria-hidden="true">
    <div class="viewerTop">
      <div class="viewerNav"><button class="btn" id="viewerBack" type="button">
 Back</button><button class="btn" id="viewerPrev" type="button" title="Previous (
</button><button class="btn" id="viewerNext" type="button" title="Next (
      <div class="viewerTitle"><b id="viewerNumber">Inscription</b><span id="viewerId">
      <div class="viewerActions">
        <button class="btn galleryChipM
" id="viewerChildren" type="button" hidden>
        <button class="btn" id="viewerMode" type="button">Scripts off</button>
        <button class="btn" id="viewerShare" type="button">Share</button>
        <a class="btn" id="viewerOpen" target="_blank" rel="noopener noreferrer">Open
        <a class="btn" id="viewerAddressLink" target="_blank" rel="noopener noreferrer">Owner
    <img class="viewerImg" id="viewerImg" alt="" hidden />
    <iframe class="viewM
erFrame" id="viewerFrame" sandbox="allow-same-origin" referrerpolicy="no-referrer" allow="autoplay; fullscreen"></iframe>
    <div class="viewerFoot">
      <span id="viewerType">
</span><span class="mono" id="viewerAddress">
</span><button class="copyBtn" id="viewerAddressCopy" type="button" hidden>Copy address</button>
      <span class="viewerHint" id="viewerHint" hidden>Blank? This inscription needs scripts
 turn them on above.</span>
    <button class="btn outputBtn infoBtn show" id="viewerInM
foBtn" type="button">Details</button>
    <section class="outputPanel card detailPanel" id="detailPanel" aria-hidden="true">
      <div class="popHead"><div><b>Inscription details</b><span>Read onchain via /r/inscription</span></div><button class="miniBtn" id="detailClose" type="button">Close</button></div>
      <div class="outputBody" id="detailBody"></div>
    <button class="btn outputBtn" id="viewerOutputBtn" type="button">Output contents</button>
    <section class="outputPanel card" id="outputPM
anel" aria-hidden="true">
      <div class="popHead"><div><b>Output contents</b><span class="mono" id="outputOutpoint">
</span></div><button class="miniBtn" id="outputClose" type="button">Close</button></div>
      <div class="outputBody" id="outputBody"></div>
const RADIUS = 2.72, ATLAS = 2048, GALLERY_MAX = 1024;
const $ = (id) => document.getElementById(id);
for (const id of ["app","gl","panel","panelToggle","panelSummaryText","M
panelSummarySub","bitmapInput","bitmapIdInput","bitmapGo","blockMeta","blockCard",
  "statParcels","statSize","statTime","statInscribed","statHash","statHashCopy","parcelSearch","parcelInput","parcelGo","nextInsBtn","randomBtn","shareBtn","filterInscribed","filterOrdinals","glowToggle","countInscribed","countOrdinals","statInscribedBtn",
  "scanMeta","scanProgress","sourceMeta","sequence","seqLine","seqThumb","firstBtn","lastBtn","lastIndex","legend","modeSeg","rampLo","rampHi","rampBar",
  "problemBtn","problemCouM
nt","helpBtn","spinBtn","zoomIn","zoomOut","resetView","firstMarker","lastMarker","lastMarkerIndex","updateBar","updateTitle",
  "updateDetail","inspector","parcelEyebrow","parcelName","prevParcel","nextParcel","insClose","tabs","ordCount","insBody","hover","toast","problemPanel",
  "problemText","problemCopy","problemClose","helpPanel","helpClose","viewer","viewerBack","viewerNumber","viewerId","viewerMode","viewerOpen",
  "viewerAddressLink","viewerFrame","viewerType","viewerAddress","viewerAddressCopy","viewerHiM
nt","viewerOutputBtn","outputPanel","outputOutpoint",
  "outputBody","outputClose","galleryBar","galleryBack","galleryTitle","gallerySub","galleryProg","districtGalleryBtn","viewerPrev","viewerNext",
  "viewerChildren","viewerInfoBtn","detailPanel","detailBody","detailClose","viewerImg","challengeToggle","challengeBox","challengeInput","configNotice","idOptional","copyPanel","copyTitle","copyText","copyClose","addonRow","tourBtn","timeline","tlDate","tlPlay","tlRange","demoBtn","demoRibbon","demoExit","layerRow","lM
ayerChips","suggest","myParcelsBtn","places","placesBody","linksRow","starBtn","traceBtn","sharePanel","shareClose","qr","shareUrl","shareCopy","shareTitle","viewerShare","galleryShare","vrBtn","arBtn"]) els[id] = $(id);
  base: "", sourceLabel: "", height: null, tip: null, bytes: null, block: null, txs: [], selected: -1, token: 0, loading: false,
  openSection: "parcel", parcelStates: new Float32Array(0), mode: "order",
  district: { status: "idle", id: null, info: null },
  parcelClaims: new Map(M
), parcelChildren: new Map(), parcelChildrenAll: new Map(), districtOrdinals: [],
  insInfo: new Map(), prevTx: new Map(), prevoutWork: new Map(), txById: new Map(),
  scanDone: false, scanPages: 0, scanChildren: 0, scanUncertain: 0, scanError: null, filter: 0, showAllBitmapOrdinals: false,
  viewerLive: false, viewerCurrentId: null, viewerContentType: "", viewerAddressValue: "", viewerOutputOutpoint: "",
  viewerOutputData: null, viewerOutputLoading: false, viewerOutputOpen: false, problems: [],
 => (DEMO.on ? demoUrl(p) : state.base + p);
const clamp = (v, a, b) => Math.max(a, Math.min(b, v));
const esc = (s) => String(s ?? "").replace(/[&<>'"]/g, (c) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", "'": "&#39;", '"': "&quot;" }[c]));
// Yield to the browser without requestAnimationFrame, so decoding keeps going in a background tab.
const sleepFrame = () => new Promise((r) => { const c = new MessageChannel(); c.port1.onmessage = () => r(); c.port2.postMessage(0); });
const mobileLayout = () => matchMedia("(mM
ax-width:760px)").matches;
function toast(msg, error = false) {
  els.toast.textContent = msg;
  els.toast.className = "toast show" + (error ? " error" : "");
  clearTimeout(toast.t);
  toast.t = setTimeout(() => (els.toast.className = "toast"), 2200);
let updateBarTimer = 0;
function setUpdateBar(title, detail = "", kind = "working", hideAfter = 0) {
  clearTimeout(updateBarTimer);
  els.updateTitle.textContent = title || "";
  els.updateDetail.textContent = detail || "";
  els.updateBar.className = "updateBar M
card show" + (kind === "done" ? " done" : kind === "error" ? " error" : "");
  if (hideAfter > 0) updateBarTimer = setTimeout(clearUpdateBar, hideAfter);
function clearUpdateBar() { clearTimeout(updateBarTimer); els.updateBar.className = "updateBar card"; }
function setMobileGlobeActive(active) {
  if (!mobileLayout()) return;
  els.app.classList.toggle("globeActive", !!active);
  if (active) els.panel.classList.remove("expanded");
/* ---------- Diagnostics ---------- */
function problemMessage(v) {
stanceof Error) return v.message || String(v);
  if (v && typeof v === "object") { try { return JSON.stringify(v); } catch {} }
  return String(v ?? "Unknown problem");
function recordProblem(type, error, context = "") {
  const message = problemMessage(error), now = new Date().toISOString(), ctx = String(context || "");
  const last = state.problems[state.problems.length - 1];
  if (last && last.type === type && last.message === message && last.context === ctx) { last.count++; last.time = now; }
blems.push({ time: now, type: String(type || "Problem"), message, context: ctx, count: 1 });
  if (state.problems.length > 40) state.problems.splice(0, state.problems.length - 40);
  els.problemCount.textContent = String(Math.min(99, state.problems.reduce((n, x) => n + x.count, 0)));
  els.problemBtn.classList.add("show");
  if (els.problemPanel.classList.contains("open")) renderProblemDetails();
function problemDetailsText() {
    "Bitmap Parcel Globe
 diagnostics", `Generated: ${new Date().M
toISOString()}`, `Data source: ${state.sourceLabel || "
    `Bitmap: ${state.height ?? "
"}`, `Bitmap inscription ID: ${state.district?.id || "
"}`, `Bitmap status: ${state.district?.status || "
    `Block hash: ${state.block?.hash || "
"}`, `Parcels: ${state.txs?.length || 0}`,
    `Selected parcel: ${state.selected >= 0 ? parcelName(state.selected) : "
"}`, `Viewer inscription: ${state.viewerCurrentId || "
    `Scan finished: ${state.scanDone ? "yes" : "no"}`, `Child pages: ${statM
e.scanPages}`, `Children checked: ${state.scanChildren}`,
    `Parcel inscriptions found: ${state.parcelClaims.size}`, `Unresolved children: ${state.scanUncertain}`, "",
    `Browser: ${navigator.userAgent || "
"}`, "", "Problems:",
  if (!state.problems.length) lines.push("None recorded.");
  else state.problems.forEach((p, i) => lines.push("", `[${i + 1}] ${p.time}
 ${p.type}${p.count > 1 ? `
${p.count}` : ""}`, p.context ? `Context: ${p.context}` : "", `Message: ${p.message}`));
  return lines.filtM
er((v, i, a) => v !== "" || a[i - 1] !== "").join("\n");
function renderProblemDetails() { els.problemText.textContent = problemDetailsText(); }
function openPopover(el) {
  for (const p of [els.problemPanel, els.helpPanel, els.copyPanel, els.sharePanel]) if (p !== el) closePopover(p);
  if (el === els.problemPanel) renderProblemDetails();
  el.classList.add("open"); el.setAttribute("aria-hidden", "false");
function closePopover(el) { el.classList.remove("open"); el.setAttribute("aria-hidden", "true"); }
-------- Formatting ---------- */
function short(s, n = 8) { s = String(s || ""); return s.length > n * 2 + 3 ? s.slice(0, n) + "
" + s.slice(-n) : s || "
const fmtInt = (v) => Number(v).toLocaleString("en-US");
function fmtBytes(n) {
  if (n < 1024) return n + " B";
  if (n < 1048576) return (n / 1024).toFixed(n < 10240 ? 1 : 0) + " KB";
  return (n / 1048576).toFixed(2) + " MB";
const fmtSats = (v) => BigInt(v).toLocaleString("en-US") + " sats";
function fmtBTC(v) {
  const neg = v < 0M
  const s = v.toString().padStart(9, "0"), out = s.slice(0, -8) + "." + s.slice(-8);
  return (neg ? "-" : "") + out.replace(/(\.\d*?[1-9])0+$|\.0+$/, "$1") + " BTC";
function fmtTime(sec, opts) {
  try { return new Intl.DateTimeFormat(undefined, opts || { year: "numeric", month: "short", day: "2-digit", hour: "2-digit", minute: "2-digit", timeZoneName: "short" }).format(new Date(sec * 1000)); }
  catch { return new Date(sec * 1000).toISOString(); }
function bytesToHex(a) { let s = ""; for (M
let i = 0; i < a.length; i++) s += a[i].toString(16).padStart(2, "0"); return s; }
const HEXV = new Int8Array(128).fill(-1);
"0123456789abcdef".split("").forEach((c, i) => { HEXV[c.charCodeAt(0)] = i; HEXV[c.toUpperCase().charCodeAt(0)] = i; });
function hexToBytes(hex) {
  hex = String(hex).trim();
  if (hex.length % 2) throw Error("Invalid hex length");
  const a = new Uint8Array(hex.length / 2);
  for (let i = 0, j = 0; i < a.length; i++, j += 2) {
    const c1 = hex.charCodeAt(j), c2 = hex.charCodeAt(j + 1), h M
= c1 < 128 ? HEXV[c1] : -1, l = c2 < 128 ? HEXV[c2] : -1;
    if (h < 0 || l < 0) throw Error("Invalid block hex");
    a[i] = (h << 4) | l;
function reverseHexBytes(a) { let s = ""; for (let i = a.length - 1; i >= 0; i--) s += a[i].toString(16).padStart(2, "0"); return s; }
function concatBytes(...arrs) {
  let n = 0; for (const a of arrs) n += a.length;
  const o = new Uint8Array(n); let p = 0;
  for (const a of arrs) { o.set(a, p); p += a.length; }
function normalizeHeight(v) {
v = String(v ?? "").trim().toLowerCase().replace(/\.bitmap$/, "").replace(/[\s,_]/g, "");
  if (!/^\d+$/.test(v)) throw Error("Enter a valid Bitmap number");
  const n = Number(v);
  if (!Number.isSafeInteger(n) || n < 0) throw Error("Invalid Bitmap number");
function parseJsonString(t) { t = String(t).trim(); try { return JSON.parse(t); } catch { return t.replace(/^"|"$/g, ""); } }
const row = (k, v) => `<div class="row"><div class="key">${esc(k)}</div><div class="val">${v}</div></div>`;
 (x) => `<div class="rows">${x}</div>`;
const link = (url, label) => `<a class="tinyLink" href="${esc(url)}" target="_blank" rel="noopener noreferrer">${esc(label)}</a>`;
const copyButton = (value, label = "Value") => value ? `<button class="copyBtn" type="button" data-copy="${esc(value)}" data-copy-label="${esc(label)}">Copy</button>` : "";
const addressLink = (addr, label) => addr && DEMO.on ? `<span class="mono">${esc(label || short(addr, 7))}</span>` : addr ? link(api("/address/" + encodeURIComponent(addr)), laM
bel || short(addr, 7)) : "
const addressValue = (addr) => addr ? addressLink(addr) + copyButton(addr, "Address") : "
async function copyText(value, label = "Value") {
  if (!value) return;
  const legacy = () => {
    const t = document.createElement("textarea");
    t.value = value; t.style.position = "fixed"; t.style.opacity = "0";
    document.body.appendChild(t); t.select();
    const ok = document.execCommand("copy"); t.remove();
    if (!ok) throw Error("copy blocked");
  // The synchronous copM
y runs inside the click itself, which is what sandboxed marketplace iframes allow;
  // the async clipboard API is the backup (it needs a permission many iframes don't grant).
  try { legacy(); return toast(`${label} copied`); } catch {}
  try { await navigator.clipboard.writeText(value); toast(`${label} copied`); }
    // Last resort: show the value selected, so the person can copy it by hand.
    openPopover(els.copyPanel);
    els.copyTitle.textContent = `Copy ${label.toLowerCase()}`; els.copyText.textM
    const range = document.createRange(); range.selectNodeContents(els.copyText);
    const sel = getSelection(); sel.removeAllRanges(); sel.addRange(range);
/* ---------- Network ----------
   One gate for every request: a polite concurrency cap, a timeout, retries with backoff for rate limits (429)
   and server hiccups (5xx / dropped connections), and browser caching for data that can never change. */
class HttpError extends Error { constructor(path, status) { super(`${path} returned ${stM
atus}`); this.status = status; } }
const NET = { max: 8, active: 0, queue: [] };
const netAcquire = () => (NET.active < NET.max ? (NET.active++, Promise.resolve()) : new Promise((r) => NET.queue.push(r)));
const netRelease = () => { const next = NET.queue.shift(); if (next) next(); else NET.active--; };
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
// Inscription content and confirmed transactions are immutable; everything else (ownership, children, tip) can change.
const cachePolicy = (path) => (/^\M
/(content|r\/tx)\//.test(path) ? "force-cache" : /^\/r\/block\//.test(path) ? "default" : "no-store");
async function request(path, { accept, timeout = 30000, retries = 3 } = {}) {
  if (DEMO.on) { const r = await demoFetch(path); if (!r.ok) throw new HttpError(path, r.status); return r; }
  const url = api(path);
  for (let attempt = 0; ; attempt++) {
    await netAcquire();
    const ctl = typeof AbortController === "function" ? new AbortController() : null;
    const timer = ctl && setTimeout(() => ctl.abort(), M
      const r = await fetch(url, { cache: cachePolicy(path), signal: ctl?.signal, headers: accept ? { Accept: accept } : undefined });
      if (r.ok) return r;
      const err = new HttpError(path, r.status);
      if (attempt >= retries || !(r.status === 429 || r.status >= 500)) throw err;
      const ra = Number(r.headers.get("retry-after"));
      await sleep(Number.isFinite(ra) && ra > 0 ? Math.min(ra, 10) * 1000 : 400 * 2 ** attempt + Math.random() * 300);
tanceof HttpError) throw e;
      if (attempt >= retries) throw e.name === "AbortError" ? Error(`${path} timed out`) : e;
      await sleep(400 * 2 ** attempt + Math.random() * 300);
    } finally { clearTimeout(timer); netRelease(); }
async function fetchText(path, opts = {}) {
  try { return await (await request(path, opts)).text(); }
  catch (e) { recordProblem("Text request failed", e, api(path)); throw e; }
async function fetchJSON(path, opts = {}) {
  try { return await (await request(path, { accept: M
"application/json", ...opts })).json(); }
  catch (e) { recordProblem("JSON request failed", e, api(path)); throw e; }
async function fetchSmallText(path, max = 96) {
  const url = api(path);
    const r = await request(path);
    const len = Number(r.headers.get("content-length"));
    if (Number.isFinite(len) && len > max) { try { r.body?.cancel(); } catch {} return null; }
    if (!r.body) { const a = new Uint8Array(await r.arrayBuffer()); return a.length > max ? null : new TextDecoder().decode(a); }
   const rd = r.body.getReader(), parts = [];
      const { value, done } = await rd.read();
      if (done) break;
      total += value.length;
      if (total > max) { try { await rd.cancel(); } catch {} return null; }
      parts.push(value);
    return new TextDecoder().decode(concatBytes(...parts));
  } catch (e) { recordProblem("Inscription content request failed", e, url); throw e; }
/* All data comes from the ord server this page is served from, via relative recursiM
async function probeBase(base) {
    const r = await fetch(base + "/r/blockheight", { cache: "no-store" });
    if (!r.ok) return null;
    const n = Number(parseJsonString(await r.text()));
    return Number.isFinite(n) ? n : null;
  } catch { return null; }
async function resolveBase() {
  const src = els.sourceMeta, label = src.querySelector("span");
  if (/^https?:$/.test(location.protocol)) {
    const tip = await probeBase("");
    if (tip !== null) {
      state.base = ""; stateM
.tip = tip; state.sourceLabel = `${location.host} (recursive)`;
      src.className = "source ok"; label.textContent = `Connected
 tip ${fmtInt(tip)}`;
  state.sourceLabel = "none";
  src.className = "source bad"; label.textContent = "No ord server
 view this as an inscription";
/* ---------- SHA-256 ---------- */
const SHA_K = new Uint32Array([
  0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5,0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5,0xd807aa9M
8,0x12835b01,0x243185be,0x550c7dc3,
  0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174,0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,
  0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7,0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,
  0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85,0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3,0xd192e819,0xd6990624,0xf40e3585,0x106aa070,
  0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,M
0x682e6ff3,0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208,
  0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2]);
const rotr = (x, n) => (x >>> n) | (x << (32 - n));
const SHA_W = new Uint32Array(64);
function sha256(msg) {
  const l = msg.length, bitLo = (l * 8) >>> 0, bitHi = Math.floor((l * 8) / 4294967296) >>> 0;
  const total = ((l + 9 + 63) >> 6) << 6, data = new Uint8Array(total);
  data.set(msg); data[l] = 0x80;
  data[total - 8] = bitHi >>> 24; data[total - 7] = bitHi >>> 16; data[total - 6] = bitHi >>> 8; data[totM
  data[total - 4] = bitLo >>> 24; data[total - 3] = bitLo >>> 16; data[total - 2] = bitLo >>> 8; data[total - 1] = bitLo;
  let h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372, h3 = 0xa54ff53a, h4 = 0x510e527f, h5 = 0x9b05688c, h6 = 0x1f83d9ab, h7 = 0x5be0cd19;
  for (let o = 0; o < total; o += 64) {
    for (let i = 0; i < 16; i++) { const p = o + i * 4; w[i] = ((data[p] << 24) | (data[p + 1] << 16) | (data[p + 2] << 8) | data[p + 3]) >>> 0; }
    for (let i = 16; i < 64; i++)M
      const a = w[i - 15], b = w[i - 2];
      w[i] = (w[i - 16] + ((rotr(a, 7) ^ rotr(a, 18) ^ (a >>> 3)) >>> 0) + w[i - 7] + ((rotr(b, 17) ^ rotr(b, 19) ^ (b >>> 10)) >>> 0)) >>> 0;
    let a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7;
    for (let i = 0; i < 64; i++) {
      const t1 = (h + ((rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) >>> 0) + (((e & f) ^ (~e & g)) >>> 0) + SHA_K[i] + w[i]) >>> 0,
        t2 = (((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) >>> 0) + (((a & b) ^ (a & c) ^ (b & M
      h = g; g = f; f = e; e = (d + t1) >>> 0; d = c; c = b; b = a; a = (t1 + t2) >>> 0;
    h0 = (h0 + a) >>> 0; h1 = (h1 + b) >>> 0; h2 = (h2 + c) >>> 0; h3 = (h3 + d) >>> 0;
    h4 = (h4 + e) >>> 0; h5 = (h5 + f) >>> 0; h6 = (h6 + g) >>> 0; h7 = (h7 + h) >>> 0;
  const out = new Uint8Array(32), hs = [h0, h1, h2, h3, h4, h5, h6, h7];
  for (let i = 0; i < 8; i++) { const v = hs[i]; out[i * 4] = v >>> 24; out[i * 4 + 1] = v >>> 16; out[i * 4 + 2] = v >>> 8; out[i * 4 + 3] = v; }
const dsha = (b) => sha256(sha256(b));
/* ---------- Address encoding ---------- */
const B58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
function base58check(version, payload) {
  const raw = new Uint8Array(1 + payload.length);
  raw[0] = version; raw.set(payload, 1);
  const full = concatBytes(raw, dsha(raw).subarray(0, 4));
  let x = 0n; for (const b of full) x = (x << 8n) + BigInt(b);
  while (x > 0) { out = B58[Number(x % 58n)] + out; x /= 58n; }
 full) { if (b === 0) out = "1" + out; else break; }
  return out || "1";
const BECH = "qpzry9x8gf2tvdw0s3jn54khce6mua7l";
function polymod(values) {
  const gen = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3];
  for (const v of values) {
    const top = chk >>> 25;
    chk = ((chk & 0x1ffffff) << 5) ^ v;
    for (let i = 0; i < 5; i++) if ((top >>> i) & 1) chk ^= gen[i];
function hrpExpand(hrp) { const a = []; for (const c of hrp) a.push(c.charCodeAt(0) >>>M
 5); a.push(0); for (const c of hrp) a.push(c.charCodeAt(0) & 31); return a; }
function convertBits(data, from, to) {
  let acc = 0, bits = 0; const out = [], maxv = (1 << to) - 1, maxAcc = (1 << (from + to - 1)) - 1;
  for (const value of data) {
    acc = ((acc << from) | value) & maxAcc; bits += from;
    while (bits >= to) { bits -= to; out.push((acc >> bits) & maxv); }
  if (bits) out.push((acc << (to - bits)) & maxv);
function bech32Segwit(version, program) {
  const hrp = "bc", data = [veM
rsion, ...convertBits(program, 8, 5)], constant = version === 0 ? 1 : 0x2bc830a3;
  const pm = (polymod([...hrpExpand(hrp), ...data, 0, 0, 0, 0, 0, 0]) ^ constant) >>> 0, checksum = [];
  for (let i = 0; i < 6; i++) checksum.push((pm >>> (5 * (5 - i))) & 31);
  return hrp + "1" + [...data, ...checksum].map((v) => BECH[v]).join("");
function classifyScript(s) {
  const n = s.length;
  if (n === 25 && s[0] === 0x76 && s[1] === 0xa9 && s[2] === 0x14 && s[23] === 0x88 && s[24] === 0xac) return { type: "P2PKH", addresM
s: base58check(0x00, s.subarray(3, 23)) };
  if (n === 23 && s[0] === 0xa9 && s[1] === 0x14 && s[22] === 0x87) return { type: "P2SH", address: base58check(0x05, s.subarray(2, 22)) };
  if (n === 22 && s[0] === 0x00 && s[1] === 0x14) return { type: "P2WPKH", address: bech32Segwit(0, s.subarray(2)) };
  if (n === 34 && s[0] === 0x00 && s[1] === 0x20) return { type: "P2WSH", address: bech32Segwit(0, s.subarray(2)) };
  if (n === 34 && s[0] === 0x51 && s[1] === 0x20) return { type: "P2TR", address: bech32Segwit(1, s.suM
  if (n > 0 && s[0] === 0x6a) return { type: "OP_RETURN", address: null };
  if ((n === 35 && s[0] === 0x21 && s[34] === 0xac) || (n === 67 && s[0] === 0x41 && s[66] === 0xac)) return { type: "P2PK", address: null };
  return { type: "Non-standard", address: null };
/* ---------- Bitcoin decoding ---------- */
  constructor(bytes, pos = 0) { this.b = bytes; this.p = pos; }
  need(n) { if (this.p + n > this.b.length) throw new Error("Unexpected end of serialized Bitcoin data"); }
() { this.need(1); return this.b[this.p++]; }
  u16() { this.need(2); const v = this.b[this.p] | (this.b[this.p + 1] << 8); this.p += 2; return v; }
  u32() { this.need(4); const p = this.p, b = this.b; this.p += 4; return (b[p] | (b[p + 1] << 8) | (b[p + 2] << 16) | (b[p + 3] << 24)) >>> 0; }
  i32() { return this.u32() | 0; }
  u64() { this.need(8); let v = 0n; for (let i = 7; i >= 0; i--) v = (v << 8n) + BigInt(this.b[this.p + i]); this.p += 8; return v; }
  bytes(n) { this.need(n); const s = this.b.subarray(thiM
s.p, this.p + n); this.p += n; return s; }
  varint() { const x = this.u8(); if (x < 0xfd) return BigInt(x); if (x === 0xfd) return BigInt(this.u16()); if (x === 0xfe) return BigInt(this.u32()); return this.u64(); }
function asCount(v, label) { if (v > 1000000n) throw new Error(`Unreasonable ${label} count`); return Number(v); }
const isCoinbaseInput = (i) => /^0{64}$/.test(i.prevTxid) && i.vout === 0xffffffff;
function parseTransaction(reader) {
  const b = reader.b, start = reader.p, version = reader.i32();
  if (reader.p + 1 < b.length && b[reader.p] === 0 && b[reader.p + 1] !== 0) { segwit = true; reader.p += 2; }
  const vinStart = reader.p, vinN = asCount(reader.varint(), "input"), inputs = [];
  for (let i = 0; i < vinN; i++) {
    const prev = reader.bytes(32), vout = reader.u32(), scriptSig = reader.bytes(asCount(reader.varint(), "script")), sequence = reader.u32();
    inputs.push({ prevTxid: reverseHexBytes(prev), vout, scriptSig: bytesToHex(scriptSig), sequence, witness: [] });
 voutN = asCount(reader.varint(), "output"), outputs = [];
  for (let i = 0; i < voutN; i++) {
    const value = reader.u64(), script = reader.bytes(asCount(reader.varint(), "script")), d = classifyScript(script);
    outputs.push({ index: i, value, scriptPubKey: bytesToHex(script), type: d.type, address: d.address });
  const voutEnd = reader.p;
  if (segwit) for (let i = 0; i < vinN; i++) {
    const n = asCount(reader.varint(), "witness item");
    for (let j = 0; j < n; j++) inputs[i].witness.push(bytesToHeM
x(reader.bytes(asCount(reader.varint(), "witness byte"))));
  const lockStart = reader.p, locktime = reader.u32(), end = reader.p;
  const raw = b.subarray(start, end),
    stripped = segwit ? concatBytes(b.subarray(start, start + 4), b.subarray(vinStart, voutEnd), b.subarray(lockStart, end)) : raw;
  const txid = reverseHexBytes(dsha(stripped)), strippedSize = stripped.length, size = raw.length,
    weight = strippedSize * 4 + (size - strippedSize), vsize = Math.ceil(weight / 4);
  let totalOutput = 0n; for (cM
onst o of outputs) totalOutput += o.value;
  return { version, segwit, inputs, outputs, locktime, start, end, size, strippedSize, weight, vsize, txid, totalOutput,
    coinbase: inputs.length === 1 && isCoinbaseInput(inputs[0]) };
async function parseBlock(bytes, height) {
  if (bytes.length < 81) throw new Error("Serialized block is too small");
  const r = new Reader(bytes), header = bytes.subarray(0, 80);
  const version = r.i32(), prevHash = reverseHexBytes(r.bytes(32)), merkleRoot = reverseHexBytes(r.bytes(3M
2)), timestamp = r.u32(), bits = r.u32(), nonce = r.u32();
  const countStart = r.p, txCount = asCount(r.varint(), "transaction"), txs = new Array(txCount);
  let strippedTotal = 80 + (r.p - countStart);
  for (let i = 0; i < txCount; i++) {
    txs[i] = parseTransaction(r); txs[i].index = i; strippedTotal += txs[i].strippedSize;
    if (i && i % 300 === 0) { updateLoading("Decoding transactions", `${fmtInt(i)} / ${fmtInt(txCount)} parcels`); await sleepFrame(); }
  if (r.p !== bytes.length) throw new Error(`BlM
ock decode ended at byte ${fmtInt(r.p)} of ${fmtInt(bytes.length)}`);
  return { height, hash: reverseHexBytes(dsha(header)), version, prevHash, merkleRoot, timestamp, bits, nonce, txCount,
    size: bytes.length, strippedSize: strippedTotal, weight: strippedTotal * 4 + (bytes.length - strippedTotal), txs };
function parseStandaloneTxHex(hex) {
  const bytes = hexToBytes(hex), r = new Reader(bytes), tx = parseTransaction(r);
  if (r.p !== bytes.length) throw new Error("Trailing bytes in transaction");
/* ---------- Demo mode ----------
   A backup showcase for when no ord server is available. Nothing is stored in the file: a seeded generator builds
   a realistic, correctly serialized block plus parcel claims, Ordinals (pixel art + text) and history, and answers
   the same recursive paths the real server would. The whole app then runs unchanged on it
 always labelled DEMO. */
const DEMO = { on: false, data: null, art: new Map() };
const DEMO_H = 840000;
function rng(seed) {
  let a = seed >>> 0;
n () => { a = (a + 0x6d2b79f5) >>> 0; let t = a; t = Math.imul(t ^ (t >>> 15), t | 1); t ^= t + Math.imul(t ^ (t >>> 7), t | 61); return ((t ^ (t >>> 14)) >>> 0) / 4294967296; };
function demoBuild() {
  if (DEMO.data) return DEMO.data;
  const R = rng(DEMO_H), ri = (a, b) => a + Math.floor(R() * (b - a + 1));
  const rb = (n) => { const a = new Uint8Array(n); for (let i = 0; i < n; i++) a[i] = (R() * 256) | 0; return a; };
  const u32 = (v) => new Uint8Array([v & 255, (v >>> 8) & 255, (v >>> 16) & 255, (v >>> 24M
  const u64 = (v) => { const o = new Uint8Array(8); let b = BigInt(v); for (let i = 0; i < 8; i++) { o[i] = Number(b & 255n); b >>= 8n; } return o; };
  const vi = (n) => new Uint8Array(n < 0xfd ? [n] : n <= 0xffff ? [0xfd, n & 255, n >>> 8] : [0xfe, n & 255, (n >>> 8) & 255, (n >>> 16) & 255, n >>> 24]);
  const cat = (list) => { let n = 0; for (const x of list) n += x.length; const o = new Uint8Array(n); let p = 0; for (const x of list) { o.set(x, p); p += x.length; } return o; };
  const script = () =M
    if (k < 0.45) return cat([new Uint8Array([0x51, 0x20]), rb(32)]);
    if (k < 0.8) return cat([new Uint8Array([0x00, 0x14]), rb(20)]);
    if (k < 0.9) return cat([new Uint8Array([0x76, 0xa9, 0x14]), rb(20), new Uint8Array([0x88, 0xac])]);
    if (k < 0.97) return cat([new Uint8Array([0xa9, 0x14]), rb(20), new Uint8Array([0x87])]);
    return runestone();
  // Valid runestones (LEB128 tag/value pairs): mints, transfers and named etchings, so the Runes layer has real work.
 = (ints) => { const o = []; for (let v of ints) { v = BigInt(v); do { let b = Number(v & 127n); v >>= 7n; if (v) b |= 128; o.push(b); } while (v); } return new Uint8Array(o); };
  const NAMES = ["PARCEL
  const nameInt = (s) => { let n = 0n; for (const c of s.replace(/
/g, "")) n = n * 26n + BigInt(c.charCodeAt(0) - 64); return n - 1n; };
  const spacers = (s) => { let m = 0n, k = -1; for M
(const c of s) { if (c === "
") m |= 1n << BigInt(k); else k++; } return m; };
  const runestone = () => {
    if (k < 0.62) ints = [20, DEMO_H, 20, ri(1, 40)];
    else if (k < 0.9) ints = [0, DEMO_H, ri(1, 40), ri(1000, 5e6), ri(0, 1)];
    else { const nm = NAMES[ri(0, NAMES.length - 1)]; ints = [2, 3, 4, nameInt(nm), 3, spacers(nm), 1, ri(0, 2), 10, ri(100, 5000), 8, ri(1000, 100000)]; }
    const data = leb(ints);
    return cat([new Uint8Array([0x6a, 0x5d, data.length]), datM
  // Inscription envelopes in the witness: BRC-20 operations, text, and pixel-art PNGs.
  const TICKS = ["bmap", "prcl", "land", "sats"];
  const push = (b) => { const o = []; for (let i = 0; i < b.length; i += 520) { const c = b.subarray(i, i + 520); o.push(c.length < 76 ? new Uint8Array([c.length]) : c.length < 256 ? new Uint8Array([0x4c, c.length]) : new Uint8Array([0x4d, c.length & 255, c.length >> 8]), c); } return o; };
  const enc = (s) => new TextEncoder().encode(s);
  const envelopeScript = () =>M
    if (k < 0.3) { const op = ["deploy", "mint", "transfer"][ri(0, 2)], t = TICKS[ri(0, 3)]; ct = "text/plain;charset=utf-8"; body = enc(JSON.stringify(op === "deploy" ? { p: "brc-20", op, tick: t, max: "21000000", lim: "1000" } : { p: "brc-20", op, tick: t, amt: String(ri(1, 1000)) })); }
    else if (k < 0.55) { ct = "text/plain;charset=utf-8"; body = enc(["gm", "first is first", "a parcel of my own", "built on bitcoin"][ri(0, 3)]); }
    else { ct = "image/png"; const url M
= demoArt(ri(1, 1e9)), bin = atob(url.slice(url.indexOf(",") + 1)); body = Uint8Array.from(bin, (c) => c.charCodeAt(0)); }
    return cat([new Uint8Array([0x20]), rb(32), new Uint8Array([0xac, 0x00, 0x63, 0x03, 0x6f, 0x72, 0x64, 0x01, 0x01]), ...push(enc(ct)), new Uint8Array([0x00]), ...push(body), new Uint8Array([0x68])]);
  const outVal = () => Math.round(Math.exp(Math.log(546) + R() * (Math.log(2e8) - Math.log(546))));
  const N = 2600, txs = [], prevs = new Map();
  const built = [], spentM
  for (let i = 1; i < N; i++) {
    // ~22% of transactions spend an output created earlier in this same block (chains, like real blocks),
    // which gives "Trace the money" real routes to draw.
    let chain = null;
    if (built.length > 8 && R() < 0.22) {
      const pi = ri(0, built.length - 1), par = built[pi], vout = ri(0, par.outs.length - 1);
      if (!spent.has(`${pi}:${vout}`) && par.outs[vout] > 20000) { spent.add(`${pi}:${vout}`); chain = { hash: par.hash, vout, value: par.outs[vout] };M
    const nIn = chain ? 1 : R() < 0.8 ? 1 : ri(2, R() < 0.95 ? 3 : 14), nOut = R() < 0.1 ? 1 : R() < 0.85 ? 2 : ri(3, 8), big = R() < 0.08;
    const ins = [], prevBytes = [], outs = [], wit = [], outVals = [];
    if (chain) ins.push(chain.hash, u32(chain.vout), vi(0), u32(0xfffffffd));
    else for (let k = 0; k < nIn; k++) { const p = rb(32), v = ri(0, 1); prevBytes.push([p, v]); ins.push(p, u32(v), vi(0), u32(0xfffffffd)); }
    const chainBudget = chain ? chain.value - ri(500, MathM
.min(40000, Math.floor(chain.value / 4))) : 0;
    for (let k = 0; k < nOut; k++) {
      const v = chain ? (k < nOut - 1 ? Math.floor(chainBudget / nOut) : chainBudget - sumOut) : outVal(), s = script();
      sumOut += v; outVals.push(v); outs.push(u64(v), vi(s.length), s);
    for (let k = 0; k < nIn; k++) {
      if (big && k === 0) { const env = R() < 0.8 ? envelopeScript() : rb(ri(1500, 24000)); wit.push(vi(3), vi(64), rb(64), vi(env.length), env, vi(33), rb(33)); }
      else wit.push(vi(2), vi(64), rbM
(64), vi(33), rb(33));
    const insB = cat([vi(nIn), ...ins]), outsB = cat([vi(nOut), ...outs]), witB = cat(wit);
    const stripped = 4 + insB.length + outsB.length + 4, total = stripped + 2 + witB.length;
    const vsize = Math.ceil((stripped * 4 + (total - stripped)) / 4);
    const fee = chain ? chain.value - sumOut : Math.round(vsize * Math.exp(Math.log(3) + R() * (Math.log(420) - Math.log(3))));
    fees += BigInt(fee);
    const sumIn = sumOut + fee;
    prevBytes.forEach(([p, v], k) => prevs.set(reveM
rseHexBytes(p), { vout: v, value: Math.floor(sumIn / nIn) + (k === 0 ? sumIn % nIn : 0) }));
    built.push({ hash: dsha(cat([u32(2), insB, outsB, u32(0)])), outs: outVals });   // txid bytes (internal order) for children to spend
    txs.push(cat([u32(2), new Uint8Array([0, 1]), insB, outsB, witB, u32(0)]));
  const cbScript = cat([new Uint8Array([3, DEMO_H & 255, (DEMO_H >>> 8) & 255, DEMO_H >>> 16]), new TextEncoder().encode("/demo pool/")]);
  const cbOut = script();
  const coinbase = cat([u32(1), vi(1), nM
ew Uint8Array(32), u32(0xffffffff), vi(cbScript.length), cbScript, u32(0xffffffff),
    vi(1), u64(312500000n + fees), vi(cbOut.length), cbOut, u32(0)]);
  const header = cat([u32(0x20000000), rb(32), rb(32), u32(1713571767), u32(0x17034219), u32((R() * 2 ** 32) >>> 0)]);
  const blockHex = bytesToHex(cat([header, vi(N), coinbase, ...txs]));
  // Inscriptions: the district claim, parcel claims spread over time, Ordinals on parcels and on the district.
  const hex32 = () => bytesToHex(rb(32)), newId = () => hex32()M
 + "i0", addr = () => bech32Segwit(1, rb(32));
  const infos = new Map(), contents = new Map(), children = new Map(), utxos = new Map();
  let num = 70123456;
  const add = (type, body, height, timestamp, extra = {}) => {
    const id = newId(), output = hex32() + ":0";
    infos.set(id, { id, number: num++, height, timestamp, content_type: type, content_length: typeof body === "string" ? body.length : ri(300, 2400),
      address: addr(), output, value: 546, sat: 1949000000000000 + ri(0, 1e9), fee: ri(900, 40000),M
 charms: [], ...extra });
    contents.set(id, body); utxos.set(output, id);
  const kid = (id) => { const i = infos.get(id); return { id, number: i.number, height: i.height, timestamp: i.timestamp }; };
  const t0 = 1713580000, district = add("text/plain;charset=utf-8", `${DEMO_H}.bitmap`, DEMO_H + 2, t0);
  const later = add("text/plain;charset=utf-8", `${DEMO_H}.bitmap`, DEMO_H + 3110, t0 + 86400 * 21);   // a competing, later claim
  const dKids = [], picks = new Set();
  while (picks.size <M
 64) picks.add(ri(1, N - 1));
  const parcels = [...picks].sort((a, b) => a - b);
  const texts = ["gm", "first is first", "hello from my parcel", "building here soon", "bitmap is a metaverse on bitcoin", "this land is onchain"];
  const ordinal = (h, t) => (R() < 0.75 ? add("image/png", { art: ri(1, 1e9) }, h, t) : add("text/plain;charset=utf-8", texts[ri(0, texts.length - 1)], h, t));
  parcels.forEach((p, k) => {
    const t = t0 + Math.floor((k / parcels.length) * 86400 * 480) + ri(0, 86400 * 6), h = DEMO_H + MM
ath.floor((t - t0) / 600);
    const claim = add("text/plain;charset=utf-8", `${p}.${DEMO_H}.bitmap`, h, t);
    dKids.push(kid(claim));
    if (R() < 0.34) {
      const list = [];
      for (let j = 0, n = ri(1, 6); j < n; j++) { const tt = t + ri(86400, 86400 * 90); list.push(kid(ordinal(DEMO_H + Math.floor((tt - t0) / 600), tt))); }
      children.set(claim, list);
  for (let j = 0; j < 14; j++) { const tt = t0 + ri(86400, 86400 * 500); dKids.push(kid(ordinal(DEMO_H + Math.floor((tt - t0) / 600), ttM
  dKids.sort((a, b) => a.number - b.number);
  children.set(district, dKids);
  return (DEMO.data = { blockHex, prevs, infos, contents, children, utxos, district, later });
function demoArt(seed) {
  if (DEMO.art.has(seed)) return DEMO.art.get(seed);
10 pixel sprite with a 3-colour palette
 every seed a different little creature.
  const R = rng(seed), c = document.createElement("canvas"), g = c.getContext("2d"), hue = Math.floor(R() * 360);
  c.width = c.height = 10;
hsl(${(hue + 180) % 360},30%,12%)`; g.fillRect(0, 0, 10, 10);
  const pal = [`hsl(${hue},80%,60%)`, `hsl(${(hue + 40) % 360},85%,70%)`, `hsl(${hue},60%,35%)`];
  for (let y = 1; y < 9; y++) for (let x = 1; x < 5; x++) {
    if (R() < 0.52) { g.fillStyle = pal[Math.floor(R() * 3)]; g.fillRect(x, y, 1, 1); g.fillRect(9 - x, y, 1, 1); }
  g.fillStyle = "#fff"; g.fillRect(3, 3, 1, 1); g.fillRect(6, 3, 1, 1);
  const url = c.toDataURL("image/png");
  DEMO.art.set(seed, url);
// Where the browser itseM
lf loads a URL (images, the viewer frame), demo content becomes a data: URL.
function demoUrl(path) {
  const m = path.match(/^\/content\/([0-9a-f]{64}i\d+)/i), d = DEMO.data;
  if (!m || !d?.contents.has(m[1])) return "#";
  const body = d.contents.get(m[1]);
  return body?.art ? demoArt(body.art) : "data:text/plain;charset=utf-8," + encodeURIComponent(body);
// Answers the recursive endpoints the app uses, exactly in ord's response shapes.
async function demoFetch(path) {
  const d = demoBuild(), J = (o) => newM
 Response(JSON.stringify(o), { headers: { "content-type": "application/json" } });
  const nf = () => new Response("not found", { status: 404 });
  if (path === "/r/blockheight") return new Response("969000");
  if (path === `/r/block/${DEMO_H}`) return J(d.blockHex);
  if ((m = path.match(/^\/r\/tx\/([0-9a-f]{64})$/))) {
    const p = d.prevs.get(m[1]);
    if (!p) return nf();
    // A minimal transaction whose output #vout carries exactly the value the demo spend needs.
    const outs = [];
 k = 0; k <= p.vout; k++) { const v = BigInt(k === p.vout ? p.value : 1000); let s = ""; for (let i = 0; i < 8; i++) s += Number((v >> BigInt(8 * i)) & 255n).toString(16).padStart(2, "0"); outs.push(s + "160014" + "ab".repeat(20)); }
    return J("02000000" + "01" + "cd".repeat(32) + "00000000" + "00" + "ffffffff" + (p.vout + 1).toString(16).padStart(2, "0") + outs.join("") + "00000000");
  if ((m = path.match(/^\/r\/inscription\/(.+)$/))) return d.infos.has(m[1]) ? J(d.infos.get(m[1])) : nf();
match(/^\/r\/children\/([^/]+)\/inscriptions(?:\/(\d+))?$/))) return J({ children: m[2] && m[2] !== "0" ? [] : d.children.get(m[1]) || [], more: false, page: 0 });
  if ((m = path.match(/^\/r\/children\/([^/]+)(?:\/\d+)?$/))) return J({ ids: (d.children.get(m[1]) || []).map((k) => k.id), more: false, page: 0 });
  if (/^\/r\/parents\//.test(path)) return J({ ids: [], more: false, page_index: 0 });
  if ((m = path.match(/^\/r\/utxo\/(.+)$/))) return d.utxos.has(m[1]) ? J({ value: 546, inscriptions: [d.utxos.get(m[1]M
)], runes: {} }) : nf();
  if ((m = path.match(/^\/content\/([0-9a-f]{64}i\d+)$/i)) && d.contents.has(m[1])) {
    const body = d.contents.get(m[1]);
    if (body?.art) return new Response("", { headers: { "content-type": "image/png", "content-length": String(d.infos.get(m[1]).content_length) } });
    return new Response(body, { headers: { "content-type": "text/plain;charset=utf-8", "content-length": String(new TextEncoder().encode(body).length) } });
function startDemo() {
 const d = demoBuild();
  Object.assign(state, { base: "", tip: 969000, sourceLabel: "demo (simulated data)" });
  els.sourceMeta.className = "source warn";
  els.sourceMeta.querySelector("span").textContent = "Demo
 simulated data, not real chain data";
  els.demoRibbon.hidden = false; els.demoBtn.hidden = true; els.app.classList.add("demo");
  config.claims.set(DEMO_H, [d.district]); config.loaded = true; renderConfigNotice();
  const h = parseHash();
  els.bitmapInput.value = String(DEMO_H); els.bitmapIdInput.M
  els.challengeInput.value = d.later;   // shows the claim checker at work
  loadBitmap(DEMO_H, d.district, h?.height === DEMO_H ? h.parcel : null);
/* ---------- Globe renderer ---------- */
class GlobeRenderer {
  constructor(canvas) {
    this.c = canvas;
    this.gl = canvas.getContext("webgl2", { alpha: true, antialias: true, premultipliedAlpha: false, powerPreference: "high-performance" });
    if (!this.gl) throw new Error("This explorer needs WebGL 2, which this browser or device doesM
 not provide. Try a recent Chrome, Edge, Firefox or Safari (iOS 15+).");
    Object.assign(this, { count: 0, idle: true, q: [0, 0, 0, 1], targetQ: null, focusStart: 0, focusFrom: null, camZ: 7.5, targetCamZ: 7.5,
      inertiaX: 0, inertiaY: 0, drag: false, moved: 0, lastX: 0, lastY: 0, lastT: 0, pointerX: 0, pointerY: 0, pointerInside: false,
      selected: -1, hovered: -1, auto: true, focusLevel: 0, glow: true, layerColor: new Float32Array([1, 0.4, 0.6]), viewStates: null, mode: 0, raf: 0, vp: null, onAutoChangeM
    // Tilt slightly so the globe reads as a sphere, not a disk.
    this.q = this.qnorm(this.qAxis([1, 0, 0], 0.32));
    this.homeQ = [...this.q];
    this.dirs = new Float32Array(0); this.states = new Float32Array(0); this.metric = new Float32Array(0);
    this.bindEvents(); this.resize(); this.start();
  start() { if (!this.raf && !document.hidden && !this.lost && !this.xr) this.raf = requestAnimationFrame((t) => this.frame(t)); }
  stop() { if (this.raf) { cancelAnimationFrameM
(this.raf); this.raf = 0; } }
  setAuto(v) { this.auto = !!v && !(v === true && this.calm && !this.userSpin); this.onAutoChange?.(this.auto); }
  shader(type, src) {
    const g = this.gl, s = g.createShader(type);
    g.shaderSource(s, src); g.compileShader(s);
    if (!g.getShaderParameter(s, g.COMPILE_STATUS)) throw new Error(g.getShaderInfoLog(s));
    const g = this.gl, p = g.createProgram();
    g.attachShader(p, this.shader(g.VERTEX_SHADER, vs)); g.attachShader(p, this.sM
hader(g.FRAGMENT_SHADER, fs)); g.linkProgram(p);
    if (!g.getProgramParameter(p, g.LINK_STATUS)) throw new Error(g.getProgramInfoLog(p));
    const u = {}, n = g.getProgramParameter(p, g.ACTIVE_UNIFORMS);
    for (let i = 0; i < n; i++) { const name = g.getActiveUniform(p, i).name; u[name] = g.getUniformLocation(p, name); }
    return { p, u };
    const g = this.gl, R = RADIUS.toFixed(2);
    const billboard = `vec3 d=normalize(uRot*aDir);vec3 helper=abs(d.y)<.92?vec3(0.,1.,0.):vec3(1.,0.,0.);veM
c3 right=normalize(cross(helper,d));vec3 up=normalize(cross(d,right));
      float sel=gl_InstanceID==uSelected?1.0:0.0;float hov=gl_InstanceID==uHovered?1.0:0.0;
      float ins=aState>.5?uInsBoost:0.0;
      float s=uBase*(1.0+sel*.9+hov*.3+ins);vec3 pos=d*${R}+(right*aCorner.x+up*aCorner.y)*s;gl_Position=uVP*vec4(pos,1.0);`;
    this.main = this.program(`#version 300 es
precision highp float;
layout(location=0) in vec2 aCorner;layout(location=1) in vec3 aDir;layout(location=2) in float aState;layout(location=3) M
uniform mat4 uVP;uniform mat3 uRot;uniform float uBase;uniform float uInsBoost;uniform float uInvMax;uniform int uSelected;uniform int uHovered;
out vec2 vUv;out float vFacing;out float vSel;out float vHov;out float vSeq;out float vState;out float vMetric;
void main(){${billboard}vUv=aCorner;vFacing=d.z;vSel=sel;vHov=hov;vSeq=float(gl_InstanceID)*uInvMax;vState=aState;vMetric=aMetric;}`,
precision highp float;
in vec2 vUv;in float vFacing;in float vSel;in float vHov;in float vSeq;M
in float vState;in float vMetric;
uniform float uFocus;uniform float uIdle;uniform int uMode;uniform vec3 uLayerCol;out vec4 outColor;
vec3 seqCol(float t){vec3 a=vec3(.969,.576,.102),b=vec3(.760,.529,.792),c=vec3(.388,.780,.910);return t<.5?mix(a,b,t*2.):mix(b,c,(t-.5)*2.);}
vec3 heat(float t){vec3 a=vec3(.16,.22,.54),b=vec3(.39,.78,.91),c=vec3(.98,.86,.45),d=vec3(.97,.45,.10);
  return t<.33?mix(a,b,t/.33):t<.66?mix(b,c,(t-.33)/.33):mix(c,d,(t-.66)/.34);}
  if(vFacing<-.045)discard;
.5?length(vUv):max(abs(vUv.x),abs(vUv.y));float edge=smoothstep(1.0,.78,ax);
  float light=.5+.5*clamp(vFacing,0.,1.);
  if(uIdle>.5){outColor=vec4(vec3(.62,.66,.72)*light,edge*.42*clamp(vFacing*2.,0.,1.));return;}
  vec3 col=(uMode==0?seqCol(vSeq):heat(vMetric))*light;float alpha=edge*.95;float rim=smoothstep(.57,.95,ax)*edge;
  if(vState>.5){col=mix(col,vec3(.80,.86,.92),.14);col+=rim*vec3(.72,.80,.88)*.22;}
  if(vState>1.5){float mark=1.0-smoothstep(.14,.26,length(vUv-vec2(.55,.55)));col=mix(col,vec3(.72,.95,1.0M
),mark*.95);col+=rim*vec3(.38,.78,.96)*.32;alpha=max(alpha,mark);}
  if(vState>2.5){float mark=1.0-smoothstep(.2,.34,length(vUv));col=mix(col,uLayerCol,.55+.45*mark);col+=rim*uLayerCol*.4;alpha=1.;}
  if(uFocus>.5&&vState<uFocus-.5){col*=.25;alpha*=.12;}
  if(vHov>.5){col=mix(col,vec3(1.,.93,.76),.5);alpha=1.;}
  if(vSel>.5){col=mix(col,vec3(1.,.95,.82),.68);alpha=1.;}
  col+=rim*vec3(.92)*.12;outColor=vec4(col,alpha);
    /* Exact GPU picking: render the same billboards into an ID buffer (on demand, only whenM
 a pick is needed). */
    this.pickP = this.program(`#version 300 es
precision highp float;
layout(location=0) in vec2 aCorner;layout(location=1) in vec3 aDir;layout(location=2) in float aState;
uniform mat4 uVP;uniform mat3 uRot;uniform float uBase;uniform float uInsBoost;uniform int uSelected;uniform int uHovered;
out vec2 vUv;out float vFacing;flat out int vId;
void main(){${billboard}vUv=aCorner;vFacing=d.z;vId=gl_InstanceID+1;}`,
precision highp float;in vec2 vUv;in float vFacing;flat in int M
vId;out vec4 outColor;
void main(){float ax=max(abs(vUv.x),abs(vUv.y));if(vFacing<-.045||smoothstep(1.0,.78,ax)<.045)discard;
  outColor=vec4(float(vId&255)/255.,float((vId>>8)&255)/255.,float((vId>>16)&255)/255.,1.);}`);
    /* Glow: a soft additive halo behind inscribed parcels (gold) and parcels with Ordinals (cyan). */
    this.glowP = this.program(`#version 300 es
precision highp float;
layout(location=0) in vec2 aCorner;layout(location=1) in vec3 aDir;layout(location=2) in float aState;
uniform mat4 uVP;unifoM
rm mat3 uRot;uniform float uBase;
out vec2 vUv;out float vFacing;out float vState;out float vPhase;
void main(){vec3 d=normalize(uRot*aDir);vec3 helper=abs(d.y)<.92?vec3(0.,1.,0.):vec3(1.,0.,0.);vec3 right=normalize(cross(helper,d));vec3 up=normalize(cross(d,right));
  float s=aState>.5?uBase:0.0;gl_Position=uVP*vec4(d*${R}+(right*aCorner.x+up*aCorner.y)*s,1.0);
  vUv=aCorner;vFacing=d.z;vState=aState;vPhase=fract(float(gl_InstanceID)*.6180339)*6.2832;}`,
precision highp float;in vec2 vUv;in float M
vFacing;in float vState;in float vPhase;uniform float uTime;uniform float uStrength;uniform vec3 uLayerCol;out vec4 o;
void main(){if(vState<.5||vFacing<0.)discard;float r=length(vUv);if(r>1.)discard;
  float pulse=.7+.3*sin(uTime*1.8+vPhase);
  float g=exp(-r*r*5.)*smoothstep(1.,.15,r)+smoothstep(.05,0.,abs(r-.27-.03*pulse))*.55;
  vec3 c=vState>2.5?uLayerCol:vState>1.5?vec3(.42,.90,1.):vec3(1.,.80,.46);
  o=vec4(c,g*uStrength*pulse*clamp(vFacing*1.6,0.,1.));}`);
    /* Gallery tiles: rounded squares sampling theiM
r cell of the thumbnail atlas. */
    this.galP = this.program(`#version 300 es
precision highp float;
layout(location=0) in vec2 aCorner;layout(location=1) in vec3 aDir;layout(location=2) in float aState;
uniform mat4 uVP;uniform mat3 uRot;uniform float uBase;uniform float uInsBoost;uniform int uSelected;uniform int uHovered;uniform float uCols;
out vec2 vUv;out float vFacing;out float vSel;out float vHov;out vec2 vTex;
void main(){${billboard}vUv=aCorner;vFacing=d.z;vSel=sel;vHov=hov;
  float id=float(gl_InstanceM
ID);vTex=(vec2(mod(id,uCols),floor(id/uCols))+vec2(aCorner.x*.48+.5,.5-aCorner.y*.48))/uCols;}`,
precision highp float;in vec2 vUv;in float vFacing;in float vSel;in float vHov;in vec2 vTex;uniform sampler2D uAtlas;out vec4 o;
void main(){if(vFacing<-.02)discard;
  vec2 q=abs(vUv);float rc=length(max(q-.84,0.))/.16;if(rc>1.)discard;
  vec3 col=texture(uAtlas,vTex).rgb*(.45+.55*clamp(vFacing,0.,1.));
  float border=max(smoothstep(.9,.97,max(q.x,q.y)),smoothstep(.55,.9,rc));
  vec3 bc=vSel>.5?vec3(1.,M
.8,.45):vHov>.5?vec3(.55,.9,1.):vec3(.3,.33,.4);
  col=mix(col,bc,border*(vSel>.5||vHov>.5?1.:.7));
  o=vec4(col,clamp(vFacing*4.+.1,0.,1.));}`);
    /* Graticule: faint latitude / longitude lines give the globe depth. */
    this.gridP = this.program(`#version 300 es
precision highp float;layout(location=0) in vec3 aPos;uniform mat4 uVP;uniform mat3 uRot;out float vZ;
void main(){vec3 p=uRot*aPos;vZ=p.z;gl_Position=uVP*vec4(p*${(RADIUS * 0.985).toFixed(3)},1.);}`,
precision highp float;in float vZM
;uniform float uAlpha;out vec4 o;
void main(){if(vZ<0.)discard;o=vec4(.62,.70,.80,uAlpha*(.2+.8*vZ));}`);
    this.vao = g.createVertexArray(); g.bindVertexArray(this.vao);
    const cb = g.createBuffer(); g.bindBuffer(g.ARRAY_BUFFER, cb);
    g.bufferData(g.ARRAY_BUFFER, new Float32Array([-1, -1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1]), g.STATIC_DRAW);
    g.enableVertexAttribArray(0); g.vertexAttribPointer(0, 2, g.FLOAT, false, 0, 0);
    const inst = (loc, size) => {
      const b = g.createBuffer(); g.bindBuffer(g.M
      g.enableVertexAttribArray(loc); g.vertexAttribPointer(loc, size, g.FLOAT, false, 0, 0); g.vertexAttribDivisor(loc, 1);
    this.dirBuf = inst(1, 3); this.stateBuf = inst(2, 1); this.metricBuf = inst(3, 1);
    const lines = [], seg = 96, ring = (fn) => { for (let i = 0; i < seg; i++) lines.push(...fn(i / seg), ...fn((i + 1) / seg)); };
    for (let lat = -60; lat <= 60; lat += 30) {
      const y = Math.sin((lat * Math.PI) / 180), r = Math.cos((lat * Math.PI) / 180);
      ring((t) => [Math.cos(t * 2 * Math.PI) * r, y, Math.sin(t * 2 * Math.PI) * r]);
    for (let lon = 0; lon < 180; lon += 30) {
      const a = (lon * Math.PI) / 180;
      ring((t) => { const th = t * 2 * Math.PI; return [Math.cos(th) * Math.cos(a), Math.sin(th), Math.cos(th) * Math.sin(a)]; });
    this.gridCount = lines.length / 3;
    this.gridVao = g.createVertexArray(); g.bindVertexArray(this.gridVao);
    const gb = g.createBuffer(); g.bindBuffer(g.ARRAY_BUFFER, gb);
    g.bufferData(g.ARRAY_M
BUFFER, new Float32Array(lines), g.STATIC_DRAW);
    g.enableVertexAttribArray(0); g.vertexAttribPointer(0, 3, g.FLOAT, false, 0, 0);
    g.bindVertexArray(null);
    g.enable(g.DEPTH_TEST); g.depthFunc(g.LEQUAL); g.enable(g.BLEND); g.blendFunc(g.SRC_ALPHA, g.ONE_MINUS_SRC_ALPHA); g.clearColor(0, 0, 0, 0);
    this.pickFbo = g.createFramebuffer(); this.pickTex = g.createTexture(); this.pickDepth = g.createRenderbuffer(); this.pickPixel = new Uint8Array(4);
    // Ordered spherical spiral: conseM
cutive transaction indexes stay spatial neighbours, so the path 0
    const a = new Float32Array(n * 3);
    for (let i = 0; i < n; i++) {
      const t = i / Math.max(1, n - 1), y = 1 - 2 * t, r = Math.sqrt(Math.max(0, 1 - y * y));
      if (i > 0 && i < n - 1) phi += 3.6 / Math.sqrt(n * Math.max(1e-8, 1 - y * y));
      a[i * 3] = Math.cos(phi) * r; a[i * 3 + 1] = y; a[i * 3 + 2] = Math.sin(phi) * r;
  upload(buf, data, usage) { const g = this.gl; g.M
bindBuffer(g.ARRAY_BUFFER, buf); g.bufferData(g.ARRAY_BUFFER, data, usage); }
  setData(count, states, idle = false) {
    this.count = count; this.idle = idle; this.gallery = false; this.arcCount = 0;
    this.dirs = this.makeDirs(count); this.states = states || new Float32Array(count); this.metric = new Float32Array(count);
    const g = this.gl;
    this.upload(this.dirBuf, this.dirs, g.STATIC_DRAW); this.upload(this.stateBuf, this.states, g.DYNAMIC_DRAW); this.upload(this.metricBuf, this.metric, g.DYNAMIC_DRAW)M
    this.selected = this.hovered = -1; this.targetQ = null; this.focusLevel = 0; this.viewStates = null;
    this.q = [...this.homeQ]; this.camZ = this.targetCamZ = this.homeZ; this.setAuto(true);
  // Camera distance at which the globe fills ~78% of the viewport's shorter side.
    const aspect = this.c.clientWidth / Math.max(1, this.c.clientHeight), t = Math.tan((21 * Math.PI) / 180) * Math.min(1, aspect);
    return RADIUS / Math.sin(Math.atan(t * 0.78));
  setIdle() { this.setData(1400, nulM
  setMetric(arr, mode) {
    this.mode = mode;
    if (arr && arr.length === this.count) { this.metric = arr; this.upload(this.metricBuf, arr, this.gl.DYNAMIC_DRAW); }
  // Show a different set of parcel states on screen (history timeline) without changing the real ones.
  uploadStates(arr) {
    if (!arr || arr.length !== this.count) return;
    this.viewStates = arr === this.states ? null : arr;
    this.upload(this.stateBuf, arr, this.gl.DYNAMIC_DRAW);
  shown(i) { return (this.viewStates || M
    if (i < 0 || i >= this.count || this.states[i] === v) return;
    this.states[i] = v;
    const g = this.gl; g.bindBuffer(g.ARRAY_BUFFER, this.stateBuf); g.bufferSubData(g.ARRAY_BUFFER, i * 4, new Float32Array([v]));
    return [a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1], a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],
      a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3], a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2]];
  qnorm(q) { const l = Math.hypot(...q) || 1; return q.map((v) => v / l); }
  qAxis(axis, ang) { const s = Math.sin(ang / 2); return [axis[0] * s, axis[1] * s, axis[2] * s, Math.cos(ang / 2)]; }
    const d = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
    if (d < -0.999999) {
      const axis = Math.abs(a[0]) < 0.9 ? [0, -a[2], a[1]] : [-a[1], a[0], 0], l = Math.hypot(...axis);
      return [axis[0] / l, axis[1] / l, axis[2] / l, 0];
    return this.qnorm([a[1] * b[2] - a[2] * b[1], a[2] *M
 b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0], 1 + d]);
    let cos = a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
    if (cos < 0) { b = b.map((v) => -v); cos = -cos; }
    if (cos > 0.9995) return this.qnorm(a.map((v, i) => v + (b[i] - v) * t));
    const th = Math.acos(clamp(cos, -1, 1)), s = Math.sin(th), A = Math.sin((1 - t) * th) / s, B = Math.sin(t * th) / s;
    return a.map((v, i) => v * A + b[i] * B);
    const [x, y, z, w] = q, xx = x * x, yy = y * y, zM
z = z * z, xy = x * y, xz = x * z, yz = y * z, wx = w * x, wy = w * y, wz = w * z;
    return new Float32Array([1 - 2 * (yy + zz), 2 * (xy + wz), 2 * (xz - wy), 2 * (xy - wz), 1 - 2 * (xx + zz), 2 * (yz + wx), 2 * (xz + wy), 2 * (yz - wx), 1 - 2 * (xx + yy)]);
  perspective(fovy, aspect, n, f) {
    const t = 1 / Math.tan(fovy / 2), nf = 1 / (n - f);
    return new Float32Array([t / aspect, 0, 0, 0, 0, t, 0, 0, 0, 0, (f + n) * nf, -1, 0, 0, 2 * f * n * nf, 0]);
    const o = new Float32Array(M
    for (let c = 0; c < 4; c++) for (let r = 0; r < 4; r++)
      o[c * 4 + r] = a[r] * b[c * 4] + a[4 + r] * b[c * 4 + 1] + a[8 + r] * b[c * 4 + 2] + a[12 + r] * b[c * 4 + 3];
  rotateVec(q, v) { const r = this.quatMul(this.quatMul(q, [v[0], v[1], v[2], 0]), [-q[0], -q[1], -q[2], q[3]]); return [r[0], r[1], r[2]]; }
  /* Gallery mode: the globe becomes a sphere of inscription tiles, textured from one 2048
  setGallery(n, cols) {
    this.setData(n, null, false);
= true; this.galleryCols = cols;
    // Even golden-angle spread (no tiles stuck on the poles), facing the camera first.
    const d = new Float32Array(n * 3);
    for (let i = 0; i < n; i++) {
      const y = 1 - ((i + 0.5) * 2) / n, r = Math.sqrt(1 - y * y), phi = i * 2.399963 + Math.PI / 2;
      d[i * 3] = Math.cos(phi) * r; d[i * 3 + 1] = y * 0.92; d[i * 3 + 2] = Math.sin(phi) * r;
    for (let i = 0; i < n; i++) { const o = i * 3, l = Math.hypot(d[o], d[o + 1], d[o + 2]); d[o] /= l; d[o + 1] /= l; d[o +M
    this.dirs = d; this.upload(this.dirBuf, d, this.gl.STATIC_DRAW);
    this.q = [0, 0, 0, 1];
    const g = this.gl;
    if (!this.atlasTex) {
      this.atlasTex = g.createTexture(); g.bindTexture(g.TEXTURE_2D, this.atlasTex);
      g.texImage2D(g.TEXTURE_2D, 0, g.RGBA8, ATLAS, ATLAS, 0, g.RGBA, g.UNSIGNED_BYTE, null);
      for (const [k, v] of [[g.TEXTURE_MIN_FILTER, g.LINEAR], [g.TEXTURE_MAG_FILTER, g.LINEAR], [g.TEXTURE_WRAP_S, g.CLAMP_TO_EDGE], [g.TEXTURE_WRAP_T, g.CLAMP_TO_EDGE]]) g.texParameteM
ri(g.TEXTURE_2D, k, v);
  setCell(i, canvas) {
    if (!this.gallery || i >= this.count) return;
    const g = this.gl, c = ATLAS / this.galleryCols;
    g.bindTexture(g.TEXTURE_2D, this.atlasTex);
    g.texSubImage2D(g.TEXTURE_2D, 0, (i % this.galleryCols) * c, Math.floor(i / this.galleryCols) * c, g.RGBA, g.UNSIGNED_BYTE, canvas);
  insBoost() { return this.glow && !this.idle && !this.gallery ? 0.3 : 0; }
  baseParcelSize() {
    if (this.gallery) return Math.min(0.95, 3.2 / Math.sqrt(Math.max(1, thM
    return this.idle ? 0.03 :Math.max(0.025, Math.min(0.077, 1.62 / Math.sqrt(Math.max(1, this.count)))); }
    if (i < 0 || i >= this.count) return null;
    const r = this.rotateVec(this.q, [this.dirs[i * 3], this.dirs[i * 3 + 1], this.dirs[i * 3 + 2]]);
    if (r[2] < -0.06) return null;
    const aspect = this.c.width / this.c.height, f = 1 / Math.tan((42 * Math.PI) / 360), z = this.camZ - RADIUS * r[2];
    return { x: (((r[0] * RADIUS * f) / aspect / z) * 0.5 + 0.5) * this.c.clientM
Width, y: ((-0.5 * r[1] * RADIUS * f) / z + 0.5) * this.c.clientHeight, front: r[2] };
    if (i < 0 || i >= this.count) return;
    const cur = this.rotateVec(this.q, [this.dirs[i * 3], this.dirs[i * 3 + 1], this.dirs[i * 3 + 2]]);
    this.focusFrom = [...this.q]; this.targetQ = this.qnorm(this.quatMul(this.qFromTo(cur, [0, 0, 1]), this.q));
    this.focusStart = performance.now(); this.targetCamZ = Math.min(this.targetCamZ, this.homeZ * 0.86); this.setAuto(false);
    // Google-Earth-style fly-tM
o: long jumps pull the camera back mid-flight, then swoop in.
    const ang = Math.acos(clamp(cur[2], -1, 1));
    this.flyDur = 560 + 700 * (ang / Math.PI);
    this.flyFromZ = this.camZ; this.flyBump = ang > 0.5 ? Math.min(this.homeZ * 0.45, ang * this.homeZ * 0.18) : 0;
    this.flyBump = 0; this.flyDur = 0;
    this.focusFrom = [...this.q]; this.targetQ = [...this.homeQ]; this.focusStart = performance.now();
    this.targetCamZ = this.homeZ; this.inertiaX = this.inertiaY = 0;
a) { this.targetCamZ = clamp(this.targetCamZ + delta * (this.homeZ / 7.5), Math.max(RADIUS * 1.5, this.homeZ * 0.6), this.homeZ * 1.6); }
  setSelected(i, focus = true) { this.selected = i; if (focus && i >= 0) this.focus(i); }
  renderPick(px, py) {
    const g = this.gl, u = this.pickP.u;
    g.bindFramebuffer(g.FRAMEBUFFER, this.pickFbo); g.viewport(0, 0, this.c.width, this.c.height); g.disable(g.BLEND);
    g.enable(g.SCISSOR_TEST); g.scissor(px, py, 1, 1);
    g.clearColor(0, 0, 0, 0); g.clear(g.COLOR_BUFFER_BM
IT | g.DEPTH_BUFFER_BIT);
    g.useProgram(this.pickP.p); g.bindVertexArray(this.vao);
    g.uniformMatrix4fv(u.uVP, false, this.vp); g.uniformMatrix3fv(u.uRot, false, this.qMat3(this.q));
    g.uniform1f(u.uBase, this.baseParcelSize()); g.uniform1f(u.uInsBoost, this.insBoost()); g.uniform1i(u.uSelected, this.selected); g.uniform1i(u.uHovered, this.hovered);
    g.drawArraysInstanced(g.TRIANGLES, 0, 6, this.count);
    g.disable(g.SCISSOR_TEST); g.enable(g.BLEND);
    if (!this.count || this.idM
le || !this.vp || this.lost) return -1;
    const rect = this.c.getBoundingClientRect();
    if (cx < rect.left || cx >= rect.right || cy < rect.top || cy >= rect.bottom) return -1;
    const g = this.gl, px = clamp(Math.floor((cx - rect.left) * (this.c.width / rect.width)), 0, this.c.width - 1),
      py = clamp(Math.floor((rect.bottom - cy) * (this.c.height / rect.height)), 0, this.c.height - 1);
    this.renderPick(px, py);
    g.readPixels(px, py, 1, 1, g.RGBA, g.UNSIGNED_BYTE, this.pickPixel);
uffer(g.FRAMEBUFFER, null);
    const id = this.pickPixel[0] | (this.pickPixel[1] << 8) | (this.pickPixel[2] << 16);
    return id ? id - 1 : -1;
  pointerOverGlobe(cx, cy) {
    const rect = this.c.getBoundingClientRect();
    if (cx < rect.left || cx >= rect.right || cy < rect.top || cy >= rect.bottom) return false;
    const nx = ((cx - rect.left) / rect.width) * 2 - 1, ny = 1 - ((cy - rect.top) / rect.height) * 2, t = Math.tan((42 * Math.PI) / 360);
    let dx = nx * (rect.width / rect.height) * t, dy = ny M
    const l = Math.hypot(dx, dy, dz) || 1; dz /= l;
    const b = this.camZ * dz, disc = b * b - (this.camZ * this.camZ - RADIUS * RADIUS);
    return disc >= 0 && -b - Math.sqrt(disc) >= 0;
  nearestVisible(cx, cy) {
    if (!this.count || this.idle || !this.pointerOverGlobe(cx, cy)) return -1;
    const rect = this.c.getBoundingClientRect(), px = cx - rect.left, py = cy - rect.top, aspect = rect.width / rect.height,
      f = 1 / Math.tan((42 * Math.PI) / 360), m = this.qMat3(this.q);
st = -1, bestD = Infinity;
    for (let i = 0; i < this.count; i++) {
      if (this.focusLevel && this.shown(i) < this.focusLevel - 0.5) continue;
      const o = i * 3, x = this.dirs[o], y = this.dirs[o + 1], z0 = this.dirs[o + 2],
        rz = m[2] * x + m[5] * y + m[8] * z0;
      if (rz < -0.045) continue;
      const rx = m[0] * x + m[3] * y + m[6] * z0, ry = m[1] * x + m[4] * y + m[7] * z0, z = this.camZ - RADIUS * rz,
        dx = (((rx * RADIUS * f) / aspect / z) * 0.5 + 0.5) * rect.width - px, dy = ((-0.5M
 * ry * RADIUS * f) / z + 0.5) * rect.height - py,
        d = dx * dx + dy * dy;
      if (d < bestD) { bestD = d; best = i; }
  tactilePick(cx, cy) {
    if (!this.pointerOverGlobe(cx, cy)) return -1;
    const exact = this.pick(cx, cy);
    if (exact >= 0 && (!this.focusLevel || this.shown(exact) > this.focusLevel - 0.5)) return exact;
    return this.nearestVisible(cx, cy);
  updateHover(cx, cy) {
    this.pointerX = cx; this.pointerY = cy; this.pointerInside = this.pointerOverGloM
    const i = this.pointerInside ? this.tactilePick(cx, cy) : -1;
    this.hovered = i;
    if (i >= 0) showHover(i, cx, cy); else hideHover();
    const c = this.c;
    c.addEventListener("pointerdown", (e) => {
      setMobileGlobeActive(true);
      Object.assign(this, { drag: true, moved: 0, lastX: e.clientX, lastY: e.clientY, lastT: performance.now(), inertiaX: 0, inertiaY: 0, targetQ: null });
      this.setAuto(false);
      c.setPointerCapture?.(e.pointerId); cM
.classList.add("dragging");
    c.addEventListener("pointermove", (e) => {
      if (!this.drag) { this.pendingHover = [e.clientX, e.clientY]; return; }
      const dx = e.clientX - this.lastX, dy = e.clientY - this.lastY, now = performance.now(), dt = Math.max(8, now - this.lastT);
      this.moved += Math.hypot(dx, dy);
      const k = 0.0052 * (this.camZ / 7.5);
      this.q = this.qnorm(this.quatMul(this.qAxis([0, 1, 0], dx * k), this.quatMul(this.qAxis([1, 0, 0], dy * k), this.q)));
      this.inertiaXM
 = (dx / dt) * 0.015; this.inertiaY = (dy / dt) * 0.015;
      this.lastX = e.clientX; this.lastY = e.clientY; this.lastT = now;
      if (this.moved > 4) { this.hovered = -1; hideHover(); }
    c.addEventListener("pointerup", (e) => {
      if (!this.drag) return;
      this.drag = false; c.classList.remove("dragging"); setMobileGlobeActive(false);
      if (performance.now() - this.lastT > 80) this.inertiaX = this.inertiaY = 0;
      const i = this.updateHover(e.clientX, e.clientY);
      if (this.moved <M
 8 && i >= 0) { if (this.gallery) galleryPick(i); else selectParcel(i, true); }
      if (e.pointerType !== "mouse") { this.hovered = -1; hideHover(); }
    c.addEventListener("pointercancel", () => {
      this.drag = false; this.pointerInside = false; this.hovered = -1;
      c.classList.remove("dragging"); setMobileGlobeActive(false); hideHover();
    c.addEventListener("pointerleave", () => { this.pendingHover = null; this.pointerInside = false; if (!this.drag) { this.hovered = -1; hideHover(); M
    // Double-click zooms in on the spot (the first click already selected it).
    c.addEventListener("dblclick", (e) => {
      e.preventDefault();
      if (this.tactilePick(e.clientX, e.clientY) >= 0) this.targetCamZ = Math.max(RADIUS * 1.5, this.homeZ * 0.62);
      else this.zoom(-1.2);
    c.addEventListener("wheel", (e) => { e.preventDefault(); this.zoom(Math.sign(e.deltaY) * 0.34); }, { passive: false });
    let pinch = null;
    const dist = (t) => Math.hypot(t[0].clientX - t[1].clientX, t[M
0].clientY - t[1].clientY);
    c.addEventListener("touchstart", (e) => { if (e.touches.length === 2) pinch = dist(e.touches); }, { passive: true });
    c.addEventListener("touchmove", (e) => {
      if (e.touches.length === 2 && pinch) { const d = dist(e.touches); this.zoom(-(d - pinch) * 0.012); pinch = d; }
    }, { passive: true });
    c.addEventListener("touchend", () => (pinch = null), { passive: true });
    addEventListener("resize", () => this.resize(), { passive: true });
    c.addEventListener("webglcoM
ntextlost", (e) => { e.preventDefault(); this.lost = true; this.stop(); }, false);
    c.addEventListener("webglcontextrestored", () => {
        this.lost = false; this.atlasTex = null; this.vp = null; this.arcP = null; this.arcCount = 0;
        this.initGL(); this.forceResize = true; this.resize();
        const g = this.gl;
        this.upload(this.dirBuf, this.dirs, g.STATIC_DRAW); this.upload(this.stateBuf, this.states, g.DYNAMIC_DRAW); this.upload(this.metricBuf, this.metric, g.DYNAMIC_DRAW);
     this.onRestore?.();
        this.start();
      } catch (err) { recordProblem("Graphics restore failed", err); }
    const r = this.c.getBoundingClientRect();
    let dpr = Math.min(devicePixelRatio || 1, innerWidth < 760 ? 1.65 : 2);
    dpr = Math.min(dpr, Math.sqrt(8.3e6 / Math.max(1, r.width * r.height)));   //
 ~4K worth of pixels
    const w = Math.max(1, Math.floor(r.width * dpr)), h = Math.max(1, Math.floor(r.height * dpr));
    if (this.c.width === w && this.c.heightM
 === h && !this.forceResize) return;
    this.forceResize = false;
    this.c.width = w; this.c.height = h;
    const prevHome = this.homeZ;
    this.homeZ = this.fitZ();
    if (!prevHome) this.camZ = this.targetCamZ = this.homeZ;
    else { const k = this.homeZ / prevHome; this.camZ *= k; this.targetCamZ *= k; }
    const g = this.gl;
    g.bindTexture(g.TEXTURE_2D, this.pickTex);
    for (const [k, v] of [[g.TEXTURE_MIN_FILTER, g.NEAREST], [g.TEXTURE_MAG_FILTER, g.NEAREST], [g.TEXTURE_WRAP_S, g.CLAMP_TO_EDGE], [M
g.TEXTURE_WRAP_T, g.CLAMP_TO_EDGE]]) g.texParameteri(g.TEXTURE_2D, k, v);
    g.texImage2D(g.TEXTURE_2D, 0, g.RGBA8, w, h, 0, g.RGBA, g.UNSIGNED_BYTE, null);
    g.bindRenderbuffer(g.RENDERBUFFER, this.pickDepth); g.renderbufferStorage(g.RENDERBUFFER, g.DEPTH_COMPONENT16, w, h);
    g.bindFramebuffer(g.FRAMEBUFFER, this.pickFbo);
    g.framebufferTexture2D(g.FRAMEBUFFER, g.COLOR_ATTACHMENT0, g.TEXTURE_2D, this.pickTex, 0);
    g.framebufferRenderbuffer(g.FRAMEBUFFER, g.DEPTH_ATTACHMENT, g.RENDERBUFFER, this.pickDepM
    if (g.checkFramebufferStatus(g.FRAMEBUFFER) !== g.FRAMEBUFFER_COMPLETE) throw new Error("GPU picking framebuffer is incomplete");
    g.bindFramebuffer(g.FRAMEBUFFER, null);
    if (document.hidden || this.lost) return;
    const g = this.gl;
    let moving = false;
    if (this.targetQ) {
      const x = clamp((t - this.focusStart) / (this.flyDur || 560), 0, 1), e = x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2;
      this.q = this.qslerp(this.focusFrom, thisM
.targetQ, e); moving = true;
      if (this.flyBump) this.camZ = this.flyFromZ + (this.targetCamZ - this.flyFromZ) * e + Math.sin(Math.PI * x) * this.flyBump;
      if (x >= 1) { this.targetQ = null; this.flyBump = 0; this.flyDur = 0; }
    } else if (!this.drag) {
      if (this.auto) { this.q = this.qnorm(this.quatMul(this.qAxis([0, 1, 0], 0.0012), this.q)); moving = true; }
      else if (Math.abs(this.inertiaX) > 0.00002 || Math.abs(this.inertiaY) > 0.00002) {
        this.q = this.qnorm(this.quatMul(this.qAxisM
([0, 1, 0], this.inertiaX), this.quatMul(this.qAxis([1, 0, 0], this.inertiaY), this.q)));
        this.inertiaX *= 0.95; this.inertiaY *= 0.95; moving = true;
    if (this.pendingHover && !this.drag) { const [hx, hy] = this.pendingHover; this.pendingHover = null; this.updateHover(hx, hy); }
    this.camZ += (this.targetCamZ - this.camZ) * 0.1;
    // Keep the CSS halo glued to the globe silhouette.
    const haloPx = Math.round((2 * Math.tan(Math.asin(Math.min(0.999, RADIUS / this.camZ))) / Math.tan((M
21 * Math.PI) / 180)) * (this.c.clientHeight / 2) / 0.86);
    if (haloPx !== this.haloPx) { this.haloPx = haloPx; if (this.halo) this.halo.style.width = haloPx + "px"; }
    // Keep the tooltip honest while the globe spins under a stationary mouse.
    if (moving && this.pointerInside && !this.drag) {
      const prev = this.hovered, i = this.nearestVisible(this.pointerX, this.pointerY);
      this.hovered = i;
      if (i !== prev) { if (i >= 0) showHover(i, this.pointerX, this.pointerY); else hideHover(); }
    const g = this.gl;
    g.bindFramebuffer(g.FRAMEBUFFER, null);
    g.viewport(0, 0, this.c.width, this.c.height);
    g.clear(g.COLOR_BUFFER_BIT | g.DEPTH_BUFFER_BIT);
    this.vp = this.mul4(this.perspective((42 * Math.PI) / 180, this.c.width / this.c.height, 0.1, 80),
      new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -this.camZ, 1]));
    this.drawScene(this.vp, this.qMat3(this.q), t);
  // Snapshot: draw now and read the picture stM
 works even in background tabs and headless browsers.
    if (this.lost || this.xr) return Promise.resolve(null);
    try { this.render(performance.now()); return Promise.resolve(this.c.toDataURL("image/png")); } catch { return Promise.resolve(null); }
  /* VR / AR (standard WebXR): the globe floats ~1.3 m ahead at chest height, about 70 cm across.
     Thumbsticks spin it; the trigger / tap ("select") calls onXRSelect. Each eye is drawn with drawScene. */
  async startXR(mode, onEnM
    const g = this.gl;
    if (g.makeXRCompatible) await g.makeXRCompatible();
    const session = await navigator.xr.requestSession(mode, { optionalFeatures: ["local-floor"] });
    const layer = new XRWebGLLayer(session, g);
    session.updateRenderState({ baseLayer: layer });
    const space = await session.requestReferenceSpace("local");
    this.xr = session; this.stop();
    session.addEventListener("end", () => {
      this.xr = null; g.bindFramebuffer(g.FRAMEBUFFER, null);
      this.forceResize = trueM
; this.resize(); this.start(); onEnd?.();
    session.addEventListener("select", () => this.onXRSelect?.());
    const k = 0.35 / RADIUS, M = new Float32Array([k, 0, 0, 0, 0, k, 0, 0, 0, 0, k, 0, 0, -0.15, -1.3, 1]);
    const loop = (t, frame) => {
      if (this.xr !== session) return;
      session.requestAnimationFrame(loop);
      const pose = frame.getViewerPose(space);
      if (!pose) return;
      let spun = false;
      for (const src of session.inputSources) {
        const a = src.gamepad?.axes;M
        if (a && a.length >= 4 && (Math.abs(a[2]) > 0.15 || Math.abs(a[3]) > 0.15)) {
          this.q = this.qnorm(this.quatMul(this.qAxis([0, 1, 0], a[2] * 0.04), this.quatMul(this.qAxis([1, 0, 0], a[3] * 0.04), this.q)));
          spun = true; this.targetQ = null;
      if (this.targetQ) {
        const x = clamp((t - this.focusStart) / (this.flyDur || 560), 0, 1);
        this.q = this.qslerp(this.focusFrom, this.targetQ, 1 - Math.pow(1 - x, 3));
        if (x >= 1) this.targetQ = null;
  } else if (!spun && this.auto) this.q = this.qnorm(this.quatMul(this.qAxis([0, 1, 0], 0.0012), this.q));
      g.bindFramebuffer(g.FRAMEBUFFER, layer.framebuffer);
      g.clearColor(0, 0, 0, 0); g.clear(g.COLOR_BUFFER_BIT | g.DEPTH_BUFFER_BIT);
      const rot = this.qMat3(this.q);
      for (const view of pose.views) {
        const v = layer.getViewport(view);
        g.viewport(v.x, v.y, v.width, v.height);
        this.drawScene(this.mul4(view.projectionMatrix, this.mul4(view.transform.inverse.matrix, M)), rM
    session.requestAnimationFrame(loop);
  /* Draws the whole scene for one view (the screen, or one eye in VR/AR). */
  drawScene(vp, rot, t) {
    const g = this.gl;
    g.depthMask(false); g.useProgram(this.gridP.p); g.bindVertexArray(this.gridVao);
    g.uniformMatrix4fv(this.gridP.u.uVP, false, vp); g.uniformMatrix3fv(this.gridP.u.uRot, false, rot);
    g.uniform1f(this.gridP.u.uAlpha, this.idle ? 0.16 : 0.07);
    g.drawArrays(g.LINES, 0, this.gridCount);
    if (this.gallery) {
   g.depthMask(true);
      const gu = this.galP.u;
      g.useProgram(this.galP.p); g.bindVertexArray(this.vao);
      g.activeTexture(g.TEXTURE0); g.bindTexture(g.TEXTURE_2D, this.atlasTex); g.uniform1i(gu.uAtlas, 0);
      g.uniformMatrix4fv(gu.uVP, false, vp); g.uniformMatrix3fv(gu.uRot, false, rot);
      g.uniform1f(gu.uBase, this.baseParcelSize()); g.uniform1f(gu.uInsBoost, 0); g.uniform1f(gu.uCols, this.galleryCols);
      g.uniform1i(gu.uSelected, this.selected); g.uniform1i(gu.uHovered, this.hovered);
   g.drawArraysInstanced(g.TRIANGLES, 0, 6, this.count);
    if (this.glow && !this.idle && this.count) {
      const gu = this.glowP.u;
      // The canvas is non-premultiplied over a transparent page, so the glow lives in the alpha channel:
      // colour is written at full strength and alpha accumulates the soft falloff.
      g.useProgram(this.glowP.p); g.bindVertexArray(this.vao); g.blendFuncSeparate(g.ONE, g.ONE, g.ONE, g.ONE);
      g.uniformMatrix4fv(gu.uVP, false, vp); g.uniformMatrix3M
fv(gu.uRot, false, rot);
      g.uniform1f(gu.uBase, this.baseParcelSize() * 5.5); g.uniform1f(gu.uTime, t / 1000);
      g.uniform1f(gu.uStrength, this.focusLevel ? 1.0 : 0.85); g.uniform3fv(gu.uLayerCol, this.layerColor);
      g.drawArraysInstanced(g.TRIANGLES, 0, 6, this.count);
      g.blendFunc(g.SRC_ALPHA, g.ONE_MINUS_SRC_ALPHA);
    g.depthMask(true);
    const u = this.main.u;
    g.useProgram(this.main.p); g.bindVertexArray(this.vao);
    g.uniformMatrix4fv(u.uVP, false, vp); g.uniformMatrix3fv(u.uRM
    g.uniform1f(u.uBase, this.baseParcelSize()); g.uniform1f(u.uInvMax, this.count > 1 ? 1 / (this.count - 1) : 0);
    g.uniform1i(u.uSelected, this.selected); g.uniform1i(u.uHovered, this.hovered);
    g.uniform1f(u.uFocus, this.focusLevel); g.uniform3fv(u.uLayerCol, this.layerColor); g.uniform1f(u.uInsBoost, this.insBoost()); g.uniform1f(u.uIdle, this.idle ? 1 : 0); g.uniform1i(u.uMode, this.mode);
    g.drawArraysInstanced(g.TRIANGLES, 0, 6, this.count);
    if (this.arcCount && !this.gallery) M
      // Money-flow routes: arcs lifted above the surface, with light pulses travelling along them.
      const a = this.arcP.u;
      g.useProgram(this.arcP.p); g.bindVertexArray(this.arcVao); g.depthMask(false); g.blendFunc(g.SRC_ALPHA, g.ONE);
      g.uniformMatrix4fv(a.uVP, false, vp); g.uniformMatrix3fv(a.uRot, false, rot); g.uniform1f(a.uTime, t / 1000);
      g.uniform1f(a.uDots, 0); g.uniform1f(a.uPt, 1);
      g.drawArrays(g.LINES, 0, this.arcCount);
      g.uniform1f(a.uDots, 1); g.uniform1f(a.uPt, 5 * M
Math.min(devicePixelRatio || 1, 2));   // travelling light pulses
      g.drawArrays(g.POINTS, 0, this.arcCount);
      g.blendFunc(g.SRC_ALPHA, g.ONE_MINUS_SRC_ALPHA); g.depthMask(true);
  /* Arcs between parcels: edges = [[from, to, kind]] where kind 0 = money flowing in, 1 = flowing out. */
    const g = this.gl;
    if (!this.arcP) {
      this.arcP = this.program(`#version 300 es
precision highp float;layout(location=0) in vec3 aPos;layout(location=1) in vec4 aCol;uniform mat4 uVP;M
uniform mat3 uRot;out vec4 vCol;out float vZ;
void main(){vec3 p=uRot*aPos;vZ=p.z/length(p);vCol=aCol;gl_Position=uVP*vec4(p,1.);gl_PointSize=uPt;}`,
precision highp float;in vec4 vCol;in float vZ;uniform float uTime;uniform float uDots;out vec4 o;
void main(){if(vZ<-.15)discard;float pulse=smoothstep(.75,1.,fract(vCol.a*3.-uTime*.9));
  float a=(.35+.65*pulse)*clamp(vZ*3.+.6,.15,1.);
  if(uDots>.5){vec2 q=gl_PointCoord-.5;if(dot(q,q)>.25)discard;a*=pulse;}
  o=vec4(vCol.rgb,a);}M
      this.arcVao = g.createVertexArray(); g.bindVertexArray(this.arcVao);
      this.arcBuf = g.createBuffer(); g.bindBuffer(g.ARRAY_BUFFER, this.arcBuf);
      g.enableVertexAttribArray(0); g.vertexAttribPointer(0, 3, g.FLOAT, false, 28, 0);
      g.enableVertexAttribArray(1); g.vertexAttribPointer(1, 4, g.FLOAT, false, 28, 12);
      g.bindVertexArray(null);
    const SEG = 28, data = [], col = [[1, 0.62, 0.2], [0.42, 0.88, 1]];
    for (const [a, b, kind] of edges || []) {
      if (a < 0 || b < 0 || M
a >= this.count || b >= this.count) continue;
      const A = [this.dirs[a * 3], this.dirs[a * 3 + 1], this.dirs[a * 3 + 2]], B = [this.dirs[b * 3], this.dirs[b * 3 + 1], this.dirs[b * 3 + 2]];
      const ang = Math.acos(clamp(A[0] * B[0] + A[1] * B[1] + A[2] * B[2], -1, 1)), lift = RADIUS * (0.03 + 0.22 * ang);
      const pt = (t) => {
        const s = Math.sin(ang) || 1, k0 = ang ? Math.sin((1 - t) * ang) / s : 1 - t, k1 = ang ? Math.sin(t * ang) / s : t;
        const r = RADIUS * 1.004 + lift * Math.sin(MathM
        return [(A[0] * k0 + B[0] * k1) * r, (A[1] * k0 + B[1] * k1) * r, (A[2] * k0 + B[2] * k1) * r];
      for (let i = 0; i < SEG; i++) {
        const t0 = i / SEG, t1 = (i + 1) / SEG;
        data.push(...pt(t0), ...col[kind], t0, ...pt(t1), ...col[kind], t1);
    g.bindBuffer(g.ARRAY_BUFFER, this.arcBuf);
    g.bufferData(g.ARRAY_BUFFER, new Float32Array(data), g.DYNAMIC_DRAW);
    this.arcCount = data.length / 7;
try { globe = new GlobeRenderer(els.gl); gloM
  els.app.insertAdjacentHTML("beforeend", `<div class="fallback">${esc(e.message)}</div>`);
globe.onAutoChange = (v) => els.spinBtn.classList.toggle("on", v);
globe.calm = matchMedia("(prefers-reduced-motion: reduce)").matches;
if (globe.calm) globe.setAuto(false);
globe.onRestore = () => { const top = galleryStack[galleryStack.length - 1]; if (state.gallery && top) showGallery(top); };
globe.halo = document.querySelector(".halo");
/* ---------- Color modes ---------- */
  order: { id: 0, lo: "First", hi: "Last" },
  size: { id: 1, lo: "Small", hi: "Large", label: "virtual size", get: (t) => t.vsize },
  value: { id: 2, lo: "Low", hi: "High", label: "output value", get: (t) => Number(t.totalOutput) },
  io: { id: 3, lo: "Few", hi: "Many", label: "inputs + outputs", get: (t) => t.inputs.length + t.outputs.length },
 even colour spread even when values are heavily skewed (they always are).
function computeMetric(mode) {
  const m = MODES[mode], nM
 = state.txs.length, out = new Float32Array(n);
  if (!m.get || n < 2) return out;
  const vals = state.txs.map(m.get), idx = Array.from({ length: n }, (_, i) => i).sort((a, b) => vals[a] - vals[b]);
    while (j + 1 < n && vals[idx[j + 1]] === vals[idx[i]]) j++;
    const r = (i + j) / 2 / (n - 1);
    for (let k = i; k <= j; k++) out[idx[k]] = r;
function setMode(mode) {
  if (!MODES[mode]) return;
  state.mode = mode;
 of els.modeSeg.children) b.classList.toggle("on", b.dataset.mode === mode);
  els.rampLo.textContent = MODES[mode].lo; els.rampHi.textContent = MODES[mode].hi;
  els.rampBar.classList.toggle("heat", mode !== "order");
  if (state.txs.length) globe.setMetric(computeMetric(mode), MODES[mode].id);
  else globe.mode = MODES[mode].id;
/* ---------- UI state ---------- */
function setBusy(v) {
  state.loading = v;
  els.bitmapGo.disabled = els.bitmapInput.disabled = els.bitmapIdInput.disabled = v;
  els.bitmapGo.textM
Content = v ? "Loading
" : "Explore district";
const parcelName = (i) => (state.height === null ? "
" : `${i}.${state.height}.bitmap`);
const parcelState = (i) => state.parcelStates[i] || 0;
function updateLoading(title, detail = "") {
  els.blockMeta.className = "hint";
  els.blockMeta.innerHTML = `<b>${esc(title)}</b>${detail ? `
 ${esc(detail)}` : ""}`;
  setUpdateBar(title, detail, "working");
function activeOrdinalParcels() {
  for (const v of state.parcelChildren.values()) if (v?.childrM
function updateScanMeta() {
  const bar = els.scanProgress.firstElementChild;
  if (state.height === null || state.district.status !== "resolved") { els.scanMeta.textContent = ""; bar.style.width = "0"; return; }
  if (state.scanError) {
    els.scanMeta.textContent = "Could not read Bitmap child inscriptions";
    setUpdateBar("Scan failed", state.scanError, "error", 5200);
  const active = activeOrdinalParcels(), other = state.districtOrdinals.length,
tate.parcelChildren.size, claims = state.parcelClaims.size;
  updateFeatureCounts();
  updateTimelineRange();
  if (state.layer) applyView();
  els.ordCount.textContent = state.selected >= 0 && state.parcelChildren.get(state.selected)?.children?.length ? state.parcelChildren.get(state.selected).children.length : "";
  if (!state.scanDone) {
    els.scanMeta.innerHTML = `Scanning children
 <b>${fmtInt(claims)}</b> parcels inscribed`;
    bar.style.width = "35%";
    setUpdateBar("Scanning Bitmap", `${fmtInt(state.M
scanChildren)} children checked
 ${fmtInt(claims)} parcels
 ${fmtInt(active)} with Ordinals`);
  } else if (checked < claims) {
    els.scanMeta.innerHTML = `Checking parcels
 <b class="hot">${fmtInt(active)}</b> with Ordinals`;
    bar.style.width = `${35 + 65 * (checked / Math.max(1, claims))}%`;
    setUpdateBar("Checking parcel Ordinals", `${fmtInt(checked)} / ${fmtInt(claims)}
 ${fmtInt(active)} with Ordinals`);
    els.scanMeta.innerHTML = claims
      ? `<b class="ins">${fmtInt(claims)}</bM
 <b class="hot">${fmtInt(active)}</b> with Ordinals
 <b>${fmtInt(other)}</b> on district
 <span class="kbd">I</span> isolate`
      : `No parcels inscribed yet
 <b>${fmtInt(other)}</b> Ordinals on the district`;
    bar.style.width = "100%";
    setUpdateBar("Scan complete", claims ? `${fmtInt(claims)} inscribed parcels
 ${fmtInt(active)} with Ordinals
 press I to isolate them` : "No parcels in this district have been inscribed yet", "done", claims ? 6000 : 4000);
function resetBitmapSM
  els.app.classList.remove("hasBlock", "globeActive");
  Object.assign(state, { district: { status: "idle", id: null, info: null }, districtOrdinals: [], scanDone: false, scanPages: 0,
    scanChildren: 0, scanUncertain: 0, scanError: null, filter: 0, showAllBitmapOrdinals: false });
  for (const m of [state.parcelClaims, state.parcelChildren, state.parcelChildrenAll, state.insInfo, state.prevTx, state.prevoutWork, state.txById]) m.clear();
  els.filterInscribed.classList.remove("on"); els.filterOrdinals.cM
lassList.remove("on");
  globe.focusLevel = 0;
  probeQueue.length = 0;
  els.legend.hidden = els.sequence.hidden = els.blockCard.hidden = els.parcelSearch.hidden = true;
  stopTour(); resetTimeline();
  state.layer = null; layerHits.clear(); els.layerRow.hidden = true; state.flows = null;
  for (let i = layers.length - 1; i >= 0; i--) if (layers[i].temp) layers.splice(i, 1);
function shareUrl() {
  if (state.height === null || !state.district.id) return location.href;
  return location.href.sM
plit("#")[0] + "#" + state.height + "/" + state.district.id + (state.selected >= 0 ? "/" + state.selected : "");
function updateHash() {
  try { if (state.height !== null && state.district.id) history.replaceState(null, "", shareUrl()); } catch {}
function parseHash() {
  const m = location.hash.replace(/&(kiosk|demo)\b/g, "").match(/^#(\d+)(?:\/([0-9a-f]{64}i\d+))?(?:\/(\d+))?$/i);
  return m ? { height: Number(m[1]), id: m[2] ? m[2].toLowerCase() : "", parcel: m[3] === undefined ? null : Number(m[3]) } : nullM
/* The user supplies the canonical Bitmap inscription ID. Runtime verifies its content is exactly HEIGHT.bitmap.
   Vanilla recursive ord cannot prove first-inscription order from HEIGHT alone. */
const ID_RE = /^[0-9a-f]{64}i\d+$/i;
function normalizeInscriptionId(v) {
  const id = String(v || "").trim().toLowerCase().replace(/^.*\/(?=[0-9a-f]{64}i\d+$)/, "");
  if (!ID_RE.test(id)) throw Error("Enter a valid inscription ID (64 hex characters + i + index)");
/* ---------- Claims: verified, neveM
r trusted ----------
   A district claim is valid when (1) its content is exactly "N.bitmap" (no spaces, no leading zeros) and
   (2) it was inscribed at or after block N (claims made before the block existed are void).
   Among valid claims the lowest inscription number is earliest and wins. Cursed (negative-number, pre-Jubilee)
   inscriptions are flagged and not allowed to win, because indexers may not count them. A claim nobody has
   supplied cannot be seen
 recursion has no search-by-content
ource of candidates adds to one list. */
async function evaluateClaim(id, height) {
  const out = { id, ok: false, status: "", number: null, height: null, timestamp: null };
  try { body = await fetchSmallText(`/content/${id}`, 96); }
  catch { out.status = "Unreadable"; return out; }
  if (body !== `${height}.bitmap`) { out.status = "Not an exact claim"; return out; }
  try { info = await getInscriptionInfo(id); } catch {}
  Object.assign(out, { number: info.number ?? null, height: infM
o.height ?? null, timestamp: info.timestamp ?? null, info });
  if (out.height != null && out.height < height) { out.status = "Void
 inscribed before block existed"; return out; }
  if (out.number == null) { out.status = "Unverified order"; return out; }
  if (out.number < 0) { out.status = "Cursed
 not counted"; out.cursed = true; return out; }
/* Ranks every known candidate and returns them earliest-first with the winner marked. */
async function rankClaims(ids, height) {
nst uniq = [...new Set(ids.filter((x) => ID_RE.test(x)))];
  const res = await mapLimit(uniq, 4, (id) => evaluateClaim(id, height));
  const valid = res.filter((r) => r.ok).sort((a, b) => a.number - b.number);
  if (valid[0]) { valid[0].win = true; valid[0].status = "Earliest valid claim"; }
  for (const r of valid.slice(1)) r.status = `Later claim
 ${fmtInt(r.number - valid[0].number)} inscriptions after`;
  const rest = res.filter((r) => !r.ok);
  return [...valid, ...rest];
/* ---------- Onchain config (updM
ate channel) ----------
   Once inscribed this file cannot change, so it reads instructions from the chain instead:
   the newest valid JSON child of CONTROL_PARENT (if set) and of this inscription itself.
   Only the holder of a parent can add children, so nobody else can change the config.
   Config:   {"p":"parcelglobe","v":1,"registries":["<id>"],"claims":{"840000":["<id>"]},"latest":"<id>","notice":"text"}
   Registry: {"p":"bitmap-registry","v":1,"claims":{"840000":["<id>", ...]}}  (its JSON children extend iM
   Everything a config or registry supplies is still verified by evaluateClaim
 a bad registry can't fake a claim. */
let configPromise = null;
const CONTROL_PARENT = "";   //
 optional: ID of a parent inscription you keep, set before inscribing
const APP_VERSION = "2.3.0";
const config = { loaded: false, sources: [], registries: [], claims: new Map(), latest: null, notice: "", modules: [], addons: [] };
  // Served as /content/<id> (or /preview/<id>): the path holds our owM
n ID. Never read the #hash
 it holds district IDs.
  const m = location.pathname.match(/([0-9a-f]{64}i\d+)/i);
  return m ? m[1].toLowerCase() : null;
async function readJSONInscription(id, max = 2_000_000) {
  try { const t = await fetchSmallText(`/content/${id}`, max); return t == null ? null : JSON.parse(t); } catch { return null; }
async function latestJsonChild(parentId, p) {
  try { data = await childrenPage(parentId); } catch { return null; }
  let kids = childArray(data);
me oldest-first; if there are more pages, walk to the last one.
  for (let page = 1; data?.more && page < 200; page++) {
    try { data = await childrenPage(parentId, page); kids = childArray(data); } catch { break; }
  // Newest first: by inscription number when the server gives it, otherwise by list position.
  kids = kids.map((ch, i) => ({ ...ch, _o: Number.isFinite(ch.number) ? ch.number : i })).sort((a, b) => a._o - b._o);
  for (const ch of kids.slice(-8).reverse()) {
    const j = await readJSONInscriptiM
    if (j && j.p === p) return { id: ch.id, json: j };
function addClaims(obj) {
  if (!obj || typeof obj !== "object") return;
  for (const [h, ids] of Object.entries(obj)) {
    if (!/^\d+$/.test(h)) continue;
    const list = config.claims.get(Number(h)) || [];
    for (const id of [].concat(ids)) if (ID_RE.test(String(id))) list.push(String(id).toLowerCase());
    config.claims.set(Number(h), list);
/* If this inscription was inscribed as a child of a "control" insM
cription, find that parent at runtime
   nothing needs to be hard-coded. Parents are fixed forever at inscription time, so only the holder
   of the control inscription can ever publish config for it. */
async function parentsOf(id) {
  try { const d = await fetchJSON(`/r/parents/${id}`); return (d?.ids || []).filter((x) => ID_RE.test(String(x))); }
  catch { return []; }
async function loadConfig() {
  const me = selfId();
  const parents = [...new Set([CONTROL_PARENT, ...(me ? await parentsOf(me) : []), me]M
.filter((x) => ID_RE.test(String(x || ""))))];
  for (const parent of parents) {
    const c = await latestJsonChild(parent, "parcelglobe");
    if (!c) continue;
    config.sources.push(c.id);
    const j = c.json;
    // Code add-ons are only accepted from a control parent (never from children of the globe itself,
    // which a future owner of the globe could write), and each must be a child of that same parent.
    if (parent !== me && Array.isArray(j.modules))
      for (const m of j.modules.slice(0, 8)) if (IM
D_RE.test(String(m))) config.modules.push({ id: String(m).toLowerCase(), control: parent });
    if (Array.isArray(j.registries)) config.registries.push(...j.registries.filter((x) => ID_RE.test(String(x))));
    addClaims(j.claims);
    if (!config.latest && ID_RE.test(String(j.latest || ""))) config.latest = j.latest.toLowerCase();
    if (!config.notice && typeof j.notice === "string") config.notice = j.notice.slice(0, 280);
    if (!config.links && Array.isArray(j.links)) config.links = j.links;
 reg of [...new Set(config.registries)].slice(0, 20)) {
    const j = await readJSONInscription(reg);
    if (j?.p === "bitmap-registry") addClaims(j.claims);
    try {   // append-only extensions: JSON children of the registry
      const kids = childArray(await childrenPage(reg));
      for (const ch of kids.slice(0, 100)) { const k = await readJSONInscription(ch.id); if (k?.p === "bitmap-registry") addClaims(k.claims); }
  config.loaded = true;
  renderConfigNotice(); renderLinks();
/* ---------- Add-ons (upgrades without re-inscribing) ----------
   A config may name JavaScript module inscriptions; each exports `default async function (pg) {}` and receives
   the PG toolkit below. Safeguards: off unless named in the control parent config; the module must be a child of
   that control parent and be JavaScript; each runs isolated in try/catch; open with ?safe to skip all add-ons. */
const hooks = { district: [], parcel: [] };
function emit(evt, ...args) { for (const fn of hooks[M
evt] || []) { try { fn(...args); } catch (e) { recordProblem("Add-on error", e, evt); } } }
const inspectorExtras = [];
const PG = Object.freeze({
  version: APP_VERSION,
  api, request, fetchJSON, fetchText, fetchSmallText, childrenPage, parentsOf, getInscriptionInfo,
  get state() { return state; }, get globe() { return globe; }, els, toast, recordProblem, esc, fmtInt, fmtBTC, fmtSats, fmtTime, short,
  selectParcel: (i, f) => selectParcel(i, f), openOrdinal: (id) => openOrdinal(id), openGallery: (t, l) => openGaM
  loadChildren: (id) => loadChildren(id), setMode: (m) => setMode(m), setFilter: (l) => setFilter(l),
  on(evt, fn) { if (hooks[evt] && typeof fn === "function") hooks[evt].push(fn); },
  addButton(label, onClick) {
    const b = document.createElement("button");
    b.className = "chip"; b.type = "button"; b.textContent = String(label);
    b.addEventListener("click", () => { try { onClick(); } catch (e) { recordProblem("Add-on error", e, label); } });
    els.addonRow.appendChild(b); els.addonRow.hidM
  addLayer(def) { registerLayer(def); },
  addParcelSection(title, render) { if (typeof render === "function") inspectorExtras.push({ title: String(title), render }); },
async function loadModules() {
  if (/(^|[?&])safe\b/.test(location.search) || !config.modules.length) return;
  for (const { id, control } of config.modules) {
      const [info, parents] = await Promise.all([getInscriptionInfo(id), parentsOf(id)]);
      if (!parents.includes(control)) throw Error("noM
t a child of the control inscription");
      if (!/javascript/i.test(info.content_type || "")) throw Error(`not JavaScript (${info.content_type || "unknown type"})`);
      const mod = await import(api(`/content/${id}`));
      if (typeof mod.default !== "function") throw Error("no default export");
      await mod.default(PG);
      config.addons.push(String(mod.name || (info.number != null ? "#" + fmtInt(info.number) : short(id, 5))));
    } catch (e) { recordProblem("Add-on not loaded", e, id); }
  if (state.block) emit("district", state);
function renderConfigNotice() {
  const parts = [], me = selfId();
  if (config.latest && config.latest !== me)
    parts.push(`A newer version of this explorer is available
 <a href="${esc(api(`/content/${config.latest}`) + location.hash)}" target="_blank" rel="noopener">open it
  if (config.notice) parts.push(esc(config.notice));
  if (config.addons.length) parts.push(`Add-ons active: ${config.addons.map(esc).join(", ")}`);
ms.size) parts.push(`Registry knows <b>${fmtInt(config.claims.size)}</b> district${config.claims.size === 1 ? "" : "s"}
 the ID is optional for those.`);
  els.configNotice.innerHTML = parts.join("<br>");
  els.configNotice.hidden = !parts.length;
  els.idOptional.hidden = !config.claims.size;
function getInscriptionInfo(id, refresh = false) {
  if (!refresh && state.insInfo.has(id)) return state.insInfo.get(id);
  const p = fetchJSON(`/r/inscription/${id}`).then((x) => (x && typeof x === "object" ? x : { id }M
)).catch((e) => { state.insInfo.delete(id); throw e; });
  state.insInfo.set(id, p);
/* Children with details via /r/children/<id>/inscriptions; older ord servers only have /r/children/<id> (IDs only). */
async function childrenPage(id, page = 0) {
  if (!childrenPage.legacy) {
    try { return await fetchJSON(`/r/children/${id}/inscriptions${page ? "/" + page : ""}`); }
    catch (e) { if (!(e instanceof HttpError && e.status === 404)) throw e; }
  const d = await fetchJSON(`/r/children/${id}${paM
ge ? "/" + page : ""}`);
  childrenPage.legacy = true;
  return { children: (d?.ids || []).map((x) => ({ id: x })), more: !!d?.more };
const childArray = (d) => (Array.isArray(d?.children) ? d.children : Array.isArray(d?.inscriptions) ? d.inscriptions : []);
async function mapLimit(items, limit, fn) {
  const out = new Array(items.length);
  const worker = async () => { while (next < items.length) { const i = next++; out[i] = await fn(items[i], i); } };
  await Promise.all(Array.from({ length: MatM
h.min(limit, items.length) }, worker));
async function classifyDistrictChild(ch, height) {
  const id = ch?.id;
  if (!ID_RE.test(String(id || ""))) return { kind: "uncertain" };
  let body, err = null;
  for (let attempt = 0; attempt < 2; attempt++) {
    try { body = await fetchSmallText(`/content/${id}`, 96); err = null; break; }
    catch (e) { err = e; if (!attempt) await new Promise((r) => setTimeout(r, 150)); }
  if (err) return { kind: "uncertain" };
  if (body !== null) {
body.match(/^(\d+)\.(\d+)\.bitmap$/);
    if (m && Number(m[2]) === height) {
      const index = Number(m[1]);
      if (Number.isInteger(index) && index < state.txs.length) return { kind: "parcel", index, record: { id, info: ch || {}, content: body } };
  return { kind: "other", record: { id, info: ch || {} } };
let probeQueue = [], probeActive = 0;
function queueParcelProbe(index, claim, token) { probeQueue.push({ index, claim, token }); pumpProbes(); }
function pumpProbes() {
  while (probeActive <M
 6 && probeQueue.length) {
    const job = probeQueue.shift();
    probeParcelChildren(job).finally(() => { probeActive--; pumpProbes(); });
async function probeParcelChildren({ index, claim, token }) {
  if (token !== state.token) return;
    const data = await childrenPage(claim.id);
    if (token !== state.token || state.parcelClaims.get(index) !== claim) return;
    const children = childArray(data);
    state.parcelChildren.set(index, { children, more: !!data?.more, error: nullM
    globe.setState(index, children.length ? 2 : 1);
    if (token !== state.token) return;
    state.parcelChildren.set(index, { children: null, more: false, error: e.message || String(e) });
  if (state.selected === index) renderOpenSection();
async function scanDistrictChildren(token) {
  const district = state.district;
  while (token === state.token) {
    const data = await childrenPage(district.id, page);
    if (token !== state.token) return;
 const children = childArray(data);
    state.scanPages = page + 1; state.scanChildren += children.length;
    const classified = await mapLimit(children, 7, (ch) => classifyDistrictChild(ch, state.height));
    if (token !== state.token) return;
    for (const item of classified) {
      if (item.kind === "parcel") {
        // First is first: if two children claim the same parcel, the lower inscription number wins.
        const prev = state.parcelClaims.get(item.index),
          key = (r) => { const n = r?.infoM
?.number; return n == null ? 9e18 : n < 0 ? 8e18 - n : n; };
        if (!prev || key(item.record) < key(prev)) {
          state.parcelClaims.set(item.index, item.record);
          state.parcelChildren.delete(item.index);
          globe.setState(item.index, 1);
          queueParcelProbe(item.index, item.record, token);
      } else if (item.kind === "uncertain") state.scanUncertain++;
      else state.districtOrdinals.push(item.record);
    updateScanMeta(); renderOpenSection();
    if (++page > 500) throw Error("Bitmap child pagination exceeded safety limit");
    await sleepFrame();
  if (token !== state.token) return;
  state.scanDone = true;
  updateScanMeta(); renderOpenSection();
const parcelChildPromises = new Map();
async function loadAllParcelChildren(index) {
  if (state.parcelChildrenAll.has(index)) return state.parcelChildrenAll.get(index);
  const token = state.token, key = `${token}:${index}`;
  if (parcelChildPromises.has(key)) return parcelChildPromises.geM
  const claim = state.parcelClaims.get(index);
  if (!claim) return [];
  const p = (async () => {
    while (token === state.token) {
      const data = await childrenPage(claim.id, page);
      all.push(...childArray(data));
      if (!data?.more) break;
      if (++page > 500) throw Error("Parcel child pagination exceeded safety limit");
    const recs = all.map((ch) => ({ id: ch.id, info: ch }));
    if (token === state.token) state.parcelChildrenAll.set(indexM
  parcelChildPromises.set(key, p);
  try { return await p; } finally { parcelChildPromises.delete(key); }
function sequenceLabel(i) {
  const n = state.txs.length;
  if (i === 0) return "First parcel";
  if (i === n - 1) return "Last parcel";
  return `${((i / (n - 1)) * 100).toFixed(1)}% through block`;
const parcelRole = (i) => (i === 0 ? "Coinbase" : i === state.txs.length - 1 ? "Final transaction" : "Transaction");
/* Raw hex can be hundreds of KB (M
inscription reveals); show a capped preview so the panel stays fast. */
const RAW_PREVIEW = 4000;
function rawBox(hex, copyAttr) {
  const s = String(hex || "");
  if (s.length <= RAW_PREVIEW) return `<div class="rawBox">${esc(s)}</div>`;
  return `<div class="rawBox">${esc(s.slice(0, RAW_PREVIEW))}
</div><div class="rawMore">${fmtBytes(s.length / 2)} total
 showing the first ${fmtBytes(RAW_PREVIEW / 2)} <button class="copyBtn" type="button" ${copyAttr}>Copy all</button></div>`;
const rawTxHex = (tx) => (statM
e.bytes ? bytesToHex(state.bytes.subarray(tx.start, tx.end)) : "");
async function loadBitmap(value, districtValue, selectAfter = null) {
  let height, id = null;
    height = normalizeHeight(value);
    if (String(districtValue || "").trim()) id = normalizeInscriptionId(districtValue);
  } catch (e) { toast(e.message, true); return false; }
  if (!state.sourceLabel || state.sourceLabel === "none") await resolveBase();
  if (state.gallery || galleryStack.length) {
    galleryToken++; galleryStack.length = M
0; state.gallery = null;
    els.app.classList.remove("galleryMode"); els.galleryBar.hidden = true;
  if (!id && !config.loaded && configPromise) await configPromise;
  // Every source of candidates goes into one list: what you typed, competing IDs, and any onchain registry.
  const extra = (els.challengeInput.value.match(/[0-9a-f]{64}i\d+/gi) || []).map((x) => x.toLowerCase());
  const candidates = [id, ...extra, ...(config.claims.get(height) || [])].filter(Boolean);
  if (!candidates.length) {
g.loaded && config.claims.size ? `No registry knows ${height}.bitmap yet
 paste its inscription ID` : "Paste the district's inscription ID", true);
  const token = ++state.token;
  setBusy(true); closeViewer(); closeInspector(false); resetBitmapState();
  Object.assign(state, { height, block: null, txs: [], bytes: null, claims: [], district: { status: "verifying", id: null, info: null } });
  updateLoading(candidates.length > 1 ? `Checking ${candidates.length} claims` : "Verifying inscriptiM
on", `${height}.bitmap`);
    if (Number.isFinite(state.tip) && height > state.tip) {
      // The page may have been open a while
 refresh the tip before saying no.
      try { const t = Number(parseJsonString(await fetchText("/r/blockheight"))); if (Number.isFinite(t)) state.tip = t; } catch {}
      if (height > state.tip) throw Error(`Block ${fmtInt(height)} has not been mined yet (tip ${fmtInt(state.tip)})`);
    const ranked = await rankClaims(candidates, height);
    if (token !== state.tokeM
    state.claims = ranked;
    let win = ranked.find((r) => r.win);
      // Content matched exactly but the details couldn't be read (network): use it, clearly marked.
      win = ranked.find((r) => r.status === "Unverified order");
      if (win) { win.win = true; win.status = "Content verified
 order unverified"; }
    if (!win) throw Error(ranked.length === 1 ? `Not a valid claim: ${ranked[0].status}` : `None of the ${ranked.length} claims is valid (${[...new Set(ranked.M
map((r) => r.status))].join(", ")})`);
    if (id && win.id !== id) toast(`An earlier claim exists
 showing #${fmtInt(win.number)}, the earliest valid one`, true);
    updateLoading("Reading block", `${height}.bitmap`);
    try { text = await fetchText(`/r/block/${height}`, { timeout: 120000 }); }
      if (e instanceof HttpError && e.status === 404) throw Error("This ord server doesn't support /r/block yet
 view the inscription on ordinals.com or a server runninM
      throw Error(`Could not read block ${fmtInt(height)}: ${e.message || e}`);
    if (token !== state.token) return false;
    const hex = parseJsonString(text);
    if (typeof hex !== "string" || !/^[0-9a-f]+$/i.test(hex)) throw Error("Invalid /r/block response");
    state.bytes = hexToBytes(hex);
    updateLoading("Decoding block", fmtBytes(state.bytes.length));
    const block = await parseBlock(state.bytes, height);
    if (token !== state.token) return false;
    Object.assign(state,M
 { block, txs: block.txs, txById: new Map(block.txs.map((t) => [t.txid, t])), selected: -1 });
    state.parcelStates = new Float32Array(block.txCount);
    globe.setData(block.txCount, state.parcelStates);
    setMode(state.mode);
    computeLayers();
    els.bitmapInput.value = height; els.bitmapIdInput.value = id;
    els.lastIndex.textContent = els.lastMarkerIndex.textContent = fmtInt(block.txCount - 1);
    els.statParcels.textContent = fmtInt(block.txCount);
    els.statSize.textContent = fmtBytes(block.size)M
    els.statTime.textContent = fmtTime(block.timestamp, { year: "numeric", month: "short", day: "numeric" });
    els.statTime.title = fmtTime(block.timestamp);
    els.statHash.textContent = short(block.hash, 10); els.statHash.title = block.hash;
    els.statInscribed.textContent = "
    els.blockMeta.className = "hint";
    els.blockMeta.innerHTML = `<b>
 Verified ${height}.bitmap</b>${state.claims.length > 1 ? `
 earliest of ${state.claims.length} claims checked` : ""}
 drag to rotate, click a parceM
    els.panelSummaryText.textContent = `${height}.bitmap`;
    els.panelSummarySub.textContent = `${fmtInt(block.txCount)} parcels`;
    els.blockCard.hidden = els.parcelSearch.hidden = els.sequence.hidden = els.legend.hidden = false;
    els.app.classList.add("hasBlock"); els.panel.classList.remove("expanded");
    let info = null;
    try { info = await getInscriptionInfo(id, true); } catch {}
    if (token !== state.token) return false;
    state.district = { status: "resolved", id, info };
pdateHash(); setBusy(false); updateScanMeta();
    scanDistrictChildren(token).catch((e) => {
      if (token !== state.token) return;
      state.scanError = e.message || String(e);
      recordProblem("Bitmap child scan failed", e, `Bitmap ${state.height}
 ${state.district.id}`);
      updateScanMeta(); renderOpenSection();
    remember({ h: height, id, p: null }); renderLinks();
    emit("district", state);
    if (Number.isInteger(selectAfter) && selectAfter >= 0 && selectAfter < block.txCount) selectM
Parcel(selectAfter, true);
    if (token === state.token) {
      Object.assign(state, { height: null, block: null, txs: [], bytes: null, district: { status: "idle", id: null, info: null } });
      state.parcelStates = new Float32Array(0);
      globe.setIdle();
      resetBitmapState();
      els.blockMeta.className = "hint err"; els.blockMeta.textContent = e.message || String(e);
      setBusy(false);
      recordProblem("Bitmap load failed", e, `Bitmap ${height}
  setUpdateBar("Could not load Bitmap", e.message || String(e), "error", 5200);
function getPrevTx(txid) {
  if (state.txById.has(txid)) return Promise.resolve(state.txById.get(txid));
  if (state.prevTx.has(txid)) return state.prevTx.get(txid);
  const p = fetchText(`/r/tx/${txid}`).then((t) => parseStandaloneTxHex(parseJsonString(t))).catch((e) => { state.prevTx.delete(txid); throw e; });
  state.prevTx.set(txid, p);
async function ensurePrevouts(index) {
  if (!tx || tx.coinbase) return null;
  if (tx.prevoutData) return tx.prevoutData;
  if (tx.inputs.length > 200) throw Error("Too many inputs to resolve");
  if (state.prevoutWork.has(tx.txid)) return state.prevoutWork.get(tx.txid);
  const token = state.token, p = (async () => {
    const prevs = await mapLimit(tx.inputs, 6, async (input) => {
      const out = (await getPrevTx(input.prevTxid)).outputs[input.vout];
      if (!out) throw Error(`Missing previous output ${input.prevTxid}:${input.voM
    let inputValue = 0n; for (const o of prevs) inputValue += o.value;
    const fee = inputValue - tx.totalOutput;
    if (fee < 0n) throw Error("Resolved inputs are less than outputs");
    const result = { inputValue, fee, feeRate: Number(fee) / tx.vsize, prevouts: prevs };
    if (token === state.token) tx.prevoutData = result;
  state.prevoutWork.set(tx.txid, p);
  try { return await p; } finally { state.prevoutWork.delete(tx.txid); }
 Inspector rendering ---------- */
function ordinalIcon(type) {
  type = String(type || "").toLowerCase();
  if (type.includes("svg")) return "SVG";
  if (type.startsWith("image/")) return "IMG";
  if (type.includes("html")) return "HTML";
  if (type.includes("json")) return "JSON";
  if (type.startsWith("audio/")) return "AUD";
  if (type.startsWith("video/")) return "VID";
  if (type.startsWith("text/")) return "TXT";
function ordinalItem(rec, label = "") {
  const info = rec?.info || rec || {},M
 id = rec?.id || info.id || "",
    num = info.number != null ? `#${fmtInt(info.number)}` : label || short(id, 6),
    type = info.content_type || "inscription", addr = info.address ? short(info.address, 5) : "";
  return `<button class="ordinalItem" type="button" data-view-inscription="${esc(id)}"><span class="ordIcon">${ordinalIcon(type)}</span><span class="ordMeta"><b>${esc(label && info.number != null ? `${label}
 ${num}` : num)}</b><span>${esc(type)}${addr ? "
 " + esc(addr) : ""}</span></span><span class=M
function hydrateOrdinalRecords(records) {
  const token = state.token;
  for (const rec of records || []) {
    if (!rec || rec._h || !ID_RE.test(String(rec.id || "")) || rec.info?.content_type) continue;
    getInscriptionInfo(rec.id).then((info) => { if (token === state.token) rec.info = { ...(rec.info || {}), ...info }; }).catch(() => {})
      .finally(() => { if (token === state.token && state.selected >= 0 && state.openSection === "ordinals") renderSectionM
function parcelStatus(index) {
  const claim = state.parcelClaims.get(index), sum = state.parcelChildren.get(index);
  if (claim && sum?.children?.length) { const n = sum.children.length; return `<span class="cyan"><i class="statusDot ordinal"></i>${n}${sum.more ? "+" : ""} Ordinal${n === 1 && !sum.more ? "" : "s"}</span>`; }
  if (claim) return `<span><i class="statusDot inscribed"></i>Inscribed</span>`;
  if (state.scanDone) return state.scanUncertain ? '<span class="muted">Unresolved</spaM
n>' : '<span class="muted">Not inscribed</span>';
  return '<span class="muted">Scanning
function renderParcel(index) {
  const tx = state.txs[index], name = parcelName(index), claim = state.parcelClaims.get(index);
  let x = row("Parcel", `<span class="mono">${esc(name)}</span>${copyButton(name, "Parcel name")}`) + row("Index", fmtInt(index)) +
    row("Position", sequenceLabel(index)) + row("Role", `<span class="accent">${parcelRole(index)}</span>`) + row("Status", parcelStatus(index)) +
ze", `${fmtInt(tx.vsize)} vB`) + row("Output value", fmtBTC(tx.totalOutput)) + row("Inputs / outputs", `${fmtInt(tx.inputs.length)} / ${fmtInt(tx.outputs.length)}`);
  let html = rows(x);
  if (claim) html += `<div class="subhead">Parcel inscription</div>` + ordinalItem(claim, "Parcel");
  html += flowSection(index);
  for (const l of layers) {
    const hit = layerHits.get(l.id)?.get(index);
    if (hit && !l.temp) html += `<div class="subhead"><i class="layerDot" style="background:rgb(${l.color})"></i>${esc(l.namM
 ${esc(hit.label)}</div>` + hit.html;
  for (const x of inspectorExtras) {
    try { html += `<div class="subhead">${esc(x.title)}</div>` + String(x.render(index) ?? ""); }
    catch (e) { recordProblem("Add-on error", e, x.title); }
  els.insBody.innerHTML = html;
  if (claim) hydrateOrdinalRecords([claim]);
function renderTransaction(index) {
  const tx = state.txs[index], pd = tx.prevoutData;
  let x = row("TXID", `<span class="mono" title="${tx.txid}">${short(tx.txid, 7)}</span>${copyButton(tx.tM
    row("Version", tx.version) + row("SegWit", tx.segwit ? "Yes" : "No") + row("Locktime", fmtInt(tx.locktime)) +
    row("Output value", fmtBTC(tx.totalOutput)) + row("Size", `${fmtBytes(tx.size)}
 ${fmtInt(tx.vsize)} vB`) + row("Weight", `${fmtInt(tx.weight)} WU`);
  if (tx.coinbase) x += row("Fee", "Coinbase (block reward)");
  else if (pd) x += row("Input value", fmtBTC(pd.inputValue)) + row("Fee", `${fmtSats(pd.fee)}`) + row("Fee rate", `${pd.feeRate.toFixed(2)} sat/vB`);
ee", `<span class="muted" id="feeCell">Resolving
  const io = (title, items) => items.length > 60
    ? items.slice(0, 60).join("") + `<div class="empty">${fmtInt(items.length - 60)} more ${title.toLowerCase()} not shown</div>` : items.join("");
  const inputs = tx.inputs.map((q, j) => {
    const prev = pd?.prevouts?.[j];
    return `<details class="txDetail"><summary>Input ${j}<em>${prev ? fmtSats(prev.value) : tx.coinbase ? "coinbase" : ""}</em></summary><div class="detailBody">${rows(
evious TX", `<span class="mono" title="${q.prevTxid}">${short(q.prevTxid, 6)}</span>`) + row("VOUT", q.vout) + row("Sequence", q.sequence) +
      (prev ? row("Address", prev.address ? addressLink(prev.address) : '<span class="muted">Non-standard</span>') : "") +
      row("Witness", q.witness.length ? `${q.witness.length} item${q.witness.length === 1 ? "" : "s"}` : "
      q.scriptSig ? rawBox(q.scriptSig, `data-copy-raw="sig:${j}"`) : ""}${q.witness.length ? rawBox(q.witness.join("\n"), `data-copy-raw="wM
it:${j}"`) : ""}</div></details>`;
  const outputs = tx.outputs.map((o) => `<details class="txDetail"><summary>Output ${o.index}<em>${fmtSats(o.value)}</em></summary><div class="detailBody">${rows(
    row("Type", o.type) + row("Address", o.address ? addressValue(o.address) : '<span class="muted">No standard address</span>'))}${rawBox(o.scriptPubKey, `data-copy-raw="out:${o.index}"`)}</div></details>`);
  els.insBody.innerHTML = rows(x) + `<div class="subhead">Inputs
 ${fmtInt(tx.inputs.length)}</div>${io("M
Inputs", inputs)}<div class="subhead">Outputs
 ${fmtInt(tx.outputs.length)}</div>${io("Outputs", outputs)}<details class="txDetail" style="margin-top:12px"><summary>Raw transaction<em>${fmtBytes(tx.size)}</em></summary>${tx.size * 2 <= RAW_PREVIEW ? rawBox(rawTxHex(tx)) : `<div class="rawMore">${fmtBytes(tx.size)}
 too large to show <button class="copyBtn" type="button" data-copy-raw="tx">Copy all</button></div>`}</details>`;
  if (!tx.coinbase && !pd)
    ensurePrevouts(index).then(() => { if (state.selected =M
== index && state.openSection === "transaction") renderTransaction(index); })
      .catch((e) => { const c = $("feeCell"); if (c) c.textContent = /Too many/.test(e?.message) ? "Too many inputs to look up" : "Unavailable"; });
function renderBitmap() {
  const b = state.block, d = state.district;
  let x = row("District", `${state.height}.bitmap`) + row("Block hash", `<span class="mono" title="${b.hash}">${short(b.hash, 7)}</span>${copyButton(b.hash, "Block hash")}`) +
    row("Mined", fmtTime(b.timestamp)) + rowM
("Transactions", fmtInt(b.txCount)) + row("Size", fmtBytes(b.size)) + row("Weight", `${fmtInt(b.weight)} WU`);
  if (d.status === "resolved") {
    const info = d.info || {}, claimHeight = Number(info.height), claimTime = Number(info.timestamp);
    x += row("Inscription", `<button class="miniBtn" type="button" data-view-inscription="${esc(d.id)}">${info.number != null ? "#" + fmtInt(info.number) : short(d.id, 6)}</button>${copyButton(d.id, "Inscription ID")}`) +
      row("Content check", '<span class="cyan">
xact match</span>') + row("Claim order", state.claims.length > 1 ? `<span class="cyan">Earliest of ${state.claims.length}</span>` : "Only claim supplied") + row("Owner", info.address ? addressValue(info.address) : "
      row("Inscribed parcels", state.scanDone ? fmtInt(state.parcelClaims.size) : `<span class="muted">${fmtInt(state.parcelClaims.size)}
 scanning</span>`) +
      row("Direct Ordinals", state.scanDone ? fmtInt(state.districtOrdinals.length) + (state.scanUncertain ? `
 ${fmtInt(state.scanUncM
ertain)} unresolved` : "") : `<span class="muted">${fmtInt(state.districtOrdinals.length)}
    if (Number.isFinite(claimTime)) x += row("Claimed", fmtTime(claimTime));
    if (Number.isFinite(claimHeight)) {
      const delay = claimHeight - state.height;
      x += row("Claim delay", delay === 0 ? "Same block" : `${fmtInt(Math.abs(delay))} block${Math.abs(delay) === 1 ? "" : "s"} ${delay > 0 ? "after" : "before"} mining`);
  if (state.claims?.length) {
= `<div class="subhead">Claims checked
 ${state.claims.length}</div>` + state.claims.map((c) =>
      `<div class="claim${c.win ? " win" : ""}"><button class="miniBtn" type="button" data-view-inscription="${esc(c.id)}">${c.number != null ? "#" + fmtInt(c.number) : esc(short(c.id, 5))}</button>` +
      `<span class="tag${c.win ? "" : c.cursed ? " warn" : c.ok ? "" : " bad"}">${esc(c.status)}</span>` +
      `<small>${c.height != null ? "Inscribed in block " + fmtInt(c.height) : "Block unknown"}${c.timestamp ? "
 " + esc(fmtTime(c.timestamp, { year: "numeric", month: "short", day: "numeric" })) : ""}</small></div>`).join("") +
      `<p class="hint" style="margin-top:8px">Only claims supplied (typed, pasted, or from an onchain registry) can be compared
 recursion can't search all inscriptions by content.</p>`;
  els.insBody.innerHTML = rows(x) + claims +
    `<div class="subhead">Take it with you</div><div class="inline"><button class="miniBtn" type="button" data-export="download">
 Download district data</buttonM
><button class="miniBtn" type="button" data-export="copy">Copy JSON</button></div>`;
function renderOrdinals(index) {
  const claim = state.parcelClaims.get(index);
  let html = `<div class="subhead">On this parcel</div>`;
    const all = state.parcelChildrenAll.get(index), summary = state.parcelChildren.get(index);
      html += all.length ? `<div class="ordinalList">${all.map((r) => ordinalItem(r)).join("")}</div><button class="miniBtn globeBtn galleryChip" type="button" data-galleM
ry-parcel="${index}">
 View ${fmtInt(all.length)} as a globe</button>` : `<div class="empty">No Ordinals attached to this parcel yet</div>`;
      hydrateOrdinalRecords(all);
    } else if (summary?.error) html += `<div class="empty">Could not read this parcel's children</div>`;
      html += `<div class="empty">Loading
      loadAllParcelChildren(index).catch(() => {}).finally(() => { if (state.selected === index && state.openSection === "ordinals") renderSection("ordinals"); });
else html += `<div class="empty">${state.scanDone ? "This parcel has not been inscribed" : "Scanning district
  html += `<div class="subhead">On the district
 ${fmtInt(state.districtOrdinals.length)}${state.scanDone ? "" : "
  const list = state.districtOrdinals, shown = state.showAllBitmapOrdinals ? list : list.slice(0, 12);
  html += shown.length ? `<div class="ordinalList">${shown.map((r) => ordinalItem(r)).join("")}</div>` : `<div class="empty">${state.scanDone ? "None" : "Scanning
  if (list.length > shown.length) html += `<button class="miniBtn" type="button" style="margin-top:8px;width:100%" data-show-all-bitmap>Show all ${fmtInt(list.length)}</button>`;
  if (list.length) html += `<button class="miniBtn globeBtn galleryChip" type="button" data-gallery-district>
 View district Ordinals as a globe</button>`;
  els.insBody.innerHTML = html;
  hydrateOrdinalRecords(shown);
function renderSection(name = state.openSection) {
  if (state.selected < 0 || !state.txs[state.selected]M
  const top = els.insBody.scrollTop, same = renderSection.last === `${name}:${state.selected}`;
  if (name === "parcel") renderParcel(state.selected);
  else if (name === "transaction") renderTransaction(state.selected);
  else if (name === "bitmap") renderBitmap();
  else renderOrdinals(state.selected);
  if (same) els.insBody.scrollTop = top;
  renderSection.last = `${name}:${state.selected}`;
const renderOpenSection = () => state.selected >= 0 && renderSection(state.openSection);
function setOpenSectM
  state.openSection = name;
  for (const t of els.tabs.children) t.classList.toggle("on", t.dataset.section === name);
  els.insBody.scrollTop = 0;
  renderSection(name);
function selectParcel(i, focus = true) {
  if (!state.txs.length || i < 0 || i >= state.txs.length) return;
  state.selected = i;
  globe.setSelected(i, focus);
  els.parcelName.textContent = parcelName(i);
  els.parcelEyebrow.textContent = `Parcel ${fmtInt(i)} of ${fmtInt(state.txs.length - 1)}`;
  els.prevParcel.disabled = i === 0;M
 els.nextParcel.disabled = i === state.txs.length - 1;
  const sum = state.parcelChildren.get(i);
  els.ordCount.textContent = sum?.children?.length ? sum.children.length : "";
  els.app.classList.remove("globeActive"); els.panel.classList.remove("expanded");
  els.inspector.classList.add("open"); els.app.classList.add("inspecting");
  els.seqThumb.style.display = "block";
  els.seqThumb.style.top = `${(i / Math.max(1, state.txs.length - 1)) * 100}%`;
  setOpenSection(state.openSection || "parcel");
  syncStar(); updateTrace();
  remember({ h: state.height, id: state.district.id, p: i });
  emit("parcel", i);
function closeInspector(update = true) {
  state.selected = -1;
  globe.setSelected(-1, false);
  els.inspector.classList.remove("open"); els.app.classList.remove("inspecting");
  els.seqThumb.style.display = "none";
  if (update) updateHash();
function findParcel(q) {
  q = String(q || "").trim().toLowerCase();
  if (!q || !state.txs.length) return -1;
  if (/^[0-9a-f]{64}$/.test(q)) return state.txM
s.findIndex((t) => t.txid === q);
  const m = q.match(/^#?(\d+)(?:\.(\d+)(?:\.bitmap)?)?$/);
  if (!m || (m[2] !== undefined && Number(m[2]) !== state.height)) return -1;
  const n = Number(m[1]);
  return n < state.txs.length ? n : -1;
function doParcelSearch() {
  const sug = suggestionsFor(els.parcelInput.value);
  if (sug.length) { sugItems = sug; return runSuggestion(Math.min(sugIndex, sug.length - 1)); }
  const i = findParcel(els.parcelInput.value);
  if (i < 0) toast(`No such parcel in ${state.height}.bitM
  else { selectParcel(i, true); els.parcelInput.blur(); }
function stepParcel(d) {
  if (!state.txs.length) return;
  selectParcel(clamp((state.selected < 0 ? (d > 0 ? -1 : state.txs.length) : state.selected) + d, 0, state.txs.length - 1), true);
/* Filter levels: 0 = all parcels, 1 = inscribed parcels, 2 = parcels with Ordinals attached. */
const inscribedList = () => [...state.parcelClaims.keys()].sort((a, b) => a - b);
const ordinalList = () => [...state.parcelChildren.entries()].filter(([, v]) M
=> v?.children?.length).map(([k]) => k).sort((a, b) => a - b);
const filterList = (level) => (level >= 2 ? ordinalList() : inscribedList());
function emptyMessage(level) {
  const what = level >= 2 ? "parcels with Ordinals" : "inscribed parcels";
  return state.scanDone && (level < 2 || state.parcelChildren.size >= state.parcelClaims.size) ? `No ${what} in ${state.height}.bitmap` : `No ${what} found yet
function randomParcel() {
  if (!state.txs.length) return;
  const pool = state.layer ? laM
yerList() : state.filter ? filterList(state.filter) : null;
  if (pool && !pool.length) return toast(emptyMessage(state.filter));
  selectParcel(pool ? pool[Math.floor(Math.random() * pool.length)] : Math.floor(Math.random() * state.txs.length), true);
function nextFeatured(dir = 1, level = state.filter || 1) {
  const list = state.layer ? layerList() : filterList(level);
  if (!list.length) return toast(emptyMessage(level));
  const cur = state.selected;
  selectParcel(dir > 0 ? list.find((k) => k > cur) ?? listM
[0] : [...list].reverse().find((k) => k < cur) ?? list[list.length - 1], true);
function setFilter(level) {
  if (state.filter === level) level = 0;
  if (level && !filterList(level).length && state.scanDone && (level < 2 || state.parcelChildren.size >= state.parcelClaims.size))
    return toast(emptyMessage(level));
  state.filter = level;
  if (state.layer) { state.layer = null; renderLayerChips(); }
  if (level && !globe.glow) setGlow(true);
  els.filterInscribed.classList.toggle("on", level ===M
 1); els.filterOrdinals.classList.toggle("on", level === 2);
  if (level && !filterList(level).length) toast(emptyMessage(level));
  else if (level) toast(`Showing ${fmtInt(filterList(level).length)} ${level === 2 ? "parcels with Ordinals" : "inscribed parcels"}
function setGlow(v = !globe.glow) { globe.glow = v; els.glowToggle.classList.toggle("on", v); }
function updateFeatureCounts() {
  const ins = state.parcelClaims.size, ord = activeOrdinalParcels(), more = state.scanDone ? "" : "
s.countInscribed.textContent = fmtInt(ins) + more; els.countOrdinals.textContent = fmtInt(ord) + more;
  els.statInscribed.textContent = fmtInt(ins) + more;
  els.nextInsBtn.disabled = state.scanDone && !ins;
/* ---------- Tour (Google-Earth-style guided flight) ---------- */
const tour = { on: false, list: [], i: 0, timer: 0 };
function tourList() {
  if (state.layer) { const l = layerList(); if (l.length) return { list: l, what: `${layers.find((x) => x.id === state.layer).name} parcels` }; }
) { const l = filterList(state.filter); if (l.length) return { list: l, what: state.filter === 2 ? "parcels with Ordinals" : "inscribed parcels" }; }
  const ins = inscribedList();
  if (ins.length) return { list: ins, what: "inscribed parcels" };
  // Nothing inscribed yet: visit the district's landmarks instead.
  const by = (f) => state.txs.reduce((b, t, i) => (f(t) > f(state.txs[b]) ? i : b), 0);
  return { list: [...new Set([0, by((t) => t.vsize), by((t) => Number(t.totalOutput)), by((t) => t.inputs.length + tM
.outputs.length), state.txs.length - 1])], what: "landmark parcels" };
function startTour() {
  if (!state.txs.length) return;
  const { list, what } = tourList();
  Object.assign(tour, { on: true, list, i: 0 });
  els.tourBtn.classList.add("on"); els.tourBtn.firstChild.textContent = "
  toast(`Touring ${fmtInt(list.length)} ${what}
 press any key to stop`);
  setTimeout(tourStep, 900);
function tourStep() {
  if (!tour.on) return;
  if (tour.i > 0 && tour.i % tour.list.length === 0) {
f a loop: refresh the stops (the scan may have found inscribed parcels since), and in kiosk mode
    // move on to the next protocol layer so an ambient display keeps changing.
    if (state.kiosk) {
      const avail = [null, ...layers.filter((l) => !l.temp && layerHits.get(l.id)?.size).map((l) => l.id)];
      const next = avail[(avail.indexOf(state.layer) + 1) % avail.length];
      if (next !== state.layer) { state.layer = null; if (next) setLayer(next); else applyView(); renderLayerChips(); }
st = tourList().list; tour.i = 0;
  const n = tour.list.length, i = tour.list[tour.i % n];
  selectParcel(i, true);
  if (n > 1) els.parcelEyebrow.textContent = `Tour stop ${(tour.i % n) + 1} of ${n}`;
  tour.timer = setTimeout(tourStep, 4800);
function stopTour() {
  if (!tour.on) return;
  tour.on = false; clearTimeout(tour.timer);
  els.tourBtn.classList.remove("on"); els.tourBtn.firstChild.textContent = "
  if (state.selected >= 0) els.parcelEyebrow.textContent = `Parcel ${fmtInt(stM
ate.selected)} of ${fmtInt(state.txs.length - 1)}`;
/* ---------- History timeline (Google Earth "historical imagery") ----------
   Replays the district: when each parcel was inscribed and when Ordinals first landed on it. */
const timeline = { t: null, min: 0, max: 0, playing: false, raf: 0 };
function parcelTimes() {
  for (const [i, rec] of state.parcelClaims) {
    const ct = Number(rec.info?.timestamp), kids = state.parcelChildren.get(i)?.children || [];
    let ot = Infinity;
nst k of kids) { const t = Number(k.timestamp); if (Number.isFinite(t) && t < ot) ot = t; }
    out.push([i, Number.isFinite(ct) ? ct : null, kids.length ? (ot === Infinity ? (Number.isFinite(ct) ? ct : null) : ot) : null]);
function updateTimelineRange() {
  const times = parcelTimes(), d = Number(state.district.info?.timestamp);
  let min = Number.isFinite(d) ? d : Infinity, max = 0;
  for (const [, c, o] of times) { if (c != null) { min = Math.min(min, c); max = Math.max(max, c); } if (o != nM
ull) max = Math.max(max, o); }
  const ok = times.some(([, c]) => c != null) && Number.isFinite(min);
  els.timeline.hidden = !ok;
  timeline.min = min; timeline.max = Math.max(max, min + 1);
  if (timeline.t != null) applyTimeline();
function applyTimeline() {
  if (state.layer) return;
  if (timeline.t == null || !state.txs.length) { globe.uploadStates(globe.states); els.tlDate.textContent = "Now"; return; }
  const T = timeline.t, arr = new Float32Array(state.txs.length);
(const [i, c, o] of parcelTimes()) { arr[i] = o != null && o <= T ? 2 : c != null && c <= T ? 1 : 0; if (arr[i]) n++; }
  globe.uploadStates(arr);
  els.tlDate.textContent = `${fmtTime(T, { year: "numeric", month: "short", day: "numeric" })}
 ${fmtInt(n)} inscribed`;
function setTimelineValue(v) {   // v in 0..1; 1 = now
  if (state.layer) { state.layer = null; renderLayerChips(); globe.focusLevel = state.filter; }
  els.tlRange.value = String(Math.round(v * 1000));
  timeline.t = v >= 1 ? null : timeline.min +M
 v * (timeline.max - timeline.min);
function stopTimelinePlay() { timeline.playing = false; cancelAnimationFrame(timeline.raf); els.tlPlay.textContent = "
function playTimeline() {
  if (timeline.playing) return stopTimelinePlay();
  timeline.playing = true; els.tlPlay.textContent = "
  const start = performance.now(), from = Number(els.tlRange.value) >= 1000 ? 0 : Number(els.tlRange.value) / 1000, dur = 9000 * (1 - from);
  const step = (now) => {
    if (!timeline.playing) retuM
    const v = Math.min(1, from + (1 - from) * ((now - start) / Math.max(1, dur)));
    setTimelineValue(v);
    if (v >= 1) return stopTimelinePlay();
    timeline.raf = requestAnimationFrame(step);
  timeline.raf = requestAnimationFrame(step);
function resetTimeline() { stopTimelinePlay(); timeline.t = null; els.tlRange.value = "1000"; els.tlDate.textContent = "Now"; els.timeline.hidden = true; }
/* ---------- Export (Google Earth's "save to KML", for Bitmap) ---------- */
function districtData() {
    generator: `Bitmap Parcel Globe ${APP_VERSION}`, exported: new Date().toISOString(),
    district: `${state.height}.bitmap`, inscription: state.district.id, blockHash: state.block?.hash, mined: state.block?.timestamp,
    parcels: state.txs.length, scanComplete: state.scanDone,
    claimsChecked: (state.claims || []).map((c) => ({ id: c.id, number: c.number, height: c.height, status: c.status })),
    inscribedParcels: inscribedList().map((i) => ({ index: i, name: parcelName(i), txid: state.txs[i].txid,M
 inscription: state.parcelClaims.get(i).id,
      ordinals: state.parcelChildren.get(i)?.children?.map((c) => c.id) ?? null })),
    districtOrdinals: state.districtOrdinals.map((r) => r.id),
    layers: Object.fromEntries(layers.filter((l) => layerHits.has(l.id)).map((l) => [l.name, [...layerHits.get(l.id)].map(([index, h]) => ({ index, label: h.label }))])),
function exportDistrict(kind) {
  if (!state.block) return;
  const json = JSON.stringify(districtData(), null, 2);
  if (kind === "copy") return copyM
Text(json, "District data");
    const a = document.createElement("a");
    a.href = URL.createObjectURL(new Blob([json], { type: "application/json" }));
    a.download = `${state.height}.bitmap.json`;
    document.body.appendChild(a); a.click(); a.remove();
    setTimeout(() => URL.revokeObjectURL(a.href), 5000);
    toast("Download started
 if nothing appears, use Copy JSON");
  } catch { copyText(json, "District data"); }
/* ---------- Protocol layers (Google Earth "layers", for Bitcoin metaprotocoM
   Each layer detects a protocol inside a parcel's raw transaction
 data the globe already holds from /r/block,
   so everything shown is read straight from the chain. Built-ins: Runes, BRC-20, inscription reveals.
   Add-ons register more with pg.addLayer({ id, name, color: "#rrggbb", detect(tx, index, ctx) }),
   where detect returns null, a label string, or { label, html }. */
const layers = [], layerHits = new Map();
const hexRGB = (h) => { const n = parseInt(String(h).replace("#", ""), 16); rM
eturn [(n >> 16) & 255, (n >> 8) & 255, n & 255]; };
function scriptPushes(s, p = 0, stopAtEndif = false) {
  while (p < s.length) {
    const op = s[p++];
    if (op === 0) n = 0;
    else if (op <= 75) n = op;
    else if (op === 0x4c) n = s[p++];
    else if (op === 0x4d) { n = s[p] | (s[p + 1] << 8); p += 2; }
    else if (op === 0x4e) { n = (s[p] | (s[p + 1] << 8) | (s[p + 2] << 16) | (s[p + 3] << 24)) >>> 0; p += 4; }
    else if (op >= 0x51 && op <= 0x60 && stopAtEndif) { out.pusM
h(new Uint8Array([op - 0x50])); continue; }   // OP_1..OP_16 as tag numbers
    else if (op === 0x68 && stopAtEndif) return out;
    else return stopAtEndif ? out : null;
    if (n === undefined || p + n > s.length) return null;
    out.push(s.subarray(p, p + n)); p += n;
const joinBytes = (list) => { let n = 0; for (const x of list) n += x.length; const o = new Uint8Array(n); let p = 0; for (const x of list) { o.set(x, p); p += x.length; } return o; };
// Inscription envelope: OP_FALSE OP_IF "oM
> OP_ENDIF, inside a taproot witness.
const ENVELOPE = "0063036f7264", envCache = new WeakMap();
function envelope(tx) {
  if (envCache.has(tx)) return envCache.get(tx);
  outer: for (const inp of tx.inputs) for (const w of inp.witness) {
    let at = w.indexOf(ENVELOPE);
    while (at >= 0 && at % 2) at = w.indexOf(ENVELOPE, at + 1);
    if (at < 0) continue;
    const pushes = scriptPushes(hexToBytes(w.slice(at + ENVELOPE.length)), 0, true);
    if (!pushes) contiM
    // Fields: 1 content type, 3 parent, 7 metaprotocol, 11 delegate. IDs are txid bytes (reversed) + little-endian index.
    const idOf = (v) => v.length >= 32 ? reverseHexBytes(v.subarray(0, 32)) + "i" + [...v.subarray(32)].reduceRight((n, b) => n * 256 + b, 0) : null;
    let ct = "", delegate = null, meta = "", i = 0;
    const parents = [];
    for (; i < pushes.length; i += 2) {
      const tag = pushes[i], v = pushes[i + 1];
      if (tag.length === 0) { i++; break; }   // OP_0
f (!v || tag.length !== 1) continue;
      if (tag[0] === 1) ct = new TextDecoder().decode(v);
      else if (tag[0] === 3) { const id = idOf(v); if (id) parents.push(id); }
      else if (tag[0] === 7) meta = new TextDecoder().decode(v);
      else if (tag[0] === 11) delegate = idOf(v);
    const body = joinBytes(pushes.slice(i));
    res = { ct, body, delegate, parents, meta };
  envCache.set(tx, res);
function bytesToBase64(b) { let s = ""; for (let i = 0; i < b.length;M
 i += 0x8000) s += String.fromCharCode.apply(null, b.subarray(i, i + 0x8000)); return btoa(s); }
function revealLayer(tx) {
  const e = envelope(tx);
  if (!e) return null;
  const ct = e.ct || (e.delegate ? "delegate" : "no content type"), base = ct.split(";")[0].trim().toLowerCase();
  const link = (id) => `<button class="miniBtn" type="button" data-view-inscription="${esc(id)}">${esc(short(id, 6))}</button>`;
  if (/^image\/(png|jpe?g|gif|webp|avif|svg\+xml)$/.test(base) && e.body.length && eM
.body.length <= 400000)
    preview = `<img class="revealImg" alt="" src="data:${esc(base)};base64,${bytesToBase64(e.body)}">`;
  else if (/^(text\/|application\/json)/.test(base) && e.body.length)
    preview = `<div class="rawBox">${esc(new TextDecoder().decode(e.body.subarray(0, 600)))}${e.body.length > 600 ? "
  return { label: base, html: rows(row("Content type", esc(ct)) + row("Size", fmtBytes(e.body.length)) +
      (e.delegate ? row("Delegates to", link(e.delegate)) : "") + e.parents.map((M
id) => row("Parent", link(id))).join("") + (e.meta ? row("Metaprotocol", esc(e.meta)) : "")) + preview +
    `<p class="hint">Decoded straight from this transaction's witness.</p>` };
function brc20Layer(tx) {
  const e = envelope(tx);
  if (!e || !/^(text\/plain|application\/json)/i.test(e.ct) || e.body.length > 2000) return null;
  let j; try { j = JSON.parse(new TextDecoder().decode(e.body)); } catch { return null; }
  if (!j || String(j.p).toLowerCase() !== "brc-20" || !j.op || !j.tick) return null;
p = String(j.op).toLowerCase(), tick = String(j.tick);
  return { label: `${op} ${tick}${j.amt ? "
 " + j.amt : ""}`, html: rows(row("Operation", esc(op)) + row("Ticker", esc(tick)) +
    (j.amt != null ? row("Amount", esc(j.amt)) : "") + (j.max != null ? row("Max supply", esc(j.max)) : "") + (j.lim != null ? row("Mint limit", esc(j.lim)) : "")) +
    `<p class="hint">The operation as inscribed. Whether it counts (balances, mint order) is decided by BRC-20 indexers.</p>` };
function leb128(bytes) {
= []; let v = 0n, sh = 0n;
  for (const b of bytes) { v |= BigInt(b & 127) << sh; sh += 7n; if (!(b & 128)) { out.push(v); v = 0n; sh = 0n; } else if (sh > 126n) return null; }
  return sh ? null : out;
function runeName(n, spacers = 0n) {
  for (n += 1n; n > 0n; n = (n - 1n) / 26n) s = String.fromCharCode(65 + Number((n - 1n) % 26n)) + s;
  for (let i = 0; i < s.length; i++) { o += s[i]; if (i < s.length - 1 && (spacers >> BigInt(i)) & 1n) o += "
output whose script is OP_RETURN OP_13 followed by data pushes of LEB128 integers (tag/value pairs, then edicts).
function runesLayer(tx) {
  if (state.height < 840000) return null;   // runes activated at block 840,000
  for (const o of tx.outputs) {
    if (!o.scriptPubKey.startsWith("6a5d")) continue;
    const pushes = scriptPushes(hexToBytes(o.scriptPubKey), 2);
    const ints = pushes && leb128(joinBytes(pushes));
    if (!ints) return { label: "Cenotaph", html: rows(row("Runestone", "Malformed
sent here are burned")) };
    const f = new Map();
    for (let i = 0; i < ints.length; i += 2) {
      if (ints[i] === 0n) { edicts = Math.floor((ints.length - i - 1) / 4); break; }
      if (ints[i + 1] === undefined) break;
      const k = Number(ints[i]); if (!f.has(k)) f.set(k, []); f.get(k).push(ints[i + 1]);
    const flags = f.get(2)?.[0] ?? 0n, big = (v) => v.toLocaleString("en-US"), parts = [];
    if (flags & 1n) {
      const nm = f.has(4) ? runeName(f.get(M
4)[0], f.get(3)?.[0] ?? 0n) : "reserved name";
      label = `Etching ${nm}`;
      parts.push(row("Etched rune", `<b>${esc(nm)}</b>`));
      if (f.has(5)) { try { parts.push(row("Symbol", esc(String.fromCodePoint(Number(f.get(5)[0]))))); } catch {} }
      if (f.has(1)) parts.push(row("Divisibility", String(f.get(1)[0])));
      if (f.has(6)) parts.push(row("Premine", big(f.get(6)[0])));
      if (flags & 2n) parts.push(row("Open mint", f.has(10) ? `${big(f.get(10)[0])} per mint${f.has(8) ? `
)[0])}` : ""}` : "Yes"));
    if ((f.get(20) || []).length >= 2) { const id = `${f.get(20)[0]}:${f.get(20)[1]}`; label = label || `Mint ${id}`; parts.push(row("Mints rune", esc(id))); }
    if (edicts) { label = label || `Transfer
 ${edicts} edict${edicts > 1 ? "s" : ""}`; parts.push(row("Transfers", `${fmtInt(edicts)} edict${edicts > 1 ? "s" : ""}`)); }
    const known = new Set([1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 18, 20, 22, 127]);
    if ([...f.keys()].some((k) => k % 2 === 0 && !known.has(k)) || flagsM
 >> 3n) label = "Cenotaph";
    return { label: label || "Runestone", html: rows(parts.join("") || row("Runestone", `${fmtInt(ints.length)} fields`)) +
      `<p class="hint">Decoded from the OP_RETURN runestone.${flags & 1n ? " Only the first etching of a name succeeds
 later attempts in the same or later blocks don't create the rune." : ""} Balances come from ord's rune index.</p>` };
function registerLayer(def) {
  if (!def || !def.id || typeof def.detect !== "function" || layers.some((l)M
 => l.id === def.id)) return;
  layers.push({ id: String(def.id), name: String(def.name || def.id), color: hexRGB(def.color || "#ff6fa8"), detect: def.detect });
  if (state.block) computeLayers([layers[layers.length - 1]]);
registerLayer({ id: "runes", name: "Runes", color: "#ff5c8a", detect: runesLayer });
registerLayer({ id: "brc20", name: "BRC-20", color: "#5be07f", detect: brc20Layer });
registerLayer({ id: "reveals", name: "Reveals", color: "#b18cff", detect: revealLayer });
async function computeLayers(lisM
t = layers.filter((l) => !l.temp)) {
  const token = state.token, txs = state.txs, ctx = { height: state.height, hexToBytes, bytesToHex, envelope, scriptPushes };
  for (const l of list) {
    const hits = new Map();
    for (let i = 0; i < txs.length; i++) {
        const r = l.detect(txs[i], i, ctx);
        if (r) hits.set(i, typeof r === "string" ? { label: r, html: "" } : { label: String(r.label || l.name), html: String(r.html || "") });
      } catch (e) { if (!l.failed) { l.failed = true; recordPM
roblem("Layer error", e, l.name); } }
      if (i % 400 === 399) { await sleepFrame(); if (token !== state.token) return; }
    if (token !== state.token) return;
    layerHits.set(l.id, hits);
  renderLayerChips();
function renderLayerChips() {
  const shown = layers.filter((l) => layerHits.has(l.id));
  els.layerRow.hidden = !shown.length;
  els.layerChips.innerHTML = shown.map((l) => {
    const n = layerHits.get(l.id).size, c = `rgb(${l.color})`;
    return `<button class="layerChip${state.layer ===M
 l.id ? " on" : ""}" type="button" data-layer="${esc(l.id)}" style="--lc:${c}"${n ? "" : " disabled"}><i></i>${esc(l.name)}<b>${fmtInt(n)}</b></button>`;
function setLayer(id) {
  if (state.layer === id || !id) id = null;
  const l = layers.find((x) => x.id === id), hits = l && layerHits.get(l.id);
  if (l && !hits?.size) return toast(`No ${l.name} in this district`);
    stopTimelinePlay(); timeline.t = null; els.tlRange.value = "1000"; els.tlDate.textContent = "NowM
    state.filter = 0; els.filterInscribed.classList.remove("on"); els.filterOrdinals.classList.remove("on");
    toast(`${l.name}: ${fmtInt(hits.size)} parcel${hits.size === 1 ? "" : "s"}
  applyView(); renderLayerChips();
// One place decides what the globe shows: a protocol layer, the history timeline, or the live state.
function applyView() {
  if (!state.txs.length || globe.gallery) return;
  const l = state.layer && layers.find((x) => x.id === state.layer);
new Float32Array(state.txs.length);
    for (const i of layerHits.get(l.id).keys()) arr[i] = 3;
    globe.layerColor = new Float32Array(l.color.map((c) => c / 255));
    globe.focusLevel = 3; globe.uploadStates(arr);
  globe.focusLevel = state.filter;
  if (timeline.t != null) applyTimeline(); else globe.uploadStates(globe.states);
const layerList = () => (state.layer ? [...layerHits.get(state.layer).keys()].sort((a, b) => a - b) : []);
/* ---------- Saved places & recents (only in this browser
 nothing leaves the device) ---------- */
  get(k, d) { try { const v = JSON.parse(localStorage.getItem("pg." + k)); return v ?? d; } catch { return d; } },
  set(k, v) { try { localStorage.setItem("pg." + k, JSON.stringify(v)); return true; } catch { return false; } },
const placeKey = (p) => `${p.h}/${p.id}/${p.p ?? ""}`;
const placeName = (p) => (p.p != null ? `${p.p}.${p.h}.bitmap` : `${p.h}.bitmap`);
function remember(p) {
  if (DEMO.on || !ID_RE.test(String(p.id || ""))) return;
ist = store.get("recent", []).filter((x) => placeKey(x) !== placeKey(p));
  list.unshift({ ...p, t: Date.now() });
  store.set("recent", list.slice(0, 10)); renderPlaces();
function isSaved(p) { return store.get("saved", []).some((x) => placeKey(x) === placeKey(p)); }
function toggleSave() {
  if (state.selected < 0 || !state.district.id) return;
  if (DEMO.on) return toast("Saving places is off in the demo");
  const p = { h: state.height, id: state.district.id, p: state.selected };
  let list = store.get("savedM
  const on = list.some((x) => placeKey(x) === placeKey(p));
  list = on ? list.filter((x) => placeKey(x) !== placeKey(p)) : [{ ...p, t: Date.now() }, ...list].slice(0, 40);
  if (!store.set("saved", list)) return toast("Saving isn't available in this viewer", true);
  toast(on ? "Removed from saved" : `Saved ${placeName(p)}`);
  syncStar(); renderPlaces();
function syncStar() {
  const on = state.selected >= 0 && isSaved({ h: state.height, id: state.district.id, p: state.selected });
  els.starBtn.textConM
"; els.starBtn.classList.toggle("on", on);
function renderPlaces() {
  const saved = store.get("saved", []), recent = store.get("recent", []);
  els.places.hidden = !saved.length && !recent.length;
  const chips = (list) => list.map((p) => `<button class="chip" type="button" data-place="${esc(placeKey(p))}" title="${esc(placeName(p))}">${esc(placeName(p))}</button>`).join("");
  els.placesBody.innerHTML = (saved.length ? `<div class="placeList"><span class="sub">
 Saved</span>${chips(savM
    (recent.length ? `<div class="placeList"><span class="sub">Recent</span>${chips(recent)}</div>` : "");
function goPlace(key) {
  const [h, id, p] = key.split("/"), parcel = p === "" ? null : Number(p);
  if (Number(h) === state.height && id === state.district.id) { if (parcel != null) selectParcel(parcel, true); return; }
  els.bitmapInput.value = h; els.bitmapIdInput.value = id;
  loadBitmap(h, id, parcel);
/* ---------- Smart search (one box understands parcels, txids, addresses, runeM
s, tickers, content types) ---------- */
const ADDR_RE = /^(bc1[02-9ac-hj-np-z]{8,87}|[13][a-km-zA-HJ-NP-Z1-9]{25,34})$/i;
const normRune = (s) => String(s).toUpperCase().replace(/[^A-Z]/g, "");
function lev(a, b) {
  if (Math.abs(a.length - b.length) > 2) return 9;
  const d = Array.from({ length: b.length + 1 }, (_, i) => i);
  for (let i = 1; i <= a.length; i++) {
    let prev = d[0]; d[0] = i;
    for (let j = 1; j <= b.length; j++) { const t = d[j]; d[j] = Math.min(d[j] + 1, d[j - 1] + 1, prev + (a[i - 1] === M
b[j - 1] ? 0 : 1)); prev = t; }
  return d[b.length];
// Show any set of parcels as a temporary layer ("search results"), reusing the layer view.
function showResults(title, hits) {
  if (!hits.size) return toast(`No matches for ${title}`);
  const i = layers.findIndex((l) => l.id === "__search");
  if (i >= 0) layers.splice(i, 1);
  layers.push({ id: "__search", name: title.length > 22 ? title.slice(0, 21) + "
" : title, color: [235, 235, 240], detect: () => null, temp: true });
  layerHits.set("__search",M
  state.layer = null; setLayer("__search");
  const first = [...hits.keys()].sort((a, b) => a - b)[0];
  selectParcel(first, true);
function suggestionsFor(raw) {
  const q = String(raw || "").trim(), lq = q.toLowerCase(), out = [];
  if (!q || !state.txs.length) return out;
  const add = (icon, title, sub, run) => out.length < 9 && out.push({ icon, title, sub, run });
  // Parcel number or name
  const pm = lq.match(/^#?(\d+)(?:\.(\d+)(?:\.bitmap)?)?$/);
    const n = Number(pm[1]), h = pm[2]M
 === undefined ? state.height : Number(pm[2]);
    if (h === state.height && n < state.txs.length) add("
", `Parcel ${fmtInt(n)}`, `${n}.${state.height}.bitmap`, () => selectParcel(n, true));
    if (pm[2] === undefined && n !== state.height && n <= (state.tip ?? Infinity) && /^\d{1,7}$/.test(pm[1]))
", `District ${n}.bitmap`, "Open another district", () => { els.bitmapInput.value = String(n); els.bitmapIdInput.value = ""; loadBitmap(n, ""); });
  // Transaction or inscription ID
    const tx = state.txById.get(lq);
 parcel ${fmtInt(tx.index)}`, short(lq, 8), () => selectParcel(tx.index, true));
", "Transaction not in this block", short(lq, 8), () => toast("That transaction isn't in this district"));
  const im = lq.match(/[0-9a-f]{64}i\d+/);
", "Open inscription", short(im[0], 8), () => openOrdinal(im[0]));
  // Address: parcels paying it (instant) and parcels/Ordinals it owns (looked up onchaM
  if (ADDR_RE.test(q)) {
    const pays = new Map();
    state.txs.forEach((t, i) => { const n = t.outputs.filter((o) => o.address === q).length; if (n) pays.set(i, { label: `Pays this address
 ${n} output${n > 1 ? "s" : ""}`, html: "" }); });
    if (pays.size) add("
", `${fmtInt(pays.size)} parcel${pays.size > 1 ? "s pay" : " pays"} this address`, short(q, 8), () => showResults(`Pays ${short(q, 5)}`, pays));
", "Parcels & Ordinals owned by this address", "Checks current owners onchain", () => M
  // Runes: etched names in this district (fuzzy), and their mints
  const runes = layerHits.get("runes");
  if (runes && lq.length >= 3 && /[a-z]/.test(lq)) {
    const nq = normRune(q), etchings = [...runes].filter(([, h]) => h.label.startsWith("Etching "));
    let found = etchings.filter(([, h]) => normRune(h.label.slice(8)).includes(nq));
    let fuzzy = false;
    if (!found.length && nq.length >= 4) { found = etchings.filter(([, h]) => lev(normRune(h.label.slice(8)), nq) <= 2); fuzzy = fM
    // One suggestion per name: the first etching wins; later attempts are counted, not listed.
    const byName = new Map();
    for (const [i, h] of found.sort((a, b) => a[0] - b[0])) { const nm = h.label.slice(8); if (!byName.has(nm)) byName.set(nm, [i, h, 0]); else byName.get(nm)[2]++; }
    for (const [name, [i, h, later]] of [...byName].slice(0, 4)) {
      const id = `${state.height}:${i}`, mints = new Map([...runes].filter(([, x]) => x.label === `Mint ${id}`));
 "Did you mean " : ""}${name}`, `First etched in parcel ${fmtInt(i)}${later ? `
 ${later} later attempt${later > 1 ? "s" : ""}` : ""}${mints.size ? `
 ${fmtInt(mints.size)} mints here` : ""}`,
        () => (mints.size ? showResults(name, new Map([[i, h], ...mints])) : selectParcel(i, true)));
  const brc = layerHits.get("brc20");
  if (brc && /^[^\s]{1,8}$/u.test(q)) {
    const m = new Map([...brc].filter(([, h]) => h.label.split(" ")[1]?.toLowerCase() === lq));
", `BRC-20 ${q}`, `${fmtInt(m.size)} operation${m.size > 1 ? "s" : ""} in this district`, () => showResults(`BRC-20 ${q}`, m));
  // Content types and protocol words
  const kinds = { png: "image/png", jpg: "image/jpe?g", jpeg: "image/jpe?g", gif: "image/gif", webp: "image/webp", avif: "image/avif", svg: "svg", image: "image/", html: "html", text: "text/", json: "json", video: "video/", audio: "audio/", delegate: "delegate" };
  if (kinds[lq] && layerHits.get("reveals")) {
    const re = new RegExp(kinds[M
lq], "i"), m = new Map([...layerHits.get("reveals")].filter(([, h]) => re.test(h.label)));
", `${lq.toUpperCase()} inscriptions revealed here`, `${fmtInt(m.size)} found`, () => showResults(lq.toUpperCase(), m));
  const words = { runes: "runes", rune: "runes", "brc-20": "brc20", brc20: "brc20", reveals: "reveals", inscriptions: "reveals" };
  if (words[lq]) { const l = layers.find((x) => x.id === words[lq]); if (l) add("
", `${l.name} layer`, `${fmtInt(layerHits.get(l.id)?.size || 0)} parcels`, ()M
 => setLayer(l.id)); }
  if (/^(inscribed|parcels)$/.test(lq)) add("
", "Inscribed parcels", `${fmtInt(state.parcelClaims.size)} found`, () => setFilter(1));
  if (/^ordinals?$/.test(lq)) add("
", "Parcels with Ordinals", `${fmtInt(activeOrdinalParcels())} found`, () => setFilter(2));
let sugIndex = 0, sugItems = [];
function renderSuggest() {
  sugItems = suggestionsFor(els.parcelInput.value); sugIndex = 0;
  els.suggest.hidden = !sugItems.length; els.parcelInput.setAttribute("aria-expanded", SM
tring(!!sugItems.length));
  els.suggest.innerHTML = sugItems.map((s, i) => `<button class="sug${i === sugIndex ? " on" : ""}" type="button" role="option" data-sug="${i}"><i>${esc(s.icon)}</i><span>${esc(s.title)}<small>${esc(s.sub)}</small></span></button>`).join("");
function runSuggestion(i) {
  const s = sugItems[i];
  els.suggest.hidden = true;
  if (!s) return toast("Try a parcel number, txid, address, rune name, ticker or a type like png", true);
  els.parcelInput.blur(); s.run();
// Who owns what: curreM
nt owner of each parcel inscription and each Ordinal on it, read from /r/inscription.
async function ownerSearch(addr) {
  store.set("addr", addr); els.myParcelsBtn.hidden = false;
  for (const [i, claim] of state.parcelClaims) {
    jobs.push([i, claim.id, "parcel"]);
    for (const ch of state.parcelChildren.get(i)?.children || []) jobs.push([i, ch.id, "ordinal"]);
  if (!jobs.length) return toast(state.scanDone ? "No inscribed parcels in this district" : "Still scanning
  const hits = new Map(), token = state.token;
  await mapLimit(jobs, 6, async ([i, id, kind]) => {
      const info = await getInscriptionInfo(id);
      if (info.address === addr) {
        const h = hits.get(i) || { parcel: false, ords: 0 };
        if (kind === "parcel") h.parcel = true; else h.ords++;
        hits.set(i, h);
    if (++done % 25 === 0 && token === state.token) toast(`Checking owners
 ${fmtInt(done)} / ${fmtInt(jobs.length)}`);
 if (token !== state.token) return;
  const res = new Map([...hits].map(([i, h]) => [i, { label: [h.parcel ? "Owns the parcel" : "", h.ords ? `${h.ords} Ordinal${h.ords > 1 ? "s" : ""} owned` : ""].filter(Boolean).join("
  if (!res.size) return toast("This address owns nothing in this district (right now)");
  showResults(`Owned by ${short(addr, 5)}`, res);
/* ---------- Trace the money: transactions in the same block that fund / spend each other ---------- */
.flows) return state.flows;
  const up = new Map(), down = new Map();
  state.txs.forEach((tx, j) => {
    for (const inp of tx.inputs) {
      const p = state.txById.get(inp.prevTxid);
      if (!p) continue;
      (up.get(j) || up.set(j, new Set()).get(j)).add(p.index);
      (down.get(p.index) || down.set(p.index, new Set()).get(p.index)).add(j);
  return (state.flows = { up, down });
function traceEdges(i, depth = 8, cap = 400) {
  const { up, down } = flows(), edges = [];
  for (const [map, kind]M
 of [[up, 0], [down, 1]]) {
    const seen = new Set([i]);
    let frontier = [i];
    for (let d = 0; d < depth && frontier.length && edges.length < cap; d++) {
      const next = [];
      for (const n of frontier) for (const m of map.get(n) || []) {
        edges.push(kind === 0 ? [m, n, 0] : [n, m, 1]);
        if (!seen.has(m)) { seen.add(m); next.push(m); }
      frontier = next;
  return edges.slice(0, cap);
function updateTrace() {
  if (!state.trace || state.selected < 0 || globe.gallerM
y) { globe.setArcs([]); return; }
  globe.setArcs(traceEdges(state.selected));
function toggleTrace(on = !state.trace) {
  state.trace = on; els.traceBtn.classList.toggle("on", on);
  if (state.selected >= 0 && state.openSection === "parcel") renderSection("parcel");
  if (on && state.selected >= 0 && !traceEdges(state.selected, 1).length) toast("No money flows to or from other parcels in this block");
function flowSection(i) {
  const { up, down } = flows(), u = [...(up.get(i) || [])], d = [..M
.(down.get(i) || [])];
  if (!u.length && !d.length) return "";
  const list = (a) => a.slice(0, 12).map((n) => `<button class="miniBtn" type="button" data-goto="${n}">${fmtInt(n)}</button>`).join("") + (a.length > 12 ? `<span class="muted">+${a.length - 12}</span>` : "");
  return `<div class="subhead">Money flow in this block</div>` + rows(
    (u.length ? row("Funded by", `<div class="flowList">${list(u)}</div>`) : "") + (d.length ? row("Spent by", `<div class="flowList">${list(d)}</div>`) : "")) +
class="miniBtn" type="button" data-trace style="margin-top:8px;width:100%">${state.trace ? "Hide routes" : "
 Show routes on the globe"}</button>`;
/* ---------- QR code (byte mode, error correction M; versions 1
const QR_EC = [0, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24], QR_BL = [0, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10];
function qrEncode(text) {
  const bytes = new TextEncoder().encode(text);
  const rawMods = (v) => { let r = (16 * v + 128) * v + 64; if (v >= 2M
) { const n = Math.floor(v / 7) + 2; r -= (25 * n - 10) * n - 55; if (v >= 7) r -= 36; } return r; };
  const dataCap = (v) => Math.floor(rawMods(v) / 8) - QR_EC[v] * QR_BL[v];
  while (ver <= 15 && 4 + (ver < 10 ? 8 : 16) + bytes.length * 8 > dataCap(ver) * 8) ver++;
  if (ver > 15) return null;
  const size = ver * 4 + 17, mods = Array.from({ length: size }, () => new Array(size).fill(false)), fn = Array.from({ length: size }, () => new Array(size).fill(false));
  const set = (x, y, d) => { mods[y]M
[x] = d; fn[y][x] = true; };
  for (let i = 0; i < size; i++) { set(6, i, i % 2 === 0); set(i, 6, i % 2 === 0); }
  for (const [cx, cy] of [[3, 3], [size - 4, 3], [3, size - 4]])
    for (let dy = -4; dy <= 4; dy++) for (let dx = -4; dx <= 4; dx++) {
      const x = cx + dx, y = cy + dy, dist = Math.max(Math.abs(dx), Math.abs(dy));
      if (x >= 0 && x < size && y >= 0 && y < size) set(x, y, dist !== 2 && dist !== 4);
    const n = Math.floor(ver / 7) + 2, step = Math.ceil((ver * 4 + 4) / (nM
 * 2 - 2)) * 2, pos = [6];
    for (let p = size - 7; pos.length < n; p -= step) pos.splice(1, 0, p);
    for (const a of pos) for (const b of pos) {
      if ((a === 6 && b === 6) || (a === 6 && b === size - 7) || (a === size - 7 && b === 6)) continue;
      for (let dy = -2; dy <= 2; dy++) for (let dx = -2; dx <= 2; dx++) set(a + dx, b + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);
  const drawFormat = (mask) => {
    const data = (0 << 3) | mask;   // EC level M = 0b00
    let rem = data; for (let M
i = 0; i < 10; i++) rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
    const bits = ((data << 10) | rem) ^ 0x5412, bit = (i) => ((bits >>> i) & 1) !== 0;
    for (let i = 0; i <= 5; i++) set(8, i, bit(i));
    set(8, 7, bit(6)); set(8, 8, bit(7)); set(7, 8, bit(8));
    for (let i = 9; i < 15; i++) set(14 - i, 8, bit(i));
    for (let i = 0; i < 8; i++) set(size - 1 - i, 8, bit(i));
    for (let i = 8; i < 15; i++) set(8, size - 15 + i, bit(i));
    set(8, size - 8, true);
 rem = ver; for (let i = 0; i < 12; i++) rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25);
    const bits = (ver << 12) | rem;
    for (let i = 0; i < 18; i++) { const b = ((bits >>> i) & 1) !== 0, a = size - 11 + (i % 3), c = Math.floor(i / 3); set(a, c, b); set(c, a, b); }
  const bb = [], put = (v, n) => { for (let i = n - 1; i >= 0; i--) bb.push((v >>> i) & 1); };
  put(4, 4); put(bytes.length, ver < 10 ? 8 : 16); for (const b of bytes) put(b, 8);
  const cap = dataCap(ver) * 8;
min(4, cap - bb.length)); while (bb.length % 8) bb.push(0);
  for (let pad = 0xec; bb.length < cap; pad ^= 0xec ^ 0x11) put(pad, 8);
  const data = []; for (let i = 0; i < bb.length; i += 8) data.push(parseInt(bb.slice(i, i + 8).join(""), 2));
Solomon per block, then interleave
  const mul = (x, y) => { let z = 0; for (let i = 7; i >= 0; i--) { z = (z << 1) ^ ((z >>> 7) * 0x11d); z ^= ((y >>> i) & 1) * x; } return z; };
  const ecLen = QR_EC[ver], nb = QR_BL[ver], raw = Math.floor(rawMods(ver) / 8), nShM
ort = nb - (raw % nb), shortLen = Math.floor(raw / nb);
  const div = new Array(ecLen - 1).fill(0); div.push(1);
  for (let i = 0, root = 1; i < ecLen; i++, root = mul(root, 2)) for (let j = 0; j < div.length; j++) { div[j] = mul(div[j], root); if (j + 1 < div.length) div[j] ^= div[j + 1]; }
  const blocks = [];
  for (let i = 0, k = 0; i < nb; i++) {
    const dat = data.slice(k, k + shortLen - ecLen + (i < nShort ? 0 : 1)); k += dat.length;
    const rem = div.map(() => 0);
    for (const b of dat) { const f = b M
^ rem.shift(); rem.push(0); div.forEach((c, j) => (rem[j] ^= mul(c, f))); }
    if (i < nShort) dat.push(0);
    blocks.push(dat.concat(rem));
  for (let i = 0; i < blocks[0].length; i++) blocks.forEach((b, j) => { if (i !== shortLen - ecLen || j >= nShort) all.push(b[i]); });
  for (let right = size - 1, i = 0; right >= 1; right -= 2) {
    if (right === 6) right = 5;
    for (let v = 0; v < size; v++) for (let j = 0; j < 2; j++) {
      const x = right - j, y = ((right + 1) & 2) === 0 ? sizeM
      if (!fn[y][x] && i < all.length * 8) { mods[y][x] = ((all[i >>> 3] >>> (7 - (i & 7))) & 1) !== 0; i++; }
  // Pick the mask with the lowest penalty (runs, 2
2 blocks, dark balance).
  const masks = [(x, y) => (x + y) % 2 === 0, (x, y) => y % 2 === 0, (x) => x % 3 === 0, (x, y) => (x + y) % 3 === 0,
    (x, y) => (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0, (x, y) => ((x * y) % 2) + ((x * y) % 3) === 0,
    (x, y) => (((x * y) % 2) + ((x * y) % 3)) % 2 === 0, (x, y) => (((x + y) M
% 2) + ((x * y) % 3)) % 2 === 0];
  const apply = (m) => { for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) if (!fn[y][x] && masks[m](x, y)) mods[y][x] = !mods[y][x]; };
  const penalty = () => {
    let p = 0, dark = 0;
    for (let y = 0; y < size; y++) for (let x = 0; x < size; x++) {
      dark += mods[y][x];
      if (x < size - 1 && y < size - 1 && mods[y][x] === mods[y][x + 1] && mods[y][x] === mods[y + 1][x] && mods[y][x] === mods[y + 1][x + 1]) p += 3;
    for (let y = 0; y < size; y++) M
for (const line of [mods[y], mods.map((r) => r[y])]) {
      for (let x = 1; x <= size; x++) { if (x < size && line[x] === line[x - 1]) run++; else { if (run >= 5) p += run - 2; run = 1; } }
    return p + Math.floor(Math.abs(dark * 20 - size * size * 10) / (size * size)) * 10;
  let best = 0, bestP = Infinity;
  for (let m = 0; m < 8; m++) { apply(m); drawFormat(m); const pv = penalty(); if (pv < bestP) { bestP = pv; best = m; } apply(m); }
  apply(best); drawFormat(best);
function openShare(url = shareUrl(), title = "Share this view") {
  const mods = qrEncode(url), c = els.qr, g = c.getContext("2d");
  state.shareLink = url;
  els.shareTitle.textContent = title;
  els.shareUrl.textContent = url;
  g.fillStyle = "#fff"; g.fillRect(0, 0, c.width, c.height);
    const n = mods.length + 8, s = Math.floor(c.width / n), off = Math.floor((c.width - s * mods.length) / 2);
    g.fillStyle = "#000";
    mods.forEach((r, y) => r.forEach((d, x) => d && g.fillRect(off + x * M
s, off + y * s, s, s)));
  els.qr.hidden = !mods;
  openPopover(els.sharePanel);
// Share an inscription's own content (not the globe): the phone's share menu where allowed, otherwise QR + copy.
async function shareContent() {
  const id = state.viewerCurrentId;
  if (DEMO.on) return toast("Demo content isn't onchain, so there's nothing to share");
  const url = new URL(api(`/content/${id}`), location.href).href, info = state.insInfo.has(id) ? await state.insInfo.get(id).catch(() => ({})) :M
  // Where it lives in Bitmap (so content travels with its place), and its collection (credit to the creator).
  if (id === state.district.id) where = `the ${state.height}.bitmap district inscription`;
  else for (const [i, c] of state.parcelClaims) {
    if (c.id === id) { where = `parcel ${i}.${state.height}.bitmap`; break; }
    if ((state.parcelChildren.get(i)?.children || []).some((k) => k.id === id)) { where = `on parcel ${i}.${state.height}.bitmap`; break; }
  if (!where && state.dM
istrictOrdinals.some((r) => r.id === id)) where = `on ${state.height}.bitmap`;
  let collection = "";
  const parent = state.viewerParents?.[0];
  if (parent && parent !== state.district.id && ![...state.parcelClaims.values()].some((c) => c.id === parent)) {
    const pi = state.insInfo.has(parent) ? await state.insInfo.get(parent).catch(() => ({})) : {};
    collection = pi.number != null ? `part of collection #${fmtInt(pi.number)}` : "";
  const text = [[info.number != null ? `Inscription #${fmtInt(info.numbeM
r)}` : "Inscription", info.content_type || ""].filter(Boolean).join("
    [where, collection].filter(Boolean).join("
 ")].filter(Boolean).join("\n");
  state.shareText = text;
  if (navigator.share) {
    try { await navigator.share({ title: text.split("\n")[0], text, url }); return; }
    catch (e) { if (e?.name === "AbortError") return; }   // closed by the person: done; anything else: fall back
  openShare(url, "Share this inscription");
// Share a whole set from the inscription globe (a parcel'sM
 Ordinals, a district's, a collection's children).
async function shareSet() {
  const g = state.gallery;
  if (DEMO.on) return toast("Demo content isn't onchain, so there's nothing to share");
  const MAX = 25, links = g.items.slice(0, MAX).map((r) => new URL(api(`/content/${r.id}`), location.href).href);
  const more = g.items.length - links.length + (g.more ? 1 : 0);
  const text = `${g.entry.title}
 ${fmtInt(g.items.length)}${g.more ? "+" : ""} inscription${g.items.length === 1 ? "" : "s"}\nM
    links.join("\n") + (more > 0 ? `\n
and ${g.more ? "more" : fmtInt(more) + " more"}` : "");
  if (navigator.share) {
    try { await navigator.share({ title: g.entry.title, text }); return; }
    catch (e) { if (e?.name === "AbortError") return; }
  copyText(text, "Links");
/* ---------- Related tools from the onchain config (only shown when the controller adds them) ---------- */
function renderLinks() {
  const list = (config.links || []).filter((l) => l && ID_RE.test(String(l.id || ""))).slice(0,M
  els.linksRow.hidden = !list.length;
  els.linksRow.innerHTML = list.map((l) => `<a class="chip" href="${esc(api(`/content/${l.id}`) + (l.pass === "height" && state.height != null ? "#" + state.height : ""))}" target="_blank" rel="noopener">
 ${esc(String(l.label || "Related tool").slice(0, 32))}</a>`).join("");
/* ---------- Machine interface: AI agents, robots, other inscriptions ----------
   Two ways in, same commands:
 In the page:          await window.bitmapGlobe.command("parcel", { index: 1M
 From another window:  frame.contentWindow.postMessage({ type: "bitmapGlobe", id: 1, cmd: "parcel", args: { index: 12 } }, "*")

 reply { type: "bitmapGlobe:result", id: 1, ok: true, result }
   Events ("district", "parcel") are also posted to a parent window as { type: "bitmapGlobe:event", event, data }.
   Everything returned is public chain data already on screen; no command can move funds or sign anything. */
function parcelFacts(i) {
  const tx = state.txs[i];
 throw Error(`No parcel ${i} in this district`);
  const claim = state.parcelClaims.get(i), sum = state.parcelChildren.get(i), { up, down } = flows();
    parcel: `${i}.${state.height}.bitmap`, index: i, txid: tx.txid, vsize: tx.vsize, outputValueSats: String(tx.totalOutput),
    inputs: tx.inputs.length, outputs: tx.outputs.map((o) => ({ value: String(o.value), type: o.type, address: o.address })),
    coinbase: tx.coinbase, inscription: claim?.id || null, ordinals: sum?.children?.map((c) => c.id) ?? nuM
    layers: Object.fromEntries(layers.filter((l) => !l.temp && layerHits.get(l.id)?.has(i)).map((l) => [l.name, layerHits.get(l.id).get(i).label])),
    fundedBy: [...(up.get(i) || [])], spentBy: [...(down.get(i) || [])],
function statusFacts() {
    app: "Bitmap Parcel Globe", version: APP_VERSION, demo: DEMO.on, source: state.sourceLabel,
    district: state.height != null ? `${state.height}.bitmap` : null, inscription: state.district.id, blockHash: state.block?.hash || null,
ate.txs.length, scanComplete: state.scanDone, inscribedParcels: state.parcelClaims.size, parcelsWithOrdinals: activeOrdinalParcels(),
    layers: Object.fromEntries(layers.filter((l) => !l.temp && layerHits.has(l.id)).map((l) => [l.name, layerHits.get(l.id).size])),
    selected: state.selected >= 0 ? state.selected : null, kiosk: !!state.kiosk,
  describe: () => ({ manual: JSON.parse(document.getElementById("agent-manual")?.textContent || "{}"), status: statusFacts() }),
  load: async ({ height, id = "" }) => { const ok = await loadBitmap(height, id); if (!ok) throw Error(els.blockMeta.textContent || "Could not load"); return statusFacts(); },
  parcel: ({ index }) => parcelFacts(Number(index)),
  select: ({ index }) => { selectParcel(Number(index), true); return parcelFacts(Number(index)); },
  search: ({ query, run }) => {
    const s = suggestionsFor(query);
    if (run != null && s[run]) s[run].run();
    return s.map((x, n) => ({ n, title: x.title, detail: x.sub M
  layer: ({ id = null }) => { setLayer(id); return { active: state.layer, parcels: id ? layerList() : [] }; },
  filter: ({ level = 0 }) => { setFilter(Number(level)); return { filter: state.filter }; },
  inscription: async ({ id }) => getInscriptionInfo(String(id)),
  data: () => districtData(),
  snapshot: async () => ({ png: await globe.capture() }),
  tour: ({ on = true }) => { on ? startTour() : stopTour(); return { touring: tour.on }; },
  kiosk: ({ on = true }) => { setKiosk(on); return { kiosk: !M
async function runCommand(cmd, args = {}) {
  const fn = COMMANDS[cmd];
  if (!fn) throw Error(`Unknown command "${cmd}". Try: ${Object.keys(COMMANDS).join(", ")}`);
  return await fn(args || {});
window.bitmapGlobe = Object.freeze({
  version: APP_VERSION,
  commands: Object.keys(COMMANDS),
  command: runCommand,
  on: (evt, fn) => PG.on(evt, fn),
addEventListener("message", async (e) => {
  if (!m || m.type !== "bitmapGlobe" || typeof m.cmd !== "string") return;
  try { reply = { type: "bitmapGlobe:result", id: m.id, ok: true, result: await runCommand(m.cmd, m.args) }; }
  catch (err) { reply = { type: "bitmapGlobe:result", id: m.id, ok: false, error: String(err?.message || err) }; }
  try { e.source?.postMessage(reply, "*"); } catch {}
if (window.parent !== window) {
  hooks.district.push(() => { try { window.parent.postMessage({ type: "bitmapGlobe:event", event: "district", data: statusFacts() }, "*"); } catch {} });
  hooks.parcel.push((i) => { try { windoM
w.parent.postMessage({ type: "bitmapGlobe:event", event: "parcel", data: parcelFacts(i) }, "*"); } catch {} });
/* ---------- Kiosk / ambient mode (wall screens, shop displays, meetup booths) ----------
   #kiosk, ?kiosk, or a link ending in &kiosk: no menus, a slow endless tour, fresh scan every 10 minutes.
   A touch pauses it for 30 seconds; Esc leaves kiosk mode. */
let kioskTimers = [];
function setKiosk(on) {
  state.kiosk = !!on;
  els.app.classList.toggle("kiosk", state.kiosk);
  kioskTimers.forEach(cleaM
rInterval); kioskTimers = [];
  if (!on) { stopTour(); return; }
  if (state.txs.length && !tour.on) startTour();
  kioskTimers.push(setInterval(() => { if (state.kiosk && !tour.on && state.txs.length) startTour(); }, 30000));
  kioskTimers.push(setInterval(() => {   // pick up new inscriptions: rescan the district
    if (state.kiosk && !DEMO.on && state.height != null && state.district.id && !state.loading) loadBitmap(state.height, state.district.id);
const kioskWanted = () => /(^|[?&])kiosk\b/.tM
est(location.search) || /(^#|&)kiosk\b/.test(location.hash);
/* ---------- VR / AR buttons (only shown where the device supports it) ---------- */
async function setupXR() {
  if (!navigator.xr?.isSessionSupported) return;
  for (const [mode, el] of [["immersive-vr", els.vrBtn], ["immersive-ar", els.arBtn]]) {
    try { el.hidden = !(await navigator.xr.isSessionSupported(mode)); } catch { el.hidden = true; }
    el.onclick = () => {
      if (!state.txs.length && !globe.gallery) return toast("Load a district firstM
      globe.startXR(mode, () => toast("Back from " + (mode === "immersive-ar" ? "AR" : "VR")))
        .catch((e) => toast(`Couldn't start ${mode === "immersive-ar" ? "AR" : "VR"}: ${e?.message || e}`, true));
  globe.onXRSelect = () => (state.gallery ? null : nextFeatured(1));
/* ---------- Hover + endpoints ---------- */
function showHover(i, x, y) {
  if (globe.gallery) {
    const r = state.gallery?.items[i];
    const inf = r.info || {};
erHTML = `<b>${inf.number != null ? "#" + fmtInt(inf.number) : esc(short(r.id, 6))}</b><small>${esc(inf.content_type || "inscription")}${inf.content_length ? "
 " + fmtBytes(inf.content_length) : ""}</small><small class="ordinal">Click to open</small>`;
    els.hover.style.left = Math.min(x, innerWidth - 220) + "px"; els.hover.style.top = Math.min(y, innerHeight - 80) + "px";
    return els.hover.classList.add("show");
  if (!state.txs[i]) return;
  const st = parcelState(i), sum = state.parcelChildren.get(i)M
, tx = state.txs[i];
  let sub = `<small>${fmtInt(tx.vsize)} vB
 ${fmtBTC(tx.totalOutput)}</small>`;
  if (st > 1.5) { const n = sum?.children?.length || 0; sub += `<small class="ordinal">${n}${sum?.more ? "+" : ""} Ordinal${n === 1 && !sum?.more ? "" : "s"}</small>`; }
  else if (st > 0.5) sub += "<small class=\"ins\">
 Inscribed parcel</small>";
  for (const l of layers) { const hit = layerHits.get(l.id)?.get(i); if (hit) sub += `<small style="color:rgb(${l.color})">${esc(l.name)}
 ${esc(hit.label)}</small>M
  els.hover.innerHTML = `<b>${esc(parcelName(i))}</b>${sub}`;
  els.hover.style.left = Math.min(x, innerWidth - 220) + "px"; els.hover.style.top = Math.min(y, innerHeight - 80) + "px";
  els.hover.classList.add("show");
const hideHover = () => els.hover.classList.remove("show");
function placeEndpoint(el, i) {
  const p = globe.project(i);
  if (!p || p.front < 0.12 || p.x < 12 || p.y < 70 || p.x > innerWidth - 12 || p.y > innerHeight - 12) { el.classList.remove("show"); return; }
  el.style.left = p.x + "pxM
"; el.style.top = p.y + "px"; el.classList.add("show");
let endpointRAF = 0;
function endpointLoop() {
  if (document.hidden) return;
  if (state.txs.length && !globe.idle && !globe.gallery) { placeEndpoint(els.firstMarker, 0); placeEndpoint(els.lastMarker, state.txs.length - 1); }
  else { els.firstMarker.classList.remove("show"); els.lastMarker.classList.remove("show"); }
  endpointRAF = requestAnimationFrame(endpointLoop);
const startEndpointLoop = () => { if (!endpointRAF && !document.hidM
den) endpointRAF = requestAnimationFrame(endpointLoop); };
/* ---------- Inscription viewer ---------- */
function closeOutputPanel() {
  state.viewerOutputOpen = false;
  els.outputPanel.classList.remove("open"); els.outputPanel.setAttribute("aria-hidden", "true");
function formatRuneAmount(data) {
  const d = Math.max(0, Number(data?.divisibility) || 0), sym = data?.symbol ? String(data.symbol) + " " : "";
  let raw = String(data?.amount ?? "0");
  if (/^\d+$/.test(raw)) {
    if (d > 0) { raw = raw.padStart(dM
 + 1, "0"); const a = raw.slice(0, -d), b = raw.slice(-d).replace(/0+$/, ""); raw = BigInt(a).toLocaleString("en-US") + (b ? "." + b : ""); }
    else raw = BigInt(raw).toLocaleString("en-US");
async function loadOutputContents() {
  const out = state.viewerOutputOutpoint, id = state.viewerCurrentId;
  if (!out || !id || state.viewerOutputLoading) return;
  const stale = () => out !== state.viewerOutputOutpoint || id !== state.viewerCurrentId;
  state.viewerOutputLoading = true;
utBody.innerHTML = '<div class="empty">Reading output
    const data = await fetchJSON(`/r/utxo/${out}`);
    if (stale()) return;
    state.viewerOutputData = data;
    const ins = data?.inscriptions, runes = data?.runes;
    let html = rows(row("Output value", data?.value != null ? fmtSats(data.value) : "
")) + '<div class="subhead">Other inscriptions</div>';
    if (!Array.isArray(ins)) html += '<div class="empty">Inscription data unavailable</div>';
      const other = ins.filterM
((x) => ID_RE.test(String(x || "")) && String(x).toLowerCase() !== id.toLowerCase());
      if (!other.length) html += '<div class="empty">None
 this inscription is alone in its output</div>';
        const recs = await mapLimit(other, 6, async (x) => { let info = { id: x }; try { info = await getInscriptionInfo(x); } catch {} return { id: x, info }; });
        if (stale()) return;
        html += `<div class="ordinalList">${recs.map((r) => ordinalItem(r)).join("")}</div>`;
= '<div class="subhead">Runes</div>';
    const entries = runes && typeof runes === "object" && !Array.isArray(runes) ? Object.entries(runes) : null;
    html += !entries ? '<div class="empty">Rune data unavailable</div>' : entries.length
      ? `<div class="runeList">${entries.map(([name, v]) => `<div class="runeItem"><b>${esc(name)}</b><span>${esc(formatRuneAmount(v))}</span></div>`).join("")}</div>`
      : '<div class="empty">No runes in this output</div>';
    els.outputBody.innerHTML = html;
    if (!stale()) els.outputBody.innerHTML = `<div class="empty">Could not read this output: ${esc(e.message || e)}</div>`;
  } finally { if (!stale()) state.viewerOutputLoading = false; }
function toggleOutputPanel() {
  if (!state.viewerOutputOutpoint) return;
  if (state.viewerOutputOpen) return closeOutputPanel();
  state.viewerOutputOpen = true;
  els.outputPanel.classList.add("open"); els.outputPanel.setAttribute("aria-hidden", "false");
  if (!state.viewerOutputData) loadOutputContents();
iewerMode(reload = true) {
  const live = state.viewerLive;
  els.viewerMode.textContent = live ? "Scripts on" : "Scripts off";
  els.viewerMode.classList.toggle("live", live);
  els.viewerFrame.setAttribute("sandbox", live ? "allow-scripts allow-forms allow-pointer-lock allow-popups" : "allow-same-origin");
  els.viewerHint.hidden = live || !/html|svg/i.test(state.viewerContentType);
  if (reload && state.viewerCurrentId && !state.viewerAsImage) {
    const src = api(`/content/${state.viewerCurrentId}`);
iewerFrame.removeAttribute("src");
    requestAnimationFrame(() => { if (state.viewerCurrentId) els.viewerFrame.src = src; });
async function openOrdinal(id, galleryIndex = -1) {
  if (!ID_RE.test(String(id || ""))) return;
  closeOutputPanel();
  Object.assign(state, { viewerCurrentId: id, viewerOutputData: null, viewerOutputLoading: false, viewerGalleryIndex: state.gallery ? galleryIndex : -1 });
  els.viewerPrev.hidden = els.viewerNext.hidden = !(state.gallery && galleryIndex >= 0 && state.gallery.items.leM
  els.viewerNumber.textContent = "Inscription"; els.viewerId.textContent = id;
  els.viewerFrame.src = api(`/content/${id}`); els.viewerOpen.href = api(`/content/${id}`);
  els.viewer.classList.add("open"); els.viewer.setAttribute("aria-hidden", "false");
  els.viewerChildren.hidden = true; els.viewerImg.hidden = true; els.viewerFrame.hidden = false; state.viewerAsImage = false;
  // Pre-load the collection (parent) so Share can credit it without waiting.
  state.viewerParents = null;
  parentsOf(id).theM
n((ps) => { if (state.viewerCurrentId !== id) return; state.viewerParents = ps; if (ps[0]) getInscriptionInfo(ps[0]).catch(() => {}); });
  els.detailBody.innerHTML = '<div class="empty">Reading
  if (state.detailsOpen ?? !mobileLayout()) setDetails(true);
  // Recursion all the way down: if this inscription has children, offer them as their own globe.
  childrenPage(id).then((d) => {
    const n = childArray(d).length;
    if (state.viewerCurrentId === id && n) { els.viewerChildren.hidden = false; els.vM
iewerChildren.textContent = `
 ${fmtInt(n)}${d.more ? "+" : ""} children`; }
  }).catch(() => {});
  let info = { id };
  try { info = await getInscriptionInfo(id, true); } catch {}
  if (state.viewerCurrentId !== id) return;
  renderDetails(info);
  state.viewerAsImage = IMG_RE.test(info.content_type || "");
  els.viewerImg.hidden = !state.viewerAsImage; els.viewerFrame.hidden = state.viewerAsImage;
  if (state.viewerAsImage) { els.viewerFrame.removeAttribute("src"); els.viewerImg.src = api(`/content/${id}`); }
  Object.assign(state, { viewerContentType: info.content_type || "", viewerAddressValue: info.address || "", viewerOutputOutpoint: info.output || "" });
  els.viewerNumber.textContent = (info.number != null ? `Inscription #${fmtInt(info.number)}` : "Inscription") + (DEMO.on ? "
  els.viewerAddressLink.style.display = info.address && !DEMO.on ? "flex" : "none";
  els.viewerOpen.style.display = els.viewerShare.style.display = DEMO.on ? "none" : "";
  if (info.address) els.viewerAddressLink.href = api(M
"/address/" + encodeURIComponent(info.address));
  els.viewerType.textContent = [info.content_type || "inscription", info.content_length ? fmtBytes(info.content_length) : ""].filter(Boolean).join("
  els.viewerAddress.textContent = info.address ? short(info.address, 10) : "Address unavailable";
  els.viewerAddressCopy.hidden = !info.address;
  els.viewerOutputBtn.classList.toggle("show", !!state.viewerOutputOutpoint);
  els.outputOutpoint.textContent = state.viewerOutputOutpoint || "
  els.outputBody.inM
nerHTML = '<div class="empty">Inspect inscriptions and runes held in this UTXO.</div>';
  applyViewerMode(false);
function closeViewer() {
  if (!els.viewer.classList.contains("open")) return;
  closeOutputPanel();
  els.viewer.classList.remove("open"); els.viewer.setAttribute("aria-hidden", "true");
  els.viewerFrame.removeAttribute("src"); els.viewerImg.removeAttribute("src"); els.viewerImg.hidden = true; els.viewerFrame.hidden = false;
  Object.assign(state, { viewerAsImage: false, viewerCurrentId: null, vieweM
rContentType: "", viewerAddressValue: "", viewerOutputOutpoint: "", viewerOutputData: null, viewerOutputLoading: false });
  els.viewerOutputBtn.classList.remove("show"); els.viewerAddressCopy.hidden = els.viewerHint.hidden = true;
function setDetails(open) {
  els.detailPanel.classList.toggle("open", open); els.detailPanel.setAttribute("aria-hidden", String(!open));
  els.viewerInfoBtn.classList.toggle("active", open);
function renderDetails(info) {
  const charms = Array.isArray(info.charms) && info.charms.lM
ength ? info.charms.join(", ") : "
  els.detailBody.innerHTML = rows(
    row("Number", info.number != null ? "#" + fmtInt(info.number) : "
    row("ID", `<span class="mono" title="${esc(info.id)}">${esc(short(info.id, 6))}</span>${copyButton(info.id, "Inscription ID")}`) +
    row("Type", esc(info.content_type || "
")) + row("Size", info.content_length ? fmtBytes(info.content_length) : "
    row("Inscribed", info.timestamp ? fmtTime(info.timestamp) : "
") + row("Block", info.height != null ?M
 fmtInt(info.height) : "
    row("Fee", info.fee != null ? fmtSats(info.fee) : "
") + row("Sat", info.sat != null ? fmtInt(info.sat) : "
    row("Charms", esc(charms)) + row("Owner", addressValue(info.address)) + row("Value", info.value != null ? fmtSats(info.value) : "
    (info.delegate ? row("Delegate", `<button class="miniBtn" type="button" data-view-inscription="${esc(info.delegate)}">${esc(short(info.delegate, 6))}</button>`) : ""));
function viewerStep(d) {
  const g = state.gallery,M
 i0 = state.viewerGalleryIndex;
  if (!g || i0 < 0) return;
  const i = (i0 + d + g.items.length) % g.items.length;
  globe.setSelected(i, true);
  openOrdinal(g.items[i].id, i);
/* ---------- Inscription globe ----------
   Any set of inscriptions (a parcel's Ordinals, the district's Ordinals, any inscription's children)
   becomes a globe of clickable thumbnail tiles. Galleries stack, so you can keep descending into children. */
const IMG_RE = /^image\/(png|jpe?g|gif|webp|avif|bmp|svg\+xml)/i, TEXT_RE = /^(texM
t\/plain|text\/markdown|application\/json)/i;
const galleryStack = [];
let galleryToken = 0;
async function loadChildren(id, cap = GALLERY_MAX) {
  let page = 0, more = false;
    const data = await childrenPage(id, page);
    all.push(...childArray(data));
    if (!data?.more) break;
    if (all.length >= cap || ++page > 500) { more = true; break; }
  return { items: all.slice(0, cap).map((ch) => ({ id: ch.id, info: ch })), more: more || all.length > cap };
function cellCanvas(M
size) { const c = document.createElement("canvas"); c.width = c.height = size; return c; }
function drawPlaceholder(ctx, size, rec) {
  const info = rec.info || {}, type = info.content_type || "";
  const grad = ctx.createLinearGradient(0, 0, size, size);
  grad.addColorStop(0, "#1d1812"); grad.addColorStop(1, "#0f1a1f");
  ctx.fillStyle = grad; ctx.fillRect(0, 0, size, size);
  ctx.textAlign = "center"; ctx.textBaseline = "middle";
  ctx.fillStyle = type ? "#bfe9f4" : "#5d6570"; ctx.font = `700 ${Math.round(size *M
 0.2)}px ui-sans-serif,system-ui,sans-serif`;
  ctx.fillText(type ? ordinalIcon(type) : "
", size / 2, size * 0.44);
  if (info.number != null) { ctx.fillStyle = "#7d8590"; ctx.font = `600 ${Math.round(size * 0.11)}px ui-monospace,monospace`; ctx.fillText("#" + fmtInt(info.number), size / 2, size * 0.7); }
function drawImageFit(ctx, size, img) {
  const w = img.naturalWidth || size, h = img.naturalHeight || size, s = Math.min(size / w, size / h), dw = w * s, dh = h * s;
  ctx.fillStyle = "#0b0d11"; ctx.fillRM
ect(0, 0, size, size);
  ctx.imageSmoothingEnabled = s < 1;   // keep pixel art crisp when scaling up
  ctx.drawImage(img, (size - dw) / 2, (size - dh) / 2, dw, dh);
function drawTextTile(ctx, size, text) {
  ctx.fillStyle = "#0e1116"; ctx.fillRect(0, 0, size, size);
  const fs = Math.max(7, Math.round(size * 0.085)), cols = Math.floor((size * 0.86) / (fs * 0.6)), lines = [];
  for (const para of String(text).replace(/\r/g, "").split("\n")) {
    for (let i = 0; i < Math.max(1, para.length); i += cols) lines.pushM
(para.slice(i, i + cols));
    if (lines.length > 12) break;
  ctx.fillStyle = "#c9d1d9"; ctx.font = `${fs}px ui-monospace,monospace`; ctx.textAlign = "left"; ctx.textBaseline = "top";
  lines.slice(0, Math.floor((size * 0.86) / (fs * 1.25))).forEach((l, i) => ctx.fillText(l, size * 0.07, size * 0.07 + i * fs * 1.25));
async function loadThumb(gal, i) {
  const rec = gal.items[i], size = gal.cell, c = cellCanvas(size), ctx = c.getContext("2d");
    try { rec.info = { ...rec.info, ...(await getInscriptM
ionInfo(rec.id)) }; } catch {}
    if (gal !== state.gallery) return;
    drawPlaceholder(ctx, size, rec); globe.setCell(i, c);
    const type = rec.info.content_type || "";
    if (IMG_RE.test(type) && (rec.info.content_length || 0) <= 3_000_000) {
      const img = new Image();
      img.crossOrigin = "anonymous"; img.src = api(`/content/${rec.id}`);
      await img.decode();
      if (gal !== state.gallery) return;
      drawImageFit(ctx, size, img); globe.setCell(i, c);
    } else if (TEXT_RE.test(type) && (recM
.info.content_length || 0) <= 4096) {
      const t = await fetchSmallText(`/content/${rec.id}`, 4096);
      if (gal !== state.gallery || t == null) return;
      drawTextTile(ctx, size, t); globe.setCell(i, c);
  } catch {} finally {
    if (gal === state.gallery) { gal.loaded++; updateGalleryBar(); }
function updateGalleryBar() {
  const g = state.gallery;
  els.gallerySub.textContent = `${fmtInt(g.items.length)}${g.more ? "+" : ""} inscriptions${g.loaded < g.items.length ? `
ding previews ${fmtInt(g.loaded)}/${fmtInt(g.items.length)}` : "
 drag to spin, click to open"}`;
  els.galleryProg.style.width = `${(g.loaded / g.items.length) * 100}%`;
  els.galleryProg.parentElement.style.visibility = g.loaded < g.items.length ? "visible" : "hidden";
async function openGallery(title, loader) {
  const entry = { title, loader, res: null };
  galleryStack.push(entry);
  if (!(await showGallery(entry))) {
    galleryStack.pop();
    if (galleryStack.length) showGallery(galleryStack[galleryStacM
k.length - 1]); else exitGallery();
async function showGallery(entry) {
  closeViewer(); hideHover(); stopTour(); stopTimelinePlay();
  const token = ++galleryToken;
  els.app.classList.add("galleryMode"); els.galleryBar.hidden = false;
  els.galleryTitle.textContent = entry.title; els.gallerySub.textContent = "Reading inscriptions
  els.galleryBack.textContent = galleryStack.length > 1 ? "
 Back" : state.txs.length ? "
  els.galleryProg.style.width = "0";
= entry.res || (await entry.loader()); }
  catch (e) { if (token === galleryToken) toast(`Could not read inscriptions: ${e.message || e}`, true); return false; }
  if (token !== galleryToken) return true;
  const items = entry.res.items;
  if (!items.length) { toast("No inscriptions to show here yet"); return false; }
  const n = items.length, cols = n <= 64 ? 8 : n <= 256 ? 16 : 32;
  const gal = { entry, items, more: entry.res.more, cell: ATLAS / cols, loaded: 0 };
  state.gallery = gal;
  globe.setGallery(n, colM
  const c = cellCanvas(gal.cell), ctx = c.getContext("2d");
  items.forEach((r, i) => { drawPlaceholder(ctx, gal.cell, r); globe.setCell(i, c); });
  updateGalleryBar();
  globe.focus(0); globe.targetCamZ = globe.homeZ;
  mapLimit(items.map((_, i) => i), 6, (i) => (state.gallery === gal ? loadThumb(gal, i) : null));
function exitGallery() {
  galleryToken++; galleryStack.length = 0; state.gallery = null;
  els.app.classList.remove("galleryMode"); els.galleryBar.hidden = true; hM
  if (!state.txs.length) return globe.setIdle();
  globe.setData(state.txs.length, state.parcelStates);
  setMode(state.mode); applyView(); updateTrace();
  if (state.selected >= 0) selectParcel(state.selected, true);
function galleryBack() {
  if (galleryStack.length > 1) { galleryStack.pop(); showGallery(galleryStack[galleryStack.length - 1]); }
  else exitGallery();
function galleryPick(i) {
  const g = state.gallery;
  if (!g || !g.items[i]) return;
  globe.setSelected(i, true);
function openParcelGallery(index) {
  openGallery(`Ordinals on ${parcelName(index)}`, async () => {
    const recs = await loadAllParcelChildren(index);
    return { items: recs.slice(0, GALLERY_MAX), more: recs.length > GALLERY_MAX };
function openDistrictGallery() {
  if (!state.districtOrdinals.length) return toast(state.scanDone ? "No Ordinals inscribed directly on this district" : "Still scanning
 try again in a moment");
  if (!state.scanDone) toast("Still scanning
at has been found so far");
  const list = state.districtOrdinals;
  openGallery(`Ordinals on ${state.height}.bitmap`, async () => ({ items: list.slice(0, GALLERY_MAX).map((r) => ({ id: r.id, info: r.info })), more: list.length > GALLERY_MAX }));
/* ---------- Events ---------- */
const startBitmap = () => loadBitmap(els.bitmapInput.value, els.bitmapIdInput.value);
const onEnter = (el, fn) => el.addEventListener("keydown", (e) => { if (e.key === "Enter") fn(); });
els.bitmapGo.addEventListener("click", startBitmM
onEnter(els.bitmapInput, startBitmap); onEnter(els.bitmapIdInput, startBitmap);
els.bitmapIdInput.addEventListener("paste", () => setTimeout(() => {
  // A pasted ordinals.com/inscription/<id> URL is fine too.
  const v = els.bitmapIdInput.value.trim(), m = v.match(/[0-9a-f]{64}i\d+/i);
  if (m && m[0] !== v) els.bitmapIdInput.value = m[0].toLowerCase();
els.parcelGo.addEventListener("click", doParcelSearch);
els.parcelInput.addEventListener("input", renderSuggest);
els.parcelInput.addEventListener("focusM
els.parcelInput.addEventListener("blur", () => setTimeout(() => (els.suggest.hidden = true), 150));
els.parcelInput.addEventListener("keydown", (e) => {
  if (e.key === "ArrowDown" || e.key === "ArrowUp") {
    if (!sugItems.length) return;
    e.preventDefault(); sugIndex = (sugIndex + (e.key === "ArrowDown" ? 1 : sugItems.length - 1)) % sugItems.length;
    [...els.suggest.children].forEach((b, i) => b.classList.toggle("on", i === sugIndex));
  } else if (e.key === "Enter") { e.preventDefault()M
; doParcelSearch(); }
  else if (e.key === "Escape") { els.suggest.hidden = true; }
els.suggest.addEventListener("mousedown", (e) => e.preventDefault());
els.suggest.addEventListener("click", (e) => { const b = e.target.closest("[data-sug]"); if (b) runSuggestion(Number(b.dataset.sug)); });
els.myParcelsBtn.addEventListener("click", () => { const a = store.get("addr", ""); if (a) ownerSearch(a); });
els.places.addEventListener("click", (e) => { const b = e.target.closest("[data-place]"); if (b) goPlace(b.dataseM
els.starBtn.addEventListener("click", toggleSave);
els.traceBtn.addEventListener("click", () => toggleTrace());
els.shareClose.addEventListener("click", () => closePopover(els.sharePanel));
els.shareCopy.addEventListener("click", () => copyText(state.shareLink || shareUrl(), "Link"));
els.viewerShare.addEventListener("click", shareContent);
els.galleryShare.addEventListener("click", shareSet);
els.insBody.addEventListener("click", (e) => {
  const g = e.target.closest("[data-goto]"); if (g) return selM
ectParcel(Number(g.dataset.goto), true);
  if (e.target.closest("[data-trace]")) toggleTrace();
els.panelToggle.addEventListener("click", () => els.panel.classList.toggle("expanded"));
els.statHashCopy.addEventListener("click", () => copyText(state.block?.hash, "Block hash"));
els.filterInscribed.addEventListener("click", () => setFilter(1));
els.filterOrdinals.addEventListener("click", () => setFilter(2));
els.glowToggle.addEventListener("click", () => setGlow());
els.statInscribedBtn.addEventListener("click",M
 () => setFilter(1));
els.nextInsBtn.addEventListener("click", () => nextFeatured(1));
els.randomBtn.addEventListener("click", randomParcel);
els.shareBtn.addEventListener("click", () => openShare());
els.insClose.addEventListener("click", () => closeInspector());
els.prevParcel.addEventListener("click", () => stepParcel(-1));
els.nextParcel.addEventListener("click", () => stepParcel(1));
els.tabs.addEventListener("click", (e) => { const t = e.target.closest(".tab"); if (t) setOpenSection(t.dataset.section); });
r (const [el, fn] of [[els.firstBtn, 0], [els.firstMarker, 0], [els.lastBtn, 1], [els.lastMarker, 1]])
  el.addEventListener("click", () => state.txs.length && selectParcel(fn ? state.txs.length - 1 : 0, true));
els.seqLine.addEventListener("click", (e) => {
  if (!state.txs.length) return;
  const r = els.seqLine.getBoundingClientRect();
  selectParcel(Math.round(clamp((e.clientY - r.top) / r.height, 0, 1) * (state.txs.length - 1)), true);
els.modeSeg.addEventListener("click", (e) => { const b = e.target.closeM
st("button"); if (b) setMode(b.dataset.mode); });
els.spinBtn.addEventListener("click", () => { globe.userSpin = true; globe.setAuto(!globe.auto); });
els.zoomIn.addEventListener("click", () => globe.zoom(-0.7));
els.zoomOut.addEventListener("click", () => globe.zoom(0.7));
els.resetView.addEventListener("click", () => globe.resetView());
els.viewerBack.addEventListener("click", closeViewer);
els.viewerMode.addEventListener("click", () => { state.viewerLive = !state.viewerLive; applyViewerMode(true); });
AddressCopy.addEventListener("click", () => copyText(state.viewerAddressValue, "Address"));
els.viewerOutputBtn.addEventListener("click", toggleOutputPanel);
els.outputClose.addEventListener("click", closeOutputPanel);
els.viewerInfoBtn.addEventListener("click", () => { state.detailsOpen = !els.detailPanel.classList.contains("open"); setDetails(state.detailsOpen); });
els.detailClose.addEventListener("click", () => { state.detailsOpen = false; setDetails(false); });
els.viewerPrev.addEventListener("click", () => viM
els.viewerNext.addEventListener("click", () => viewerStep(1));
els.viewerChildren.addEventListener("click", () => {
  const id = state.viewerCurrentId, label = els.viewerNumber.textContent.replace(/^Inscription\s*/, "") || short(id, 6);
  if (id) openGallery(`Children of ${label}`, () => loadChildren(id));
els.galleryBack.addEventListener("click", galleryBack);
els.layerChips.addEventListener("click", (e) => { const b = e.target.closest("[data-layer]"); if (b) setLayer(b.dataset.layer); });
emoBtn.addEventListener("click", startDemo);
els.demoExit.addEventListener("click", () => {
  if (!state.liveSource) return toast("No ord server here
 the demo is all that can run");
  location.replace(location.pathname);
els.tourBtn.addEventListener("click", () => (tour.on ? stopTour() : startTour()));
els.tlPlay.addEventListener("click", playTimeline);
els.tlRange.addEventListener("input", () => { stopTimelinePlay(); setTimelineValue(Number(els.tlRange.value) / 1000); });
els.gl.addEventListener("pointerdoM
els.challengeToggle.addEventListener("click", () => {
  const open = els.challengeBox.hidden;
  els.challengeBox.hidden = !open;
  els.challengeToggle.textContent = open ? "
 Hide competing claims" : "+ Compare competing claims";
  if (open) els.challengeInput.focus();
els.districtGalleryBtn.addEventListener("click", openDistrictGallery);
els.problemBtn.addEventListener("click", () => els.problemPanel.classList.contains("open") ? closePopover(els.problemPanel) : openPopover(els.problemPanel));M
els.problemClose.addEventListener("click", () => closePopover(els.problemPanel));
els.problemCopy.addEventListener("click", () => copyText(problemDetailsText(), "Diagnostics"));
els.helpBtn.addEventListener("click", () => els.helpPanel.classList.contains("open") ? closePopover(els.helpPanel) : openPopover(els.helpPanel));
els.helpClose.addEventListener("click", () => closePopover(els.helpPanel));
els.copyClose.addEventListener("click", () => closePopover(els.copyPanel));
document.addEventListener("click", (e) => {M
  const c = e.target.closest("[data-copy]");
  if (c) return copyText(c.dataset.copy, c.dataset.copyLabel || "Value");
  const raw = e.target.closest("[data-copy-raw]");
    const tx = state.txs[state.selected], [kind, n] = raw.dataset.copyRaw.split(":");
    if (!tx) return;
    const val = kind === "tx" ? rawTxHex(tx) : kind === "sig" ? tx.inputs[n]?.scriptSig : kind === "wit" ? tx.inputs[n]?.witness.join("\n") : tx.outputs[n]?.scriptPubKey;
    return copyText(val, "Hex");
  const v = e.target.M
closest("[data-view-inscription]");
  if (v) return openOrdinal(v.dataset.viewInscription);
  if (e.target.closest("[data-show-all-bitmap]")) { state.showAllBitmapOrdinals = true; return renderSection("ordinals"); }
  const gp = e.target.closest("[data-gallery-parcel]");
  if (gp) return openParcelGallery(Number(gp.dataset.galleryParcel));
  if (e.target.closest("[data-gallery-district]")) return openDistrictGallery();
  const ex = e.target.closest("[data-export]");
  if (ex) exportDistrict(ex.dataset.export);
addEventListener("error", (e) => recordProblem("JavaScript error", e.error || e.message, `${e.filename || "script"}${e.lineno ? `:${e.lineno}:${e.colno || 0}` : ""}`));
addEventListener("unhandledrejection", (e) => recordProblem("Unhandled promise rejection", e.reason || "Unknown"));
addEventListener("keydown", (e) => {
  if (state.kiosk) { if (e.key === "Escape") { setKiosk(false); toast("Left kiosk mode"); } return; }
  if (tour.on && e.key !== "t" && e.key !== "T") { stopTour(); if (e.key === "Escape") return; }M
  if (e.key === "Escape") {
    if (state.viewerOutputOpen) closeOutputPanel();
    else if (els.viewer.classList.contains("open")) closeViewer();
    else if (els.problemPanel.classList.contains("open")) closePopover(els.problemPanel);
    else if (els.helpPanel.classList.contains("open")) closePopover(els.helpPanel);
    else if (els.copyPanel.classList.contains("open")) closePopover(els.copyPanel);
    else if (els.sharePanel.classList.contains("open")) closePopover(els.sharePanel);
    else if (state.gallery) M
    else if (state.selected >= 0) closeInspector();
    else if (document.activeElement?.tagName === "INPUT") document.activeElement.blur();
  if (e.target.closest?.("input,textarea") || e.ctrlKey || e.metaKey || e.altKey) return;
  if (els.viewer.classList.contains("open")) {
    if (k === "ArrowRight") viewerStep(1); else if (k === "ArrowLeft") viewerStep(-1);
  if (state.gallery) {
    const n = state.gallery.items.length, cur = globe.selected;
  if (k === "ArrowRight" || k === "ArrowDown") { e.preventDefault(); globe.setSelected(cur < 0 ? 0 : (cur + 1) % n, true); }
    else if (k === "ArrowLeft" || k === "ArrowUp") { e.preventDefault(); globe.setSelected(cur <= 0 ? n - 1 : cur - 1, true); }
    else if (k === "Enter" && cur >= 0) galleryPick(cur);
    else if (k === "r" || k === "R") globe.setSelected(Math.floor(Math.random() * n), true);
    else if (k === " ") { e.preventDefault(); globe.setAuto(!globe.auto); }
    else if (k === "+" || k === "=") gloM
    else if (k === "-" || k === "_") globe.zoom(0.5);
  const has = state.txs.length > 0;
  if (k === "?") return els.helpBtn.click();
  if (k === "/" && has) { e.preventDefault(); els.panel.classList.add("expanded"); els.parcelInput.focus(); els.parcelInput.select(); return; }
  if (k === " ") { e.preventDefault(); return globe.setAuto(!globe.auto); }
  if (k === "+" || k === "=") return globe.zoom(-0.5);
  if (k === "-" || k === "_") return globe.zoom(0.5);
(k === "ArrowRight" || k === "ArrowDown") { e.preventDefault(); stepParcel(1); }
  else if (k === "ArrowLeft" || k === "ArrowUp") { e.preventDefault(); stepParcel(-1); }
  else if (k === "Home") selectParcel(0, true);
  else if (k === "End") selectParcel(state.txs.length - 1, true);
  else if (k === "r" || k === "R") randomParcel();
  else if (k === "n") nextFeatured(1);
  else if (k === "N" || k === "p" || k === "P") nextFeatured(-1);
  else if (k === "i" || k === "I") setFilter(1);
  else if (k === "o" || k === "M
  else if (k === "g" || k === "G") setGlow();
  else if (k === "l" || k === "L") {
    const avail = layers.filter((x) => layerHits.get(x.id)?.size), i = avail.findIndex((x) => x.id === state.layer);
    if (!avail.length) toast("No protocol activity found in this district");
    else setLayer(i + 1 < avail.length ? avail[i + 1].id : null);
  else if (k === "t" || k === "T") tour.on ? stopTour() : startTour();
  else if (k === "m" || k === "M") toggleTrace();
  else if (k === "s" || k === "S")M
  else if (k === "h" || k === "H") { if (!els.timeline.hidden) playTimeline(); }
  else if (k >= "1" && k <= "4") setMode(["order", "size", "value", "io"][k - 1]);
// Links pasted into the address bar, or back/forward, change only the #hash
addEventListener("hashchange", () => {
  const h = parseHash();
  if (h.height !== state.height || (h.id && h.id !== state.district.id)) {
    els.bitmapInput.value = h.height; els.bitmapIdInput.value = h.id;
.height, h.id, h.parcel);
  } else if (h.parcel != null && h.parcel !== state.selected) selectParcel(h.parcel, true);
document.addEventListener("visibilitychange", () => {
  if (document.hidden) { globe.stop(); if (endpointRAF) { cancelAnimationFrame(endpointRAF); endpointRAF = 0; } }
  else { globe.start(); startEndpointLoop(); }
// Keep the panel clear of the legend card whatever its height (timeline, add-ons, screen size).
function fitPanel() {
  const top = els.panel.getBoundingClientRect().top, legendM
H = els.legend.hidden ? 0 : els.legend.getBoundingClientRect().height + 12;
  els.panel.style.maxHeight = `${Math.max(160, innerHeight - top - legendH - 16)}px`;
if (typeof ResizeObserver === "function") new ResizeObserver(fitPanel).observe(els.legend);
addEventListener("resize", fitPanel, { passive: true });
els.myParcelsBtn.hidden = !store.get("addr", "");
startEndpointLoop();
  const live = await resolveBase();
  state.liveSource = live;
  // Backup showcase: no ord M
server reachable (or ?demo in the address)
 run the built-in demo.
  if (kioskWanted()) { state.kiosk = true; els.app.classList.add("kiosk"); hooks.district.push(() => { if (state.kiosk) setKiosk(true); }); }
  if (!live || /(^|[?&])demo\b/.test(location.search) || /^#demo\b/.test(location.hash)) return startDemo();
  const initial = parseHash();
  // The config is needed before loading only when the link carries no inscription ID.
  configPromise = loadConfig().catch((e) => recordProblem("Config reL
    els.bitmapInput.value = initial.height; els.bitmapIdInput.value = initial.id;
    loadBitmap(initial.height, initial.id, initial.parcel);
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"9000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"Osbk","amt":"48"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"3000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"7000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"nulix","amt":"44000"}h!
text/plain;charset=utf-8
/Foundry USA Pool #dropgold/z
/j-PmE:to:XRP:rphi5VqYEJPvM3qQSUGActVs2JXewHSA83
6j4BEw:to:USDT(TRON):TSFNAuPvFQKg1r13CW8R8XA6fGj9hr8frZ
6j4Fsm:to:USDT(TRON):TJQpwoLRj767kdpFCdf5xg3hY79rQXsb9q
6j4cnC:to:USDT(TRON):TDxU6Hty5sJP2fDVZr3vGrx4C9jK3ki7ns
6j4j0V:to:USDT(TRON):TMzENc3cQTwa8NC4H6NtJRYo262W2XzCSv
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"ordi","amt":"3.16584616"}h!
text/plain;charset=utf-8
G{"p":"brc-20","op":"transfer","tick":"sats","amt":"847444601.99852893"}h!
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"rats","amt":"12822287.513215"}h!
DjB0xb15a75cfbd3694bdd682e830bbfa95f931bcff190970c5d7b78260375122246d
DjB0x12b1542a9ae301d4abcbebf69aa4c7eaf91f4ac20d6f56ab30f342b57b96a988
DjB0xb382ae9a03de88e61c55b675fd3bc02513463f20954eb8a2bb240cca41bece9b
DjB0xd3422a1c56733e5c8fa5170df506b57870696768a57115dd2fe43b1cc368883e
DjB0x9cde5ec819f11116992b411464364be832212074d4e4b7abf6274c8494c0d813
DjB0xf28cd2e24585cde28e1d5e7936c13dc9a7a56f4546f9c8902331998990fce9d2
DjB0x10505f5559ae35d424d3b3982cd9957f14cc2194c448e444a1dbc61026aa9d16
DjB0xb968bc0cb7f90be6424b57f4308f6b2d1d45d8c2de7c699cd4095f393b297b41
DjB0xb93b70cb35b037eac672502fdd8bcb2a33fcaf1224ddbff91a84e693d8acb20c
DjB0x579370d7f5731a82bda8bed4c6d6841cf1a0402071fa8e7ceaae18dfd5cd9dc7
DjB0xa90ce622a16d9be6398fbee85066b6534645487ec9a72c07dd6a98b2726c3cdb
DjB0x73f92023e48e4afd740879efe8d806df8672d65423fc525b2ba0af1618fae328
DjB0xb8aa2c67811009d5ec5148bd6808cc71867421b09bf212706ed43e2e446300fd
DjB0x8b57a321e35c7cf11782aa492804d1bc9807548496055d10d7b1c08c8e0a3156
OjLL0xa5a52371065619af931992f85130ffba690f685171fdbb8d2967f8c20cc4aa46=|lifi.8
OjLL0x29f21c169e9698fcd0d8e5ad04d4b88dc7c485c940b56d173e5ea352184cb5d0=|lifi
DjB0xbb48bdece70a62e9273c19b0981b94d9a657b31075dc2316e8dcf661c2a9a8d4
DjB0x0d613ee73d878e5e5fc2b39cb67223408bae51daef5037264344dbc247b4493b
DjB0x961c5ef5e03407ccf52df0a689f223e2ef988d29f0bdbd8133b5c036490a6e3d
DjB0x2782e993fe8d980ec28479d797e41327091ac551a9fcb464095624606988cf42
DjB0x1c5930c4cfa8746866836e938586449b6e03727bde5942690d2c61407d60b0c8
DjB0x1fc4a58b550ae262bf8f09ff068d9d65bf9e66337fce127cf5f7b55c47d57736
DjB0xdf7ba07ff5327998441b1dbb72986864ac6d0ba341c14abe756f2cf06cea7c7e
DjB0x38f9be584e359a8305f564e75f6f12514aeff3c54524e92a79aca5f88ec208c8
DjB0xed6f3e1aea81c15383132e895cb00bd7cbb9e6786e3f9b2de8686fdf63799355
DjB0xba17061f90929fb058aa6cb16368354f09b2faf9297270cc6e6b2514bcff8146
DjB0xb6359bbd78b7756ff0a703d8ea4733c06c5be170213653d511ac43fa8039b975
OjLL0x75a8e92299d82d2e2f9f05f314d46f060fa7a8ba1d1644c0814da776072ed6e8=|lifi
OjLL0xa8780d0cf1e19be9afc31cc7e94370890ea60e737ee405a0c772dc05eea9e1fc=|lifij5f
DjB0x6c6d2373d528c6532e507ec77189b393225daf21404aed103fa36fbe7b878296
DjB0x8ad65161ffd2ad02162b9b91bd65ddd5ac6293647eff1a96b5987a6379a0d028
DjB0xc6bb8a3ebca5ccd4282aec0d8d0b2028b82c647deeb40f93791d9a4941c19342
DjB0x62bc843db4e609d4876ab987156552ae0f16f38e48ac33f9405bf5d0c88c2bdc
DjB0x9754860fa9cebdd0a349fdb1527e7df3667fb928ff970e63c1f5a7151ee5630f
?j=from:22.8USDT(BSC):0x609df6c9D45D5bE6390a6A69189377dD8e9F4714
DjB0x7d770871830f6d689a80ca89412e6929d81548902e81b0f37b5a5d1471f46e58
2j0to:USDT(TRON):TSSbAADTi9AijpAMiFBa1H7gW3soQKBzay
6j4hf8:to:USDT(TRON):TML6osfB6hx3FAGpXXpcayQw7Df22UdeU4
6j4IC3:to:USDT(TRON):TS66vwu4aJpjR6Kt6wZgec4VKo1SSMKJ2j
6j4Hoy:to:USDT(TRON):TCEty5BQjakJoBekP53nQkejzzqssnutnZ
6j4WyC:to:USDT(TRON):TCCxx5gNqDpEmxWyfLBCKLWezMxHjVLPJ9
/j-EpT:to:TRX:TYR2heYmdxKaqhMb1iwDa7Kg7YbwqfRKrj
DjB0xbd91829c0f5f5acb3c7f9452492d9d206139a56d6cd6b3b15ba75cd2ad0ef30d
DjB0x76bcf401530de6339dd7afe269887d4ecfbd80dcb652a562fc194307cfcf1c1bI
DjB0xcffde794569029452b12e1f8657bd902bcdc90eaf38510f378bf7788efda0d27'
<j:JLM:to:BNB(BSC):0xC8Fed8Fc62eB95938083186110D3C538842eA6A6
4j2to:BTCB:0xDE98a43bbE94f188a4736bcbB6008a712FEBb601
6j4EAB:to:USDT(TRON):TTqpcDHsJmpCdTjDkS6kv8cTQKb9KXwViV
6j4yjY:to:USDT(TRON):TQbgp9cpcVKZTkk9kmG6gkNP7Bj25uqDkT
6j4cLQ:to:USDT(TRON):TRPPn8wzXE8quxNmWwcWd4JgTX1mj9jqcA
6j47h4:to:USDT(TRON):TRQmGAhQ9waQ4YoidsCpF4Bgeu2JvkWpiN
=j;sRS:to:USDT(BSC):0xcc9185B16E07ec03fF16dB6a193Ed48f83bd2798
=j;sqW:to:USDT(BSC):0x8ee3A0B551Ce1D69E975e5581F03066a17FD46ac
6j41lh:to:USDT(TRON):TLCmDtkin3G9HkBkSgcQUkpo32545BCc9XxA
6j481Q:to:USDT(TRON):TX5gNToUnEdoqgdEJrzvjNB1wiCH3zm9Ycb
6j4HA1:to:USDT(TRON):TRB8ahGmmabjzYDcfuKdz9ZUfAUFDaKkaD
9j7qrZ:to:SOL:Ck5ZBP2PGjBrk8vZnEnQ9PYSoRntHfHuJwRU9haspgb5
4j2to:LTC:ltc1q5m5tf9nppet8lljw7hasjnj2wgqrj08566942t
2j0to:USDT(TRON):TEzgetKnR1uFzQNS2sz1Veqz5haHJbm9xm
2j0to:USDT(TRON):TQihqgJJ3AhLbtda6jy3x6G8La9PRqpGkp
6j4tTi:to:USDT(TRON):TLeiprkGyeQkCw6cWY87Nn4Bbn7BRG92br
=j;LKL:to:USDC(ARB):0xFcDf8291Ea5B3E5B3F61034A65191D9ab92b4047H
FjDOUT:D9ABE5920931043D8F1B0F9AD0F1BED27E58833AC0AD6EAAC2F02538C16B2853
3j1to:ETH:0x83BC8F82d7392e9007609B5364B87A3f297155E0S
;j9to:USDT(ERC20):0x3e07909cbd62EA0270423239abF6531F6037E299v'
?j=nTi:to:USDT(ERC20):0xC1B753bF57408A83F8701A619b52cBA37931EA92
?j=fSM:to:USDT(ERC20):0x1fAe36BFd4D350624222fFdBd03F4BBCb43c7bf7
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
DjB0xe37540de282abaaf46db590576a80f7ac17fc710090bcadb866ac866ad7b73ab
DjB0x92003dc61df4061cd52e65fdc6d0bef3c903fd7b9ff67bd1e96a7ec18e643235
DjB0xb687c47e8f12b56f9c5b84fa60c7413a59ca859fde9c20f485b032e05d9cd557
DjB0x4e85e43bfb7149fd9c12a6fac92ee7f79be219fecbc397e1c845aacaa8b18c37
DjB0x7d93073f48f043bd8f7a4734389798f413592e6cf7ca3f5d80a1b68df45aa2f1
DjB0xf1204fc1044db2a8848da622af18080da7a9d27e82f711d478804b2fb9039c0f
DjB0x1243402efebcd0d87ac781ba0c829b82d6d890612a7c3172be8435c86b476e6d
DjB0x0eadfb48d70e502fd5b385b14ee0e880432f3cf3e9f4fa3169b490df17b19bc5
DjB0x6395ea41fcf1e49dcb6872ec4a7cd7324f4e675285ca0cfeba5000f37c1acfdd
DjB0x29119e06952df5311e4f296e8372a3d1b7568578fc8538fe9b8d6e2702ce4a4d
DjB0x322a4d1355ee1094f50ca7f49ec6221c50cf55b95748a3a75b54bbb90d661838
9j7to:USDT(BSC):0x12597114062e7570C2FBbd727cBDA216C4441DA6
DjB0x7a11b5eef49691af31820a334f14f4686b83b4c11726d6570020ff22541c232b
6j4fZp:to:USDT(TRON):TD2Gg87W6nHT1SYVEeQkjKRgubfcc6GNYc
=j;NhS:to:USDT(BSC):0xD49fA49CaB37FFf7C6DF6dE71002A3c20c80BacE
=j;xjw:to:USDT(BSC):0xd2fd3dA4caCe6A01B42EC97f2FDF6908c10Ed9Bd
6j4SQZ:to:USDT(TRON):TS56T9oUF6T6ezgt4daS2dTovywYnZRgXz
9j74J0:to:SOL:34LUdryAA1Msi16hq466Ht775bcwPKb3xsGfQDU1V3QD
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"95000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"3000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"33652505510"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"750"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"52"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
curlx!https://ark.page/raw/198f46fb.txtetitlexDReligious Scholars Met With Anthropic. What They Heard Stunned Them.fauthor`ipublishedx
2026-10-01T23:12:24.059Zdfromhark.pagecbsmxXHLe3DZbU/pMFnhju51c7c5Fd5aIkl57ItVV6gDn59iJjbKdPk5igq2h43nOAoBbpv2R+yq87OkGPYO69bpdsJwU=
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"m
rs","amt":"0.000001"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"
","amt":"0.000001"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"
","amt":"0.000001"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"blo
","amt":"0.000001"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"Z
us","amt":"0.000001"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"22000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"13000"}h!
6j4cuX:to:USDT(TRON):TUKrEF61uECmQzLXFCNdMvwJWW3SmufZXZ
6j4from:15USDT(TRON):TCf9YAbi9nfuYHEbLiRKEYTdm76nmwSX6t0
?j=from:1000USDT(BSC):0x13AC2552b014a2537acE282b80DEEBFfAF2756BF4
?j=from:32.5USDT(BSC):0x3ab2C8712f00F9D5F60CbE0a0c94F1BF7e6FF251
FjDfrom:1257.042984USDT(BSC):0xE6730D0b5BADA7EFe4E1E95601aF0EBCE23076Cf,$
KjIfrom:109.936431GRAM(TON):UQBLB9FG8WeTqA2X57NXnrI3vlJUvhCmKWaS3djoHEhjpCAe
DjB0xcf03116843432fb5200a1ffc2f55428ffefaaba8c3e1154c54c7abd8c06a2ffc
DjB0xc17eac4fa8716ece1db24266c94ca20092397b19a248a16b6f7d2c94bf42674b
DjB0x20d9d94da324873cfcb633f27530db0725cdf94f548e18884d8a8cea62823a39
9j7to:USDT(BSC):0x54235B5eFf7BaEB59fe7B71E1c10E667edCdF874
DjB0x58742a414b9b528a4d7345d49552e347524d2733be64711a829bec2a1e95e1ed
DjB0xa53e58b0035e636ae4bdd4f6817058ccf97c23e7ab88b0886c9588e080f13640
DjB0x7f46d57d9542c5dee475cba08d54a7c7b91f440c2b99096c24150cb2938f4fe6
DjB0xc9c111df90442c794a50de59e439e9a1a9942ed28f5a507d4ed93650ce59c24b
DjB0x6bc3f3746d2eea7fcafe7dc3e7e4a13caf15398807f90d180ab1607bea81eca9
DjB0x552c8c2c1399d5792ec8cdd20004c3db0e4cc27c89a7144623573089a2a493f3
DjB0x39e6972a6a70512d9b8dbb2bb95f5f89bb1a9f574f89449625a1e1b41a07f5e2
DjB0xc20b62179f0708100560d354f7356d886fef00e0152aed29e42c38d2d8e0b3ef
DjB0xb608267510cb3e8dba36695d0c3c86fc2ad58819231e7d46d8a6244baf1188d7
DjB0x70fe8a6c3736e86713c3f5f12c15add9ea458d7674d00c77abae59be1f24510a
DjB0xe2a91266650e933354e6dd7fae2100b5bb99f37db6e1a2ac7fe91f968a4878ae
DjB0xa062d7b2742303e202b97d111b671fbc4021da97b55a59e495e7a21347cca531
DjB0xbb7169e1c8ba2c5d76285ef0d7c25c71da9e792172df6c237662afa5c6088039
DjB0xf87829bd4ec762964c0704bb94de30dfae9b2ce4cedadd8e7063abe44a93389c
DjB0x8a63fe614b5ab3f5edcd562214b07e991cbb53f0c907c59e3ef3635ec70c8d58
DjB0x0c234e8272eaf50e2be0c1f73b914f6914afa0ab872e37b88ccba849d195e909
DjB0xe45437bd9b9657f66078a740aa5d9a65911b955725872acf9511c6dc328158a2
DjB0x89d37e8d6624a850b94bb52f3ba2884b33a21b0ba66be31df1a3d1c61f884b36
DjB0xe07a154f8033865a0b9011219537bd4e19739d34ab965ca206d0a12f71ed56fd
DjB0xfc974f287f83cf2d511fd59254809de409c4a68392a3514e4332498e3e1ff9d9
DjB0xb1ec69f01a9c100619876a4ceb253fdfcf049c90c20aac54390312a90651a62d
DjB0xb3c73b80bf77d682b318be962138b565a2847189ec10a7b69087d0975e87d70d
DjB0x7c4aacff9e7f6f6721a6abc854c8c032c13e23fa4f080c3a2b8e5abaf105b123
DjB0xdad0b3d3008ff135f1c49b366db92c122f8a3ea542a8c9f1b3f3098aa95f2ac2
DjB0x4c838e175ef345b599e647fd334773d6241b2f5b1166caed66c72ed59fb3f5e0
DjB0xdcaa81ddf1c9af7d39d18012ebbdcd3efd3cd20fe3ffb6e389e62ad64eeee6e2
DjB0xa2a5f60575d060f4fd8447edbdae0174dc38f0e932976ac0767a6c88e47d32cb
DjB0x9bbc064c1a49d8540df848c68c2124e661f1bce2f94d608a503b3e6bb5f090bc
DjB0x566ff70306fa0c43e5a88bad2b20df46d32590f18cd061cfd2fa44c8f8b94a44
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
OjLL0xcb5120dc5067fb66571e12f8884d5eb2d37f0ce6150dfb96aedcb49f5dcc8b7b=|lifi
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
FjDOUT:44C1BDC023649FB8A25EE0B13160E7B5AD00988AFC191A51EAB5372E1F08CD2E
DjB0x6714e96bd418769fe026e4e28dec7d169dcbc8fbd3f5a99590e057a760070f3d
DjB0x40edb65419349fdd436be74c9dbae98bedae5201c8eb80e61300dab92b69faa8
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
DjB0x8cc26e7b86187ee9786cddefb16b5b6e697482751a9c65023ddcb00ee1cbccdc
DjB0xa819bb3510baca3fed4c381937eb567592ff2ee507da96598d8b16990d19023c
DjB0xc4ecc98cdc8b76f26f527b10bbb667bebbbf3af9685a7bda121dfa0f7fbb1c90
DjB0xd2defe0e0c7ceb681746b73b72e07845ba012c2826f9f7422b764af745499e54
DjB0x69d75f6f34fdbb6019f2e9a8f37e3b40781864fd1e99b2404e89514d7d3ee0f4
DjB0x26bc35ed710defde96cc7e2564b591daa661706dd792732723fb355e91b0b787
DjB0xd2e8f8ab436fc84c261a45d544af9b1bd050fd5a33c79b1502f5747bd3e48a58
DjB0x45494e36cafaaa69c6babb6a62fc12aae6c8141495dfa681da04cacbc3c3c55d
DjB0xbdbfd48725e21eff3df44c5f5a2780dd2d8666f92ff5a519c78df63a59c4119e
DjB0x08f4d2c7060fc9f8fba6217a2f187ffbce85676c4dab1186fbfb4d8e9dd53b8c
DjB0xa485d7c30014eadb1c43ec68e882b4b73fdd260856d74288cccb4d3d444aab9a
DjB0x5fdb937bf0d9ed1648cb0fbcc66ab7ccb047aea4b83f38f1b855e4628a2a71eb
DjB0x7a3ea32fde874fc2b486047322cc8217d4f89f315ac1dfe993edde2d56d0ddba
DjB0x373efc04901e874d2a8b4030696e3298ab8a6c0fc863513c9950e8df3bd6e3a2
DjB0x3fa8d84ab3b505c404db1039c7b98ff5b47b43d5d28d33ea346bb51134e1a502
DjB0x66135b3000b13e6d5a6a4421eb71027faec2d97c530e0164a1a4c3e4c4d7bbff
DjB0x5698a19b9fb9a86f014ee4878fe39c6a51ca88f930f415cdd2b6e2c49cba0fd5
DjB0xf7b56b490d933e3fb38188931cc761cd76daefc28cb1aa195e1444246897759f
DjB0x626028b0bf078703f8c3be49d318e305c9e334f32e3705cd20fd9f350088c99c
OjLL0xb46206be0f98f9d8a5d6cf7b5bf00a13d338c380c8366da06b13d3023d252271=|lifi0p^
9j7to:USDT(BSC):0x12597114062e7570C2FBbd727cBDA216C4441DA6
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"400000000000"}J
DjB0x1d889b262fca32e30897986923885d618377dd560bc55db8db5c594f26c43775
DjB0xe1c8957e4783b213fee03db35eb863d8ea82928572b5b0565dad83c4764bca09
DjB0x9981109dc1b253f3f1962c52eca6bac24701f9946703e21b87c5f2135948bbe7
DjB0x8e617c76cb5458915713580cf0a5dd989115caa3401adc18d542ef94bfddcb6c
DjB0x9375c142cb17e4f8495186904b20d06e4d39d307da588c9d18c4eced59d66b40
DjB0x3c1fbe788d1d2c9d0636933d29ae075c3081cfea290d8788c492d51bdbc2346b
DjB0xb34db613ff702731b12205b271b9c15524f8adec06ee6a3f1d6e9b0b48c66104
DjB0x69f29984c485a545a9e6c8d4d982a125fff7076374b34a5465420e7dde26a9f0
2j0to:USDT(TRON):TJfKFeU9spxD4C5bG16ryZBSwQTJP64T8z
DjB0x27d1ff0cd69c1f3e1101cfc8cfc7343b5f6c906c093e544cb46d91884098c4b4
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
FjDOUT:C6FACF0D04F14701AA8AEF3FD88F8BFF2466F334C61BB6E08B8E387BB0669F69
FjDOUT:87A07776433EEBE26E4AA3F02D8EC87C0EFDF1D1F66B626202B66BA2A489A504
/j-PPX:to:TRX:TXLvFGTMpvoyXs2hDiSFxtdRyWV2Q2AkX2
FjDOUT:6329FA45E90E06537F86EDA62F3C122B07557C9BFA7BB0A21AE2C5FF5D2DD886
FjDOUT:FCD442B9269333B031F8804D0FCEE761F3008D2BBF25D5D7FCB04ACB2E5F50AB
FjDOUT:85A2A7983113125A61DC180D1C5AE568B0A9F74D7F5412CD158105348108DF19
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
6j4SmF:to:USDT(TRON):TKS6bAG9JL4ko7YWqQwKcDf8kcPTQ3HYmU
FjDOUT:0ABD3F616DDB3250E136DDF3CB5EB0CAB0CE2C1DA69C006CA93F7DBB1016814B
:j8C5a:to:U(BSC):0x00BC7D0e6b0ad4A04E4175a3bADc3957F12A141f
/j-gRT:to:XRP:rHJ2wEvSzJdeaMo3RDcbycdoAnLsMKsyXe
DjB0x8f66d2433bd6618e1a367fc05aab1edce4f467ee7ada619947195aba7cb4c7ed
/j-5J5:to:XRP:raxsxe3h85yXMCxPHs3XhCmdDC5iUrcGJe
6j4VG7:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr}
6j4Uuo:to:USDT(TRON):TX76u6iUCUeFWisFKLGBbgJncQwRZ9wauc
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "10000000000",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x18B8B10B14dC06C812c2f86a4C3C9e87Ca34E3F6\"}"
DjB0x9ccd07de2fe97c2171388349804cb9865bfd9898a9d9746cbd636dc9214b747e
DjB0x76388521eaac67084d288f3c0cde91c89a4052afc18a659adb833ecb80d1b34c
=j;jUj:to:USDT(BSC):0xc0E9511774601624a1e2004B57D77b6Ff0899678
6j4tiO:to:USDT(TRON):TW4dCL9Xp2YuoPXYMbjZkWsyXQR8cXt65c
/j-Yie:to:TRX:TMxeHRm957zviu4yfjQS5isFVJrBBeedXkV
/j-8jt:to:TRX:TM1tqzo8reyh625hthXPzFx8AouzrT53p35
9j7MOC:to:SOL:7iXodhE2TeREzLNfNQJVPkqTihBJg8ctdAz2G7mLEqZ2
=j;8Io:to:USDT(BSC):0x07630163268FB3f72110c06FdF0Db7DdCb6e3717
=j;Sas:to:USDT(BSC):0x5c56Fa3b8a5c7771e2a762A5a2F3d0B460607Ce1
6j4MOV:to:USDT(TRON):TX5gNToUnEdoqgdEJrzvjNB1wiCH3zm9YcN
6j4XiC:to:USDT(TRON):TCGSpSA7YR4XRpK35HpK4Namo72VnW28H8
6j4R8d:to:USDT(TRON):THVGLSqo4uHgjq9C1XvHrY2UvQoHRnCnDA
6j4bWE:to:USDT(TRON):TBDEdJXi7STj4Urjx7MiVjzga2N5xGkxeE
6j4R7B:to:USDT(TRON):TTiuoMTS3RixmiQx4RW74fgzR6LdVE4wyz
6j4U5l:to:USDT(TRON):TYR2heYmdxKaqhMb1iwDa7Kg7YbwqfRKrj
6j4sa8:to:USDT(TRON):TRg5TR8C3MnKx3h9W5eAMHeTfUmAHfG2Vru
6j4aW1:to:USDT(TRON):TKsuMrSPPbWRpTp9enoNhKHv6oayiUH25X
6j4WJr:to:USDT(TRON):TWTsbEXxuWvKiYQnZE9beDnQpBmRWbCHLy
6j4w6g:to:USDT(TRON):T9ywf7SNeFx2xE5jXY2QUKWkdB4RT5LjEm_'
6j410S:to:USDT(TRON):TGTMb2ZfEmnnuBqMviTWXEmrtfgMaPmQnbd
6j4V9O:to:USDT(TRON):TFNzFRx2XBUrYjdbHK2C8kuizkkvLNaLkX
8j6idK:to:LTC:ltc1qd0dqz6e8dsm4wcr2t3s9h9x3e5vyu28w7mh5ye
7j5cMk:to:QNT:0x2FE1669E077a33C0A821c426E10Ba09f7e6B66Cd
2j0to:USDT(TRON):TVTUZJUznjtaC5XmjnEFmqAEKf6TXnzNzM
8j6QUn:to:USDC:0x0E775fF17b211297E5047e87398183dd8ad23821
9j70Zw:to:SOL:A4TSACK62YdBrhEJNCp5cQ1pbQATc6xaFSaTef3RQ4dk
6j4FhR:to:USDT(TRON):TJfKFeU9spxD4C5bG16ryZBSwQTJP64T8z
<j:EyD:to:BNB(BSC):0x5C253b9aCbbB9C2F552D7Eb58d37286cB3a8C239
=j;sCS:to:USDT(BSC):0x2A8a80fd58b058706C774ACf286BF44841145B4c
=j;cOs:to:USDT(BSC):0xB4bB11F3D61Ab34Ff0c5e0A929e10170493f3580q
>j<iMa:to:USDC(BASE):0x8041c4FeDaA45D4B69fEef4eEB870Cc23E6B11Fb
?j=QxM:to:USDT(ERC20):0x94fa0AE6513Be49e7cB9D3Eb700FB2CA0101275A
?j=LtG:to:USDT(SOL):7Ax22sAxnR6FNkCLcNPhBJP4MpziXQs4BbfnrFpgNz3J
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","amt":"1215.08","tick":"ordi"}h!
Aj?from:2600USDT(ERC20):0x3f5DC91cF4438006c0F7413ec32e48787A27128c8
DjB0x104de766a51c74ff7c1cffbff357495de4d4bdc716bc372d1c78676063e461a9
>j<=:e:0x0Ef04F2c8861596fdF0b9dA94170e6858E4826F3:3591231:sto:0
FjDOUT:18ED33550F415260676D7EE923413CDF8374EE50B2828AAD604530E1A9EF7CB5
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
DjB0x744c7adb68e62940e33efd058564e7c9559b1ac4c5deabb853598d6cdb09409b
DjB0xcd3201dfc26f26f3722a5682dcdf81ba59da8598a89e9a09ddaef408d9de39f8
DjB0x62e4b82900839c9ff974123ebdb1a506b4262428877aee9cec3ffab6d7a0b2c1
DjB0x4d40776498abb9ccb0eacc167f80e0f99d31d65b83af0e4f48b3919c8ed6e5f7
DjB0x353abb7d78476bbcbd6376053439c21775bafbcba8276b250cb376c24ec9dc09
DjB0xec0e6cb787782493ecc55870dade685fb81c19774e5b60112488ce25573b1bb7
=j;from:26USDT(BSC):0x300657AA0784B7CCacaa98657929E2354cb5E507
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
DjB0xdd1a7a75642a954b0b7074513259444ca343aff02f04938a775cc71e00fe7e96
DjB0x20a93ba518551cd7f5b4139a56d835ad1f215f6d05f7d3629d67e0427eb3edff
DjB0x9c0b48fd15906f469ff6a3c315c72caa4293533da353a57a8ffc2d3547016597
DjB0xe21a05527f3cdc04f7cff07cfd5a4efcf078a9f57967e63582f22049cc02773e
DjB0x0c107f5aa09283707032027ed4693567b9e4900864ffa4d5a5276c56a1107ee6
DjB0x2c45b288eb65deb3131b6ecb93588d7655cb0bcdfa98ad69eaae6d347e085ef9
DjB0xe07a154f8033865a0b9011219537bd4e19739d34ab965ca206d0a12f71ed56fd
DjB0x55544bbc8cf0ef64664eae44472cd7649522f09ce658f408e8e8de4d3f09ae35
DjB0x3842fc1d4bad6ab6b74ff708107c480d0e8cfba7d6dd631ff47bab1c79657bbd
DjB0xfe2bf156924decbcf4281ad8849f9c37ab19b7e77a90df62c1c19d5c02edd016
{"p":"crc-20","op":"deploy","tick":"NIUB","type":"bonding","max":"1000000000","lim":"1000000000","btc":"10582124801","bons":"2830"}
DjB0xeb2db2871eb4497051c97d422f69950bfe9065c6030e07a327435d2666c6fdfc
DjB0x73f8cb48a47f155763e2d7fe2c871c0e4e1da78cf6c0b3df2eddd5bcd9422963
DjB0x77744a0efdf88dc4c462aae2098c62cee1a8105f10fd950a89138c5dbf75a5c5
DjB0x854c47245d5a82249ff431ca23616e809328436d3fd9682ac8e5e08b900eb1f9
2j0to:USDT(TRON):TTQVh2vnHyWP9uSUF6dXXYx7Jg3d4fP85e5<
6j4MjU:to:USDT(TRON):TLy4nV535NfF6tR18USw89Kbv1ffsXKkVR
=j;jRF:to:USDT(BSC):0xE569A1b6D8435c1b8f59f07A710a86C0705968b5C
6j4veg:to:USDT(TRON):TXfiHj8PTNGwogrqM7cnddqqzc1A2tubMW
=j;zzz:to:USDT(BSC):0x2b2519DDe1d8170a74b4D016C911499fCdbC1Afe
DjB0x8e2612e2d7c8a5570e852e917150588292e7a0fc381683e5514531d677780d32]
DjB0xaa616a8750828b8ef6beeb389f754ad5701d1b18804a5bab52cc07e44504d23f
/j-WDX:to:TRX:TYSaDmGAXS6mFBCC7WYSJgqveVAQFRZtM3
/j-Md2:to:TRX:TGQmr5a7QcXSrRYSiMtC8N87UUVmW5GTnA
6j4Bfm:to:USDT(TRON):TRpdYAfBRaWonJfEvm3fs2pbFyZZAf4XVQ
=j;BPZ:to:USDT(BSC):0x5aaE9F4a3ca5D639a4E9b31cD7EE05817D26b668
2j0to:USDT(TRON):TBTioQBDirh7VLBQu4doTiXapZCifdMdgF
6j4M7N:to:USDT(TRON):TA8hkJ1Et4ctZG2WbhZeTpMzh1uRndaB8n
6j4gv0:to:USDT(TRON):TPLmFKCikxQdWemn2DKpZRcfGJwxtyiVC1
6j4qof:to:USDT(TRON):TXLvFGTMpvoyXs2hDiSFxtdRyWV2Q2AkX2
6j4jfw:to:USDT(TRON):TX5gNToUnEdoqgdEJrzvjNB1wiCH3zm9Yc
6j406T:to:USDT(TRON):THKZtsLbjv5f3x8bPMHzzfwxPzLAEmP9gY_
9j7d1W:to:SOL:7qRGWgR8SHmrrFi9pfWeSVq7vH6uNLKpZU7v4vh4hzG7
6j4Vpr:to:USDT(TRON):THYzGtvL5zTnSiLAAgWUjCEa3WCUysZ2Hz
9j7X0G:to:SOL:2kEGdAyUooLYYfR2LZ6Fhgoc4Zk3w29PNPQNBYdg73Xt
=j;VmR:to:USDC(ARB):0x184A99721EBcA9E02Cd13D2E03F955257140C92a
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"9"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"ordi","amt":"2.3843017"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"15"}h!
2j0to:USDT(TRON):TRCivSjobifMAFECTbsrs7fKburtXLDWse(
HjF=:ETH.USDT:0x4F7c1515C7fb3194DE5f34B602A371F555705E7E:111389600200/1/0
 6PNZeoGq_h4GVU3gHN5sBOvEujDWQLXoJ
OjLL0x2a29cf895ba05f5cfc64fa31138f85d55005acdeea350c1f606ff09a7676a8cb=|lifi
Bbea2d894fc3afaa9d86b049b7d26802095b01c62c4080be53af86a4a042807ec:0a
dnamenKARENMEDINAARTkdescriptionx
Mexican visual artist, exploring the body, emotions, technology, and transformation. Her practice moves between physical and digital art, combining vibrant color, glitch aesthetics, and symbolic narratives. fsocial
gtwitterp karenmedinaart iinstagramnkarenmedinaartpcontent_location
dtypegarweavelarweave_txidx+akVfpZiW6PNZeoGq_h4GVU3gHN5sBOvEujDWQLXozRsfcortex
/Foundry USA Pool #dropgold/n
OjLL0x39d8098778d73357b0fe3d28ac4e1ff723cf88ba5baa5256efe29730f2180db7=|lifi
OjLL0x4a850bf216ac8e94e2034e2efbf507757fb1e2263fb74ff157c7d15f509398f9=|lifiQ
DjB0x13d1444f41334d8306ffa182bd5fd20e443099ea5d205b886814cc0da874b972
DjB0x23bebeb93d1b4f792c97fbab946c5e348a89710f4d1712e14e7d453e5fdccd90
DjB0xa2a05ad2966795f647a949abf99bcd451e1f1c4e87baa5f60669ed91693e2733
DjB0xb53d47a3d9de31a5dd40d8bb5f1e5f3fddebfbc51e6a4181dcd2bbc40a42d432
DjB0x40bf0a374efc4938372dd1e03d80a6bb9b7e0f5fdd9129e444a232ff9fa11d6a
FjDOUT:2252E94D382053E6565A11E8D44EF84B246F190231F59738F5C96E25E34EE9F9
DjB0x8ff801931ba13c28c745cb9e1de428ce23d4c9c95af582eb127654ebc8469a9b
DjB0x4fbd837d90c359ad82211d49c3174c9934e1198a5651cd53e60708b739099962
DjB0xe527fe1ce93a7a7326d3ccb2a8179734c88ea7445500cfa8676a432e744c5c36
{jLx0x97b347b0e8804db9842da25492eb046d4427d125418012f59f5d248c12d8a660|depositor=bc1qssf8ls99cmg8js0eqrxu9znt98z4dapme4nwjm|
DjB0xc56d0172e0bace89f63611b19080cec7e862c45e8fc6332cb71752ab06034ee9
DjB0xbd8838502be767eaa756fd6e21ac1fec865de2b43b8368ed1602dcf6bd1b7e65
DjB0xa2e309b235a6dd899e930685bd4138fa7542c0d8025acf4bd1c04e2ba721c8be
DjB0xc111777d4683089765bd26e1e6c09eebecf18271a35dac521509c4e00ff14102
=j;4JC:to:USDT(BSC):0x07190618A39dc3c67507C2Fd4Ed4891A94694F88b
6j4VFM:to:USDT(TRON):TPLmFKCikxQdWemn2DKpZRcfGJwxtyiVC1
6j4d5J:to:USDT(TRON):TJ9SGH2Hpfmc6DTC4c3vy3jd6nKWFiWjAy
6j4nM8:to:USDT(TRON):TYPGxkjp73JGYPQ6b9af9TBGEKghup4QAk
6j49mu:to:USDT(TRON):TYusYEho97SmVw7nwQa12HhU3FjgASTFtV
;j9to:USDT(ERC20):0x26bd714Aab2c70eCD924C15F73e9Cd28A2E78864
6j4iiE:to:USDT(TRON):TF7P1eBiW3jgRacrekhm9SSbGp57SVEVne
6j4tdt:to:USDT(TRON):TPmGshzFdYafBzdC2PchsxbkHnssP13pfV
6j42Ei:to:USDT(TRON):TLCmDtkin3G9HkBkSgcQUkpo32545BCc9X
OjLL0x098e1333bffc584ddb9b9d633a08c1c98c87d4feb7c5b33ed985ab4dc04cd27a=|lifi
2j0to:USDT(TRON):TKqWTr45pPtmXaZ7TaSP8TkqE4jvzpnh9u
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
{jLx0x608173556595e195da8f3003ee0a44123700b0e4c597722c5b069f8bfb50316e|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"2450"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"240500000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"301406375503437"}J
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"325692301542460"}J
DjB0x9bbac2beec2905ffd55c2714054fdcbd8fd4133b87b395017f7ebdd6e65ba8723
FjD=:u:0x4ed62c0a776f077989e0c55c99ea336b0fd76253:8476104388697/50:rg:0
>{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"976000000"}h!
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuQ!
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuQ!
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuQ!
*j(FA1F705F3A5A0463E05E2616B9F5EF1E0FB4DB68
Aj?from:1112.8USDT(BSC):0x1314A91854318c1f72A049dc2DcebDCA57589880
DjB0xea80520f9b2756ce9a6bab2c57db50ea500f079ef27c5e9d1465e1e66a93485c
DjB0xd672a25e1927e23b11ab308e4657e8a1832ff921821ad4aacdde0315ec142ada
DjB0xdd3537193704651c8afd8dee823af77203bc3264fc4fb80d91a4df4e0d008d53
DjB0xb16d81c5d2595da9d82df9d3604a97db39d683a03d5c924bbaac03cbbfe1e4ba
DjB0xe63370b22242a4278083a6d7c1e6b9c7d6aee65f29bc2b343015d7d5c4bf26ee
DjB0x02aaa0e6de32b86599e18bf9613ea8bb131f402c9d8ef9d4015da31c7bacd56b
6j4ulJ:to:USDT(TRON):TZC5kEdGSAh31Wq2GseENAa85bubYR1RVV
6j4IQy:to:USDT(TRON):TXyAHCkiDAaeandB18ZLXGP3A26EfWVqyd
6j4vIq:to:USDT(TRON):TLyfboF88qayxYh5hG7TRWkVD2t1utNbh8
OjLL0xed82afb8f89ced12dd7cc8c7c253b011829b0a38fe9d71520161cb2caa8a4b4d=|lifi:
DjB0xd2a0569965b476003c25329fb72d8fd6898c52f81fe515ce3efc40adfaa7416c
DjB0x00502d12863324637a2831d017adf26f734e9dd636f12e90867afa8ab00ba8ed
/j-Kbu:to:XRP:rDPMDYLsge2fvoATT8LASZyuuuiNeyvfeFc1
DjB0x1f9773041963635def6a2732c8268e43f8a00f17bae4eba0e01a74f65544097a
DjB0xf14286968427c1e3a5cc78a3b2c4e4b2c47c4a62f72c52827a74404a948ad8f2
FjDOUT:8E477815F6E911CFCEC59317855BF1B5C79DCC272BAE8BD91AF613EED5CDC6EC
DjB0xe919ff4f353d0f495383922be8e4b5a557f02f47ce063f37f80ab6b6c340ec17
DjB0x74dd4ff66103b4d36e60865da60bd6093b5b36f872f7077b886bb9ec8136334a
6j4mTO:to:USDT(TRON):TVJosHUdPYPxaZ87gsNPPZhV7oEtGVh8hd
9j7Qfh:to:SOL:4otDBPbCejxPk6sVQaCKR1fUy9NmNDdXU8VJqELZJx71
=j;RMn:to:USDT(BSC):0x1cEd3E38fEea3F25B2Be22F8b7C27a37F754d536
6j4uXJ:to:USDT(TRON):TPLmFKCikxQdWemn2DKpZRcfGJwxtyiVC1
=j;Inp:to:USDT(BSC):0x8d20Fe14F193ED4DeD76361efB68935D4A716b37
6j4YLl:to:USDT(TRON):TPtzDXYLY3TZ64zkExMAjkRcKAqNps68Xv
4j2to:LTC:ltc1q0zkfurdgp9y530e3d6s2u8qy6gfs9u4mjufsn0
6j4ZLv:to:USDT(TRON):TKgPJ12JBWVrcvw5Z35v8UofTXaSoN2tRN^
6j47R3:to:USDT(TRON):TFPX44WVLx7LxvfDqPojmfDwbW5UL4ds5H
6j4ktf:to:USDT(TRON):TFJykj6HtaU6ArZA8kdAsiNHYAZ6bWqCRF
4j2to:LTC:ltc1qk6fxjt7xaj9cxsp5xjfsrhs0yrwx7gtej24tdn
>j<sI4:to:USDC(BASE):0x8041c4FeDaA45D4B69fEef4eEB870Cc23E6B11Fb
>j<Fhi:to:USDC(BASE):0xfA7fC5647019c98A70bD4Df91687EF58aC3D35B5
=j;Uog:to:USDC(POL):0x3D903C90E51a9D61ed2445933cbAC36047a2ff7C
?j=28U:to:USDC(SOL):827ebFS9GxP5RYe8NMUYTv4aWtZFsmU8FX2dq5UEo9rC
?j=0ZY:to:USDT(ERC20):0xE47D92fbA24F6EDA72514bdfd80e773f7e1D9092
?j=tUD:to:USDT(ERC20):0x9B29040F0680Bfb274b6c67968b3cc74E4a8611f
CjAAyR:to:GRAM(TON):UQCyJnKbERKm03je6wgCqGcZlegwVPN2dhZ4ZOvuejCHZdOZ
2j0to:USDT(TRON):TWJesRj7BoBm1UcAXq99pcGMsH9mwTc8Jx
2j0to:USDT(TRON):TD2X6vugQW5JX5ZA7PsSeeQiRZhCgT1qN1O
 MhG8XvMPP20sbOR0gzuMuG6LvHNKJ8
=j;5Kp:to:USDT(BSC):0x4a5277E18c8dCD6933572F04711C77190e95d7ec
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
dnamefPHI.EDkdescriptiondTESTpcontent_location
dtypegarweavelarweave_txidx+RqQborZ8mm4nZMhG8XvMPP20sbOR0gzuMuG6LvHNKJ8
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"500000000000"}J
DjB0x78954c24ab138d06a3ddf6835c440fed3a3e3b6bf57882781b9588624410ff23
DjB0x167f4e1695727d54e9731e9ab41e9e9dae3454a84a569181c746861dc75cda2c3
text/plain;charset=utf-8
D6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799.btch!
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
text/html;charset=utf-8
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no" />
<meta name="color-scheme" content="dark" />
<title>Bitcoin Block Rings</title>
<meta name="description" content="Onchain finder for every Bitcoin block, drawn as growth rings (genesis at the heart, one ring per 2,016 blocks). Search by height, N.bitmap, block hash or date; data from ord recursive endpoints." />
<script type="application/json" id="M
  "name": "Bitcoin Block Rings",
  "for": "AI agents, robots, IoT displays and other software",
  "what": "Every Bitcoin block drawn as a point on a spiral of growth rings. Block details come from the ord recursive endpoint /r/blockinfo.",
  "links": { "block": "#<height>", "demo": "?demo or #demo (simulated details, labelled)", "kiosk": "?kiosk, #kiosk or append &kiosk" },
    "how": "await window.bitmapRings.command(cmd, args), or postMessage({type:\"bitmapRings\", id, cmd, args})M
 {type:\"bitmapRings:result\", id, ok, result|error}",
    "describe": "{}
 this manual + status",
 tip height, selection, demo/kiosk flags",
    "block": "{height}
 block details (time, transactions, size, fees, reward, hash)",
    "select": "{height}
 fly to a block and return its details",
    "find": "{query}
 height, N.bitmap, block hash or date YYYY-MM-DD",
    "snapshot": "{}
 PNG of the current view (data URL)",
 ambient display mode"
ety": "Read-only public chain data. Cannot move funds or sign anything."
:root{--bg:#05060a;--panel:rgba(12,14,19,.8);--border:rgba(255,255,255,.09);--text:#eef0f3;--t2:#a5acb6;--t3:#6c737d;--accent:#f7931a;--cyan:#7fdcf0;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--text);font:13px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smootM
button,input{font:inherit;color:inherit}button{cursor:pointer}[hidden]{display:none!important}
#c{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}#c.drag{cursor:grabbing}
.card{position:absolute;z-index:5;border:1px solid var(--border);border-radius:14px;background:var(--panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 18px 50px rgba(0,0,0,.45)}
.top{left:16px;top:16px;width:340px;padding:14px}
.brand{display:flex;align-items:center;gM
ap:9px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;font-weight:700;margin-bottom:10px}
.demoTag{margin-left:auto;padding:2px 8px;border:1px solid rgba(247,147,26,.5);border-radius:999px;background:rgba(40,24,6,.9);color:#ffd29a;letter-spacing:.14em;font-size:10px}
.brand i{width:14px;height:14px;border-radius:50%;border:2px solid var(--accent);box-shadow:inset 0 0 0 2px var(--bg),inset 0 0 0 4px #f7931a88}
.field{display:flex;gap:6px}
.field input{flex:1;min-width:0;height:38px;border:1px solid varM
(--border);border-radius:10px;background:rgba(255,255,255,.03);padding:0 12px;outline:0}
.field input:focus{border-color:rgba(247,147,26,.5)}
.btn{height:38px;border:1px solid rgba(247,147,26,.4);border-radius:10px;background:rgba(247,147,26,.14);color:#ffd29a;padding:0 14px;font-weight:650}
.hint{margin:8px 0 0;font-size:11.5px;color:var(--t3)}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chip{height:28px;border:1px solid var(--border);border-radius:999px;background:rgba(255,255,255,.03);padding:0 M
11px;font-size:11.5px;font-weight:600;color:var(--t2)}
.chip:hover{color:var(--text);border-color:rgba(255,255,255,.18)}
.info{right:16px;top:16px;width:320px;padding:14px;max-height:calc(100% - 32px);overflow:auto}
.info h2{margin:0;font-size:18px;font-variant-numeric:tabular-nums}
.info .sub{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--t3);font-weight:700}
.rows{margin-top:10px}
.row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid rgba(255,255,255M
,.05);font-size:12px}
.row:first-child{border-top:0}.row span:first-child{color:var(--t3)}
.row span:last-child{text-align:right;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.mono{font-family:var(--mono);font-size:11px}
.actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.actions a,.actions button{display:inline-flex;align-items:center;height:30px;border:1px solid var(--border);border-radius:8px;background:rgba(255,255,255,.03);padding:0 10px;font-size:11.5px;font-weight:600;color:var(--t2);tM
ext-decoration:none}
.actions .go{border-color:rgba(127,220,240,.4);color:#c8f2fb;background:rgba(127,220,240,.08)}
.legend{left:16px;bottom:16px;padding:10px 12px;display:flex;flex-wrap:wrap;gap:6px 12px;max-width:min(560px,calc(100% - 32px));font-size:11px;color:var(--t2)}
.legend span{display:flex;align-items:center;gap:6px}.legend i{width:9px;height:9px;border-radius:50%}
.tip{position:absolute;z-index:6;pointer-events:none;padding:6px 9px;border:1px solid var(--border);border-radius:9px;background:rgba(8,9,12,M
.92);font-size:12px;transform:translate(12px,12px);white-space:nowrap}
.tip small{display:block;color:var(--t3);font-size:11px}
.mark{position:absolute;z-index:4;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 12px #fff8;pointer-events:auto;cursor:pointer;padding:0;background:transparent}
.mark b{position:absolute;left:14px;top:-5px;font-size:10.5px;font-weight:600;white-space:nowrap;color:var(--t2);text-shadow:0 1px 3px #000}
.mark.sel{border-color:var(--accent);bM
ox-shadow:0 0 16px var(--accent)}
.toast{position:absolute;z-index:9;left:50%;bottom:20px;transform:translateX(-50%);padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:rgba(14,16,20,.96);font-size:12px;opacity:0;transition:opacity .2s;pointer-events:none}
.toast.show{opacity:1}
.src{margin-top:8px;font-size:11px;color:var(--t3)}
body.kiosk .top,body.kiosk .legend,body.kiosk .actions{display:none!important}
@media (max-width:760px){.top{left:8px;right:8px;top:8px;width:auto;padding:12px}.M
info{left:8px;right:8px;top:auto;bottom:8px;width:auto;max-height:46vh}.legend{display:none}.mark b{display:none}}
@media (max-width:420px) and (max-height:420px){.top,.legend,.info{display:none!important}}
<canvas id="c" aria-label="Every Bitcoin block as a growth ring"></canvas>
<section class="card top">
  <div class="brand"><i></i>Bitcoin Block Rings<span class="demoTag" id="demoTag" hidden>DEMO</span></div>
  <div class="field"><input id="q" placeholder="Height, 840000.bitmap, hash or 2M
017-12-17" autocomplete="off" spellcheck="false" /><button class="btn" id="go">Find</button></div>
  <p class="hint">Genesis at the heart
 two weeks (2,016 blocks)
 newest on the edge</p>
  <div class="chips"><button class="chip" id="latest">Latest</button><button class="chip" id="rand">Random</button><button class="chip" id="marksBtn">Landmarks</button><button class="chip" id="home">Reset view</button></div>
  <div class="src" id="src">Connecting
<section class="card info" id="M
info" hidden></section>
<section class="card legend" id="legend"></section>
<div class="tip" id="tip" hidden></div>
<div id="marks"></div>
<div class="toast" id="toast"></div>
const $ = (id) => document.getElementById(id);
const ERA = [[247, 147, 26], [255, 200, 87], [240, 110, 140], [176, 128, 240], [96, 200, 236], [140, 235, 170], [235, 235, 235]];
const ERA_NAMES = ["2009
  [0, "Genesis"], [170, "First transaction"], [57043, "Pizza"], [210000, "1st halving"], [420000, "2nd halving"],
  [481824, "SegWit"], [630000, "3rd halving"], [709632, "Taproot"], [767430, "First inscription"],
  [824544, "Jubilee"], [840000, "4th halving
 Runes"], [1050000, "5th halving"],
const PERIOD = 2016, R0 = 0.035;
const S = { base: "", tip: 0, sel: -1, hov: -1, view: { x: 0, y: 0, s: 1 }, target: null, globe: "", info: new Map(), marks: true };
const esc = (s) => String(s ?? "").replace(/[&<>'"]/g, (c) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", "'": "&#39;", '"': "&quot;" }[c]));
const fmt = (n) => Number(n).toLocaleString("en-US");
const btc = (sats) => (Number(sats) / 1e8).toLocaleString("en-US", { maximumFractionDigits: 8 }) + " BTC";
const date = (t, o) => new Intl.DateTimeFormat(undefined, o || { year: "numeric", month: "short", day: "numeric", hour: "2-digit", minute: "2-digit" }).format(new Date(t * 1000));
function toast(m) { cM
onst t = $("toast"); t.textContent = m; t.classList.add("show"); clearTimeout(toast.t); toast.t = setTimeout(() => t.classList.remove("show"), 2200); }
/* ---------- Demo (backup showcase when no ord server is reachable; always labelled) ----------
   Block details are generated from a seed; dates follow the real halving-block timestamps so date search behaves. */
const ANCHORS = [[0, 1231006505], [210000, 1354116278], [420000, 1468082773], [630000, 1589225023], [840000, 1713571767]];
function rng(seed) { let a = sM
eed >>> 0; return () => { a = (a + 0x6d2b79f5) >>> 0; let t = a; t = Math.imul(t ^ (t >>> 15), t | 1); t ^= t + Math.imul(t ^ (t >>> 7), t | 61); return ((t ^ (t >>> 14)) >>> 0) / 4294967296; }; }
function demoTime(h) {
  for (let i = 1; i < ANCHORS.length; i++) if (h <= ANCHORS[i][0]) { const [h0, t0] = ANCHORS[i - 1], [h1, t1] = ANCHORS[i]; return Math.round(t0 + ((h - h0) / (h1 - h0)) * (t1 - t0)); }
  return ANCHORS[4][1] + (h - 840000) * 600;
function demoInfo(h) {
  const R = rng(h + 1), era = Math.floor(h M
/ 210000), ri = (a, b) => a + Math.floor(R() * (b - a + 1));
  const txs = h < 100000 ? ri(1, 4) : h < 250000 ? ri(20, 600) : h < 480000 ? ri(800, 2600) : ri(1800, 4600);
  let hash = ""; for (let i = 0; i < 64; i++) hash += i < (h < 100000 ? 8 : 19) ? "0" : "0123456789abcdef"[Math.floor(R() * 16)];
  const med = h < 250000 ? 0 : ri(2, h > 760000 ? 80 : 40);
  return { height: h, hash, timestamp: demoTime(h), transaction_count: txs, total_size: Math.min(h > 481824 ? 2.4e6 : 1e6, txs * ri(250, 520) + 300),
_fee: txs * med * ri(140, 260), subsidy: Math.floor(5e9 / 2 ** era), feerate_percentiles: [Math.max(0, med - 2), Math.max(0, med - 1), med, med + 3, med + 9] };
async function get(path, json = true) {
    const m = path.match(/^\/r\/blockinfo\/(\d+)$/);
    if (m) return demoInfo(+m[1]);
    throw Error(path.includes("blockinfo") ? "hash lookup needs the live chain" : "not available in the demo");
  for (let a = 0; ; a++) {
      const r = await fetch(api(path), { cache: "no-store" }M
      if (!r.ok) { if (a < 2 && (r.status === 429 || r.status >= 500)) { await new Promise((x) => setTimeout(x, 500 * 2 ** a)); continue; } throw Error(`${path}
      return json ? r.json() : r.text();
    } catch (e) { if (a >= 2 || /
 4/.test(e.message)) throw e; await new Promise((x) => setTimeout(x, 500 * 2 ** a)); }
async function tipOf(base) { try { const r = await fetch(base + "/r/blockheight", { cache: "no-store" }); if (!r.ok) return null; const n = Number(String(await r.texM
t()).replace(/"/g, "")); return Number.isFinite(n) ? n : null; } catch { return null; } }
/* ---------- Geometry: block h sits on a spiral; one turn = one difficulty period ---------- */
const turns = () => S.tip / PERIOD + 1;
  const t = h / PERIOD, a = 2 * Math.PI * (t % 1) - Math.PI / 2, r = R0 + (1 - R0) * (t / turns());
  return [Math.cos(a) * r, Math.sin(a) * r];
const toScreen = ([x, y]) => [innerWidth / 2 + S.view.x + x * S.view.s, innerHeight / 2 + S.view.y + y * S.view.s];
  const x = (sx - innerWidth / 2 - S.view.x) / S.view.s, y = (sy - innerHeight / 2 - S.view.y) / S.view.s;
  const r = Math.hypot(x, y), f = (((Math.atan2(y, x) + Math.PI / 2) / (2 * Math.PI)) % 1 + 1) % 1;
  const n = Math.round(((r - R0) / (1 - R0)) * turns() - f);
  let best = -1, bd = Infinity;
  for (const dn of [-1, 0, 1]) {
    const h = Math.round((n + dn + f) * PERIOD);
    if (h < 0 || h > S.tip) continue;
    const [px, py] = toScreen(pos(h)), d = Math.hypot(px - sx, py - sy);
 bd) { bd = d; best = h; }
  return bd < Math.max(10, ringPx() * 0.8) ? best : -1;
const ringPx = () => (S.view.s * (1 - R0)) / turns();
/* ---------- WebGL: every block drawn from its index alone (no data upload) ---------- */
const cv = $("c"), gl = cv.getContext("webgl2", { antialias: false, premultipliedAlpha: false });
if (!gl) { document.body.insertAdjacentHTML("beforeend", '<p style="position:absolute;inset:40% 0 0;text-align:center;color:#aaa">This needs WebGL 2 (a recent Chrome, Edge, Firefox or SafM
ari).</p>'); return; }
const sh = (t, s) => { const o = gl.createShader(t); gl.shaderSource(o, s); gl.compileShader(o); if (!gl.getShaderParameter(o, gl.COMPILE_STATUS)) throw Error(gl.getShaderInfoLog(o)); return o; };
const prog = gl.createProgram();
gl.attachShader(prog, sh(gl.VERTEX_SHADER, `#version 300 es
precision highp float;
uniform float uTurns,uScale,uDpr,uSel,uHov;uniform vec2 uView,uPan;uniform vec3 uEra[7];
  float h=float(gl_VertexID),t=h/${PERIOD}.,a=6.2831853*fract(t)-1.57M
07963,r=${R0}+(1.-${R0})*(t/uTurns);
  vec2 p=uView*.5+uPan+vec2(cos(a),sin(a))*r*uScale;
  gl_Position=vec4(p.x/uView.x*2.-1.,1.-p.y/uView.y*2.,0.,1.);
  float ring=uScale*(1.-${R0})/uTurns,arc=6.2831853*r*uScale/${PERIOD}.,sz=clamp(min(ring,arc)*.92,1.,16.);
  int e=int(min(6.,floor(h/210000.)));vec3 c=uEra[e]/255.;
  c*=mod(floor(t),2.)<.5?1.:.8;
  float a2=sz<1.5?.55:1.;
  if(abs(h-uHov)<.5){c=vec3(1.);sz=max(sz*2.2,7.);a2=1.;}
  if(abs(h-uSel)<.5){c=vec3(1.,.85,.55);sz=max(sz*2.6,9.);a2=1.;}
gl.attachShader(prog, sh(gl.FRAGMENT_SHADER, `#version 300 es
precision mediump float;in vec4 vC;out vec4 o;
void main(){vec2 q=gl_PointCoord-.5;if(dot(q,q)>.25)discard;o=vC;}`));
gl.linkProgram(prog); gl.useProgram(prog);
const U = {}; for (const n of ["uTurns", "uScale", "uDpr", "uSel", "uHov", "uView", "uPan", "uEra"]) U[n] = gl.getUniformLocation(prog, n);
gl.uniform3fv(U.uEra, ERA.flat());
gl.bindVertexArray(gl.createVertexArray());
gl.enable(gl.BLEND); gl.blendFunc(gl.SRC_ALPHA, gl.OM
NE_MINUS_SRC_ALPHA); gl.clearColor(0, 0, 0, 0);
let dpr = 1, dirty = true;
  dpr = Math.min(devicePixelRatio || 1, 2);
  cv.width = Math.floor(innerWidth * dpr); cv.height = Math.floor(innerHeight * dpr);
  gl.viewport(0, 0, cv.width, cv.height); dirty = true;
const homeScale = () => Math.min(innerWidth, innerHeight) * 0.44;
  requestAnimationFrame(draw);
  if (S.target) {   // fly-to: glide the view toward its target
    // Glide the point at the screen centre straight towarM
d the target while zooming smoothly.
    const v = S.view, t = S.target, k = 0.12;
    const cx = -v.x / v.s, cy = -v.y / v.s, tx = -t.x / t.s, ty = -t.y / t.s;
    const s = v.s * Math.pow(t.s / v.s, k), nx = cx + (tx - cx) * k, ny = cy + (ty - cy) * k;
    v.s = s; v.x = -nx * s; v.y = -ny * s;
    if (Math.abs(tx - nx) * s < 0.5 && Math.abs(ty - ny) * s < 0.5 && Math.abs(t.s / s - 1) < 0.002) { Object.assign(v, t); S.target = null; }
  if (!dirty || !S.tip) return;
  gl.clear(gl.COLOR_BUFFER_BIT);
  gl.uniform1f(U.uTurns, turns()); gl.uniform1f(U.uScale, S.view.s); gl.uniform1f(U.uDpr, dpr);
  gl.uniform1f(U.uSel, S.sel); gl.uniform1f(U.uHov, S.hov);
  gl.uniform2f(U.uView, innerWidth, innerHeight); gl.uniform2f(U.uPan, S.view.x, S.view.y);
  gl.drawArrays(gl.POINTS, 0, S.tip + 1);
cv.addEventListener("webglcontextlost", (e) => e.preventDefault());
cv.addEventListener("webglcontextrestored", () => location.reload());
Landmarks ---------- */
function buildMarks() {
  $("marks").innerHTML = LANDMARKS.filter(([h]) => h <= S.tip).map(([h, n]) => `<button class="mark" data-h="${h}" title="${esc(n)}
 block ${fmt(h)}"><b>${esc(n)}</b></button>`).join("");
  $("legend").innerHTML = ERA.slice(0, Math.min(7, Math.floor(S.tip / 210000) + 1)).map((c, i) => `<span><i style="background:rgb(${c})"></i>${ERA_NAMES[i]}</span>`).join("");
function placeMarks() {
  for (const m of $("marks").children) {
    const h = +m.daM
taset.h, [x, y] = toScreen(pos(h));
    m.hidden = !S.marks || x < 0 || y < 0 || x > innerWidth || y > innerHeight;
    m.style.left = x + "px"; m.style.top = y + "px"; m.classList.toggle("sel", h === S.sel);
    // Crowded landmarks (zoomed out near the heart) keep their dot but drop the label.
    const crowded = shown.some(([a, b]) => Math.abs(a - x) < 110 && Math.abs(b - y) < 16);
    m.firstChild.style.visibility = crowded ? "hidden" : "";
    if (!m.hidden && !crowded) shown.push([x, y]);
 Selecting & info ---------- */
  // Zoom so neighbouring rings sit ~9px apart (individual blocks become visible), centred on the block.
  const [x, y] = pos(h), s = Math.max(S.view.s, (9 * turns()) / (1 - R0));
  S.target = { x: -x * s, y: -y * s, s };
async function select(h, fly = true) {
  h = Math.max(0, Math.min(S.tip, Math.round(h)));
  S.sel = h; dirty = true;
  if (fly) flyTo(h);
  try { history.replaceState(null, "", "#" + h); } catch {}
  const el = $("info"); el.hidden = false;
l.innerHTML = `<div class="sub">Block</div><h2>${fmt(h)}</h2><div class="rows"><div class="row"><span>Loading
</span><span></span></div></div>`;
  let b = S.info.get(h);
  if (!b) { try { b = await get(`/r/blockinfo/${h}`); S.info.set(h, b); } catch (e) { if (S.sel === h) el.querySelector(".rows").innerHTML = `<div class="row"><span>Could not read block</span><span>${esc(e.message)}</span></div>`; return; } }
  if (S.sel !== h) return;
  const era = Math.floor(h / 210000), row = (k, v) => `<div class="row"><span>M
${k}</span><span>${v}</span></div>`;
  const mark = LANDMARKS.find(([x]) => x === h);
  el.innerHTML = `<div class="sub">${S.demo ? "DEMO
 " : ""}${mark ? esc(mark[1]) : "Block"}
 ${h}.bitmap</div><h2>${fmt(h)}</h2><div class="rows">` +
    row("Mined", date(b.timestamp)) + row("Transactions", fmt(b.transaction_count)) + row("Size", b.total_size >= 1e6 ? (b.total_size / 1e6).toFixed(2) + " MB" : (b.total_size / 1e3).toFixed(1) + " KB") +
    row("Fees", btc(b.total_fee || 0)) + row("Reward", btc(b.subsidy ?? 0)M
    (Array.isArray(b.feerate_percentiles) && b.feerate_percentiles.length > 2 ? row("Median fee rate", b.feerate_percentiles[2] + " sat/vB") : "") +
    row("Halving era", `${era + 1}
 ${ERA_NAMES[Math.min(6, era)]}`) + row("Ring", `${fmt(Math.floor(h / PERIOD))}
 block ${(h % PERIOD) + 1} of ${PERIOD}`) +
    row("Hash", `<span class="mono">${esc(b.hash)}</span>`) + `</div><div class="actions">` +
    (S.globe ? `<a class="go" href="${esc(api(`/content/${S.globe}`) + "#" + h)}" target="_blank" rel="noopeneM
 Open ${h}.bitmap in Parcel Globe</a>` : "") +
    `<button data-copy="${h}.bitmap">Copy ${h}.bitmap</button><button data-copy="${esc(b.hash)}">Copy hash</button><button data-step="-1">
 Prev</button><button data-step="1">Next
$("info").addEventListener("click", (e) => {
  const c = e.target.closest("[data-copy]"), s = e.target.closest("[data-step]");
  if (s) return select(S.sel + Number(s.dataset.step));
  if (c) { const t = document.createElement("textarea"); t.value = c.dataset.coM
py; document.body.appendChild(t); t.select(); const ok = document.execCommand("copy"); t.remove(); toast(ok ? "Copied" : "Copy blocked here"); }
$("marks").addEventListener("click", (e) => { const m = e.target.closest(".mark"); if (m) select(+m.dataset.h); });
/* ---------- Search: height, N.bitmap, hash, or a date (binary search on block times) ---------- */
async function find(q) {
  q = String(q).trim().toLowerCase().replace(/[\s,_]/g, "");
  if (!q || !S.tip) return;
  if ((m = q.match(/^#?(\d+)(\M
.bitmap)?$/))) { const h = +m[1]; return h > S.tip ? toast(`Block ${fmt(h)} hasn't been mined yet`) : select(h); }
  if (/^[0-9a-f]{64}$/.test(q)) { if (S.demo) return toast("Hash search needs the live chain (not available in the demo)"); try { const b = await get(`/r/blockinfo/${q}`); S.info.set(b.height, b); return select(b.height); } catch { return toast("No block with that hash"); } }
  if ((m = q.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/))) {
    const t = Date.UTC(+m[1], +m[2] - 1, +m[3], 12) / 1000;
> 1231000000)) return toast("Bitcoin starts on 3 Jan 2009");
    toast("Searching the chain for that date
    let lo = 0, hi = S.tip;
    while (lo < hi) {   // first block mined at or after midday UTC of that date
      const mid = (lo + hi) >> 1;
      let b = S.info.get(mid);
      if (!b) { b = await get(`/r/blockinfo/${mid}`); S.info.set(mid, b); }
      if (b.timestamp < t) lo = mid + 1; else hi = mid;
    return select(lo);
  toast("Try a height, 840000.bitmap, a block hash or a date like 201M
$("go").addEventListener("click", () => find($("q").value));
$("q").addEventListener("keydown", (e) => { if (e.key === "Enter") find($("q").value); });
$("latest").addEventListener("click", () => select(S.tip));
$("rand").addEventListener("click", () => select(Math.floor(Math.random() * (S.tip + 1))));
$("home").addEventListener("click", () => { S.target = { x: 0, y: 0, s: homeScale() }; });
$("marksBtn").addEventListener("click", () => { S.marks = !S.marks; dirty = true; });
/* ---------- Pan, zoom, M
pinch, hover ---------- */
const ptrs = new Map();
let moved = 0, pinch = 0;
function zoomAt(sx, sy, f) {
  const v = S.view, s2 = Math.min(Math.max(v.s * f, homeScale() * 0.6), homeScale() * 4000);
  const k = s2 / v.s, cx = sx - innerWidth / 2, cy = sy - innerHeight / 2;
  v.x = cx - (cx - v.x) * k; v.y = cy - (cy - v.y) * k; v.s = s2; S.target = null; dirty = true;
cv.addEventListener("pointerdown", (e) => { cv.setPointerCapture(e.pointerId); ptrs.set(e.pointerId, [e.clientX, e.clientY]); moved = 0; cv.classLiM
st.add("drag"); S.target = null; });
cv.addEventListener("pointermove", (e) => {
  const p = ptrs.get(e.pointerId);
  if (!p) {   // hover
    const h = blockAt(e.clientX, e.clientY), tip = $("tip");
    if (h !== S.hov) { S.hov = h; dirty = true; }
    tip.hidden = h < 0;
    if (h >= 0) { tip.style.left = e.clientX + "px"; tip.style.top = e.clientY + "px"; const b = S.info.get(h); tip.innerHTML = `Block ${fmt(h)}<small>${b ? date(b.timestamp, { year: "numeric", month: "short", day: "numeric" }) : h + ".bitmap"}</M
  if (ptrs.size === 2) {
    ptrs.set(e.pointerId, [e.clientX, e.clientY]);
    const [a, b] = [...ptrs.values()], d = Math.hypot(a[0] - b[0], a[1] - b[1]);
    if (pinch) zoomAt((a[0] + b[0]) / 2, (a[1] + b[1]) / 2, d / pinch);
    pinch = d; moved += 10; return;
  const dx = e.clientX - p[0], dy = e.clientY - p[1];
  moved += Math.abs(dx) + Math.abs(dy); S.view.x += dx; S.view.y += dy; ptrs.set(e.pointerId, [e.clientX, e.clientY]); dirty = true;
as(e.pointerId)) return;
  ptrs.delete(e.pointerId); pinch = 0; cv.classList.remove("drag");
  if (moved < 6 && e.type === "pointerup") { const h = blockAt(e.clientX, e.clientY); if (h >= 0) select(h, false); }
cv.addEventListener("pointerup", up); cv.addEventListener("pointercancel", up);
cv.addEventListener("pointerleave", () => { $("tip").hidden = true; if (S.hov >= 0) { S.hov = -1; dirty = true; } });
cv.addEventListener("wheel", (e) => { e.preventDefault(); zoomAt(e.clientX, e.clientY, Math.exp(-e.deltaY * M
0.0015)); }, { passive: false });
cv.addEventListener("dblclick", (e) => zoomAt(e.clientX, e.clientY, 3));
addEventListener("keydown", (e) => {
  if (e.target.closest("input") || S.sel < 0) return;
  const step = { ArrowRight: 1, ArrowLeft: -1, ArrowUp: PERIOD, ArrowDown: -PERIOD }[e.key];
  if (step) { e.preventDefault(); select(S.sel + step); }
addEventListener("resize", resize);
/* ---------- Start: find the ord server, read the onchain config (Parcel Globe link), draw ---------- */
async function readGlobeM
  const me = (location.pathname.match(/([0-9a-f]{64}i\d+)/i) || [])[1];
    const parents = (await get(`/r/parents/${me}`)).ids || [];
    for (const p of [...parents, me]) {
      const kids = ((await get(`/r/children/${p}/inscriptions`)).children || []).slice(-8).reverse();
      for (const k of kids) {
        try { const j = JSON.parse(await get(`/content/${k.id}`, false)); if (j?.p === "parcelglobe" && /^[0-9a-f]{64}i\d+$/i.test(j.globe || "")) { S.globe = j.globe; return; }M
/* ---------- Machine interface (AI agents, robots, other inscriptions)
 same pattern as the Parcel Globe ----------
   window.bitmapRings.command(cmd, args)  or  postMessage({ type: "bitmapRings", id, cmd, args })
 { type: "bitmapRings:result", id, ok, result } */
  describe: () => ({ manual: JSON.parse($("agent-manual").textContent), status: COMMANDS.status() }),
  status: () => ({ app: "Bitcoin Block Rings", demo: !!S.demo, tip: S.tip, selected: SM
.sel >= 0 ? S.sel : null, kiosk: !!S.kiosk }),
  block: async ({ height }) => { const h = Math.round(Number(height)); if (!(h >= 0 && h <= S.tip)) throw Error("No such block yet"); const b = S.info.get(h) || (await get(`/r/blockinfo/${h}`)); S.info.set(h, b); return { ...b, bitmap: `${h}.bitmap`, demo: !!S.demo }; },
  select: async ({ height }) => { await select(Number(height)); return COMMANDS.block({ height }); },
  find: async ({ query }) => { await find(String(query)); return { selected: S.sel >= 0 ? S.sel : nM
  snapshot: () => { render(); return { png: cv.toDataURL("image/png") }; },
  kiosk: ({ on = true }) => { setKiosk(on); return { kiosk: !!S.kiosk }; },
async function runCommand(cmd, args = {}) {
  if (!COMMANDS[cmd]) throw Error(`Unknown command "${cmd}". Try: ${Object.keys(COMMANDS).join(", ")}`);
  return await COMMANDS[cmd](args || {});
window.bitmapRings = Object.freeze({ commands: Object.keys(COMMANDS), command: runCommand });
addEventListener("message", async (e) => {
(!m || m.type !== "bitmapRings" || typeof m.cmd !== "string") return;
  try { reply = { type: "bitmapRings:result", id: m.id, ok: true, result: await runCommand(m.cmd, m.args) }; }
  catch (err) { reply = { type: "bitmapRings:result", id: m.id, ok: false, error: String(err?.message || err) }; }
  try { e.source?.postMessage(reply, "*"); } catch {}
/* Kiosk / ambient: menus hidden, visits a landmark or random block every 8 seconds. Esc leaves. */
function setKiosk(on) {
 = !!on; document.body.classList.toggle("kiosk", S.kiosk); clearInterval(kioskTimer);
  const step = () => { const marks = LANDMARKS.filter(([h]) => h <= S.tip); select(k % 3 === 2 || !marks.length ? Math.floor(Math.random() * (S.tip + 1)) : marks[k % marks.length][0]); k++; };
  step(); kioskTimer = setInterval(step, 8000);
addEventListener("keydown", (e) => { if (e.key === "Escape" && S.kiosk) setKiosk(false); });
  resize(); requestAnimationFrame(draw);
 = /^https?:$/.test(location.protocol) ? await tipOf("") : null;
  if (tip === null || /(^|[?&])demo\b/.test(location.search) || /^#demo\b/.test(location.hash)) {
    // Backup showcase: estimate the current height from the clock and run on generated block details.
    S.demo = true; tip = 840000 + Math.floor((Date.now() / 1000 - ANCHORS[4][1]) / 600);
    $("demoTag").hidden = false;
  $("src").textContent = S.demo ? `DEMO
 simulated block details
 ~${fmt(tip + 1)} blocks (estimated)` : `${fM
mt(tip + 1)} blocks
 tip ${fmt(tip)}${S.base ? "
 dev preview" : ""}`;
  S.view.s = homeScale(); buildMarks(); dirty = true;
  if (!S.demo) readGlobeLink();
  const h = location.hash.replace(/&(kiosk|demo)\b/g, "").match(/^#(\d+)$/);
  if (h) select(+h[1]);
  if (/(^|[?&])kiosk\b/.test(location.search) || /(^#|&)kiosk\b/.test(location.hash)) setKiosk(true);
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"25"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300.02"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"500000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"70"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"46740000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BAAI","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5084592907"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"8000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"76500000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"18000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"120"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"400"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"80"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"750"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"50"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"btty","amt":"2.1"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"150"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
/ViaBTC/Mined by ecgbtc/,
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2512137570921/0/19:sto:0
DjB0xbdf5d97a5b2d18dcd8651db96f955cd9ebad32f5addc624e9de411a49f5756d2
DjB0x86e221cd52d9f2cae97cb83a1f90934bc77ed541d9961eebb82e7f879171d67f
DjB0x90e09b62374f98069cc3b82fa74f0ec3286c91796b268eb98f022f26b026811c
DjB0x1594db22cce7edb28df46f819ca6dfa55f76ba015733c52d9c8f1adf900cb45c
6j4pyw:to:USDT(TRON):TLsfFJex8p3mjugxbAUNV1x5LhexX8pAUs
B9c94420cecc292d9ad69696e90aea110706a4bf3d6e22240196cdcf00d4603c1:0a
DjB0xcce20a5114a5d3086a70424816f01fd78a10e4d8e363e40a9f795595204cbd4c
GjE=:ETH.USDT:0xf1d99b62691c79454cb970453f90e914875d33a2:47671331733/1/0
DjB0x41be3ecdebd3fea5711efd5516b6c4c4429fdc10380c0670c563b3d1d870d5e4
DjB0x21c92e47b083d3a5effcbf48acd99df9f440b2503b4ae2dd96351b651a468003
6j4m9E:to:USDT(TRON):TZ8fptxzKRZiEhMrhGRV5adBdxGBvnQdid
6j4snd:to:USDT(TRON):THSP33APAQoGeLr9UCm86RBwJq83JpU8nD
6j4hsw:to:USDT(TRON):TBR1qbocj8My7Qg9GrPvrLmBzLtaaJ3gYS
6j4DiZ:to:USDT(TRON):TTqpcDHsJmpCdTjDkS6kv8cTQKb9KXwViV
B51abb508c666d897234b858f24668c058797f278e606484122ba30a984d3e262:0a
6j4z9Z:to:USDT(TRON):THKZtsLbjv5f3x8bPMHzzfwxPzLAEmP9gY
6j4ICR:to:USDT(TRON):TQca2eqaFcuTC2AGtgDijPcnPy4krKL84b!
OjLL0xf39fc9a0306c7f7f03f271d36a764f7d63a699387df96dd245266f1bbcd4cb06=|lifi
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuQ!
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuQ!
DjB0x431f6d494a451d970cbe0936cac2880f32ad5124cfbdc2462a3289eaf38e56dc3
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"2000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"57000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"3"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"bt
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"bt
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9352622222"}h!
+j){"p":"grc-21","op":"deploy","type":"ord"}
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 134 134" preserveAspectRatio="xMidYMid slice"><title>Blossom by Project Goose</title><desc>A generator for a low effort generative art project using geese.</desc><style>.c{animation:c 15.84s steps(6) infinite}@keyframes c{to{transform:translateY(-804px)}}@media (prefers-reduced-motion:reduce){.c{animation:none;transform:translateY(-268px)}}</style><svg width="134" height="134" viewBox="0 0 134 134" overflow="hidden"><image class="c" widM
th="134" height="804" style="image-rendering:optimizeSpeed;image-rendering:crisp-edges;image-rendering:pixelated" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIYAAAMkBAMAAACPa0XaAAAAKlBMVEUAr9cAAAD////0tq3R20dr3MVPrk/XS6gSY73wlD73z0bsZGPRLTWDT8R0xbMvAAAqfUlEQVR4nMWd72sbSbrvKzJjW8oZUNv4x4QryEyz9vHsLDhVjDryZF8sy/wDe8h7/+CURtkROBLjzqIY7AQcew6BxQO5yNwX2QQG4lf3IshgyCsbsmiuXqw34L6wp/+Xm6equruquqrVsjO7T+3Yckuu+tT3eeqpH93xIqTYNaeMTOY4xsspK6ACKpenUMHwXtlctaW9K3EARqFcLhf4q38Zh2jPXMcH4LC5K7u9glJG5DBevhyHAjMSx7UPyiEQwJM
geUx+AY3o5P4bELDumnL8OW5iOokdZ1SMypodpOBubc8hIfGYOqQ5Jj3K5PHYzXxWObXg6Tnksp6iSW1Q9eHrLo8g1u1vypw81e6jDNqdbMuTIzSFjFDS3aPnEZlly5A6Psjl7jIBxFTkk8csolUnjyU82K4q1185QOeRe2+aWMhpblsM2A8Pca4aRPVpSYyKtRllVg2cU2aIhbeu1I/HdFMXCwZszxEA5io7hjrHJ4WjXjZlI1Fwul6csapQLBj0KasU3c2Nk64EsY4IHTT49zF65pqthsUSOtBplo1MsIGY5UhhWPaR1aQEVsNREWVJD0yNTDqJcNKuRngulKEhFRnxVMWICMcnhWDEsZkgd5XJZT2yZ0ZFOYcwloyzCUFmfWSKKQhrCBqI3ybUYCQNpqbRcTsTQE33BNsPIDrjmRDYKRdKwYgUdYOhoSdloFGaM5G1TejOokbKRXGKmMDYuqaGBfAAtTBjK+5dRY0QlUhxDmreiXFICA4fpnVwIEseVMMwcI2M
gRc1zGGcM4DChZ9gHkSCWxBELJF5kgH0AOZJZDGqpD1UgvuC7LYYIojKbHVTEsJ0DD51eV46peMZ6w5JpfFY4rUyBk7sloevxClj8+8gTxh4L5ZzQ2FEJRpKB/Igsx77lNlsFONCuhj5Jrc1uG5/PZL4mBTJOdwVEfVI+ssWDYu1xNkJvoJjHt6bJqsWhxVceYtpWj6nFFjptakZuz2y+kh72xK0B8MI4hiDlwRq4XXxohATEMmJE5RjN7jtAU+iWbtSd1lMq2H6R5eQs1HMCIkuznrs7BdvhxB4ejyIoo+8rLrhAzDxsyZw9Zj7J88HBJElGpJsowFCLpkdi1kUQx37iKUPQDTDu6MU5HPxYzVcpJ8kzsRj24XYUkDrzUIeYwdMvp4WXiRE3aiEuSqcjQ/GG9B5KNoc4e5fI0Hu6WIfnUmb51JQghiSmPmKc9pTppZTFSjFjmUmTOJUYUW9Wj3Cq1zuYgyFAlNA59pTWKIDYOZLlNZtLja8V+t/afX6dt7eu1NcM
PlyNBHsRU+Knw0MzP1UeGjlDkzM+mLsWkca0aOr3+XkwMwCjMzToG/UpvKzfH7L20cufX4aOzLj2Ycc4MfRA8zXppDbq+glBE5jC1djkOBgevX8nLY4uB3Nn8Jju/kMjMjXrV4KbQKrY9a5LsZR/2cUnJxkCF6aBgzyU8tqTgzdozvFA5rt4dxyObMzIhXLSiRfffdzNR35Dub5eOA6yQnR4wRo/Ayo7yRybFmG56Z4aFySM0lerQ/a303MzPFrgznMMvx+y+HpDErh6IHXLdBaBwZcuTmkDFacnFmZpSf7Rwghy2r/6c9OnQOR65ejo4WsWPIHJeV42uUVC7kaKUKiw7ZNJSEI2OwZEbp118judfmQcGjQx7GmiKIRyLDMPd6KMbXCEYEbrXux2MircaMqgZDUTh+Fathbm5N4vuVKAYOsPtxr7UYmJlxZhQ10opEfrHJsaZdT0FIHDMzM1MWNWbiTILNIIj3LxfG77/M1OO7GePQvM+DJp8eilfiMfo7XQ2zoUM
SOGIHEoetEeLqpesQNputPYVjjIxmaemzMSGpwlMgxpvxhDNK1tBrmbIbkKEhFRnw1pUeKwyTHmgHDYjyfzjip1DEzM6MnthjCpEc6hTGXDMsbCseMPrNAfDrqQFbUMOihN8m1yIth4IikiK9FKO0vGU56hok4NCVMPmFpN5NDNscQL0P0WDNZTi0iDkfnUPUxpTedw0SR1yWCI+q/CmFoXFJD0+OKWjCOGZXD0WfdoWoYOEZSQuKIZbgblz8MKXelgi4ngYlD76JNCYMasR5XwYg55P7hEbRI9FCdkbUWtXI4M3rVacekPxEXdHU5vkZ3AeSuZn+Akhj72W7okrGZ0mPGpkbrD62hagg9robBObLVyKXHFTEYh6FqBSUTgnNcyivyZIMMGCY9dPuPL2WOq6oBHMYujqbH1TG+RsMgMuODv/NLcagwd4eF6S/IYVbkD/on/ml6aMXy3ofhyPB8Pvswetg9n9LD4KgPqkfWWMijykgcv5JKPj3u2rS4EodA+Rfr8SM
ut/Ev1MFkOPYYq8ovmD8OI+VdwmNLYv0gPcy41hPCH5TAqkAXyYfUQW6gMlAy1BMdaZFfnYNuHqIPQxH98lokiK6LsK+UVovWUIZMDtrb59bir6PGf0pnHpVRBcaWCRtYkE0XSI6nud2lRRuOQUKZG1kOpcaRjMYMevE52BDF1aT1kkkz/6PtfJFULFU8xVZxMCJKpR4Iyuh5qrrzLJclUZGj+sN4DyeBIJW0tSnTDWv4wV50NojkGmWeOu2zgZGdYsx7SymKUaEWWKeyuOZcYUWx5fcitUo3DYiDIUCU0Dm2llf1kQZoDGzCm7qbyiF2P/R257Drzuy5xl+Mrj/9959+JSz519nf2l9tV9dOioP3YDvYP9ufnP8F4Hd+OLz6+vf/oNr41P7+/v48x3TcZ2onsMXyZdm8tkNUdxciT5U8dZ2eH3CQ7Rks4MD7YP5jC2IPv+wdJM48w3p+fh28JBlY4ol499ty9b3bctktcvb/L+zuO85gsEkqia8SoxyOM9+g+xtM
X12/tpm59/hDHeJ0P0cMne6o7jzq4aerzrlEmbuKa3FD0e7c9De5KTkrI/P48feY++MWJIHDs7y+4O6G/meExci1skDvAMjjkUmP39eYxv43UzhuC4CT19vOi5Vg6X3KQWOd5zTO5PPsJV9pVxTLJS5OWgeADfJ6e8VlW8ky6Mw20vwDc2LlKtlHfwzu40casWivccUBGeug0V3sat2/NJ9QJlqkiK+w7GVoxJxvHYJTf5d6ecasUlCzu7zrQdYweN3Z6cnMQYvk4W8HsObkUoYAUPV7+ZnJ++XZy0GXq8DEq0q1z+NAfEhWu4rusxiVtV9j12i6THIw/cNW9VQ+ix85gwxzim8HhM3PanQzi4EEwQaG7ytqpHsUgwrs5/wq5Y9ICWlnfc9k0hx2Ny8/EOcaVmiOdSc/hKHGO3J3GBc2But3GEAgVjOm+FYBysPHaXEchBXMgTZPE9CIrLGDwmvJNReFVj1W8AYwq3MMYefLkNCAUO4szPFyflktaDBSPd2Z12l2M
FuYRHRdsvMXauWsEn7BWP8zeTkFL5VwK3q+HoVLtwqgru+KU4W57MxhB5j99sEOW77JnHJAqUUPQZHoceL7+caplOWGjtoEk+yBvHkPMZVQvE4a4qBFDwMr+chOmTTUODB/B30eIy0bznTN+n4zk3hqDHi0g3mHvY8exYGimJg6jaL0tgKHsbfsPCF61LYpjAmo0d7HWdNfSJ5zPVc9F6V7D/bw/91kKj7mrMmxkRUMAb3UBY1taJmEQJhHH/mrd6aXftEbW7MrY4Rd9WZhphx2T9n+LMo+j9u4PU6juPMqzGAb09iPDk5P4Xx/VsYF2QWUjToccvRH50HDG9sfM2Z9lziwn/LHMVgvGKMl+c/KaIiKhL2FRWWvfUaxuPflKdwFa9j3AJRSASCimgyLrx/aIxEGKKrMGaQS2YdxxmrUoiU9k30ZyL00Ix3c1IbEwVvCt+eLGD6DQRNcbwIkWwLVLQswkMLApfQVUTc6lqkEpmw/0klzlGeL3+CilLBmKICbi3Pl9M
nPRQCRHKPq4SLlHzSMufwbaVN0bfr9/Bs3Vl1N4kMzzJqdn/oEYVxERVxYhiYKLbw8WZ5ani9PCjBSlDEmlbLM5XAJYhEw1naFW7S/dGD+dzeCo4aKqDyFcQG3brFeQ7MYV8vMhD66qXVA49d4MBKXjBGuB0xtqdC1moeXESo7GLcgBKY89msY41W8LP4ZGXMTfB2rxU5RDVS45jiw0Nnw2mSJ1eESd8O9NZ2EDFPD+ke3oMlyuTy7XqUFjJfxtSKCPLo65WEsR4yihgay4bmrjuPMwuvpKmV/w8cl7to0eb84yicHKmBcED2/NktXoY4p3Kqulqfwfcw8X1RxkEkP4sKgLd0k7gotsZAlLnUcytyESjlKdRV6X4YIwcwV5XIZT9FyeXx1HWMWPUP1cEtjxF1zIEI8WJ9GhkrjG4ukvTJG3GEYCK8WcCviaAkQrs8qXELLNVURgx4UTX9KPnWmb7FAveWwzOrcYA3AlbHF4ZpUAaFcnl6GgMDLXBIkMmuBrUewqkM
gaZGENZhDHga/3yTSgOLx6UkIll6BpdxgIqq6WyxhPTS3DaFku32otK3+uZpkWvIKuiG4ExkqbRck0cWZdUlJsnI4Tt2S2sc/5d0S4TzzsYVpA49B7JAcnpes2x8RjcAFi45YL0VH9vFQiOkiJ3mPf9MuSsX8tN7sKIIBQ8MATyyoKz6dWNcS/25sWq9JSiUXJir1NKwcL0uUpjJ8jjKt4E79C1kJeoeda4Rywl6fXmAPG741ldN2oCxIYVUqRcAlfIGWPkLQexCWfl0pji5kAdiIEyRS3qs/R8wLowcsr9HL5VTEuTAldheck1sN1HGeDfK53dczqG5zWA4Me63ojwgkmCJICgvHijCRD2hjHc9VeQZGNXbEb+nQkDKPn0HK5nJY8UUMoEvfc8NnnyHFujMBhNJRSw6xHlqGrOoVxGKt+hSWUIRjPkaXuUYYOMkHkjg/+jo3DYsZhZOJQYZ7LGC+XDR9FpeMrFzOHWZFX+iciPa6OcZyth1Ys730YPTI8n8+EHiM
tX0+PV8+cvsMnraT0MjuJ6HB8fv1xxj69i6PmrF9jDWRhDDR0fv/TclVTd2NTgkVRkjlfPXywb9CCaIiZ7WUs4DBhWkxFeit9Dxy/w9Mrz43R5FZUcehD3ZT6OI61IeuCWMTpy6JFwuO3P5dZWPjcgZBvs52qSCi8w1vUYqghsIWU5Xi6S0TlauCq74wXGBtdk46D2AlUqJTcuocfKveSnF8d/meKvXpmKXY+kDpe406MEbcSxiVfj/sOS3cNmNTJCGJGFuL6X3iLZIENzSSqsEa4eRwq8wHCPsGbWQqlDVQe5iRzEJZS+HN5/PYIQvncDDF7jVpVmAcR1fH5MVD3WxMYa3LJwL/0bRkEUFFTlHGAYU14xa4RkoSiKKH8vZ0PGIO8zXA5xgIMTwBdnlt6QdHhRO36Bay9MEDFKzHHjxw220XZmKagSmcvuPUwTlk+MaT7mOD4+/hF7+NWxECXq5DFsMFsr+AXES8qdMgab56DJ4+Pjv3BRonH7Eu7lLpD28PHD6lM
gnK6ziGzduTK3c+ITrgTF+gavr2FpHogf0hUZj5C/sCIKRvPyUuPeO6ctoeGSkN86BV0Sl6x646JNXr25NeZjeA6CXK6+Mdah6vHSjwfojvcVOhKZdckzcVNAavIMFxwvsiaH4I8WYqQLb7XSQqiwMhEQcnive/fGeS8A/0157JdfQifV4gfEK79mPMNu8OgaOWvbgVfIHXHgZxcSGy+LhL7PudG4K4ZdXN0S11MMYvoNvMoftMXeYxBGLBWeE7IUjjxyLxXkV8Vwh5GiADmy0sIFjyaz6bIPkmp/dg0XAEQfJP98hpdKY40cAycZQx0ts9DgKWLpGhguScEjGnQIYlIXMUCU0DlhhfU7ESuvHe+R+/gWAzPHCE2pQ3MB45ZPcepwo9mbQf+MStyZfWyIu+WLw/lWtXT0xGTqI7fuD7w/6/Z/x4fph7UCyRzV8p98/ODjAmB50D9KWcPTgy5l7Z4E01GbIT7UvBoOTE7JEjBjAIao+rH1/8P3pIfbw9wzpIHrn0SM
E+6PcBh0Ytd80cPc993Thx227N1dupnZwMBj04y2vob0l6dA8O2HM5B/BcTi1qpsv+Yz/0+/B0SAqjq+nhkteNk4H71tTWm0GftHtu/NaBiQNADvr0gOnPnNTlqght+n186D1qpKTQOE5Oar0G6G/m6BG3Z3aL4Ng/OMDgf8w44qYeLx0JF/UxruH1A1kpnWOpcUJOeoueq3L0onh9M3BvL1m8AhzFg+IjXGVfGQd7FuegxMv3pe9LB0cHxVOvVRXvpAvjcNsL8C0aF6r1aePkzRlxzWOFcUBF+LTaKB4Ua7hV6yfVH3GUU9ooHZx9hsXVrozQZT8zjp5Llvj3QT/ViksWTt6cnVArxgkSt5HZrbcCfs/xvvJisViCAlbwatVGsf9zsZS6WRjfCGE1EZ4Z3gxSHD0CB+7a9d6SeHGQ6FHErSr7HrtFuKZberwCz+X0+/1EgeLBWE1xDOfo1ZhjBhAe/ztF0mt/YdBJ16PABYHmivymZKxHqQTP5TA9SkIrbl1NjxM
O3vSTk6JGl3gmRc0jPc6l5GCkcRVzoMg4YFrAGwREKFIxpP8MtEUfPZclqUIO1Me4tqiADy3BWOQrjDcA4xYcYH9bgZlgNEArFUvGoOPZFv18qyqWo3t3mudrt0ZM3Z24N5pYecWtu2+2DSxZgrPbuJG4RI1nJ8Px+OcaHjWLxFN8Rz+VQjPGdErirUSqW+hIGKaWVEfHxsE1OBm57ifLncugGc1TvhM01Q+Q4Qaz6Aj7ExT67C4PHu6XieJGBFDx8r1gq9iE6ZNNQBEePtO8M+kv09YkYCr0efy6nwTDkKE1Pdkj0s4ZrLErj8Ct4NZj9azx65bBNKYJE1uyTb7Vc6nouC99BejCnOPg587+NN6DX3SQGMH4GT46xqFnR7ycwZ8Yc3OE98vZbvTm32iNLjcEZxIxDeHDwogkjzsYhg/FeH0WhiGtFeOSjf4qd+3dqh4WVUunI7BieT2uknQoCt9rzTl5/OzjzPnWmPSwWR7WTtDGOsRWMa/2f5RFRqNXWVzAeb/M
RPcdVZx6SFV5AlQhDvX49oGJBFT5bI28Fg0Ks6sxvEfZ9EVT0SDn74X+yrQ7PgneJasYBpA4Lm2vg43OsXDEdGPVKxCLMKbZyQXvVbgdcgP5mkkDn6bEzETimxyCjAvMfxSkeFw0PbiEEsYb2JvdJzRby0IaHI82+1YdUDs2b7pz8Xa4eQOw9r0EQBHo/qn0LQRGiydYtF1S9MjiVywiOg7Qq3gEZDEkfMsVI8gmDEBUzulAoYi1Re7TNjP3VLurH2Ixq0VAM5zjw2r5Ie4Ys/t/1FbowTVGMpYlAjf4Lnck49p1ssdg8xbkQJpVhCpWINXBbdSErlj55bK74ZDM7i53J4dLgb7p2zJGTYkrBniRA4x230+/23/LmcGobEdujhxqmHsTyniAiNQBLPdIuo4bmNwWDwFio8q9KT/+M4n7g999szcE0+Y8/liJ7/21vaKF5znFPcqsJ4fYjZIiCBOQKcrqZHt4hqbm2pBw5YIm6Nnpy8+R+9Qc2lgwHsuQ1JPG09RBM
qFGihyyuZ7HhTklPb74411jGsr0RiS7EhdiYwh96RH3G8HgzN48qLGo4JHxmt4Lgdm36F64EYBt4ADFh4tAcL1acClYm2Fh2pXTvpqfNCTsy8INP8+THvuncGd95mLiGQCYdtbHKoJqoIU0DAEBO4ySUg3Smf8uRxZkSM+ghSOhW8HZ25t8D5Se+QNaZDeHXmUuOSkH8WJtmDsSRwNWIWdMjnWnzXutOKlMlihBs/lrCgzj1CDdKPPoepg0Cd80J6Rb9/qwfmavjY4RkViHKf48H/CcznF4jjGn7G6YxdQurESz8NHumO6kR6Dszv8uZwlnsBUs26fEg5wyduGeC6nyJ/L6aoo8njhIarlUxaUZxAJBCKBPZdjm0ls+30elTBWTgEADgr/hI+KonTjV1B+YF9Rt6gWzkGWapS+YQ543djImzcUjlO2ImzwJ0zHKY7UOJK06MaeUOXoFruMg8B+DobpCYuIpAV9L3NizKoIkulhq9otPlsHPXhhOpTi0oWfo/d+qEM
ladJke7mAw2GDbyte2/fxQPWDMnq6zShtJA8IRAMFe6a5QCiJ5Z7MTnMnRVY31XzZ2pUu6FkNv8mJk6FEDjFQfYzWEItl6DF2N5+BIqWHWI7IfagY9RlTDNPejNEYKRcIw++WqYgDHMIgkPmyf/OAciuYxTDfBsESqzGFbb8Vmy6fZbvlh5UiHkZWQ9LAn0KFoMYepn0eGYnnvUn7RuFGW521Gkpc/fB7FR9JrOVnlEQM+g4663UOcBIYkzdEPK2q/U6Eb6VGDFc3QpV+modoRHKlnOWaoIXb+lScKTqL9PqnVsPIL6Kh7SA6fmQeCWYsfVmTHCA63NnytI6NIxiIFdQ/xKaWX1YNwjp6bY8mVqFFL73LREW5VzWrY9DD4xW0vyBi1pfildYLVDBGMV6SmDzGOIUjOCEFEXQbm2Cak0g0iWJEj4UjnCcUZMkd7QT05J6NPvwjXGhJF93+dPmsYEDJ1Qa50G6xH3DO3mjtmY44/4YSDP5fTMKqREcKILCQY3iJpDNM
9GGvSoxpUfsudyVsxapEEkPZLuE7dH6SUWqYidOvDFEDyXMwTAiILg3FRsrF2yMLJPTqL9XD/axFBecQ4UWRE0kGxDw+jlE4fvo9hGe/CW9uXGV374rLZyaF+LJXoMBv3XGy6s2gdvqbrFhnsP/d5SFgLn6Ha7z7CHj7pClKiTXdhgflbDhyv2GTnOY7xJcWgon1+67R5ZqLWHzz1s/bHOJlyGclrr/8z1wBgfwt1cw8JY14Pt4KIx8uYMlGEkvS+ISynN45qIQ1S67oGLfj46unPqYdrIClVVj158D/s1vcNOhM7gSMrNG7SI5VCvxht8RjHuig0vzh4vmh49LzpseN1wCfjnzGvX8g8dzoFrvMZnGOOVoy5wrGSPGCV/QEUbUUzAczlwnvrWPcvJwNZjrNK+WBDDcznwHXwzJIOIgQu/h6T6Tk5oTyiTe9N7Itancd+e3QMd2GhhA8eSWfXZRlknVxtw40ecdOef75BSaczxDECyMdT4iI3GN0zptyS/IEieOAM
9xJAxlITNUCY0DVlhLRKy0XjfIw/wLAJnj0BNqUHwP49rP6RV7Uoish6/Ydhhs+wbbDtm3LdN7vlRHx+/4QfAP36+nqwgC9p0OqwMs8Le3THWEofG303V0/E4QAXW0ugM7hlLHVhogMs5BzR9Q6qDWioQeuThC/6Lu+y39U9shq8PCKep4whqjSXsdpfDrXnYdwuo2/bdZ3V57aB0PfD/4u/wmg3gQu8gmOVLebmkcD/i3z7Z/w7ziZdaxJYSEfnt+ogcY0wM+4knVxvZEroP3O0x1OaB1JseWgpbmCOKoCHx/UbwUKAGtd/zQ99tpl6t9iSwM0q092IL4oL5FjVQdPqtjse13nkRqsNgL/qGOoAemOlhvt8MwjuknCl4Y+A/NEE/8B3EdD8AzLByj3+Z6/Bc4KpDi5kmqGlHH4hZvTg/TB/x3xHjBoo4JvY6JpObgXdwVFhWdSJEq00PLKQJrM9Zj0X/A5DCMiJbvrwNfezH93pMkxhbFwA2eeCI+nshD16dBAqM
HqMfHkwfu+iGsek0Nu6kH8K0ynTd8SIZuxX+qAEbBYXPTbvj/X8TubAiYMgs5flXyiIMUxRlvb7yIgaNM5n+NVt+OwkQOL//qEWkedTQzwa3v1LerfdyqsuXrH73j/L+hABa2OnvKjOliNv4Ve8+y/Rb+he9EQnIAX727CW3/1OWDaNchnTfiLfivwva0F2tryOyLyO3O+/8cnfPLrJHZdj5SoL4TFIt3ierAoeUKd++U684oIvR0hxKasqO+jjn/d/y9WcRAEi77fTgL5vgOyMnfFSa1zvZMKWM7Rfhj4zfBdfFUKk4kIIyVF7CYEdW92OttbdTEmeGmLfLDKMVriY4AxycdQVM+Ej34SbVw0w4mk/QeeqKMeXpuD1MF6+JMomiFWdSeaUln6EjHAIvtTZ27C24a4kTyjKRKNOfz3j3nuYC6ZiATYajpB7IEJhgJvTGgcm6ziz7zgHx1PGRH1ju+36nOB3xZTWESxeR1wpTqi/skpzPPHxKsFGLJb1bU5hmXXg3M
EEf38HzW8yiOv+Ik/wHq0HECezW/WJiGPzeuc6+2TcaRGnEARyJz2x6NlqQl1ONCFP+L6XHjKCIwji6PjK67ShGUp85q2O35nrdDot378uQHTHcI7t8J2a0TcXfepvB+3t0L8/xy9V616kx4S/OSGwJngdHb8zMRH8d5TMRROLLGKCc2euw5JbNFjgf0l3Nn0xNzCneH4UVpH3fxPiMGw7loyu9AXcEPDhtg0I/5fjjAdBMPcu6MwlQzaJ0uu+PFEhX0xj7cghIoX9Ngw/5jk1sofqBJfMRIi9FBybfhBPAHXfP3fmIAN2/K+k/NHZjKJjYkIIwv3CUsRWXc4R9XihHzUevzmhjxf28SC4gGTehrq5c+qsFxApHRkCojSJDlEV2mCr0vCCdYmtttlbTQfiIlo9eYupSW5C5mixaJyAueiCL+qhX2vOnL/t4xaPmlZnk4+jTmczvQCI9OA/UbYWCic2aRhWFfHbqdZjhTYRWxHWA6Hf394twsuABsFWHebJ6wDQ7vM
iLIkylNAaRvili3fP8VbbyeOjBQjn8WxiyiZ7Vri15kuYnEhDkCw6PXwn+HnhBEHiwmFlXlsxJ2ezwGiKVEfWDbX/7b0KRj8NtRhH42i6m5duWH76Ptlj/AyYIz8fspTrBs1BNpjkv6qLoy2YTGg3DvwW+vw3TvNhDtqJ2LbuwiSRu0VYdkiB3S32r/pvolyJw2korMqG4fRO1o1m97Qde88Inmg9otKXwfPP6g3NEmzjaTnrAGvR+7X81DtsGmH85wvXN674YuBNJHc1Q7PEXld18vHfbqFuaj8MEQThc6Ds1tqi+rsVEajUWqYLicFCUZC88/69R+tbjVQFDAY+NNveHx1YMrNGW35mQQFqdiThqNtXakBgcHq1u8yrqrGPmfRenmdAW9YgN1HZ7qwq76DZoSVk3E4RWm81Apl6IOhiGBw3XeUvjq0YEzeSqEAsPb4sN9YcRcTI+onzR8Sc2DRAsvyM/fBfWWRLha9O/ptVYlLSAF5vqzz7yIUA22Gvie/5Ei7M
lc3mY/3DRuoKS+SJu4KDhk2U1TrbZbmEBs/Qm4/MPQi19HCG0uR1sKz021Il6bdOQUT7m+vDhIXptyKydahPh0YwhegTLZK2NkQnoRzXNisHhxRYtJ2tyUvysUE/IrFMRpy4vyT0tfcZh3tkkdyjpsUfOK/ukIzVMgUcBbbsO1h37iYYHy1RAM7tuo4hZQbKZPSsRKxeYU5fxjUaJM69ExDlmeYdQzFI99zqKIXkUyv/Csp0a0F0XI9QiiY/zlzXiNO9z0BZhm5jrYfBIvNwBGW/5MRHCwOEKprk4YX/oZkWPti5TSJ65rmmjzr60O01rDuv7wv7JjDLFNoVUuv1gsUhGxXmpqTSQocolMippMPdImDVvNkHVQppq3moXDHJc/xaWncDAM870IkxYmLs5hOcC3oOi4iJ32mm4kGPXwNZSvYo58GBxB/irpYVHDrIfFLxn3O3IZYs2ZVk45IezxMSrHljw92lCycBC/cyNZ1t0aK4ei6LY48k8N2gwQvY5giJdMvWM
Z1KIunuE4VQjbYUkhgyN9Sqr5MqKA4NjqiDvmULAPEl/VQWqbUeock6ayeOtFiXWwqfX6HLhvAiIL8Zhj+dygWqZcbOWhrI4jM9ylfkuZAkRVB4W/C3/ght3oejHSEwD7qr+zMOAgvaKA3n7UWS/R4FwZVfngdXtAw1DWPF69ZeoCSns9uITOLOqn0PBNDzh+/DdU9pm+fNFIcreiY1g+Cd54fH2D6Q5wdgbA1XZJBtoPkbGgbotZy91nnWPTb9ajSr9hdGP8fnQ7UBjv9LNckeixKntii29uJJnmDNtYUmvs19KrNQ3ZryHiR4wN+arc8PlqZhOK2T12sfLPPTmUOXuMWe8VOZaRR0zbAqPmDHW2Jd4QC2xdRdrduZlQOCNKAHcZ1OlQQRcfcbbsiHb+zaJzn4nAI1WP/IRwtKRNs/TG+R+nBwOE7XVtR9YhS6GvY+POVBfhmWPsxB6vyIVvPdNp/TBwUBBkIKkp0/yWWg3uCbvhZT3zoHNDvdpQzImG4g/hO19M
i8L9ZiSZwuetI66ycWr9s+Py/PESHivkdLpC7+E/X/6Pu+yCPt4Xo8VWzXqezOUqpefOrsrTnwfVZ/gxsKYwvCIKxU5iqQmjVzKpUwDM8N74BpHI7j7NFmqqVdBzgqRgqZAzCCSsW5oOyV2hTjqJgxZI7dveZTx5ltpjGADzgMhJoe0N2KM2tsDDjOL8wYJg5DS7tO5enTXQuGzAH9Zf2O1YkLu165aA7lgP6yfps5dvfMFDpHM+ZQYIDjvEItGBFHkwtCrRxOpWmTQ3DwADyfpboebF0CejiWGE04xECo0LU0B0TFrlNJDSKdQ0h+PtuU9BAoFdoMQscWowmHcD10O63FU8o4rBiC41y43lH14DZHm2FlTh9BaY6n1Mrx1KHUeF3jiIakEh5RdJyHtJK8cW6ND95dxxweFZljt5L6TMQhMCoKRCRISJkeTBHHsXHAmLXIAdepOXxVDu6YilGPIKzQSoZbYo4MOUxvKD/LHByD/2XIOeESBuJUKko+0TSJ9aBMDtM
ZisykyF5cprdOu+mPEETIOqJ9ewB+7aYbnQRicXzRZslcx9BiROICBJtaMOSw6OQkHr3oWcmkFfvciDMKLsE7r50F4flHnk18cK3FGkTSJ8mmFQq+pnDN3aZNxOMawkTRBSZZQo4Ol19hdctjygD1Pxk7Csab3urL3dPdp04IhWBzOwe38oinGRFxmKZ/6AEM3DiA0QR+LKmfX9CCAkNlrOhLHx6JoFnPEvY7mFId3uFJxKudO2jHnqfiAWNTloMACf7WWQgzHKKoWMkelUplTg3GOQnw0K5VZSmk9cDQQOT54/9IYu1ylOHghLG168GOHMDUm2PR6zmfg4OKC0mBODVRJDz6JpoOAT2+z0cTXpHvydKvmj0QOdWhe0DCoOBFeEAS0HmM4jgKCoolFl4MnFOnye45IDz1/0GhdKscGT/SVChtC0hIgCiYtfzRVOXaT6HAcc+JIzy8iQ0C/zx0eFTw6GEUlBeE4yXiJ9eATixgWu0/FCoBTGDB204MYXUAcVJxKGFM
6E9LxCaZTnhRrSPMO10KMjDJHD4sCZZcHoPBXLDAiM7Mle8UuTZTCoI1y7aHI3wYLIUQeynk9VPWBV6sxyZ3AMx6EjYDxFF+cXFyKVns/yJSgk+GZltilGZqDipDcViDbjVFoBNZiP4C8602Y6Eqx6nF/McidUREzA5qFSAW2cnHrAgkv8jW3qJPb06R7da+YiQbQZOoIjwogiowkLQn0LYdTjadx0hBO7ZI82d4dSgF+g/0IOp9KsKIP1gtadlCIpECQ17vDolEfJXh7ngG8FB6zrm44661406flcthphiGYlDLo2q28c9qh1+6RyMBKnQi/Ci+a5FpwUtg3ZjmF6gAy7fLDsNfVRYt0+JRxAMduk505IuQBxsjQ1b1AD8gdXgu6tNXn/UyDD9RChQanYQl3Q84oVwQwiOGBO5SG51xwZBEWRAbERgZjUyDAkMEAJAZKxc7NwNLlfoP1kH61ljCEgiC10mpcDUDlYfdJ+Xhqqw9SAOLXuWvJzUH15nFJjuB5Xx2M
DxYahaT1zZeuSfzrI4siFygKArqwEcxqpH0+PqGMq5VJYeZhT+zi/FocLkyB+/GIdZkUD/xD9ND0tO1a5/GI4Mz+ezD6OH3fMpPQyO+qB6ZI2FPKowDsOexGgfS0XXw3Y4atHCxOHkWOvIKCY95qiJYyQ98mJ8rBVZD/tRcW49dk03XEYyFJ7T+lUgGEdl74oYT1FovuFiGjFWjl1t+ZM3ZmWO81C5nXEujvyNK1Mbh3aTqTJCzMYc6m2V8wqN7/bY16caGFLk2M26vWHniO+rQMVzITUrYQKR4kPqvuFWZS6O2eSgI5y7MGFkxI7giPeVGTcCc3Kw7cMF5RXnQJEVUf5/rIy3KnNwJDt8OG0Y5hANJeao7AlJZtO353KtohHbS1bEGRkciAWJJudOBoqkB1TETxeSU7IIovKU5kkubP0R7eA4SbS/d0K482BOcqoeT5OdXITCSZw9dnybxy+CQ1RK2RHEXBCcO/JOf7geCcceFSQgRe6gjfVgDV7QOaaKAyfI+eL
Mj8Ut06gAoa3SEmGXxQaNj/Iv6HDvknoUT9cxgVfMHcEQxQfmzBLuz2TfkTHoElcgta7zmSup82QSi6BFb7KCRdptIrvCifh6NFjZwrLlVz6eSjb8XRqwsRtluIqXSenRP4SLU7z9koCgcNH7EI313KpNDMhrJcUHrIMhQJTQOtsbaFSutvabtXu4wDhgtnIfW50L9Npkd6P8DHSo0OX3jEFAAAAAASUVORK5CYII="/></svg></svg>h!
SODA group: twins castlebot
pwb1:post:eyJ2IjoxLCJ0ZXh0IjoiTGlzdCBTZWFsIGFuZCBjaGlsbCB3aXRoIGEgbXVmZmluIPCfjLAga2VlcHMgbWUgZ29pbmchICRXT1JLIPCfmIEiLCJwcm9vZlNpZ25hbFNhdHMiOjU0Niwid29ya1NpZ25hbFN1YmF0b21zIjoiNzAwMDAwMDAwMDAwMDAwMDAifQ
JjHpwm1:m:List Seal and chill with a muffin
 keeps me going! $WORK
pwt1:send3:d4e5ebf11d104d6a63fb74e42094364b25a5f7199a09e5c0e71408972466a8b8:70000000000000000:18xvbj6mpPpYYjWibcqsXdV7SCwBQNrqMW
pwt1:list5:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11cHl5NG92LWQwNWZhN281IiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IiIsImFuY2hvclR4aWQiOiIifQ"
pwt1:list5:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11cHI5YzQxLWdzZmswcmR6IiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IiIsImFuY2hvclR4aWQiOiIifQ"
pwt1:seal5:595ddde368498605c3648ba05aa50e6d112c85b51bcfcce9189eece28cf9ccf0:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11b2swOGJ2LW4xc2YzdTR4IiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IjMwNDQwMjIwMTZlYTJkNmQ5MDU3MjMwNmZlMDYzZTQxNDkxY2UzY2M5Zjk3MjdkNmRiZmE0NTY2OGJjOTFmYzJhNzhjZjZkMDAyMjA3ZDljMTcwNTE0MzNhOWE0YWZhYzEyNzA1M2YxYjU5NDA3M2YxNGY1ZGRiNTdmYmQ3ODFkZmExYWEyNjk0YzNlODMiLCJhbmNob3JUeGlkIjoiNTk1ZGRkZTM2ODQ5ODYwNWMzNjQ4YmEwNWFhNTBlNmQxMTJjODViNTFiY2ZjY2U5MTg5ZWVjZTI4Y2Y5Y2NmMCJ9
pwt1:seal5:1d624265394471305678e6a8874a6c296ef56cf55f334d8858726e826f7e0823:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11b2p0NjdhLXk2cGZpOGsyIiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IjMwNDUwMjIxMDBjMGJlOTEyMzBiMTk0YjQ3ODUzNDhhNmE5YzdjYThjYmQ4ZmM1NTcyYzFhOGY5NDM4M2VlYzYyZWJiNDdhNDI1MDIyMDcwODY3MDk2YTQ4OTVjODM2MzJkODgwMzg3NzE1ZmQ0MDZlZDM0NDEzMmFhNzJiOTM3MDYwYWEzNzI2ZDU2YWE4MyIsImFuY2hvclR4aWQiOiIxZDYyNDI2NTM5NDQ3MTMwNTY3OGU2YTg4NzRhNmMyOTZlZjU2Y2Y1NWYzMzRkODg1ODcyNmU4MjZmN2UwODIzIn0
pwt1:seal5:23b9ac46b878f067aa2ce98b763e88e72efb82a92040b3bf18f96e8a93a159db:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11b2p2ZHYxLWZ1OHBldDUyIiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IjMwNDQwMjIwMjk2ZTgwZmQ2NzQ5ZmIwNmRlYzkwZDZjNjFhNzdmZWE0YTZhNTE0MmE2NTI0YjJkOTQ2OWQ5MWUwMzZkZmU5OTAyMjA0ZDk3ZDc5MTFiYzM4MDZmZDg3OTVkYWI3M2FmM2RmZDExY2VkMDJmYTBjYzU5MzY3NzgzZTljZWQ3YzEyYTZhODMiLCJhbmNob3JUeGlkIjoiMjNiOWFjNDZiODc4ZjA2N2FhMmNlOThiNzYzZTg4ZTcyZWZiODJhOTIwNDBiM2JmMThmOTZlOGE5M2ExNTlkYiJ9
pwt1:seal5:26197039d32f4438b722194d1448d9f69b3acba5000d9911985470a6bafa8f07:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11b2s0d2V6LWN1OG5ldmoyIiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IjMwNDQwMjIwNTVkOTc5ZmU2OTg1NDdjZDg4YmU2ZTViZDMzYzI0YjNhZGI4MDNkZWI2YzM1NjM5Y2QwMDIyMzVhYWFlNzY0MzAyMjA1MGFkZDE1ODdhMjI2ZDAxM2Y0Nzc1YTgxZTAxYjBmMjViZWIzYjg3NjI2NWMxN2UyMmEyYzg0OWYxZDZlZGM0ODMiLCJhbmNob3JUeGlkIjoiMjYxOTcwMzlkMzJmNDQzOGI3MjIxOTRkMTQ0OGQ5ZjY5YjNhY2JhNTAwMGQ5OTExOTg1NDcwYTZiYWZhOGYwNyJ9/
pwt1:seal5:5c880d4bc8742b76d583805b530eeb0e12eb05a7bd23995d3acc78205d6a08dd:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11b2syZDdiLTNscHJheDB6IiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IjMwNDUwMjIxMDA5MTY0OWUxOTZmMDIyY2Y0N2RlMjhjOTk1NTBiYzAzMmEzOTM3ZTEzOTQzYTYwOWZjY2ExNGVhY2Q0NmI0ZDMxMDIyMDVjNmQ4MTNkNjM5ZDhmYjRkOTNhMGRhMDNlNzFkY2U5OWViMzdlYmJmMzA5YzczNjAzZmRlYzgyNzhiN2Y1MGM4MyIsImFuY2hvclR4aWQiOiI1Yzg4MGQ0YmM4NzQyYjc2ZDU4MzgwNWI1MzBlZWIwZTEyZWIwNWE3YmQyMzk5NWQzYWNjNzgyMDVkNmEwOGRkIn0*
DjB0x004a2a2d9a1c54c8d800fd9775c6d24f416be1ddb59e6d7f97c45edf68d5a125
DjB0x78fd82cac9918a03ec9433d7217669dcd1207af38bd9930303c10da872a176e4
DjB0xb413d8ebabdfc3bfa055a838913ac7afdd4449977f417c75770f3a18c1523765
DjB0x2461f4a506a07d77c765a26ed0bb0a27f7e0b7f5ad8dc2f6a461d666b5303f26
DjB0xbcc1ee50dca31c6b0a6f7da5a007004f8d04319a62ffb1f7b96dafc533e874f3
8j6aMf:to:LTC:ltc1q0enhfxpq2pznp54y7rp8jzh03fmx9apv672se0
?j=dmI:to:USDT(ERC20):0xA82880E5a912b0937466A013C9B4E08C956BFB5fm
2j0to:USDT(TRON):TQBdvwXzYaT2LvpxGqRZ7sQRddDXBYG2dR
B5c5e0112f59674f5c4039fc2a9d272fe422b42e10e07087a8f4434e75fc72f3e:1a
text/plain;charset=utf-8
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9352622222"}h!
7{"p":"brc-20","op":"mint","tick":"rtzl","amt":"210000"}h!
7{"p":"brc-20","op":"mint","tick":"nbzc","amt":"210000"}h!
pwt1:seal5:11c71facadf1e7d11dd89cef6e46d8e32bd1cd5ce9f64c193b6e75d5f5247a1d:eyJhbW91bnRNb2RlbCI6ImNhbm9uaWNhbC13b3JrLWFtby1wcm9vZi11bml0LWFtb3VudC12MyIsImFuY2hvclNjcmlwdFB1YktleSI6Ijc2YTkxNGJiZWNmZDcxM2VkODFiMTMzMWU4ZGVkNjFiZjdlMTFlMDMwMWYzYjA4OGFjIiwiYW5jaG9yU2lnSGFzaFR5cGUiOjEzMSwiYW5jaG9yVHlwZSI6InNhbGUtdGlja2V0LXYxIiwiYW5jaG9yVmFsdWVTYXRzIjo1NDYsImFuY2hvclZvdXQiOjIsImJvbmRUcmFuc2l0aW9uTW9kZWwiOiJjYW5vbmljYWwtY29tcHV0ZS10aGVuLWJvbmQtdjEiLCJibG9ja1NlcXVlbmNlck1vZGVsIjoiY2Fub25pY2FsLXdvcmstYW1vLWZ1bGwtcG9zaXRpb24tYmxvY2stc2VxdWVuY2VyLXY0IiwiYnV5ZXJBZGRyZXNzIjoiIiwiZXhwaXJlc0F0IjoiIiwibmV0d29yayI6ImxpdmVuZXQiLCJub25jZSI6Im11b2pua3ZoLTAwNWoyNjA3IiwicmVnaXN0cnlBZGRyZXNzIjoiMTYzOFZuNkt0bUs4cDVyNG9HdkFYcTlubVpiMWVtVTFEViIsInNlbGxlckFkZHJlc3MiOiIxSjhmR0U5eU5mYXFCamRITnhHd1d3VXBmS2laZkxmR2c4Iiwic2VsbGVyUHVibGljS2V5IjoiMDM4NzIzYjBhNDhiODBmOTNlNDFhOTYyMzY1ZDlhMGZjYmFhNWI5OTFjMTcyYzM1ZmU4NTBlMzhlZmYzMGY3MDM1Iiwic3RhdGVPcmRlck1vZGVsIjoiY2Fub25pY2FsLXByb29mLXN0YXRlLW9yZGVyLXYxIiwidGlja2VyIjoiV09SSyIsInRva2VuSWQiOiJkNGU1ZWJmMTFkMTA0ZDZhNjNmYjc0ZTQyMDk0MzY0YjI1YTVmNzE5OWEwOWU1YzBlNzE0MDg5NzI0NjZhOGI4IiwidW5pdEZhY2VQcm9vZnMiOjI1MDAwLCJ1bml0TW9kZWwiOiJjYW5vbmljYWwtd29yay1hbW8tcHJvb2YtdW5pdC12MyIsInVuaXRXb3JrT3JhY2xlTW9kZWwiOiJjYW5vbmljYWwtd29yay1wcmVmaXgtYmVmb3JlLWFjdGlvbi12MSIsInZlcnNpb24iOiJwd3Qtc2FsZS12OCIsImFuY2hvclNpZ25hdHVyZSI6IjMwNDQwMjIwNjNjZGQyMTE4ZmNkZDk1MjhiYzQzMTZkZmQzZTNjZDI3ODdlZTM0NTE3OGJiNmVmMTdlNjdkNzAxYzliNjdhZTAyMjAzMDM4OWQwOWUzMDMzMGFhN2Y4ZmViYThkNzY4MzFlNWVkYzJkZjY1M2RmODA5MDVmYWJhMWVkM2NiOWRmMjM0ODMiLCJhbmNob3JUeGlkIjoiMTFjNzFmYWNhZGYxZTdkMTFkZDg5Y2VmNmU0NmQ4ZTMyYmQxY2Q1Y2U5ZjY0YzE5M2I2ZTc1ZDVmNTI0N2ExZCJ9(
(j&SODA #8917 - #8918: Drawn Jun 24, 2026
dnamejSODA #8917edrawnlJun 24, 2026dseedx
twins sprinkl - panel 1/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
dnamejSODA #8918edrawnlJun 24, 2026dseedx
twins sprinkl - panel 2/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
/Foundry USA Pool #dropgold/VI
DjB0xc852ddd41b5b8c90f27a2102058876cdb581bbefee555688b3c1d8fa39c5a917
8j6from:2400USDT(TRON):TFfDg3f4wB6xLWF6ed4gjRPGZhoeph9PZhp
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9352622222"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"RTZL","amt":"1"}h!
     Mined by Secpool    v
DjB0x93edf524d732ae841fc6225fdb7317bf94c0dc4ca25626663fe78ef9603a3ff0
2j0to:USDT(TRON):THy732k4Lspj6eQhs64b1Z7enaU9787718
?j=ytc:to:USDT(ERC20):0x4AE6a33bB1b85B077E52b47145C73024482Ed950
DjB0x126b37b516bc93f51b1f0a9e73b84fccb4e647795621aa566396c9cbf1f3692c
DjB0x649c30c085bb5667ba4503b7869dedecccfd70e932f9a48aa837842c0efe6379
FjDOUT:5D81F4F5964A8939F741DB7F810222FDC0D898B406E6673FF7DBA7B05121A95D
DjB0x085c348778c63de78f047edae4d5076e0520352f2bfd8275a4c0c8e7764cf66e
DjB0xca78771ccaa3bd123dc724184dc8a096bb8290a2830369fbe2e2228bd38f91f2
DjB0x2166f2477b81827da7960652cdd30ebcfa233abde85844bd750a984a7896e060
DjB0xba25db94f95f4c4aa02e562564174c1d5c30a66f1d5b7f04596f2d3eb5bfca57
DjB0xe6e42274c00a69ab339761bfca236bb3c85404ebf7ccebd976e5bf430aac6c88
DjB0xadbb7b4c8c6005f3c173d68b43fa0114c34b925546cbceba23cb5f12bff0c93d
DjB0x163ea44a37028557dd53b97693624c0418034ff923bdc9b5763a2f6527b64c73
=j;csb:to:USDT(BSC):0x4C2be3CBA7094697328de3b4cd490ac9bE03D740
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"400000000000"}J
=j;z2T:to:USDT(BSC):0xf7299805120ae72F9A36F61e44Ea94952c2C0e6C
=j;dzx:to:USDT(BSC):0xe9E6a5eB89B66328662c029ea1b01e78B6ab6a6b
6j4DzP:to:USDT(TRON):TQ1FaVxMFu7HKdt1hLGdNSoHQeHghTM4ns
6j4TUK:to:USDT(TRON):TMzENc3cQTwa8NC4H6NtJRYo262W2XzCSv
6j4m98:to:USDT(TRON):TWsHhxRVRbsN9SsTqYEdsjvC19i6JAr8Bc
6j41Zd:to:USDT(TRON):TRAjQJCcALG5yxoshYDtQRHed1jRXs198T.
6j41Gt:to:USDT(TRON):TJ6DiJMVtmh6bS3aqenjfKUc2YrydZTej8
OjLL0x034b434f08aa939ae880ebc01229a68e9a10381f438d36858686e06dce5a0a96=|lifi
DjB0x0dfb46af50039c18f95902f5d052ff8dfc1fa9fb77e25a6c244a0634274ce944r
<j:=:e:0x5C57b32E4B760fAD01E5d7d8b835D9CA5D60fc54:0/1/1:ej:75
@j>from:215.8USDT(BSC):0x9153F82a19678E4D6F8D267b746E897D32d94697
Bf6b2ef9be51e5bcf697f5a54695b821b3089dcc7d1f9f67360fdca1aa88c2219:0a
B72897fa3dd06a0a254e365c7f8d95c64b427088259852899aff3195ece29de05:0a
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"ordi","amt":"39.81"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9352622222"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AI.BT","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"20"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"30"}h!
/Foundry USA Pool #dropgold/
2j0to:USDT(TRON):TYusYEho97SmVw7nwQa12HhU3FjgASTFtV
6j4xqJ:to:USDT(TRON):TLFLPZwi3hBBU8XBQi4n1K2jBnZXg93kfx
6j45Nv:to:USDT(TRON):TYn8UVNxJR5JtWiRZ9xT5Qyn6TRAFajz5g
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2508608293191/0/19:sto:0
6j45jy:to:USDT(TRON):TVHcj2irUugfTYqQpGMWwhjuShpFUxaTSk
6j4l2J:to:USDT(TRON):TFfVcKXewEYMA3zQ2KGYmXf81mKJcdotGQ`_
6j4GG3:to:USDT(TRON):TWsHhxRVRbsN9SsTqYEdsjvC19i6JAr8Bc
6j4DQQ:to:USDT(TRON):TRAjQJCcALG5yxoshYDtQRHed1jRXs198T
6j4eWX:to:USDT(TRON):TJZtZjgsve3b6cGSJZcFLVFonWwFnt9Gfs
6j4nBN:to:USDT(TRON):TJG6bYemD7M6VQjWrbwBuXregWZu2dD8r7
6j4yK9:to:USDT(TRON):TXXgECh7sZHyeKjEmM1BZewJ666b6U9wG2
2j0to:USDT(TRON):TRFaxBzLqFLsTtLJJXRy9nUKbma9J3bm4K
DjB0x7b1e6fe4eefa12dc671ceb461ba58d24511d869dcaf009f64c6a8ba2590b4fea
DjB0x2229c1d51ca272eba5effdcf385c8037bc008c8fb2d1b4bb21d47660e5be5798
DjB0x5d63fb7e4dba50b93cfbfe2b700de96443e8045b45914b29234380c727eb796c
DjB0x0f6167e4c7412b2ae9df66b449ee256b277d4b6f4bd8920e779ea553a053162a
?j=from:20USDT(ERC20):0xf99505464d95953A81776E3Ea3800eD48A9fFcfA
FjD{"p":"crc-20","op":"transfer","tick":"BCAT","amt":"600000000000000"}J
FjD{"p":"crc-20","op":"transfer","tick":"BCAT","amt":"500000000000000"}J
DjB0x0bf047bb43d6aa61de60bb924c9a9cb3eb32dde77344f28baa4a923d0deb1883
DjB0x3dc750c49eccbab095a518a07be0e7ca6726c8042865cc4db2acace2271e1b5a
DjB0x2cc9abdbc356c8f19aed4a6e44a7bc281ebdb227b67311ae8c45289eda0239b5
DjB0xb53a2706c80caca378892f1e490f0b384137428da83814de7d3f1606fb30144e
DjB0xc3933aeb94b062f2b8d3c8a23685771e2da6cd87679af7667ebaae714c619a7a
DjB0xf5fefca1aa205dd1aa160f510de430ea5035d9780f9193bda7bb43871cdf1f26
DjB0x74d82989f0a7594e9a9b34b6101b684d2d94f9e2e6d6b889b382951e44d9da66
DjB0xc4fa9c86300c9fb2d6242b8a512ee12cd1848552e267bcb897ec8daef4d308fc
DjB0x300bcc35c7612d096a2896fa06a03e1ee2713d7079bd15b2ae9b0fd3c29e383b
DjB0xf41079842deef1d57ee270817e290ecf7cf3b96dc85430c3e6b2102db8981f46
DjB0x7dc4a04068d9feaee796b5eca2a85e61a90e2a7d4f8a1520c2f8a262df1b4e43
2j0to:USDT(TRON):THs6ieREQyk9hrgkn3gvBkbxDxngwPHCzN
{jLx0x6ab94ab6082ee8109c2e44a1dc999b3a6bbfbbb5d6e96e9e359eaa4615f63839|depositor=bc1q6d2hsdyd4g34uxjp3wm6cuxhhu2g3hwesturqk|
DjB0xc1d24c92e2c0db90cf1a13c7ae0a5031775b5b5ed9af4f5ac5b53cfb04b32ef1
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"1500000000000"}J
FjDOUT:BFC6D6BF7BBE5E6C4C23B398A32348E119FB488EE61A18565FA80C2D89AA467B
DjB0x8e313c8b6772fbd73d4fcca859bf1a4167c391a72bbdf655974c1c9a2ea93fc1
DjB0xae899a7b38efa2d0904185e3d8515a3991a0f2eeaff2b5829b0fb2889447ecde
DjB0xce4573488a848930815d0df6ddebea36f1e09449da1218d9ddfbedee6a6e60e6
DjB0x588e0c67d75afd3dbf1e0762b80a63e38833a335d031602458add30f7df36290
DjB0xa036e155c5ac708fb272f3eff79063b7ef58342ce0812c63686fd52ae17dba8f
DjB0x9cc98001c7be46dd039dca99293f98fea0f8c806550fc4ca60155c17f908f4c6
DjB0x26b6db58b0d3920e134136ef9ccc4546e750493a51228938b59de67c37174dd5
DjB0xd55333641bf63c11351f5430470ce6bdea32e4e0b1f8d986e0175968fb16951e
DjB0x3e12d94ca40f7d2e6a682d4287d127093be2088399124f6598d4602192c6148e
DjB0xd709fa42abf8230d3c0055549e0922601597a3a7b287b26c852bd875419ef95f
DjB0x1bea008161d7f0740ec3a02395b1358ed75967eb2b64fbc0aa08991d01e24508
6j41Px:to:USDT(TRON):TVSVMvvrdETboTCZ91g82B5VzBhwvey1X9
=j;WPx:to:USDT(BSC):0xd3036705081F7Dd33c71bB15b8a327A2D65Cb7DF
>j<from:200USDT(BSC):0x535970c4126Dab7D5ce989BEC5300aE89d600b90X
8j6from:1000USDT(TRON):TLi3ZmxDKpsZgAErrpBMK8nHuJhKHqWn6m
=j;from:15USDT(BSC):0x8eee10a0cb3763C9E7Cbb2233156c52C46a7A354
=j;Ur1:to:USDT(BSC):0x0dC0DA326F1178197dEAf0C976394f89A2FA5Fd8
6j4YN1:to:USDT(TRON):TRg5TR8C3MnKx3h9W5eAMHeTfUmAHfG2Vr
6j4RME:to:USDT(TRON):TSZtWt7HTey7ZENwZycUUcLuXn7FPyUy5A)
7j5NWB:to:ETH:0xEAE04E40F16f2308360825aFcB9b7f82263E6051O8
8j6Cd0:to:LTC:ltc1qxaatqg0hks35sw5gch03cpngg9wmkaflmxja5nE
>j<KRw:to:USDC(SOL):Z982ZBiMAjgBQ4JhXe97byi2S7ov9rZnqUDX2YwktgAb
text/plain;charset=utf-8
  "op": "token-transfer",
  "amt": "28999.999999999996362021",
  "dta": "{\"op\":\"swap\",\"desA\":0.000000077944034271,\"slipA\":0.05}"
{jLx0xefd76c26ce7bbedbb4b3a1fc46ee8d6307f26e69a162d73b1390b1274035f0ab|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
{jLx0x7c2a0eb56fb6dc15579d19f64d5835c496dfdb839e22bd0d7a758b576c960c0b|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
9j7to:USDT(BSC):0x8546c371d583fB8b34664a85b3F15e675dC4EF0a^
FjDOUT:6E2EB66BD54EAE3BC19D96C7B22C7A04659DD4EBD8F525FB2081686373FF9E01
DjB0xe595cd542b10860fccaadc921a10699955437a66990dd8fc17b171baac1b4737
DjB0xef295ce97bc0b016b095a0ba192d9a53557131d14cee124c298f68a0aa4218fc
text/plain;charset=utf-8
  "op": "token-transfer",
  "tick": "dmt-nat",
  "amt": "23000000000",
  "dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x97858D0Fd286a8d16C2252421fe1cE76bb42bE77\"}"
Ba564993d87305365e21c3fb09fdcf8a22130ad810302120d40d9b0078cc69669:0a
{"p":"brc20-prog","op":"c","c":"0x4aa8e9ca6d90e2e47b44336aa4725894332c1b16","b":"AQlep7P/DGKHm7PdlJxM8G9xv3woHc8k0WPn/wL/Av8C/wL/Av8C/wL/Av8C/wL/Av8C/wL/Av8C/wI"}h!
{"p":"brc20-prog","op":"c","c":"0x62879BB3dD949c4CF06f71BF7c281DcF24D163e7","b":"AfZoFej/DEqo6cptkOLke0QzaqRyWJQzLBsW/x8J/xZMO6OcXkER/yLg/x4CYv8eAv8fAqD/HgH/EQ/cNIzTAagftWSNq55vBJNin4AaBcIahd8TzXXT/KaY5e2Pc5Iqnu5BAb/Qhpa3Cf8QB3FYRZ0IbXGGt2qdHtjmTU+Ub8iAe2Msunx/drcBPlHU7TFPFukuSz8hCGpJflNQ/xAT21GrsA6tcZdr21WD0JUzxEfPSxSZRmoC6j5b/wGZw/K15idkZUQDQ/xqGYQOIXaE/xAPOKkU8ZVMFLhJPRuNoM6Ic463YZ8mWsEytZlFex4bt6wiuRO2gPxixxTL0jVLL5X/H4D/EAdXXQJsNSW/YTN1Z+waDZTfjdrsZ3o7514+CWcbOfD5ty3egF2FrncNfimuyPvnPP8QDiD/AWbTJCChTKG5SIpSlA1L
AVljfAmrde6KmnfP0JNXrxJuOwITIHnIrhKRcyq74HP8fQbHzkZr2Wj1pm1Ec1Ee0HrbcLodCE0rKGgi6oCHJJXjXHyyYfkbZGiewybiUjoDHBVMp/Tj6ebAoRu/2lBIOegUb/x8"}h!
GjElEdge295459c46248d6f474e9ccd0ce8f96c73ad2f1d6f93fdb14a1cd7a96a72a0501
DjB0x8817c211a1af4ed9b1a5a9e095a2a0e518fe5d2fd4786460769b5caf6fdddd7f3
DjB0x49522cb55b4f1834bb8e2b6d66603c905ff7b8c2aca562aab8c9a84515dd8a883
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"11000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"341"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"1"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"212"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"8"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"198"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"196"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"17000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"196"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"193"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"196"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"212"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"196"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"198"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"193"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"341"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AI.BT","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"193"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"198"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300.1515"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"196"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"193"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"23560000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AI.BT","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"193"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5250000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"341"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"198"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"212"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"198"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"212"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"2600"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AI.BT","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"200"}h!
2j0to:USDT(TRON):TLEN8Bc8aNUSiEET1yoaRbWNofPasvT3RC
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"2000"}h!
@j>=:e:0x0Ef04F2c8861596fdF0b9dA94170e6858E4826F3:182418863:sto:0
DjB0x02232269f38f68ad591d831efa5397ee61734a94e266a9757b5277304f9b6769
DjB0x9db8028109bc834474d7692bc5c3e1bf98285e70a97338f7b323c4613c337310
6j47Li:to:USDT(TRON):TNxdyJFN5vqaa7B3dr5UGy2f2Fvz4eMw1d
DjB0xd117c2f9efc34f1902508993b9101b8ab7c6f45bec1ca47b52893d22f5e9a7a0
DjB0x2cc9abdbc356c8f19aed4a6e44a7bc281ebdb227b67311ae8c45289eda0239b5
DjB0x4b6e13e77c7402224763e7e265811a08a59668cb30d7c3a968b6e85f64d9ba10
/j-t2r:to:XRP:rLCCygafoDhRYTyPCk7LJPLRLkZ6zrnEk4
6j4sc2:to:USDT(TRON):TXPUD7GUz68ikLGRnQmypXUZqV5JVGg1T6
?j=17z:to:USDT(ERC20):0x05FD56C4EDebab8ae1B36b9b2594380266E0689c
DjB0xf87577646168547f5d219f0de9f85dcdfee2dcdb4dd2f1de49ca539889c95006
2j0to:USDT(TRON):TVvnCaghSwrAvPgjLyoUooKSYWNGxGShNm
<j:+:BTC.BTC:maya1qp48yza6xkp4rq5wrvqsuzrs6enrdf73z5tqj8:dx:0
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
9{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"1800"}h!
MTLD_BATCH_2_396983_396980O`
EjCfrom:0.002855WBTC(ERC20):0x87af03b7970b350ae3662A39Ff054Ba5feF6dDa3x
DjB0xaf390c26a0f2e6c533ff03bd40c4c9a26c25d8c80697c773fbd556302d90b627
7j5n6R:to:ETH:0xEAE04E40F16f2308360825aFcB9b7f82263E6051
FjDOUT:0000014E5C0B595CC2BFE231F93C530CF61AD9287DA5942BAC413AF872EAF70D
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"12800000000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"Eubs","amt":"42000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"
6j4a5C:to:USDT(TRON):TYJLQjXvtHqSF1cuwQDrTuiP4z5HqfHULS
HjFfrom:0.239829HYPE(HyperEVM):0x56675721168F124156F9B860590af3CF987fEbF1
?j==:l:LVQR6bRL6vyusStJdnAg4WTzDGtVGmMPR1:24235047286/0/23:sto:0;`
DjB0x4690212ebbbb5b9065c7d9b324093d2b432d79d9d85f760dc5a85720ee1ac2d0
DjB0x35fdf90c7b31a5abc84c098ca2432710640d4db3f6cc09dfc851337bac5bcc5c
DjB0x1ded1e35140919185d3ce59db7d94e50b6cf845d748e3aff5a2bfdc3188da218
6j4pmN:to:USDT(TRON):TF5LQvUEXNGSYiwc9U3C3PueVNFaMsM5vq
6j4kPw:to:USDT(TRON):TSgSBH6SfoR2SJo4ZKwGkor7TLdxShcuoN
6j4Eb3:to:USDT(TRON):TZC5kEdGSAh31Wq2GseENAa85bubYR1RVV
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"19000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"18620000000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"fifa","amt":"1250"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"fifa","amt":"1200"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"fifa","amt":"1150"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"MXRC","amt":"600000"}h!
/Foundry USA Pool #dropgold/h
6j4lGs:to:USDT(TRON):TVqTR7aZ8MjTP4kfD8yaiib4GtTq56sTnf
6j4K3y:to:USDT(TRON):TGNX7jWdfdVQm2ujRh3FtVeNS1YhF39Ltu
DjB=:e:0x0Ef04F2c8861596fdF0b9dA94170e6858E4826F3:734591057/0/3:sto:0
6j42tw:to:USDT(TRON):TRAjQJCcALG5yxoshYDtQRHed1jRXs198T
6j48rX:to:USDT(TRON):TQJp3Fmo1CZAUiNw2HG5tWtR5EGB91HSB2
DjB0x8653fb316948d81aed4ef0964d23e9c5adabb2c6797d1381cc6cf57b9d3ce7a4
6j4JXv:to:USDT(TRON):TXfkCYwDAeJXsJvKoaZuP81FHL7wCaQnoN
2j0to:USDT(TRON):TH5ARGcNBh8wcVcYYPSN9ivfuCftoxMb2k
DjB0xd8e4d586af9a5e8d360d5d643e95f492ae0ac18a7c7a6123277679c6aadb240f
DjB0xd0ab74b8362f10f81d3ccde04dffc796455c3bbea191b91a3191e88d93860251
DjB0xb85d5648b8a52e3ed21c77a6d43a6d6398b0b9ce40130e9092be8916f588d85d
DjB0x9e9824e41c23836b761a830355304b2e442621fd7a8ddad1f344e1907d689268
DjB0x2dbe4f3e033f4ca96ff47248c60572a01355f4121fa1dbf278c2dddd0b6550e9
DjB0xacd1a9a71ac17fb594bde14adc6bd5f41c5e6a54e4ffbbac032c7ebe6b31089a
DjB0xb37068ffbd3bfc5fd5e92397bc5faa52474e9d6af9193bd8c8f38496c6c57097
DjB0x665e6dbb14c0a5ea6f577e36d349d2052d48b0f7076e56aa1c2e79b16f109409
DjB0x622c2ca6badf1b24ed9ed3b92fada5e69494d57f626debc9445aa6fbde90ed30
OjLL0x0c06b787de109f8758372ae196be79ff7c5add4af0bb9207e2db0f51227004db=|lifi
?j=from:21USDT(ERC20):0xC254b7e6fCBa0a6F81eb140d8f3e88f533F9ed34
=j;from:20USDT(BSC):0x0db9eC253bBE3dc9ee4A6F4D8eCF8CE31C746e04T
8j6from:2000USDT(TRON):TD8HcvNuG6wNdoNxnyNoJgRXE2s3fQvcAj<
DjB0xda80bea2dcd57002ffc9f8dc61064c4bb259f79386187160dd07dc2d12d88fd3
DjB0xfb7a8d92de41e4051c5fb3a61904c8d049048e9021bf80bf0c7c905eb3d64da0
DjB0x4d3790e2e1caf804c3bfa4bc0a1a7339fcc5d07abdedcfa15891b5c6645260b6
DjB0xcadca42b7a0428e3b433b2eaee08a16c86269ceb7f0f687f96da8830d4c8e66d
DjB0xa94b8a00e70401aca5a30b8e55d4c81e57c469cf7ef1329eb5dc815bf75ce94b
DjB0x10aef2fb6171eac23d1c070e2fdcd5a5f4b6b92d9721f4e8dccab4b67128681e
DjB0x51d295cde908a39fe2e1e93c9863ed58212ff44d4ba01fbf4cc6ef9975834d3f
DjB0x95b8f75042adb4bc65da6a1a99fc7ef52566cbda7dc7d54184231b72d45524a1
DjB0x15f520b1eba25b627c781bf67bfb9355720f582819f1e946627211bc7bc59221
6j4k43:to:USDT(TRON):TLUyHxcAmhAtMDBkDsEL1onyGU6Fk1UBSa
DjB0x7095cdb0fc17c6c5f4729d7a0ac48ad60eacb572bf9845907148f20b2553d1e8
DjB0xf67f20d6180068577c225f81faf5095f74222c6acfc34d40f6b32931745cf350
DjB0x0964a7c2c93aa32c3e50f1598dfb5aeb29345c17d0f276e433ae441d36dd55d4
DjB0x8e327aafe7804271d581a808b3979e6482f6b9f3e1d2bc52c8b822555b536a75
DjB0x7bb147adf1a9b49537b3e804629d26263050e7d4534b73f81f249175fe0b5546
DjB0x6741741d217daaa35464e14ca7bc30961d55c04dc4cd3c2161c076d8d93b9233
DjB0x2c7fa4733965b3a40d8c5b5cadd2cf816cd3b1eb1daecbfefd1c9059b7485d88
DjB0xbf8380e6b3f67115b2fa871f0147c646562ada6fb571b42b359a5b752d3a27ac
DjB0x5444b1893849408e7eedc6248aa6736e95d964eb8829f8006e9016187d0a2409
6j4BlS:to:USDT(TRON):THgqZRR6f3TJ69t5vHgmpr8rii6jjwYyy9
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"326802851682393"}J
=j;OAq:to:USDT(BSC):0x27df7A8d643396175933125E92291c7DAf97ccF1
<j:sXa:to:BNB(BSC):0x7012Da8ed11151206828752345FeB74E88831332
6j4AkV:to:USDT(TRON):TLTYTWXhZSDP1s688ofJ1LrVaGbEe8baq1
0j.{"p":"crc-20","op":"mint","tick":"SEAL","n":2}J
=j;mKz:to:USDT(BSC):0xd711903970420a09C78D0a1FEEddc498a493860B
6j456S:to:USDT(TRON):TYn8UVNxJR5JtWiRZ9xT5Qyn6TRAFajz5g
6j42C5:to:USDT(TRON):TCJUKNJnFQKVtaycNpRB3HVkkQHcjpS5wV
6j4lgd:to:USDT(TRON):TKdTW8tmDcQE1J4BqnMRVZ3ryB3PWopbyo
7j5ULM:to:QNT:0x7bBf533A9Ab25f5b918136bD6ad8f24594c990d5
/j-jmk:to:TRX:TVEXwbCYoYQFrNVCz7PSuFQjDujXo4PAGZ
6j4a9c:to:USDT(TRON):TRR6qfAiMH1RM3226kfoiVs9Ur9D3iGFYt
?j=Q74:to:USDC(SOL):H6HMab2AWgp2EbQvbJ6W4KQJprGqpAmhkaUpxEbWxsNk
6j4pQu:to:USDT(TRON):TVEXwbCYoYQFrNVCz7PSuFQjDujXo4PAGZN37
6j48NA:to:USDT(TRON):TTZnevpRZAShtqyR3cTbojytRnzNoaPHc9
6j4OYR:to:USDT(TRON):TLCmDtkin3G9HkBkSgcQUkpo32545BCc9X?q
?j=JfT:to:USDC(SOL):H9vsdyzdk7MWa23doSUCUCTZcR56qFgRjwFV2vfMCjoeW
6j4Vky:to:USDT(TRON):TGKa5cBNcAAZN8414vBZXebczAY8AqtQJJ
6j4EoU:to:USDT(TRON):TNaERftPxKnQ6awMJwYajQ5CFXSsDiXSae&
2j0to:USDT(TRON):TAcgWsNRMtH8xbCJmdhcU5htDu7UgUg3by
JjH=:BSC.USDT:0x8E1Ddda0900b3C67819D48445aFd22aca3624992:5836517036:hrz:100
0j.{"p":"crc-20","op":"mint","tick":"SEAL","n":1}J
text/plain;charset=utf-8
{"protocol":"Satnet","type":"planets-renamer","version":1,"planetId":"818777d6bb0d5ab8ded594658af657597e729d76d35a11ba05c9b68007a3d5cbi183","name":"Magnatron"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"1000"}h!
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"819282564793009"}J
dnamejBitMonkeeskdescriptiony
xBitMonkees is a collection of 9,999 fully on-chain 40x40 digital pixelated Monkees, mostly Punk-inspired and permanently inscribed on Bitcoin forever. Created with one simple mission: MOFA (Make Ordinals Fun Again). Just Monkees, culture, and pure Bitcoin enjoyment. For the collectors. For enjoyoors. For Bitcoin culture. For Digital Artifacts collectible culture on Bitcoin.fartisthNOXtoshifsocialhNOXtoshigwebsitevhttps://noxtifacts.com
DjB0xc832adae1e06e7fe74c9ac00b1f92f5a80bd9c85929920f29c700fbf841e94ae3
/Foundry USA Pool #dropgold/
DjB0x4ad3927631c8de2001487dea87b30bcd4adf6a7c06c17bb4756dad3064b35997
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
?j=from:20USDT(SOL):FisCPCYFLzMAz7upsJQ3U9ie4Ko2yDXc9faLwGMxmtYa
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2516234281506/0/19:sto:0
?j=dHc:to:USDT(ERC20):0x798E6AFf368dA23Aa78e4E110cE4F9338B4Fa8AEC
6j474m:to:USDT(TRON):TSFNAuPvFQKg1r13CW8R8XA6fGj9hr8frZ
7j5wpx:to:QNT:0xCb98E8096902D0B9c4E581b6A298Ae41cFd4c775
6j4Lho:to:USDT(TRON):TJQpwoLRj767kdpFCdf5xg3hY79rQXsb9q
6j4THn:to:USDT(TRON):TGKa5cBNcAAZN8414vBZXebczAY8AqtQJJ
?j=emR:to:USDT(ERC20):0xF4CEe3Aba7299cB36C07909f679F8b25e3a29368
?j=05K:to:USDT(ERC20):0xC2ad4DdB20af84f8De159299EfB5AA52cf751216
6j4zly:to:USDT(TRON):TVirmttpTePVGjasCwgP3zWcsGLZy2uzvT
DjB0xeef6ca8e4dafa3c59842f3110254e8f51f4ad9d4a9ef0457d75c9acaa02d7859
DjB0x4c269a0b488ca5be046d74365d577c116aee8fb5dc2d77cd8ce5c8fcee5a133a
DjB0xa4a70591a9c1f19e22965195ed8566cdf8a522013be1085c0cfdb15aeea081b4
DjB0xdfd226f68df800b6e8484dca65b2b7a6900f1d917e944221ba72c4a824cb07af
DjB0x170a48be7c18e9a72b60b3976fe4a4b76ee1043ed2fb69c3088dc576e192e682
6j49xE:to:USDT(TRON):TK56CQmKawhYyavNcYF7VEGYEbvTb7d66x
6j4DAG:to:USDT(TRON):TK56CQmKawhYyavNcYF7VEGYEbvTb7d66x
DjB0x0ecccd4e74d7302107188bf4c614364dbbacbef7b9d1511e70cc0d899b1c0389
DjB0x6c1850c31baf50deaa68b1af289ea3a7cc07474e46b8d73addb9d8aa56bd4d50
DjB0x50a3d0b7239ab226ec3ef790734b72393aff4b22fa0606cc464dc8738b1911b7
DjB0xcf99bda4e228c14a7734e29fcd60d69430bfd65c1c61344c6fc0e3ff2f844fb3
DjB0x11147e50f474f28288ae0e9c881c92b934a9bb8e1695d71525b017d6a42d067a
DjB0x8a5a6da498b8635ec83f3bd65c3b45c1230a2e69e8368c1591c848c8bc490c9c
DjB0x1bc58c49ea9dbd145a319e17184772c0f44750f1198ff8ef97ec017c9e0ce053
FjDOUT:6EAACCD2BE3E8059C7473BFDF43052FD7674294B18D7B6DE64E7CBA29D97AFE6
DjB0xc753da30937655c9c664b123d188c01ac8b21063b9a2a5ebc6cefcfc04ba1673
{jLx0x083b895778c3bfa556987809d589bdc6c080eea9252c4a8b9535c492d1bee4d4|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0xdea7e1e3dd0515d9692234d0fbeb0cf2cc5f9336f0bdf2a98e144b515f7c5885
DjB0x82778d8bb5edfa616962a3cd0a5075da8a3838256e1cc8cd45a04074dfaa3b31
DjB0x499c24b9e0b4f25ac9a3d6db8a2c2fe32162c234902df43955b6334ebb9d5c45
DjB0xc2e449ed5d31bf54fb037b7aa5cce60a9db655440890d322806475dda52d1105
DjB0xb7ba5a0353b0bd97a6919ffaa632e7512032a2cf131031494148967b020429a3
DjB0x092231c587c940ca92551e8f4b062f503c2eaba95691b3a1ae83d4751e06b382
DjB0x9fb26d6e6f17deca8d023e4be00c8de871f7fc6e6e12d29be1c081821c044880
DjB0x319ac4f25be1c53f2c5dd61bba59767cc8be2df3e11b47c7c23605921e2a09dc
DjB0x41cdf8a52c8fe92ba8b966d4fa10cde53ae0f6ce7caba72e04469987403c34b2
DjB0x3b8fa54f3563d0ea51f6986a4179338f28eec83a7619d910f7677762010127c3
DjB0xdfe63a764452f69ca59a7637dba6b050eeb0ced077f02d03226b4ecb4a1c990a
DjB0xb8058ce48ae342e6a5577a48c25310b662e7ecdf1430a00b4f3530ceb6bed7cd
DjB0x4d7781a330606ff398de6794bb14dafffbeafb7c96fade5fefc15c1351658117
DjB0x85c5ff663f2e5d1b6571087a789659a4386438c815fe74ebf43191c04cc8a695
DjB0xe4b8eaa3f0b04b1b09e6831249c0f87eecc7b87f77f83be66b98c0397093b0ca
DjB0xcd5e3eef01d7c85265044ae003c6d88bf9c54eecb295a0abd8b1b75ecc7d1857
DjB0x3da53b8c5974b97a734543f4f079bb7b9f79f7f78f0257dde59f76609a14702d
DjB0x9aa1b54dd0c1d916225f5d9b91c40245f3261e087e1c9a518900480aa16751af
DjB0x5c5e32f0aecdee11f221a271ea725c11c54f4069fc00dfe82663b67977965d9c
DjB0x01d05d3d1ab4d11bdb289edc260f988c654a01e8dae4406764b744824a7a416b
DjB0xacd1a9a71ac17fb594bde14adc6bd5f41c5e6a54e4ffbbac032c7ebe6b31089a
DjB0x41240e93c03553772b957632333486a8b537adcf62555b2e7fc67ea8603613cd
6j4Rl3:to:USDT(TRON):TVDd6To8LJN7WqN3aD9VhRfZrp8RQzsVdX
DjB0x4b457821613c347d9633714f2b94ac213de6b5ed2a0a99ba54a03054e0a971a3
DjB0x86ba9d42c59adfd4557cc110e72d9f9d81c69ae6f713c20957ccb331a6cf35bb
DjB0x900115847ed9151a02b4152af5e945a5a3bcc87fbc0b19a12a778de375b943aa
Bj@=:s:0x951454CaD517FcB54a5A60f20C934Df90966b2a7:53200e2/1/0:g1:50
=j;Pmg:to:USDT(BSC):0xC9AA6c76866cc748f1b61da55f1376a68ec3027f
=j;7EQ:to:USDT(BSC):0xC437778a7F5C51b246657AFF0718CB0f6B5a9b98
2j0to:USDT(TRON):TBR4gKwF9M8seCZhRJcqs2g7PEZvuqXB8J
=j;MHA:to:USDT(BSC):0xa6438ACAd5A4207DDa0312b193A14b063E3bAC53
<j:mg6:to:BNB(BSC):0x35e2E6D15aE4578c3B092D57A80898028cB2e6F8
OjLL0x1d0d8254cfc7ccd88a9ae5d55677f4a6dd42e0e1b458a1bccfcbf672d637c26c=|lifi
=j;dc6:to:USDT(BSC):0xE63B1262a014527d5398B030B7aCAa5a418cF879
6j4T9d:to:USDT(TRON):TFBHhHDvevGkPHypMFDDBYTXkv14N7LGXV
DjB0x410a9235b7426acc26f1bbf3247b24ded75418ac76292618bbee71f6d0968db0
=j;QzU:to:USDC(BSC):0xe022678A6599D216e9D7b92320D159DcF17A21b4
/j-0kK:to:XRP:rpJzwi82BmVbh4EmHaBtxm1CDP1YoyfsDn[
/j-6EK:to:TRX:TV7sCxniBpKScUaPRUZjv1x1NPnTJyvxB7O
6j4UQ0:to:USDT(TRON):TSdpxsCqunSpXurFq3UPauFPjP4619ws8u
=j;qQs:to:USDT(BSC):0xBd620c43a5026B19c38ca5A430901C7c90aDA1c1
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"TURT","amt":"159316.041"}h!
?j=y6w:to:USDT(SOL):5rRWTfPBpKPgSDKErG3hsxUeGZGh4PGXCUfbEX6WXpMz
6j4bQM:to:USDT(TRON):TVpLMw93umZxD2makWKd3nVesBGtzfKcB8I
6j4wTw:to:USDT(TRON):TK3kzusBpMXkXF45C7w32zBjK2uzrWuwt1h~
6j4F9l:to:USDT(TRON):TLxSd99n5GvAEpZXpam9DaXciJyPkMovDw,&
6j4bOY:to:USDT(TRON):TPLborWmgrmkqQt4aF5SFAU38PEPtTF3Vss
6j4END:to:USDT(TRON):TXaEr48oseQkJSWAuoZDQza6WK4rEuEFNRF
6j4LLs:to:USDT(TRON):TSE6f4HkbV2vDFkWgXnWMvXXgJetpr9f5u
6j4pqm:to:USDT(TRON):TVMDiKymcHgNyUxCCKtYdLsfovvBgAw248'
8j6KjJ:to:USDC:0xc0583FDE94c426a572710eBA04f4c64eD77F3137
<j:FV8:to:ETH(ARB):0xD1a0025fCeCb1a565013dDD4323f5eE3080F002eB
OjLL0xbfcee227a0e4769ce48265b9e6e3afdea9fa22a02597efdbe63d5b95d678bd5b=|lifi
QjLN=:ETH.USDT:0x10B39A2b0F1F8Cf07841964c8F84A7B31C99BFF5:124665874147:hrz_ios:100
2j0to:USDT(TRON):TGqZH1RrpCU3YDDo6RsD5wrB8HpjPbV6n3
2j0to:USDT(TRON):TKqnXFZUfKY1RLvYKAbW82hMZoX7jponEG
DjB0xacc08bac3ebc51b0341dcfc3a4e43aa363d6b4f7b973ad9be5bc1ac6b95e7e0a
DjB0xc0007b305a9c94410ce55d4e7a3ca186c14d2cae3a0829b0fc18322ddd0da441
application/json;charset=utf-8
  "sha256": "bddd41ff501c0158a606ff37955b9a32b551fc57316e5fba5fd95ea563ca43dc"
Powered by Luxor Tech]
DjB0x6a951432ee9737dca9e936a8442158fed298da0bc39062bd3277e6d9e42e24b0
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ordi","amt":"0.01"}h N~B
4j2TRADE+:thor14mh37ua4vkyur0l5ra297a4la6tmf95mt96a55
=j;from:25USDT(BSC):0x5fE888E36ebb77cDcE55C2aB770f2006f8b1b892
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
?j=from:21.8USDT(BSC):0x4510f6269f956969D768D40e0ad06F36d40bF070\]
?j=from:60.4USDT(BSC):0x3074b8b4ae79732bF52f6BF6CD67ACBC3511Ec61
DjB0x836604c8de585fd131383be6a7e1ab651021f1d65a52eecd19439dea22110e52
DjB0x6c0ce9ccf2aca65a80c6e66f430a248e0cd8465a2c7cab71ad202953b40f8227
DjB0x485fcde7a495b9d02c408cf8b07746b0118e95ab39b2b35a37831cf535a989f6
DjB0x63b50ac29be28b09e0e940bf6e786a8aa2ef104768731e3699e4ca335e3027a2
DjB0x3239e81b4b16dd62786e82f294d446524fa361b73bc519ca9c83a5c7b9e432a5
DjB0x4ef692c7ffdd2038baea071ea82278a06465ae8d084e947ab7dfb93c9382cb96
DjB0x619725a2f367a234354860bec6ac44f688c9ca3b084dad44f6699242d987db00
DjB0x75116faaf6f25d76e8407af4cddefe73b754faf38745a89c0735149da9c454f1
FjDOUT:BC318B5EA3FF267E17AC70AE83F9A21694330B64B3D29048C469CB83ABE946C7
CjA=:ETH.USDC:0x576f17C3AC826BE06Ae87AC0889d5f903dfEc45d:0/1/1:ej:75B
6j4s9k:to:USDT(TRON):TXNdPWopMETkZh4ZpQjH7xzASKkQzwU9B4
DjB0x1be535502d52191d76ce1e047e4c7e8d67834f3d3d2291c3bd01f9874ccc060a
DjB0xa9545465703ef2df05e08d11b0151d394896eb0997f9a1e4b4616c1540e4ad09
DjB0xbfd3af63e4ec9452310ce819fff4614a543a1646d8b591e36c9ccedfa6713f2b
DjB0x019b8cab63f28121691777ded152a2f07ba23420bbf7b6809519eab388cc6969
DjB0xfd08d661d286bf6155021ea8725a69e4a27d3bd2d697d6c8ae60c89c3278133a
DjB0x5f1fb6eb410d73fd1090a025d8b8f063e87afdff8a451ffdbd9709e38ca5b142
FjDOUT:100E0B15C72E0B749D2F664A9A7C5E95984632B5798FCF94B460A555B0402BB9
8j6to:BNB(BSC):0x912aB7406D0C540C64F6768b17654D68DC443F90
2j0to:USDT(TRON):TARAEYzgfpcsifVcSpp3nYsdfAW21xcuyD.Z
2j0to:USDT(TRON):TTFzfubxruAKACM67bTLCHGCkxngibN16R6
2j0to:USDT(TRON):TLzoJ1yuRSNzjYgtmzyUjSZk3kx9Ed3QyJ5
2j0to:USDT(TRON):TCD7JEBCYy3hSjZdQhTU1KG7EQcZGnhN54
DjB0xc8273750befb14295a850fc29e3ed1f956cd697262d8d8e96db18ef3c4c69933
DjB0x142014f543ac06f7e591570742a383c9d7cdd37e7cfc116fbbae17252c6e9908
DjB0xa09f6ac329037afd51e7fc3ce80a03e204b9a9560bda5dd64b7015680c5dcc2a
DjB0x9cda1105456daa8899cab63d1f9822c2b76f74fd2f1a5a94185c6ded915ff311
DjB0x6a889d1a2f6ab54f7e1de5553cc0d2abfcf5b2767cb39e839144cdb513e17ea1
DjB0xe63b94e0ff03e677cc85252346b06a1e17986983f0d97245839d2903f4993082
DjB0x5cd37e30b302ec902ab6c27b62ab6d984555ea348628b5b1bcd14813bc047b11
DjB0x531569554b58820e0296a3be90d262b5fbe63489f3207e0ec8f9fda679ff9852
DjB0xb7599b02116ab4bdf07a1778a575afaf13758347f988db60c37d7f726636bf19
DjB0xf18f29104fe726e4be004ce336def700c82df8f17a562858690c50e241a1f914
DjB0x04f5d45b95f6eb13df46863e4032178c0a3e442c142390211acc32aed77459d3
DjB0x89baf687c5691e8f108398223cd39e6bb17d398f16d9b9feb6f2dbe4b461119b
DjB0xc07a5b8b1345242ca2a2a76af2a1636572b4ee2d56e6c6a742ffcb2ca2cc4849
DjB0x144069478e97faaa549ade05be4110f5123f2f1f8aa10c0d50c1135b025ebd19
DjB0x7cbc696c03f41ae6c6493a3ef37f51f41b9d53c6235d9b9774ad11a98a811496
6j4AfD:to:USDT(TRON):TJGUMpeVEEtQUtNZUqQH6zbFHMTSde3UL6/
=j;Q87:to:USDT(BSC):0xf3be9031cDD6a01735641C8445123902D30B3C67
=j;IPD:to:USDT(BSC):0x80928db4c0CfA763dc3b459CF2d6eE0A0068cC7c
/j-GjB:to:XRP:rp3vnKTm6uwt9HcwLhnKBteNvjXEZiKjho
6j4JlH:to:USDT(TRON):TCdo4HCREuaZCZACkm7ubu9pRRJdQtNUmn
6j4nqa:to:USDT(TRON):TPdHrJ9mb4NbroDUU5LCXi6TM93dMsPwJD
6j4T5d:to:USDT(TRON):TSx7K2o1fuH1n5p15gj2QfhudUmUJUQWNa
=j;6Ib:to:USDT(BSC):0x774967555a8374a25e43C3766B26e757Bac2E57D
<j:B4y:to:BNB(BSC):0xfE2AC5d1c20F0069a877433090c1A8Da9Cd3b2B7
6j4NEv:to:USDT(TRON):TQpYCYEZATm5KZ5jC7NmhwW1pHGYQLSr84
6j4927:to:USDT(TRON):TBugRdNxHv8na7ygCnc77UP4UuY2PeLccxF
6j4BSK:to:USDT(TRON):TFhoz6x798tXCXrkHYhKxW491ecHeJNnhb>
6j4j8E:to:USDT(TRON):TAdXF1R6eDMj5McNvoBifBzxQ4Y6kFqv1h
6j4cyn:to:USDT(TRON):TEB5EXmFcVGC491ztcXb1Uoc9WT6pBCHWR
6j4X65:to:USDT(TRON):TKcvTcDUKLsp2BBVQBQCfrY4eMQDG2jSnr
;j9to:USDT(SOL):6N8rUKwSY82FdGZ4YRhXWQUHoSC7LivdhufQUdTj7yVA
+j)to:TRX:TQ4bMKBwSq14V2dqJNb5rDSRt5EB5RjFwT
/j-aVD:to:TRX:TLqaBGA32nMq64Q9yAg3Ci3pDUxByGrffM
6j4toU:to:USDT(TRON):TNhpd14LvX4ycZDt2dkxNvUBwtm7yV4xCe
6j45lo:to:USDT(TRON):TTseZufbQ4WyovaYah9MrPE51AofYN3Tybo!
6j4fwH:to:USDT(TRON):TA32xQsXeh65z8gMXDdhZysGyn8hAx27CCK0
9j7ooK:to:SOL:AemxHMncAxVmvZ1YNURJUvmnT6Azevd3PGpeXBnk1esM
?j=AUI:to:USDC(SOL):5Lz4yG7KqUK2k5xXHL6EupsymXzQdtJyzJeLyKXquwft3
text/plain;charset=utf-8
B{"p":"tap","op":"token-transfer","tick":"dmt-nat","amt":"8348268"}h!
text/plain;charset=utf-8
B{"p":"tap","op":"token-transfer","tick":"dmt-nat","amt":"9184539"}h!
text/plain;charset=utf-8
C{"p":"tap","op":"token-transfer","tick":"dmt-nat","amt":"34223912"}h!
text/plain;charset=utf-8
E{"p":"tap","op":"token-transfer","tick":"dmt-nat","amt":"1992794709"}h!
text/plain;charset=utf-8
D{"p":"tap","op":"token-transfer","tick":"dmt-nat","amt":"144943666"}h!
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"244389996375"}J
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"2000000000"}h!
9j7to:USDT(BSC):0x9A237D0de6A10Ac5A77f67f759954dfba1862B8d
DjB0x2cd5d8b3effad738eff3949132240d56159c079d6d7667d2fd2fa249a7e1195e
OjLL0x5464405250f055fb35a555a6539243b670ab6f04dc1797913b04df121cd38900=|lifi
6j4mzz:to:USDT(TRON):TK2HndPwMeHM8A9kAtNK6JV1GrDEH2nDDH
6j4w59:to:USDT(TRON):TRZrhnxAvMMJrCT1hrwgFoazwujBBprNpwu
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"2000000000000"}J
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"3000000000000"}J
DjB{"p":"crc-20","op":"transfer","tick":"BONS","amt":"1000000000000"}J
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"500"}h!
{jLx0xf7e8b95ef247eeefa5612d6657624bc0aec8c19dda6091b404dbf598ac4d0b6f|depositor=bc1qvlmfn0hgxsd479xagtz0u5jtahlgrqhmw3tsq7|
DjB0x0eed8d0ee13fb96e0a758458e24731d74b91fe187fd7cca498ba6d798c9cd9593
{"p":"brc20-prog","op":"t","b":"Aii1L/1g7QJ9DQA0FfkD6oIKtoCAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkDhGYjjh0AYAAC4AAGABMHnwQCAQwHABkBIAFr9VpNol0wFsAIAPAAR3QBPvd3Iyu5Yq3ArwGQCSjhKKhXQlRm+GIDCQHAxEw7o5xeQREekwZjDAsL8IS+dF4bAEGULgYMCiJRIHgnk22sSHZyvXeEV9DnU7FOynw3GfWE30k66hJWQhMvAAgWUACAAA5u8X4ddz5uE9r6eZ/huPQA0RZQqqkH/b0ZgM/tElzttwCWKViD1WE3zJzYTKPfFQtTNtK31pTu1vQEAGt4zxEadPtImJOnWRTbjH8VlTabpJwQPbJ8plKxhviJVqvwxYWEpIZkhKD9d3xyte/ynjyw86zebn9t0S/PikII1CYCWUXTtk9N/aAlYvdlHtzi9Y7FlH+3MEPRPslGLYrdKHnA4Hcfqh/ujCugUWwMUVRhy19j4EwCLjGdsGEJIOUxFq/EyIJUKYKRHZoK/I0I5xMzxEIFsNsCIzdr8MgGuDYBBC7eKVXDHMFnOKrxBqtAaA6KoZeA+A3MwBOugisYhzr0WTBg=="}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"530"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25100000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"32151545455"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"579"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"475"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BIUR","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"600"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"650"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AI.BT","amt":"50"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"800"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"550"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATCM","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ZBYY","amt":"450"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"20000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"15314190000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"61442200000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"37009858010"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"158"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"158"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"158"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"158"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"158"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"299"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"299"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"299"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"299"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"9188"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"301"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"1500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"7"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"ACDIA","amt":"1500"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1200000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"30"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4444444444"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"2000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2605141890"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1537972179"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"8000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9618000000"}h!
text/plain;charset=utf-8
C{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5771915821.281"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"3000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"3000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"3000000000"}h!
JSON{"asset":{"generator":"glTF-Transform v4.5.1","version":"2.0"},"extras":{"ordimutant":{"role":"model","texture":"white","anims":"ordimutant-anims.glb"}},"accessors":[{"type":"SCALAR","componentType":5123,"count":58149},{"type":"VEC4","componentType":5121,"count":20044},{"type":"VEC3","componentType":5122,"count":20044,"max":[23019,32767,8740],"min":[-23019,-32767,-8740],"normalized":true},{"type":"VEC3","componentType":5120,"count":20044,"normalized":true},{"type":"VEC2","componentType":5123,"coM
unt":20044,"normalized":true},{"type":"VEC4","componentType":5121,"count":20044,"normalized":true},{"type":"MAT4","componentType":5126,"count":27,"bufferView":1,"byteOffset":0}],"bufferViews":[{"buffer":0,"byteOffset":1728,"byteLength":93},{"buffer":0,"byteOffset":0,"byteLength":1728},{"buffer":0,"byteOffset":1824,"byteLength":191946}],"samplers":[{"wrapS":10497,"wrapT":10497}],"textures":[{"source":0,"sampler":0}],"images":[{"name":"white","mimeType":"image/png","bufferView":0}],"buffers":[{"byteLength":193770}],"M
materials":[{"name":"white","doubleSided":true,"pbrMetallicRoughness":{"roughnessFactor":0.78,"metallicFactor":0.04,"baseColorTexture":{"index":0}}}],"meshes":[{"name":"material.001","primitives":[{"attributes":{"JOINTS_0":1,"POSITION":2,"NORMAL":3,"TEXCOORD_0":4,"WEIGHTS_0":5},"mode":4,"material":0,"indices":0,"extensions":{"KHR_draco_mesh_compression":{"bufferView":2,"attributes":{"JOINTS_0":0,"POSITION":1,"NORMAL":2,"TEXCOORD_0":3,"WEIGHTS_0":4}}}}]}],"nodes":[{"name":"Head_end","translation":[8.498101666809532eM
-10,0.028955871239304543,6.998561730142683e-9]},{"name":"Head","translation":[0.0004724443715531379,0.027670657262206078,0.008516939356923103],"rotation":[-0.04944350942969322,-0.0017951433546841145,-0.015725919976830482,0.9986515045166016],"children":[0]},{"name":"Neck","translation":[-0.0005436972132883966,0.09872502088546753,0.0008355979807674885],"rotation":[0.07962103188037872,-0.00027832912746816874,-0.00332849333062768,0.9968196749687195],"children":[1]},{"name":"LeftHand_end","translation":[-1.4435499906539M
917e-8,0.16215158998966217,-3.725290298461914e-9]},{"name":"LeftHand","translation":[0.0006695879274047911,0.1621498465538025,-0.0002514091320335865],"rotation":[0.0012643489753827453,-0.03890470787882805,-0.017301218584179878,0.9990923404693604],"children":[3]},{"name":"LeftForeArm","translation":[0.0017031101742759347,0.2053595930337906,-0.0006975214928388596],"rotation":[-0.013203383423388004,0.2695568799972534,0.14115220308303833,0.9524919390678406],"children":[4]},{"name":"LeftArm","translation":[0.00091086141M
76511765,0.13977979123592377,0.0007181375403888524],"rotation":[0.3780130445957184,0.033178865909576416,0.04846496880054474,0.9239352941513062],"children":[5]},{"name":"LeftShoulder","translation":[0.06747698038816452,0.0823913961648941,-0.0013046039966866374],"rotation":[0.5665688514709473,0.4189303517341614,-0.5912121534347534,0.3923840820789337],"children":[6]},{"name":"RightHand_end","translation":[8.556526154279709e-9,0.16032341122627258,-2.9802322387695312e-8]},{"name":"RightHand","translation":[-0.0010347969M
364374876,0.16031701862812042,-0.00096879992634058],"rotation":[-0.019585896283388138,0.07060662657022476,0.037582892924547195,0.9966036081314087],"children":[8]},{"name":"RightForeArm","translation":[-0.0012770130997523665,0.2011357545852661,-0.0019051691051572561],"rotation":[0.004678059834986925,-0.31471583247184753,-0.16487403213977814,0.9347452521324158],"children":[9]},{"name":"RightArm","translation":[0.00037503079511225224,0.14035646617412567,0.0020585402380675077],"rotation":[0.36484599113464355,0.00194124M
13239479065,-0.0015975183341652155,0.9310644865036011],"children":[10]},{"name":"RightShoulder","translation":[-0.06703727692365646,0.08310595899820328,-0.0008519599214196205],"rotation":[0.5664771199226379,-0.4201626181602478,0.5771920084953308,0.4116021990776062],"children":[11]},{"name":"Spine2","translation":[0.00042278176988475025,0.08687032014131546,0.0003194002783857286],"rotation":[0.0461072213947773,-0.0010103026870638132,0.0017958238022401929,0.9989343881607056],"children":[2,7,12]},{"name":"Spine1","tranM
slation":[-0.000021218074834905565,0.07372908294200897,0.0009226793772540987],"rotation":[0.05086138844490051,-0.00021006219321861863,0.004752939101308584,0.9986944198608398],"children":[13]},{"name":"Spine","translation":[-0.0002658070588950068,0.06823328882455826,-0.0026584528386592865],"rotation":[-0.08143950253725052,-0.00236322614364326,0.026068687438964844,0.9963345527648926],"children":[14]},{"name":"LeftToeBase_end","translation":[1.676016836427152e-8,0.1164560616016388,6.984919309616089e-10]},{"name":"LeftM
ToeBase","translation":[0.0005663307383656502,0.11645451933145523,0.00017779518384486437],"rotation":[0.3122987747192383,-0.06897060573101044,0.03996490687131882,0.9466336965560913],"children":[16]},{"name":"LeftFoot","translation":[0.0007663501310162246,0.2074846774339676,0.00009242026135325432],"rotation":[0.5561004877090454,-0.07270368188619614,0.02535449154675007,0.8275406956672668],"children":[17]},{"name":"LeftLeg","translation":[0.0002909487229771912,0.23233745992183685,0.00003197754267603159],"rotation":[-0M
.2038935273885727,0.01692439429461956,-0.06520719081163406,0.9766724109649658],"children":[18]},{"name":"LeftUpLeg","translation":[0.06391067802906036,-0.03463570028543472,-0.00337957008741796],"rotation":[0.003267076797783375,-0.03362691029906273,-0.9908511638641357,0.13066218793392181],"children":[19]},{"name":"RightToeBase_end","translation":[-5.5756572692189366e-9,0.11568348854780197,5.820766091346741e-11]},{"name":"RightToeBase","translation":[0.00008819025242701173,0.11568288505077362,-0.00031920289620757103]M
,"rotation":[0.31262436509132385,0.0872044488787651,-0.04079531878232956,0.9449852705001831],"children":[21]},{"name":"RightFoot","translation":[-0.0003469979274086654,0.20684492588043213,-0.00012578163295984268],"rotation":[0.5614633560180664,0.08199770748615265,-0.0539008229970932,0.821662962436676],"children":[22]},{"name":"RightLeg","translation":[-0.0004687730979640037,0.2390284389257431,-0.00024741049855947495],"rotation":[-0.22090129554271698,-0.018309371545910835,0.08539212495088577,0.9713782072067261],"chiM
ldren":[23]},{"name":"RightUpLeg","translation":[-0.06317134946584702,-0.03505510464310646,-0.006627226714044809],"rotation":[0.002029085299000144,0.044606324285268784,0.9939582347869873,0.10026582330465317],"children":[24]},{"name":"Hips","translation":[-0.0025375287514179945,0.5359067320823669,-0.006773120723664761],"rotation":[-0.013608062639832497,0.00028775082319043577,-0.02113938517868519,0.9996839165687561],"children":[15,20,25]},{"name":"material.001","mesh":0,"skin":0},{"name":"Armature","children":[27,26]M
}],"skins":[{"name":"Armature","inverseBindMatrices":6,"joints":[26,15,14,13,2,1,0,7,6,5,4,3,12,11,10,9,8,20,19,18,17,16,25,24,23,22,21]}],"scenes":[{"name":"Scene","nodes":[28]}],"scene":0,"extensionsUsed":["KHR_draco_mesh_compression","KHR_mesh_quantization"],"extensionsRequired":["KHR_draco_mesh_compression","KHR_mesh_quantization"]}
xxpxtlphp`ddpdd\dddXT\\XX`PTXPPHLLLHDPHH@@HH<<<<<@8<<08<<48404,404(,,,0(((,,((, $($$($(  ,$$
xl\dPXTTPPLD<D8<<0000(,,,$$(($$$
 0zV6naJZS9w-iLRxK9HTCa2IjIw
dnamefPHI.EDkdescription`pcontent_location
dtypegarweavelarweave_txidx+HzKcY-4ArM_MeDjdz0zV6naJZS9w-iLRxK9HTCa2IjI
SODA group: twins float
6j4ELk:to:USDT(TRON):TKGG9kdKvf2pLPPFv3Dzv85UavdQBFELdP
=j;k6V:to:USDT(BSC):0x6B68741faF36ED9311f5668e703789E9e1F4E814
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"ordi","amt":"25.61487803"}h!
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2512200724407/0/19:sto:0
DjB0x811661d957cbb1f5ee5bba60c3f9b01d9c7e3cd042dfd7da597ce766b2cf9532
DjB0x5cace9aa58db81f41bec9b9c163e4e7bbb66aacbb1f4a61659591b826368283e
DjB0xc48c5da5272108381a5bb20c30bc31bb336e2acc02a4de7c2086b4f79b2f1c49
DjB0x487963973162315b9266fa3b04ff7befaa5a47e4e844bacf18e158b6c00f8fbb
6j4Ula:to:USDT(TRON):TXHtgihX7iFAxv3RQqhcD3a4DjioAcXrLM
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"ordi","amt":"198.8"}h!
=j;ajc:to:USDT(BSC):0x780b41216A2617585190adD8aa4DBd88A214053B
/j-pdg:to:XRP:rGRM6T8xmEYdhyeiMUEHA7ju9wjnQCaQ2k
PjLMKn1:to:SUI:0x22eb53922183a8964c00bdb514573373b1e8f4a411b5d0d81d3ef11e1e4611e26
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU<
DjB0xc0fb5e00da9740a57f333a996777585e8a3799b203990648615b5ef3811b7c87Qf
DjB0x4ec4fbc3ef43c5c8765f58456b202ddecd2f048d9f6a7a2af550d1a478c57ea3Aw
B4b127ac31e0df22966c8e4fa3f65f9717afb2fe236c991d761e05d32a03454eb:0a
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"fifa","amt":"30"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1500000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"18000000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"czcg","amt":"350000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"czcg","amt":"115700"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"19.999"}h!
JSON{"asset":{"generator":"glTF-Transform v4.5.1","version":"2.0"},"accessors":[{"name":"Idle_t","type":"SCALAR","componentType":5126,"count":5,"max":[2],"min":[0],"bufferView":0,"byteOffset":0},{"name":"Idle_Spine","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":20},{"name":"Idle_Spine1","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":100},{"name":"Idle_Spine2","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":180},{"name":"IdM
le_Neck","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":260},{"name":"Idle_Head","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":340},{"name":"Idle_LeftArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":420},{"name":"Idle_RightArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":500},{"name":"Idle_LeftForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":580},{"name":"Idle_RightForeArm"M
,"type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":660},{"name":"Idle_Hips_tt","type":"SCALAR","componentType":5126,"count":5,"max":[2],"min":[0],"bufferView":0,"byteOffset":740},{"name":"Idle_Hips_t","type":"VEC3","componentType":5126,"count":5,"bufferView":0,"byteOffset":760},{"name":"Walk_t","type":"SCALAR","componentType":5126,"count":5,"max":[1],"min":[0],"bufferView":0,"byteOffset":820},{"name":"Walk_Spine","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":840},{"M
name":"Walk_LeftUpLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":920},{"name":"Walk_RightUpLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1000},{"name":"Walk_LeftLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1080},{"name":"Walk_RightLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1160},{"name":"Walk_LeftFoot","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1240},{"nameM
":"Walk_RightFoot","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1320},{"name":"Walk_LeftArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1400},{"name":"Walk_RightArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1480},{"name":"Walk_LeftForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1560},{"name":"Walk_RightForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1640},{"naM
me":"Walk_Hips_tt","type":"SCALAR","componentType":5126,"count":5,"max":[1],"min":[0],"bufferView":0,"byteOffset":1720},{"name":"Walk_Hips_t","type":"VEC3","componentType":5126,"count":5,"bufferView":0,"byteOffset":1740},{"name":"Run_t","type":"SCALAR","componentType":5126,"count":5,"max":[0.550000011920929],"min":[0],"bufferView":0,"byteOffset":1800},{"name":"Run_Spine","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1820},{"name":"Run_Spine1","type":"VEC4","componentType":5126,"count":5,"M
bufferView":0,"byteOffset":1900},{"name":"Run_LeftUpLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":1980},{"name":"Run_RightUpLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2060},{"name":"Run_LeftLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2140},{"name":"Run_RightLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2220},{"name":"Run_LeftFoot","type":"VEC4","componentType":5126,"count":5,"bufferViM
ew":0,"byteOffset":2300},{"name":"Run_RightFoot","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2380},{"name":"Run_LeftArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2460},{"name":"Run_RightArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2540},{"name":"Run_LeftForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":2620},{"name":"Run_RightForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView"M
:0,"byteOffset":2700},{"name":"Run_Hips_tt","type":"SCALAR","componentType":5126,"count":5,"max":[0.550000011920929],"min":[0],"bufferView":0,"byteOffset":2780},{"name":"Run_Hips_t","type":"VEC3","componentType":5126,"count":5,"bufferView":0,"byteOffset":2800},{"name":"Jump_t","type":"SCALAR","componentType":5126,"count":6,"max":[1.149999976158142],"min":[0],"bufferView":0,"byteOffset":2860},{"name":"Jump_Spine","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":2884},{"name":"Jump_LeftUpLeg",M
"type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":2980},{"name":"Jump_RightUpLeg","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3076},{"name":"Jump_LeftLeg","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3172},{"name":"Jump_RightLeg","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3268},{"name":"Jump_LeftFoot","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3364},{"name":"Jump_RightFoot","tyM
pe":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3460},{"name":"Jump_LeftArm","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3556},{"name":"Jump_RightArm","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3652},{"name":"Jump_LeftForeArm","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3748},{"name":"Jump_RightForeArm","type":"VEC4","componentType":5126,"count":6,"bufferView":0,"byteOffset":3844},{"name":"Jump_Hips_tt","tyM
pe":"SCALAR","componentType":5126,"count":6,"max":[1.149999976158142],"min":[0],"bufferView":0,"byteOffset":3940},{"name":"Jump_Hips_t","type":"VEC3","componentType":5126,"count":6,"bufferView":0,"byteOffset":3964},{"name":"Throw_t","type":"SCALAR","componentType":5126,"count":5,"max":[1.0499999523162842],"min":[0],"bufferView":0,"byteOffset":4036},{"name":"Throw_Spine","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":4056},{"name":"Throw_Spine2","type":"VEC4","componentType":5126,"count":5,M
"bufferView":0,"byteOffset":4136},{"name":"Throw_Head","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":4216},{"name":"Throw_RightArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":4296},{"name":"Throw_RightForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":4376},{"name":"Throw_RightHand","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":4456},{"name":"Throw_LeftArm","type":"VEC4","componentType":5126,"count":5,M
"bufferView":0,"byteOffset":4536},{"name":"HoldPistol_t","type":"SCALAR","componentType":5126,"count":3,"max":[1.600000023841858],"min":[0],"bufferView":0,"byteOffset":4616},{"name":"HoldPistol_RightArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4628},{"name":"HoldPistol_RightForeArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4676},{"name":"HoldPistol_RightHand","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4724},{"name":"HoldPM
istol_LeftArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4772},{"name":"HoldPistol_LeftForeArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4820},{"name":"HoldPistol_Spine","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4868},{"name":"HoldPistol_Head","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4916},{"name":"HoldRifle_t","type":"SCALAR","componentType":5126,"count":3,"max":[1.600000023841858],"min":[0M
],"bufferView":0,"byteOffset":4964},{"name":"HoldRifle_RightArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":4976},{"name":"HoldRifle_RightForeArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":5024},{"name":"HoldRifle_RightHand","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":5072},{"name":"HoldRifle_LeftArm","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":5120},{"name":"HoldRifle_LeftForeArm","type":"VEC4","cM
omponentType":5126,"count":3,"bufferView":0,"byteOffset":5168},{"name":"HoldRifle_LeftHand","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":5216},{"name":"HoldRifle_Spine","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":5264},{"name":"HoldRifle_Head","type":"VEC4","componentType":5126,"count":3,"bufferView":0,"byteOffset":5312},{"name":"Punch_t","type":"SCALAR","componentType":5126,"count":5,"max":[0.699999988079071],"min":[0],"bufferView":0,"byteOffset":5360},{"namM
e":"Punch_RightArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5380},{"name":"Punch_RightForeArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5460},{"name":"Punch_RightHand","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5540},{"name":"Punch_Spine2","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5620},{"name":"Punch_Spine","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5700},{"namM
e":"Kick_t","type":"SCALAR","componentType":5126,"count":5,"max":[0.8500000238418579],"min":[0],"bufferView":0,"byteOffset":5780},{"name":"Kick_Spine","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5800},{"name":"Kick_RightUpLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5880},{"name":"Kick_RightLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":5960},{"name":"Kick_RightFoot","type":"VEC4","componentType":5126,"count":5,"bufferView"M
:0,"byteOffset":6040},{"name":"Kick_LeftUpLeg","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":6120},{"name":"Kick_LeftArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":6200},{"name":"Kick_RightArm","type":"VEC4","componentType":5126,"count":5,"bufferView":0,"byteOffset":6280}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":6360}],"buffers":[{"byteLength":6360}],"nodes":[{"name":"Head","translation":[0.0004724443715531379,0.027670657262206078,0.0085169393M
56923103],"rotation":[-0.04944350942969322,-0.0017951433546841145,-0.015725919976830482,0.9986515045166016]},{"name":"Neck","translation":[-0.0005436972132883966,0.09872502088546753,0.0008355979807674885],"rotation":[0.07962103188037872,-0.00027832912746816874,-0.00332849333062768,0.9968196749687195],"children":[0]},{"name":"LeftHand","translation":[0.0006695879274047911,0.1621498465538025,-0.0002514091320335865],"rotation":[0.0012643489753827453,-0.03890470787882805,-0.017301218584179878,0.9990923404693604]},{"namM
e":"LeftForeArm","translation":[0.0017031101742759347,0.2053595930337906,-0.0006975214928388596],"rotation":[-0.013203383423388004,0.2695568799972534,0.14115220308303833,0.9524919390678406],"children":[2]},{"name":"LeftArm","translation":[0.0009108614176511765,0.13977979123592377,0.0007181375403888524],"rotation":[0.3780130445957184,0.033178865909576416,0.04846496880054474,0.9239352941513062],"children":[3]},{"name":"LeftShoulder","translation":[0.06747698038816452,0.0823913961648941,-0.0013046039966866374],"rotatiM
on":[0.5665688514709473,0.4189303517341614,-0.5912121534347534,0.3923840820789337],"children":[4]},{"name":"RightHand","translation":[-0.0010347969364374876,0.16031701862812042,-0.00096879992634058],"rotation":[-0.019585896283388138,0.07060662657022476,0.037582892924547195,0.9966036081314087]},{"name":"RightForeArm","translation":[-0.0012770130997523665,0.2011357545852661,-0.0019051691051572561],"rotation":[0.004678059834986925,-0.31471583247184753,-0.16487403213977814,0.9347452521324158],"children":[6]},{"name":"RM
ightArm","translation":[0.00037503079511225224,0.14035646617412567,0.0020585402380675077],"rotation":[0.36484599113464355,0.0019412413239479065,-0.0015975183341652155,0.9310644865036011],"children":[7]},{"name":"RightShoulder","translation":[-0.06703727692365646,0.08310595899820328,-0.0008519599214196205],"rotation":[0.5664771199226379,-0.4201626181602478,0.5771920084953308,0.4116021990776062],"children":[8]},{"name":"Spine2","translation":[0.00042278176988475025,0.08687032014131546,0.0003194002783857286],"rotationM
":[0.0461072213947773,-0.0010103026870638132,0.0017958238022401929,0.9989343881607056],"children":[1,5,9]},{"name":"Spine1","translation":[-0.000021218074834905565,0.07372908294200897,0.0009226793772540987],"rotation":[0.05086138844490051,-0.00021006219321861863,0.004752939101308584,0.9986944198608398],"children":[10]},{"name":"Spine","translation":[-0.0002658070588950068,0.06823328882455826,-0.0026584528386592865],"rotation":[-0.08143950253725052,-0.00236322614364326,0.026068687438964844,0.9963345527648926],"childM
ren":[11]},{"name":"LeftFoot","translation":[0.0007663501310162246,0.2074846774339676,0.00009242026135325432],"rotation":[0.5561004877090454,-0.07270368188619614,0.02535449154675007,0.8275406956672668]},{"name":"LeftLeg","translation":[0.0002909487229771912,0.23233745992183685,0.00003197754267603159],"rotation":[-0.2038935273885727,0.01692439429461956,-0.06520719081163406,0.9766724109649658],"children":[13]},{"name":"LeftUpLeg","translation":[0.06391067802906036,-0.03463570028543472,-0.00337957008741796],"rotation"M
:[0.003267076797783375,-0.03362691029906273,-0.9908511638641357,0.13066218793392181],"children":[14]},{"name":"RightFoot","translation":[-0.0003469979274086654,0.20684492588043213,-0.00012578163295984268],"rotation":[0.5614633560180664,0.08199770748615265,-0.0539008229970932,0.821662962436676]},{"name":"RightLeg","translation":[-0.0004687730979640037,0.2390284389257431,-0.00024741049855947495],"rotation":[-0.22090129554271698,-0.018309371545910835,0.08539212495088577,0.9713782072067261],"children":[16]},{"name":"RiM
ghtUpLeg","translation":[-0.06317134946584702,-0.03505510464310646,-0.006627226714044809],"rotation":[0.002029085299000144,0.044606324285268784,0.9939582347869873,0.10026582330465317],"children":[17]},{"name":"Hips","translation":[-0.0025375287514179945,0.5359067320823669,-0.006773120723664761],"rotation":[-0.013608062639832497,0.00028775082319043577,-0.02113938517868519,0.9996839165687561],"children":[12,15,18]},{"name":"Armature","children":[19]}],"animations":[{"name":"Idle","extras":{"duration":2,"loop":true},"M
samplers":[{"input":0,"output":1,"interpolation":"LINEAR"},{"input":0,"output":2,"interpolation":"LINEAR"},{"input":0,"output":3,"interpolation":"LINEAR"},{"input":0,"output":4,"interpolation":"LINEAR"},{"input":0,"output":5,"interpolation":"LINEAR"},{"input":0,"output":6,"interpolation":"LINEAR"},{"input":0,"output":7,"interpolation":"LINEAR"},{"input":0,"output":8,"interpolation":"LINEAR"},{"input":0,"output":9,"interpolation":"LINEAR"},{"input":10,"output":11,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"M
target":{"node":12,"path":"rotation"}},{"sampler":1,"target":{"node":11,"path":"rotation"}},{"sampler":2,"target":{"node":10,"path":"rotation"}},{"sampler":3,"target":{"node":1,"path":"rotation"}},{"sampler":4,"target":{"node":0,"path":"rotation"}},{"sampler":5,"target":{"node":4,"path":"rotation"}},{"sampler":6,"target":{"node":8,"path":"rotation"}},{"sampler":7,"target":{"node":3,"path":"rotation"}},{"sampler":8,"target":{"node":7,"path":"rotation"}},{"sampler":9,"target":{"node":19,"path":"translation"}}]},{"namM
e":"Walk","extras":{"duration":1,"loop":true},"samplers":[{"input":12,"output":13,"interpolation":"LINEAR"},{"input":12,"output":14,"interpolation":"LINEAR"},{"input":12,"output":15,"interpolation":"LINEAR"},{"input":12,"output":16,"interpolation":"LINEAR"},{"input":12,"output":17,"interpolation":"LINEAR"},{"input":12,"output":18,"interpolation":"LINEAR"},{"input":12,"output":19,"interpolation":"LINEAR"},{"input":12,"output":20,"interpolation":"LINEAR"},{"input":12,"output":21,"interpolation":"LINEAR"},{"input":12,M
"output":22,"interpolation":"LINEAR"},{"input":12,"output":23,"interpolation":"LINEAR"},{"input":24,"output":25,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":12,"path":"rotation"}},{"sampler":1,"target":{"node":15,"path":"rotation"}},{"sampler":2,"target":{"node":18,"path":"rotation"}},{"sampler":3,"target":{"node":14,"path":"rotation"}},{"sampler":4,"target":{"node":17,"path":"rotation"}},{"sampler":5,"target":{"node":13,"path":"rotation"}},{"sampler":6,"target":{"node":16,"path":"rotation"}M
},{"sampler":7,"target":{"node":4,"path":"rotation"}},{"sampler":8,"target":{"node":8,"path":"rotation"}},{"sampler":9,"target":{"node":3,"path":"rotation"}},{"sampler":10,"target":{"node":7,"path":"rotation"}},{"sampler":11,"target":{"node":19,"path":"translation"}}]},{"name":"Run","extras":{"duration":0.55,"loop":true},"samplers":[{"input":26,"output":27,"interpolation":"LINEAR"},{"input":26,"output":28,"interpolation":"LINEAR"},{"input":26,"output":29,"interpolation":"LINEAR"},{"input":26,"output":30,"interpolatM
ion":"LINEAR"},{"input":26,"output":31,"interpolation":"LINEAR"},{"input":26,"output":32,"interpolation":"LINEAR"},{"input":26,"output":33,"interpolation":"LINEAR"},{"input":26,"output":34,"interpolation":"LINEAR"},{"input":26,"output":35,"interpolation":"LINEAR"},{"input":26,"output":36,"interpolation":"LINEAR"},{"input":26,"output":37,"interpolation":"LINEAR"},{"input":26,"output":38,"interpolation":"LINEAR"},{"input":39,"output":40,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":12,"path":"rM
otation"}},{"sampler":1,"target":{"node":11,"path":"rotation"}},{"sampler":2,"target":{"node":15,"path":"rotation"}},{"sampler":3,"target":{"node":18,"path":"rotation"}},{"sampler":4,"target":{"node":14,"path":"rotation"}},{"sampler":5,"target":{"node":17,"path":"rotation"}},{"sampler":6,"target":{"node":13,"path":"rotation"}},{"sampler":7,"target":{"node":16,"path":"rotation"}},{"sampler":8,"target":{"node":4,"path":"rotation"}},{"sampler":9,"target":{"node":8,"path":"rotation"}},{"sampler":10,"target":{"node":3,"M
path":"rotation"}},{"sampler":11,"target":{"node":7,"path":"rotation"}},{"sampler":12,"target":{"node":19,"path":"translation"}}]},{"name":"Jump","extras":{"duration":1.15,"loop":false},"samplers":[{"input":41,"output":42,"interpolation":"LINEAR"},{"input":41,"output":43,"interpolation":"LINEAR"},{"input":41,"output":44,"interpolation":"LINEAR"},{"input":41,"output":45,"interpolation":"LINEAR"},{"input":41,"output":46,"interpolation":"LINEAR"},{"input":41,"output":47,"interpolation":"LINEAR"},{"input":41,"output":4M
8,"interpolation":"LINEAR"},{"input":41,"output":49,"interpolation":"LINEAR"},{"input":41,"output":50,"interpolation":"LINEAR"},{"input":41,"output":51,"interpolation":"LINEAR"},{"input":41,"output":52,"interpolation":"LINEAR"},{"input":53,"output":54,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":12,"path":"rotation"}},{"sampler":1,"target":{"node":15,"path":"rotation"}},{"sampler":2,"target":{"node":18,"path":"rotation"}},{"sampler":3,"target":{"node":14,"path":"rotation"}},{"sampler":4,"tarM
get":{"node":17,"path":"rotation"}},{"sampler":5,"target":{"node":13,"path":"rotation"}},{"sampler":6,"target":{"node":16,"path":"rotation"}},{"sampler":7,"target":{"node":4,"path":"rotation"}},{"sampler":8,"target":{"node":8,"path":"rotation"}},{"sampler":9,"target":{"node":3,"path":"rotation"}},{"sampler":10,"target":{"node":7,"path":"rotation"}},{"sampler":11,"target":{"node":19,"path":"translation"}}]},{"name":"Throw","extras":{"duration":1.05,"loop":false},"samplers":[{"input":55,"output":56,"interpolation":"LM
INEAR"},{"input":55,"output":57,"interpolation":"LINEAR"},{"input":55,"output":58,"interpolation":"LINEAR"},{"input":55,"output":59,"interpolation":"LINEAR"},{"input":55,"output":60,"interpolation":"LINEAR"},{"input":55,"output":61,"interpolation":"LINEAR"},{"input":55,"output":62,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":12,"path":"rotation"}},{"sampler":1,"target":{"node":10,"path":"rotation"}},{"sampler":2,"target":{"node":0,"path":"rotation"}},{"sampler":3,"target":{"node":8,"path":"rM
otation"}},{"sampler":4,"target":{"node":7,"path":"rotation"}},{"sampler":5,"target":{"node":6,"path":"rotation"}},{"sampler":6,"target":{"node":4,"path":"rotation"}}]},{"name":"HoldPistol","extras":{"duration":1.6,"loop":true},"samplers":[{"input":63,"output":64,"interpolation":"LINEAR"},{"input":63,"output":65,"interpolation":"LINEAR"},{"input":63,"output":66,"interpolation":"LINEAR"},{"input":63,"output":67,"interpolation":"LINEAR"},{"input":63,"output":68,"interpolation":"LINEAR"},{"input":63,"output":69,"interM
polation":"LINEAR"},{"input":63,"output":70,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":8,"path":"rotation"}},{"sampler":1,"target":{"node":7,"path":"rotation"}},{"sampler":2,"target":{"node":6,"path":"rotation"}},{"sampler":3,"target":{"node":4,"path":"rotation"}},{"sampler":4,"target":{"node":3,"path":"rotation"}},{"sampler":5,"target":{"node":12,"path":"rotation"}},{"sampler":6,"target":{"node":0,"path":"rotation"}}]},{"name":"HoldRifle","extras":{"duration":1.6,"loop":true},"samplers":[M
{"input":71,"output":72,"interpolation":"LINEAR"},{"input":71,"output":73,"interpolation":"LINEAR"},{"input":71,"output":74,"interpolation":"LINEAR"},{"input":71,"output":75,"interpolation":"LINEAR"},{"input":71,"output":76,"interpolation":"LINEAR"},{"input":71,"output":77,"interpolation":"LINEAR"},{"input":71,"output":78,"interpolation":"LINEAR"},{"input":71,"output":79,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":8,"path":"rotation"}},{"sampler":1,"target":{"node":7,"path":"rotation"}},{"sM
ampler":2,"target":{"node":6,"path":"rotation"}},{"sampler":3,"target":{"node":4,"path":"rotation"}},{"sampler":4,"target":{"node":3,"path":"rotation"}},{"sampler":5,"target":{"node":2,"path":"rotation"}},{"sampler":6,"target":{"node":12,"path":"rotation"}},{"sampler":7,"target":{"node":0,"path":"rotation"}}]},{"name":"Punch","extras":{"duration":0.7,"loop":false},"samplers":[{"input":80,"output":81,"interpolation":"LINEAR"},{"input":80,"output":82,"interpolation":"LINEAR"},{"input":80,"output":83,"interpolation":"M
LINEAR"},{"input":80,"output":84,"interpolation":"LINEAR"},{"input":80,"output":85,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":8,"path":"rotation"}},{"sampler":1,"target":{"node":7,"path":"rotation"}},{"sampler":2,"target":{"node":6,"path":"rotation"}},{"sampler":3,"target":{"node":10,"path":"rotation"}},{"sampler":4,"target":{"node":12,"path":"rotation"}}]},{"name":"Kick","extras":{"duration":0.85,"loop":false},"samplers":[{"input":86,"output":87,"interpolation":"LINEAR"},{"input":86,"outpM
ut":88,"interpolation":"LINEAR"},{"input":86,"output":89,"interpolation":"LINEAR"},{"input":86,"output":90,"interpolation":"LINEAR"},{"input":86,"output":91,"interpolation":"LINEAR"},{"input":86,"output":92,"interpolation":"LINEAR"},{"input":86,"output":93,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":12,"path":"rotation"}},{"sampler":1,"target":{"node":18,"path":"rotation"}},{"sampler":2,"target":{"node":17,"path":"rotation"}},{"sampler":3,"target":{"node":16,"path":"rotation"}},{"sampler":4M
,"target":{"node":15,"path":"rotation"}},{"sampler":5,"target":{"node":4,"path":"rotation"}},{"sampler":6,"target":{"node":8,"path":"rotation"}}]}],"scenes":[{"name":"Scene","nodes":[20]}],"scene":0}
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
/Foundry USA Pool #dropgold/
(j&SODA #8919 - #8920: Drawn Jun 24, 2026
dnamejSODA #8919edrawnlJun 24, 2026dseedutwins orb - panel 1/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
dnamejSODA #8920edrawnlJun 24, 2026dseedutwins orb - panel 2/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6360"}h!
text/html;charset=utf-8
DjB0xd2c76d8c50feb9d5ae6a2e4aba992c953fc2fa4ebe7aa9c7449daf82f2f6717f
IjG=:ETH.USDT:0x7e35285023F6a7f0ba86D4782b25B91809b4f569:60120829593:sto:0
DjB0xb137c63043bbaebc202b3d6233698f33096bdb89dbc8b248088ac4d3739b93de4
2j0to:USDT(TRON):TWhFyA4EaAX78V4tYyzDdL6uNQ6JSwfHrL
2j0to:USDT(TRON):TWhFyA4EaAX78V4tYyzDdL6uNQ6JSwfHrL@b
6j4m1x:to:USDT(TRON):TXA6SWXySxuEsLgpVtLQZp2Kp6hcpV1X2w
6j4aiq:to:USDT(TRON):TAJkZrP1TbbTGL1bSJWXDvdP6EAAdXMhLV
6j4wHp:to:USDT(TRON):TUg9U3kwShCzYdH7dy5ebWU6iCidYuRiQW
6j4ade:to:USDT(TRON):TNPLJvfrUC5qY1soya7buDEyXRGTRvqqgJB3
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ordi","amt":"0.01"}h
DjB0x47d0f4802ccc4e28a36c8d70d185fe9eb1458ff3276895ac9cb5a7c9aaf7d803
DjB0x5bc9f8c6bac2d2c7b2bbfee7579185f7353927c7a12ca56d79120ca9568f524c
DjB0x9afcc07da8fafa5e6fed4007e9ce4c7aa20216c6190c3e3a78f25e36dc725026
DjB0xd711e2ea3a6739c6d4bc75b631d22e1d7e16a9361710890cf6b122e350cb368d
DjB0xfda86725ff4c31093af0bac44819d95b2763534d8dda79f3221fffe45de8d2d9
DjB0x9bf6c6328725439bce9854747d0613542c97bb5c7bf73601a3143c01aa7afd41
DjB0x7b28423c65bdac4e09226c467598cbcb8cdd27f0e4ba711e2fc1072663cc9767
DjB0x68391cf714eef253eaebc21a95b66243674fc35f6fe16192e6ceac7b144ada09
DjB0x416da51261dab341cf7f5ac095074f85d9069118f53922cf9b8a35e5964ef4cd
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"ordi","amt":"1.704521"}h!
2j0to:USDT(TRON):TPfdBS1Jq71D1aLvZuX7krPYTqTBjLyrKM?%
DjB0xc625ee7b08cf8b9096b4159dad963768f84a6ce9514f859a86267177d5cad6ad
DjB0xc5cb88c43ef22d08079486d515a695fcf3ae264e88d9002fb2ddb14975639b72
DjB0xcff6b3591190d8de0db6303a355fdb6a634c6bab2e3c9a2c938f420713cb955c
DjB0xc4b966ffc4db73b66a31e78979170f974c4b2322077eb88b4c4357760a5d9773
DjB0xfdc6e0901460e00abd7bd15cebdabcd3291c4804b605773ca6d7095d9b226a26
DjB0x2c2ab7ff42ef1e2b5c8d9da9cd7afb1023512b8de8b03c714188f2df49fd72ed
DjB0x9948df24b02fcc1ae21c3abac3202aa7fa7d4d6d832a5610c2ad9cc9da7af6dd
DjB0x2a73bf54c31aeb59daab2ca9c44d7b62b46247a684aed529fa4e8c6da3fc03f4
DjB0x600c1e445610627fee9b73264491d37c1ee466c45b20c2724bd789268a656c65
DjB0x29e3b7998315e8160f97260a221f383f5ab02b2405f054378c4954169c0cfded
DjB0x44fe4262fc9f4a07616728e9fe71826be242934a842b585d75c5ef4b6020b2e4
DjB0xb1bc4084e84fc8b9293d41d7eaad53e0b7a009246cbeaa498409bfa2da7e58cb
DjB0x423ae6e655dfa3b7a02b9fc3192275116fcd5af6e3966cc59fccf715ff0b78f8
DjB0x422cff1f7e3c5e3ffa1cbc5eb458917e910d75e1dc1514f4a9ed697eef3bc12f
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"mskk","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
DjB0xc5b2719e5c2c93b8b7724a2d2a246b463522e0ccc8378144ed344f0bdcdb3f67
DjB0x5ea1503c455a0059c17b5dfb31e97c14ba40cd9a730031491eda4040de468b64
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
>j<from:300USDT(POL):0x3d9b523817e45d8A142f751A9DBCd86130d3E898
=j;from:20USDC(ARB):0xc743d06F5B7AB9Da76b8c18FcFdd70B4dBCA5390
DjB0xaf7ba4b55f6ebb6337bd260f5512e857c4ac2769d156c0196953c1936a3e3537
FjDOUT:872C61BEA8B5DA8CCAAE117CBBA1E5CC8123E7E4850898D8D1FDBB93F67541DD
FjDOUT:73EFB472848E2C8B38B87670D842E3503B6415AF0E113337EBB1CF97875A46E1
DjB0xb4fd67f074fad7bdeae3dacb5d15451becb1fcc9b319f3fc782b7923d620369e
DjB0x2e968aec256a66976c129b4861b014a14e1ee5fabd0b9684cc2d86d2bbb055db
DjB0x556d8c9eeb5df0b6f834a3a6e5c1bdc05d5b029c43d41961f408cf4df84d82f4
DjB0x03d877c300a3896a98a849ea6a49bfac23e98c72da7afcbb8dd592af24642e67
DjB0x1d73e6ebf2f5e583cbbfff2aca4c3bd38fdd54514f0c94f6d1ab57cc0433a6c8
DjB0xdfa12c01a2fd852c269ace99f6e288f0aee4ad60e61cd6366ae53b59830d1325
DjB0xc6ce8d61daf59cdc0336a6b00dcda556db05f7b5942aec3a1a67891006a59914
DjB0x4e68bcc81ddc308fb02c243f5b06562f77f98ae3b9f373ccbd614937ee0e14b3
DjB0x8f93055eeb152e7f69db58228c6864a2d21839dffc6eb5d61cedd3dfb055920f
DjB0x5318e2b716564b524a4ef219508787dd6ae0597c0ec35de5b54781cfa11091ac
DjB0x25595a4d01f1d6bb44983a1168e2b25f977441bf48e2ea85799f8835f96e04c0
DjB0x2b71fe29c1c50458930582bd2365ec8dc5635bc72731b34c4af0a6121a05964a
DjB0x7c6e8aec3c35e4ef99758d230f445489eaeab9fd9f0a57eff994fbc82415379d
DjB0x8d297213efaf54184049acfe6ced5edd60363c2d67ecd11b6ac7e557b1c22c39
DjB0xf7d045264ebc196a347126ad2025ee1556df83e937a73e6b6f35658133f718ab
DjB0xac32381ec91b8ecdff959b90d98d195af535b1898a2ef404b8a3d402acc94181
=j;1Yt:to:USDT(BSC):0xE5f02084C6358635a47305Bd736a5E4cBaeC84f2
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1399.83"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BIUR","amt":"50"}h!
0j.{"p":"crc-20","op":"mint","tick":"SEAL","n":2}J
=j;oba:to:USDT(BSC):0xadF9F8687557E81B87C0907EA7Ac20988B949e69
=j;txw:to:USDT(BSC):0xE0cd63332a49b8b6e103A54a70F1Ca2c3605dBAf
=j;nad:to:USDT(BSC):0xe806f35945089758228aAD17b18e0e915f2d56eC
=j;t9B:to:USDT(BSC):0x9c77bf0f89FCB078D4b2544c3796CD96ba8AdE67
?j=ic2:to:USDT(ERC20):0x05FD56C4EDebab8ae1B36b9b2594380266E0689c
DjB0xfc3ac8734449473e48546d40ef2d7af7221550d63bd6d3059a0fbc560bf8bad8
6j4zFW:to:USDT(TRON):TELto6gbfVQtj74phNHUPigfG7CJQigorto
6j40Jx:to:USDT(TRON):TWAVozFf4tp9pDcoJFqrZxRPVB6BkjWNf4y
6j42Hp:to:USDT(TRON):TD6r4G3fpaUVcbdXHVZFx7mdM2GVsXVzgwB
6j4mpo:to:USDT(TRON):TGtZqNnRBGFmGptz9nkrXtuhzvgzG1q7yJ
6j4Hdc:to:USDT(TRON):TP2oYkLN6p1gQGKCkQXmWHM3jcmVLvDFP6
6j40QU:to:USDT(TRON):TGG5k6fnouFy9svdS8qtsGau4HfzbJfMgw2
9j7a1Y:to:SOL:2y44YJXc3kXZyJonhM8ebVUbe7BEsFoiUQ4MrZ9u1rzB
<j:AXK:to:POL(POL):0xD7F94550f0244Cd97ED09cF47Fcbfa5332C95A6cd
<j:ZHr:to:POL(POL):0x9b6Aa210e29A6eDf25DB5D1241b33fFEbB1F067F
=j;D1v:to:USDT(BSC):0x8E4EE4693b850D09Aa4AFc51fDA4884D034937890
=j;c23:to:USDT(BSC):0x31C008b0C1648c890a919Fef1bC79F00D261681C
?j=9VP:to:USDC(SOL):GY6CDnNE9mRCVgnxP6wkhSEwq1hwRV75GEDWjT5LM1ED
?j=uuz:to:USDC(SOL):AtudCQPgV2KxDizGkZhfwAd4AKXjNtu9v2c2ekg8ZzPN
?j=oer:to:USDT(ERC20):0xd83fd7fA4195a5018A954b4Ada05D1272123f549&n
6j4MIi:to:USDT(TRON):TKKLBgPEorWVZCEuWv6K4Kr4YJyUEseyDx
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
Bj@from:257.6USDT(ERC20):0xdccbaa4c8af6b6b7170846e268e30d51ea6c39c5U
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2523625607250/0/19:sto:0
DjB0x1b8bd0474d04fbf1aa39ffe58c663b8daf6766a96722a8b6af21e71956a6e3a8
DjB0xd382ab23cda78892ee7e878b51369a3137b3031b4932f03d11b715cdec2e7008
DjB0xf136e02748d52df29f79a84f1718c3a4955d9c020f742d9b3f9144ca53264f90
DjB0xa5dfaae552d49ab17b81ae0474db735013b2cd0d80a62e5fcec5e866e4ad5b55
DjB0x4a4eeb62537e9639759f64b4b9075dba962d4468407f5a8e49a4996462263531
DjB0x058cab599cbb12a6ea50af58a9670971eca5350f023a2e2ff86d4028844c8480
DjB0x4eb7d7f2087adffda285ec8387d708a5d07478baa3dbed776a2450a893d71601
DjB0x5d1f6b8b79181fa755b3f08a4b2a230ffa9d97803f5d7265fd5f3946eca5cce8
DjB0xaf46931f0cf682c06e7451a24af039a0d22090180aac509dd6d022456e8abc78
DjB0x3efd0f287de139b10821407ecac0a997fe79cafb9ede2518539e7a090e492e66
FjDOUT:0001C277C911C7FEA215326860CE0B05C3E828E51E5BB4CEB9D8DA262DC4D31D
<j:=:e:0x2B70bFd2DcC57c07091977e329fB3C0bAA2503F9:0/1/1:ej:75
6j4AKN:to:USDT(TRON):TPjP1tn9QFY4kCqu3VRAht2PjkJHFz3WTX
DjB0x58284d0df4832a3ed88af92a197766c921fa17f37378c89ca8a282a117318b6a
DjB0x87f4f636d4fb0ef52989e9eec5dc6e49f00882943cba9be211b44cf4d1b06720
DjB0xcddd1d544b6b874be4a393cc4d0dc559a88ab1625f3ccdb8d4d336a75d44d387
DjB0x3d90bf3ea2f21e7666efcb4d2e0f9afcbe432fdca9e4ae5069a2ea09403b9f52
DjB0xc522170aa1816144c0431611f7a33d8f1430aef69aca33c31454f46438d9c133
DjB0x826a799ac5a5040cfce7aea36dc22b2c109b6715a92454bcaa801855d23dd0ce
DjB0xa03c1c2152d78c205c94aba176fb8e7f27e1c09e214d935f8364845e352e46bb
DjB0x650bc892298ee921f6af7714c9ad4a1ab8b83d5b3a92c39227690d6a112468a5
DjB0x2a6001d3f2c64897045fc5fe50bf9856b0b1d92e928e6f094e8b978caba1735b
DjB0x8aff03ea1398b2ebc8687be0bba0861109296119497bab5b7e1803c8cf3bec0f
DjB0xfecb47d2dd7f082503d4b84adf2fc98203b246d07e3320a529e2ae1864dd166f
DjB0x7a53f8e05d05019801fed32c775bb5bc3b8d9e3c55f7abbee10bcb9fb774555a
LjJ=:AVAX.USDT:0x9097925e484afba3e0350264c161f9bb9f89c1f9:4135613430/0/1:w1:0
OjLL0x9a06465fdbabc2ab625f79c8b9affaba182f8c574afbb09994dc6a5a8bb0311a=|lifi
DjB0x5c20395372e1b5658f737162c27eed18484b424fd27ba2150bfc78bd83f53efc
DjB0x7da235407a0969944fa944ec27cc081bf3cdaa4dcebddf13efcb2fb7b7ac8ca2
DjB0xeb37b6f98d0b4c58df3fcf839adfce4023229a0d0792acfc118da8eb7e460040
DjB0x58c05b6c1b607a53ff57d997c15d016e3ce4e26d7b2dad10fd4152987d93ba68
DjB0x9aca0abfcdd75a0f8c8c53a2c8d6ea4a6e90d2addd7a34b0330e71fa0a89b8c4
DjB0xa98fcea712a0774e1b7117c1b6981b22d62600e11a0d14aab5c862f39fe276bd
DjB0x1553b2cf9377fa06260a2ee92d91a1b01316b1a085cf0a18453c3bb83f50da77
?j=5HG:to:USDC(SOL):AtudCQPgV2KxDizGkZhfwAd4AKXjNtu9v2c2ekg8ZzPN
=j;ux3:to:USDT(BSC):0xd90d4bE991CCF55fAaC2B172B7ABDF9586583a39
6j4ndN:to:USDT(TRON):TQtKfyevhq9GkouRZttGZiFnq7CFT9Hw6e
6j4iNx:to:USDT(TRON):TY7wmciwaHhcsKqZ7i3pWXz9MdwBEzNXvF
=j;mWe:to:USDT(BSC):0x66d8801353F42C5F7235cE7bfCf44b51A37cD51F
=j;d2t:to:USDT(BSC):0x94B861F52478a6F5e8A6a84a28784FF86e458db5
/j-uFq:to:XRP:rEhNJfKEVadAR6iFPWUmDag5kKUFTWkLkL~
6j41AF:to:USDT(TRON):TQmMLy6rjbgUr3nSB9vvunqdwp2BxMjpxd
/j-2AI:to:XRP:rH5X1jVPxgnvWCtsBv3woBvpqVpsvwoHH1
6j49yi:to:USDT(TRON):TAMCuVrNmg3nvQhUmnyAKy3MuKPvk4QGss
6j4C9Z:to:USDT(TRON):TY4psQsvka4adXmoZNMzD5Erc5ckd82bAk
6j4maL:to:USDT(TRON):TWu63Vc7wXnrnQb4KohE7GrmrLjBu6YCTk
6j4i4w:to:USDT(TRON):TZ1xcFytsjmho3uER3MwKD8GmPnMSHSoFk
6j4rkF:to:USDT(TRON):TAJkZrP1TbbTGL1bSJWXDvdP6EAAdXMhLV
6j4ksW:to:USDT(TRON):TNWjEsPqSoJ19BrJajMPZq9o4LUMaGHUt6
6j4wpQ:to:USDT(TRON):TKTf5aUr4HAr3Ktxh3kZu9VcUAjua9wa1MZ
6j4YOz:to:USDT(TRON):TNBckd2d8ThvmJtGDtJS4zyDcuRuq42kwZ
6j4jXs:to:USDT(TRON):TWAVozFf4tp9pDcoJFqrZxRPVB6BkjWNf4`0
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1"}h!
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"MSKK","amt":500000J
FjD=:tu:TVRw2fjpu6ZdQga9YmMvn8pyma9U5eF2QQ:1181537170463/200:sk/t1:0/70
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"2000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"28000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"OPMX","amt":"2000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"50000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"43000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"4567888889"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"60000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"12000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"70000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"26000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"
5j3to:SOL:6N5NtZAVqA2FH4NaV7dmtZgDmVUGqKzHqwe8BfUYobgz
DjB0x90cc9c3f5f619075eaa348954d405cd0e607d5fa9b6f20f2a7cf2fdca2dda82do
=j;=:l:ltc1qjq0ajcndrskp38xqke36law8k2aqmg623m25t8:0/1/1:ej:75
<j:=:TRON.USDT:TBB3a598zxxGubZwDvHUYtGQqqfnRxAUBh:0/5/0:ej:75
DjB0xe44f72b626009ccca9f2cf847a30d9b8d147ad95f8b49a636d5bcaf4c63be708
DjB0xb3e49a4f04628105a74b12295d1c694153d2416b58a475a1851515029c6cf4fd
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"TURT","amt":"169952.931"}h!
     Mined by Secpool    v
6j4from:19USDT(TRON):TW6GNHXXGza5B4fMrzVgvXgZQSuCTtqD3J
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
DjB0x98f4af3deb11c9cac98ed86373061266df200662b381405b3c5074ae3aeade3b
DjB0xfcd19a85cd65e1b3797cfa07350cce0695e23503cdc5bb5308e1c3b060c3b0da
DjB0x58a71779b650b8651c72031f587ad3dec8d2b5076dd048867e119fb072aac04c
DjB0x00cf3d2e717bbe4ef8f32e07252b83490f45073690a3290b9a377fd1848e0d47
DjB0x9b7b56ac48168f140435494e5075fdba534c3229f95dc23f9f79a437c0ab988f
DjB0x6750a58fbde3b6b32f863d2d8ec9b5a5fae486cd3016c29de27a71d273bd1793
DjB0x2bd1cca6274e75517771eb84b49325ecb63f509b0c2250ca3707c520e9629133
DjB0x6513671e7e42fd2f670305f552fd501c15ba6bf1726d89c2d93e57e39c5ec847
DjB0xb8b5e8951b5da2aab26cf25d4f42951df54071b6bf4a90fcc374970eb52c42a7
DjB0x2096293cd39faf4c841f8871e27d97e3bf61dbd7bcb2e2cbda05da8406bb0e68
4j2to:SOL:S6WV8SwMpJkaZL7jj3KT4eF3agt4t4L6rakJCVmAh7P
2j0to:USDT(TRON):TSPLFAgaqeKhCJJNrfQX722qw5SNV49Nx6v
DjB0x90cc9c3f5f619075eaa348954d405cd0e607d5fa9b6f20f2a7cf2fdca2dda82d
DjB0x1b44e32360ce16f2096ca0fd5148eded64c0caa9b985d10416cf2618ec5f098c
DjB0x6e9134759b87bc8e25407181e08409f72157abc403825d7905b5460b2744a80c
FjDOUT:B5C4A49121D8EAE6432FBC4B7C4AFF73E76AC8316991D295BCD1F369B1F01BDF
DjB0xc3ba9c95b78b36f88ba872cf33906d4467d17326c16bfebdd9e801aaa570e39a
DjB0x98ecfcd78992757dd34384fcd1ac8b38c653885db7c6d92e6bfbef60cddfe43d
DjB0xceee2911ddcd878405e807712e6cce6e3b68c4fcfe944f82a9e410ee2ad8d9a5
DjB0xf944a06f67b2cdfdf6ebc7f64fafdfd20496ba8506b233602da9809e2da55368
DjB0x27decf0ce082c392df53d2c67f4843c3ca9c03df26915dca62165aa582cf928d
DjB0xa6acc72fc63595ea3b638e0da424f40f9ebdf20f6a1e060a4dc16f7a0b666e82
DjB0xc73f7b4ffd986ce709c2dd1d69e89e43744798b33f1cec235f9e125a7f62f6d5
DjB0x4e923a305888193010a7e55d75122f8e42740f0748e2c06bde680c4707ccb441
DjB0x5163b210997cf7f37f7d06e3402024f20b8b6b2bb191033fd2030810ccbbe668
DjB0xc1b6377c97ff382a53dbe810fddc5bf0416d643b2bcbdb16eeeb90f6cefe27b9
DjB0x901fe1d42608c44f0c4cbc44ae47227132db2d83fc4c6a207caa6891af1808c7
DjB0xb13fa60341db532b9491098c1df8ec898f50ec0859ac385aaee1b6bc519e28e6
DjB0x3f0ad7e3604abd5e47115347663ef24be81c3f51a3e7581bdcd37f2ad9da78d9
6j4gL7:to:USDT(TRON):TAxirVd2Gs6CsWjRN642aQRMgseuJWZFNV]-
DjB0x3f57bf984509aea083b23a174a85eb969da2becd5aa98701a722f7123d09b9c2
DjB0x4826b1400f886a245e613947397cd826568065ba3cfa7e61aa0f3277210d0140
=j;QAe:to:USDT(BSC):0x9153F82a19678E4D6F8D267b746E897D32d94697
=j;DNe:to:USDT(BSC):0xfc4614a669cbfAffB67D005A8A461f7fFC55B10B
=j;U2c:to:USDT(BSC):0x865d2AA2BFe30F026Ea1F627d78881e562561862
2j0to:USDT(TRON):TH3uGBgjLTPcgxT6uT8PH5WsEHLKCu9wpq
=j;Zst:to:USDT(BSC):0x257C5E13Eb53A857ee6d8251Cd2dC741096e5Ae5
=j;D1X:to:USDT(BSC):0x0701f2ea546b1555b059e50370aa30Ac141252D5
=j;fVp:to:USDT(BSC):0x44c362962Bb89196432A447c6387db30186Ec5A0
6j4Two:to:USDT(TRON):TVAyEoDkP35yvemYMnT51Mo9EgNGC5iUwB
6j4nq6:to:USDT(TRON):TLtscRf5zfkCsYZYUyjuFPUawCyPNQ1fwB
EjC=:tu:TC7BmDnRcTxExGrfySMRobex4hTvJEMoNS:805116005987/200:sk/t1:0/70
MjK=:u:0xfD67245323c38c27dF1f147485eC3Ca9C3E96F96:1285378265529/200:sk/t1:0/70
6j43Vy:to:USDT(TRON):TWu63Vc7wXnrnQb4KohE7GrmrLjBu6YCTkJ
6j4ak3:to:USDT(TRON):TRPauMHTkk7dhJ8qfhfa3wEpTWniNvrCwP(t
6j47NI:to:USDT(TRON):TUFkb6Qnxiu8KpMNJhiQAqrwkNTHLG3xsio
6j4lFl:to:USDT(TRON):TRMCcxK1D3HsPMNuKbtf1EdVtM9GKwj87jq
6j4jBc:to:USDT(TRON):TCc95uasivoavbb9CB1GdS3SBnEXAf2LMn-
8j684S:to:LTC:ltc1qeq6fgdfvxww927yxyqltxuzcx3ud4e33j3q74t+
?j=VZ5:to:USDT(ERC20):0x8db8f3E82467D27725EaEd3ED119BeFb16be0678
DjB0xa344550a4301b524447eade9192478d38a06c43e9a40a8ab05a7906c74744dd6
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"25440"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"4000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"3000"}h!
B0b0cc28da5fc481ee261109aa16315e665cd24d206e6cc3a31de778a2722fe52:0a
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"ordi","amt":"78.52"}h!
Powered by Luxor Tech]
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"TURT","amt":"169952.93100000"}h!
6j42tn:to:USDT(TRON):TCB4pBcVwG8WdUvnGHTT55e3vrLV66u8u8
6j4Djx:to:USDT(TRON):TAqyHiADNL2qQEHtnfo8VZoxZNfF9h9JGN
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2530509641847/0/19:sto:0
DjB0xda3642985d36f7b7446991ea4717a56851ccb61ffe00d34081b9b83e7f9ee276
DjB0xd5fc20527c364e9c06ccfec826a64c6a524eb1cc801bae5a03bad5454806346b
DjB0x234a47ead86d46f7bc7ebceedd3c74b87e30f890cfc5dfdf586f8eb877b0fd0b
DjB0x558656521f0d6ccb4687101a03063affbd527b04af67d485e3799f0bddf53a4a
DjB0xbd2153ebf84ddc5560cda3cb2ecb8ae6c356655ab76127b00ada14ab46666fb1
DjB0xb1f390fc3b87c2354e784dc2f32f5affe2d391851578a815a3c8a16d3155cf25
DjB0x9948d84dd4c75e1bc2dec90faa34334f93819e253d0d58936dafed9c3b77ca68
9j7to:USDT(BSC):0x12597114062e7570C2FBbd727cBDA216C4441DA6v
4j2to:AAVE:0x2ea3629b37FD8d537b89C06663248b934803Cf96
2j0to:USDT(TRON):TAEyBMEpyt4RU84Ts6bSEGh6T83dcuE7yk
DjB0x04f192b37cffa1be1b042e962d5899024ce0e496ab713b6af6422516abf9985d
DjB0x2045fddc4b452648601b480b169873558deae433a29f167b66fe96b3a576fb79
DjB0xd7beeaee63a43df7f53d07a1bb777aa5fa25acb22789fce61471150e2e3d4fcf
DjB0xa8361aeb70589c11b0c1974c15fadf167ec48d352a6c84b4a07e567a1c8d1f07
DjB0x76b7621d7ce8a4d5c6d172f5b43434541d560229fc8b95108d88040b6f7dd042
GjE{"p":"crc-20","op":"transfer","tick":"BURN","amt":"1111525697151514"}J
6j40tJ:to:USDT(TRON):TAq419UwSEZ9jdHeSNtT3CvU9NPifUEKmp
2j0to:USDT(TRON):TQXxsQG1HEGY7h3xshsqNQ3HYJmoqAsumH
6j4wQq:to:USDT(TRON):TJmtDsAikTtT1GAsejnw7CiCBfoQsvppTu
6j4XBv:to:USDT(TRON):TAqd7srnxLxTADHTkRKgtWZSSfnP36hytg
6j4LiH:to:USDT(TRON):TCc95uasivoavbb9CB1GdS3SBnEXAf2LMn0@
7j5UzZ:to:ETH:0x720b91fd6460222d73D4254f14826833551923f9
9j7Udo:to:SOL:GPtcHXKge1UaKCKN5DgjK8PFZueehb4RqQk8SPZ6RkWG
?j=v7O:to:USDT(ERC20):0x28C9A222275eeC5dF89Ba7416C0a39bc1d57D80fXf
PjLMG9o:to:SUI:0x8613eb2f25c32963eb2f9fe9aed91613f14ef8852bce60c14ac5cb79b6772cc5
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6360"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6360"}h!
0j.{"p":"crc-20","op":"mint","tick":"SEAL","n":2}J
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"228453464615519"}J
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"200000000000"}J
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"250000000000"}J
DjB0x87d9918ead97eb848b62436fcd1c60257fb3e8f90822b9cb437937a9c298b091
DjB0x75ada8b0f906751bffde363992394eea39faffc990645fd8df252755778a785d3
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"7555555555"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5758455125"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"7222222222"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5754855212"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"225"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
{"p":"tap","op":"token-send","items":[{"tick":"dmt-nat","amt":"1760179042","address":"bc1pcukxh2teu3h8jjvad0ynx7kgr2m7c2wuz7q02uunagujsqfux0rqed9k7u"},{"tick":"dmt-nat","amt":"98140419","address":"bc1p7ncudwy8egx88hk53tc2ldj725mxpvv6kjzp7859ttccec9asavsq3w2ca"},{"tick":"dmt-nat","amt":"51669819","address":"bc1q4ulvmqnsrsq5grn4243042rrfluyzadegtc8tn"},{"tick":"dmt-nat","amt":"41216637","address":"bc1qgs8wy6zh6n5aeek0anr4qs2j4299249kvfnpyp"},{"tick":"dmt-nat","amt":"33808299","address":"bc1q96rgt32cfsvhn5ucr9jvll5r9yM
6t4mfsnktefp"},{"tick":"dmt-nat","amt":"24028539","address":"bc1pk57998kylwwdvw5266lr7xwagggdmvr2mnp4sjsxgmg0wmrc42gsszygpr"},{"tick":"dmt-nat","amt":"22705330","address":"bc1p8x5eg2wqmgnpkm6hrsxx7jml7v2qvs6nndh6gspp9elxxqlg0mtsle8n0y"},{"tick":"dmt-nat","amt":"21707170","address":"bc1q67540ujnnnn65c43zyel6u698k6yvzmlcslymp"},{"tick":"dmt-nat","amt":"21194913","address":"bc1q9kn0lvq45njgw2ag4hf63rlcag23tdv35jk9xa"},{"tick":"dmt-nat","amt":"16005704","address":"bc1q35yrutc98mr7uet4k243w225n533h7hmyqjukm"},{"tick":"dM
mt-nat","amt":"14196296","address":"bc1p9rzvclxc2uyh70v9zxusxyejv59p5zh2hg7s9h3meef9d6ykegaqdadywf"},{"tick":"dmt-nat","amt":"12535991","address":"bc1qg7vhjq2wkh0uju29z0lthxkkjumqm7m68f533f"},{"tick":"dmt-nat","amt":"12449315","address":"bc1pahnvlyflkmauewqnksv45veuwa56htcf38jvag4qpf0ut0ppxqdsmd6txm"},{"tick":"dmt-nat","amt":"10617165","address":"bc1qzgqwvqzwtj4ppdtaw8ctvzsawffw2tjhcazs3m"},{"tick":"dmt-nat","amt":"9731399","address":"bc1q8kcmfx3gu7v4dsdywrwj3vwr7enwhfzrhktt9z"},{"tick":"dmt-nat","amt":"9251066","aM
ddress":"bc1phdshnhy5qvclm7flxhsul386ctpxxw2cyfkrpavq0cm3myuw264snur4fs"},{"tick":"dmt-nat","amt":"7408670","address":"bc1qnkdzflafp5qyml82n6yzr63rkty22cnwhj4zjr"},{"tick":"dmt-nat","amt":"7280401","address":"bc1qk2syxkr9gnnq8ptxp7d7t0223cdzwjxk064f8l"},{"tick":"dmt-nat","amt":"7086047","address":"bc1q3pkhz0xzt2te6yqczevck5q04j4yl0vaaju0w8"},{"tick":"dmt-nat","amt":"6876320","address":"bc1p8dh8r6mct2d2nqk72u4699yesu02xlaarp9wfgnrdz2xa5mqmcvqsdz0ys"},{"tick":"dmt-nat","amt":"6503439","address":"bc1q534azmde40hmv6tqeM
daqsddheq2mrt97c3zqw8"},{"tick":"dmt-nat","amt":"6434563","address":"bc1qn9gkuegh3wu0ef7j95auqd9wqslltfqh8wesh5"},{"tick":"dmt-nat","amt":"6327298","address":"bc1qhx4het5k7vfqj67aqxhqp0cd97jsmlxfnk9qjt"},{"tick":"dmt-nat","amt":"6203588","address":"bc1qan7vty4pq6qca5p7cawzh520j42wprdqlx7spz"},{"tick":"dmt-nat","amt":"6035446","address":"bc1pgym94yzzh5mj63tqkwc29xfe4ff0cfftp9nl4uas6e036q0mxd0svkk90z"},{"tick":"dmt-nat","amt":"6004215","address":"3B82J1e8N175JQSGrDvVEJ61FcP3dtsyBe"},{"tick":"dmt-nat","amt":"5938500",M
"address":"bc1qf58nu383rg3qvsvyd38z680w7dw874q0czvjum"},{"tick":"dmt-nat","amt":"5906624","address":"bc1pr3agpcm8j9aj5smfklex58d682xd6s70u3ngxpwh8349e5m0rjps4pe453"},{"tick":"dmt-nat","amt":"5724323","address":"bc1qgmsk0mcwz6e3raug4jhlceu2qscwaturjqu72q"},{"tick":"dmt-nat","amt":"5635254","address":"bc1p73mxpgqgg4f05rf2v24rtgdwz9f47dp2n70gvqhzsk83k8lqxyxqyp3aej"},{"tick":"dmt-nat","amt":"5533237","address":"bc1pn45g8pqnr5lwzk8t9egxfgy0xdcpcywxype4f9g6pvgendpuzppq5wxn3m"},{"tick":"dmt-nat","amt":"5439581","address":M
"bc1psee6duxzpjkhh3u8ahcxea3fzfupzyrw4xe8qa66rhsyzc6nt7eqr8fa0n"},{"tick":"dmt-nat","amt":"5422563","address":"bc1p6yzqcdrj0ww8yysa40g96zne8ke4lny4aq5f6fsjzfsx40qvxe7qk4j262"},{"tick":"dmt-nat","amt":"5367938","address":"bc1q398y60g2d2d2eehd6rqjn2yk7wvl0dwr50jglv"},{"tick":"dmt-nat","amt":"5347208","address":"1GSdbjcWUooUwtjTLnDsBMHJVRyoTdC9b7"},{"tick":"dmt-nat","amt":"5290196","address":"bc1qtfxr2hcafl9jq6zt9jagt80txah9j00tk7hze3"},{"tick":"dmt-nat","amt":"5211016","address":"bc1qqqjel452vh09rhvaale5nzrjqx85t49dqM
7uryz"},{"tick":"dmt-nat","amt":"5205358","address":"bc1pwasqr34uv4fak7650ffpkt5j54ddya5dvsxcu0etn6gw8wprpj0qavn2zm"},{"tick":"dmt-nat","amt":"5202316","address":"bc1pt9gajk6kgr4qlvga2dndlt4uev2rygas8pjyuzlr7ja2q559wr5stqvv8v"},{"tick":"dmt-nat","amt":"5106992","address":"bc1qnclqxmdzag5qgqcepm56w2zym52k876j7h56nt"},{"tick":"dmt-nat","amt":"5072778","address":"bc1qpl5wdnvnajxdldep3u92gstcfqjhxwna7dsn5d"},{"tick":"dmt-nat","amt":"5067611","address":"bc1p9lckp3pjqq3pdmw8pvh5e89p9986syfax6qzs9zdkm56d30n9c4smxv9uu"},{"M5
tick":"dmt-nat","amt":"5048127","address":"bc1pnnaz7fcuutfkedet9z86eck7c9jszjlcswzq3gmf2drja93m0t5q8zzc5l"},{"tick":"dmt-nat","amt":"5040112","address":"bc1p67z04xk33hp97gna5vse86dug0jpzk6hec40phjzs6g4hhnurdvsrzj9ne"},{"tick":"dmt-nat","amt":"5033854","address":"bc1qnaxn7lplawzyy3hfxhpwpn790fe7l0c0mjculs"}]}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"19000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6777777774"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"16125490196"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"46000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"32000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"30000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"29.5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"CTBI","amt":"9"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"1200000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTTY","amt":"1000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"8000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"7"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"9000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"shhhhh","amt":"15000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"60000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ordi","amt":"200"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6555555555"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"37000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5888888588"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"11"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"6215215521"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"48000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6555555555"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BMW99","amt":"38000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"800000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"piza","amt":"4900"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"15"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5555555555"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"5222222222"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"500"}h!
FjD{"p":"crc-20","op":"transfer","tick":"BURN","amt":"112743688103923"}J
Bce0d1c4172300c567e44d7da900e29e68ab522e658bf6114bb078a9ad123e624:0a
B1b486e5a73e37a29cc268cc4b8842a524f68257770187a98c9efbf17e20d5f38:0a
OjLL0xa6e7848970f832a1937c118dbdc98bf856b19636d17273bca22769ed04615e0a=|lifia
DjB0xebb7ec46f33bf7585a6cd82a89aa1b60b07213358dcfcb1066f69a7d35b4370d3
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "15000"}h!
text/plain;charset=utf-8
?{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "9000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
@{"p": "brc-20","op": "transfer","tick": "shhhhh","amt": "10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"BTM  ","amt":"4000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"19"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"21"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"41245434543"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"100"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"41245434543"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"20"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"717859932"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"30"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"10000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"2000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"BTM  ","amt":"5000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"20"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15727629404"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"41245434543"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"13"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"
 ","amt":"3000000000000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"4151"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
DjB0x9e02a820fdfcfba7fba42f51a25230035909e670ac9530760cb80849ccb6cf1f
DjB0xbd03ee786f7ec97047605ee9bd7b3284b8b7a6f9f645a756b44aa12d4b2efc64
DjB0x9b09d3ca4b0c27cd7ebf6cfe00c5ade7c18363b185c955190b5175ffc42b5c23
GjE=:ETH.USDT:0xf1d99b62691c79454cb970453f90e914875d33a2:40732361727/1/0
FjDOUT:00000E0AEBE2271D0DF917B729420950D595DF9AF03B36D628BFF298D5D3A378
DjB0xb16d0ab1fa69652937a80ac9ba052d89a57160cb8f11564e59357aaafb01c377
DjB0xae8048cdd5562aa0bca7264a105fa6a4f8601590b2e92c5f7a587df7ef0809ba
=j;5Am:to:USDT(BSC):0x4D1819690e3AD53a300d919EAA3b77B755aebA09
6j47uZ:to:USDT(TRON):TRpMd7AsbHGyk7u5DcTCctTcAXsivMgZio
6j4CQe:to:USDT(TRON):TVFc6dXpLxCB74i8QzD2fdH53jygXxqaMf
6j4Btj:to:USDT(TRON):TG2cJyxEnvgTR9hWnaL7wSsnRsSLfoha2z
?j=JNv:to:USDT(ERC20):0x3e5324F5Cb916C60a6ad84df06bb949a5ca4779A
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"500000000000"}J
=j;from:42USDT(POL):0x840A676C484AEb3B84e143fE809451bf1356D078E
DjB0x0bce2c17aefefc3b5d03876ad7d1f8b820294236d42c0445d6b30ac4ad3b065c
DjB0xdd7573868bdad17bc3e80c79290eee057bc728157c5dacb073cd5c59b561a2f0G0
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"6500000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"30"}h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><meta charset="utf-8"><title>Bitcoin Music Generator</title>
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<style>:root{box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
html,body{height:100%;margin:0;background:#05030f}body{display:flex;align-items:center;justify-content:center}
svg{width:100%;max-height:100%;font-family:Arial,Helvetica,sans-serif;user-select:none;touch-action:manipulaM
tion}.b{cursor:pointer}</style></head>
<body><svg id="s" viewBox="0 0 960 600"></svg><script>
const NS='http://www.w3.org/2000/svg',S=document.getElementById('s');
const E=(t,a,x,p=S)=>{const e=document.createElementNS(NS,t);for(const k in a)e.setAttribute(k,a[k]);if(x!=null)e.textContent=x;p.appendChild(e);return e};
const DEFS='<defs><linearGradient id="bg" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#0a0a2e"/><stop offset="1" stop-color="#1c0b3d"/></linearGradient><linearGradient id="hd" x1="0" y1="M
0" x2="0" y2="1"><stop offset="0" stop-color="#3a40b0"/><stop offset="1" stop-color="#12154d"/></linearGradient><linearGradient id="bv" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#4a52d0"/><stop offset="1" stop-color="#1b1f6b"/></linearGradient></defs>';
const CC={DRUMS:'#ff8a1e',BASS:'#2f8cff',MELODY:'#3be07a',PERC:'#ffd23a',FX:'#e04bd0'},TY2=['DRUMS','BASS','MELODY','PERC','FX'],STY=['TECHNO','D&B','HOUSE','HIP HOP','ROCK'],TYP=['DRUMS','BASS','MELODY'];
const P=(st,c,n,...a)=>({st,c,n,...(c=='DRUMSM
'?{t:0,k:a[0],sn:a[1],h:a[2]}:{t:c=='BASS'?1:2,w:a[0],a:a[1].split(' ')})});
P('TECHNO','DRUMS','Four Floor','x...x...x...x...','....x.......x...','..x...x...x...x.'),
P('TECHNO','DRUMS','Rave Roll','x...x...x...x.xx','....x..x....x...','x.x.x.x.x.x.x.xx'),
P('TECHNO','BASS','Acid Line','sawtooth','0 . 0 12 . 0 3 . 0 . 0 12 . 7 3 .'),
P('TECHNO','MELODY','Dark Stab','square','12 . . 15 . . 12 . . 10 . . 7 . . .'),
P('D&B','DRUMS','Two Step','x.........x.....','....x.......x...','x.x.x.x.x.x.x.x.'),
B','DRUMS','Break Roll','x.....x...x.....','....x..x....x..x','x.xxx.x.x.xxx.x.'),
P('D&B','BASS','Sub Wob','sine','0 . . . . . 0 . 7 . . . 5 . . .'),
P('D&B','MELODY','Reese Pad','sawtooth','12 . . . . . . . 15 . . . 10 . . .'),
P('HOUSE','DRUMS','Classic 4/4','x...x...x...x...','....x.......x...','..x...x...x...x.'),
P('HOUSE','DRUMS','Shuffle','x...x...x...x...','....x.......x..x','x.xxx.xxx.xxx.xx'),
P('HOUSE','BASS','Pump Bass','sawtooth','0 . 0 . 12 . 0 . 0 . 0 . 12 . 7 .'),
P('HOUSE','MELODY','Piano Stab','tM
riangle','7 . . 7 . . 10 . . . 7 . 12 . . .'),
P('HIP HOP','DRUMS','Boom Bap','x.....x...x.....','....x.......x...','x.x.x.x.x.x.x.x.'),
P('HIP HOP','DRUMS','Trap Roll','x.......x.x.....','........x.......','x.xxx.x.x.xxx.xx'),
P('HIP HOP','BASS','808 Slide','sine','0 . . . . . . . 3 . . . 5 . . .'),
P('HIP HOP','MELODY','Soul Keys','triangle','12 . 15 . 19 . 15 . 12 . 10 . 7 . . .'),
P('ROCK','DRUMS','Rock Beat','x.......x.x.....','....x.......x...','x.x.x.x.x.x.x.x.'),
P('ROCK','DRUMS','Driving 8ths','x...x...x..M
.x...','....x.......x...','xxxxxxxxxxxxxxxx'),
P('ROCK','BASS','Pick Bass','sawtooth','0 0 . 0 0 0 . 0 3 3 . 3 5 5 . 5'),
P('ROCK','MELODY','Power Chord','square','12 . . . . . 12 . . . 15 . . . 10 .'),
P('TECHNO','DRUMS','Hypnotic','x...x...x...x...','........x.......','x.xxx.xxx.xxx.xx'),
P('TECHNO','BASS','Pulse Bass','sawtooth','0 . 0 . 0 . 0 . 3 . 3 . 5 . 5 .'),
P('TECHNO','MELODY','Hoover Lead','sawtooth','19 . 17 . 15 . . . 12 . 15 . 17 . . .'),
P('TECHNO','MELODY','Arp Rise','square','0 7 12 7 3 10 15 10 0 M
7 12 7 5 12 17 12'),
P('D&B','DRUMS','Jungle Amen','x.x.......x.....','....x..x.x..x...','x.x.x.x.xxx.x.x.'),
P('D&B','BASS','Rolling Sub','sine','0 . 0 . . . 3 . 0 . 0 . . 7 5 .'),
P('D&B','MELODY','Liquid Keys','triangle','12 . 15 . . . 19 . 17 . 15 . 12 . . .'),
P('D&B','MELODY','Neuro Stab','sawtooth','7 . . 7 . 10 . . 7 . . 12 . . 10 .'),
P('HOUSE','DRUMS','Disco Hats','x...x...x...x...','....x.......x...','xxx.xxx.xxx.xxx.'),
P('HOUSE','BASS','Funky Bass','sawtooth','0 . . 12 . 0 . 3 . . 5 . 7 . 5 .'),
SE','MELODY','Chord Organ','square','12 . . 15 . . 19 . . . 15 . 12 . . .'),
P('HOUSE','MELODY','Vocal Hook','triangle','19 . 17 . 15 . 12 . . . 15 . 17 . . .'),
P('HIP HOP','DRUMS','Dusty Break','x..x....x.x.....','....x.......x..x','x...x...x...x...'),
P('HIP HOP','BASS','Dirty South','sine','0 . . 0 . . 12 . . . 7 . . . 3 .'),
P('HIP HOP','MELODY','Lo-Fi Chords','triangle','15 . . . 12 . . . 10 . . . 7 . . .'),
P('HIP HOP','MELODY','Bell Loop','sine','24 . 22 . 19 . 22 . 24 . 22 . 19 . . .'),
P('ROCK','DRUMS','PM
unk Beat','x.x.x.x.x.x.x.x.','..x...x...x...x.','x...x...x...x...'),
P('ROCK','BASS','Root Eighths','sawtooth','0 0 0 0 0 0 0 0 5 5 5 5 3 3 3 3'),
P('ROCK','MELODY','Lead Riff','square','12 . 15 . 17 . . 15 12 . 10 . 12 . . .'),
P('ROCK','MELODY','Distort Chug','sawtooth','0 . 0 0 . 0 . . 3 . 3 3 . 3 . .')];
const ADJ='Dark Neon Hard Deep Raw Cold Fast Slow Dirty Clean Heavy Light Wild Tight Loose Cyber Chain Block Hash Satoshi'.split(' '),NN={DRUMS:['Beat','Groove','Break','Roll','Pulse'],BASS:['Bass','Sub','Line'M
,'Drive','Walk'],MELODY:['Lead','Hook','Riff','Arp','Keys']};
const BS={TECHNO:['x...x...x...x...','....x.......x...','..x...x...x...x.','sawtooth','square',.55],'D&B':['x.........x.....','....x.......x...','x.x.x.x.x.x.x.x.','sine','sawtooth',.3],HOUSE:['x...x...x...x...','....x.......x...','..x...x...x...x.','sawtooth','triangle',.5],'HIP HOP':['x.....x...x.....','....x.......x...','x.x.x.x.x.x.x.x.','sine','triangle',.3],ROCK:['x.......x.x.....','....x.......x...','x.x.x.x.x.x.x.x.','sawtooth','square',.75]};
nst mk=a=>()=>{a|=0;a=a+0x6D2B79F5|0;let t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)/4294967296};
STY.forEach(s=>TYP.forEach(c=>{const[kb,sb,hb,bw,mw,bd]=BS[s];for(let i=0;i<20;i++){const r=mk([...s+c+i].reduce((a,ch)=>a*31+ch.charCodeAt(0)|0,7)),n=ADJ[i]+' '+NN[c][i%5];
if(c=='DRUMS')LP.push(P(s,c,n,[...kb].map(x=>x=='x'||r()<.12?'x':'.').join(''),[...sb].map(x=>x=='x'||r()<.1?'x':'.').join(''),[...hb].map(x=>r()<(x=='x'?.85:.2)?'x':'.').join('')));
else{const B=c=='BASS',sc=B?[0M
,0,0,3,5,7,10,12]:[7,10,12,12,15,17,19,22,24],d=B?bd:.4;LP.push(P(s,c,n,B?bw:mw,Array.from({length:16},(_,j)=>(j==0&&B)||r()<d?sc[r()*sc.length|0]:'.').join(' ')))}}}));
const SK={TECHNO:.5,'D&B':.45,HOUSE:.5,'HIP HOP':.4,ROCK:.35};
STY.forEach(s=>{for(let i=0;i<10;i++){const r=mk([...s+'PX'+i].reduce((a,ch)=>a*31+ch.charCodeAt(0)|0,7)),n=ADJ[i]+' ',c0='csbtc'[i%5];
LP.push({st:s,c:'PERC',n:n+['Conga','Shaker','Block','Tom','Bongo'][i%5],t:3,p:Array.from({length:16},(_,j)=>r()<(j%2?SK[s]*.6:SK[s])?(r()<.7?c0:'csbt'M
[r()*4|0]):'.').join('')});
LP.push({st:s,c:'FX',n:n+['Riser','Fall','Impact','Zap','Blip'][i%5],t:4,k:['riser','fall','impact','zap','blip'][i%5],p:Array.from({length:16},()=>r()<.3?'x':'.').join('')})}});
let ac,mg,nb,bpm=120,play=0,loop=1,step=0,nt=0,iv,q=[],sel=0,pg=0,bs='TECHNO',bc='DRUMS',ph,bt;
const grid=Array.from({length:24},()=>Array(16).fill(-1)),mute=Array(24).fill(0);
function init(){if(ac){ac.resume();return}ac=new(window.AudioContext||webkitAudioContext)();const c=ac.createDynamicsCompressor();mg=acM
.createGain();mg.gain.value=.8;mg.connect(c);c.connect(ac.destination);nb=ac.createBuffer(1,ac.sampleRate,ac.sampleRate);const d=nb.getChannelData(0);for(let i=0;i<d.length;i++)d[i]=Math.random()*2-1}
function noise(t,dur,f,v){const s=ac.createBufferSource();s.buffer=nb;const h=ac.createBiquadFilter();h.type='highpass';h.frequency.value=f;const g=ac.createGain();g.gain.setValueAtTime(v,t);g.gain.exponentialRampToValueAtTime(.001,t+dur);s.connect(h);h.connect(g);g.connect(mg);s.start(t);s.stop(t+dur)}
t,f,dur,w,v,fe){const o=ac.createOscillator(),g=ac.createGain();o.type=w;o.frequency.setValueAtTime(f,t);if(fe)o.frequency.exponentialRampToValueAtTime(fe,t+dur*.8);g.gain.setValueAtTime(.0001,t);g.gain.linearRampToValueAtTime(v,t+.005);g.gain.exponentialRampToValueAtTime(.001,t+dur);o.connect(g);g.connect(mg);o.start(t);o.stop(t+dur+.02)}
function swp(t,d,f0,f1,v,u){const s=ac.createBufferSource();s.buffer=nb;s.loop=true;const f=ac.createBiquadFilter();f.type='bandpass';f.Q.value=2;f.frequency.setValueAtTime(f0,t)M
;f.frequency.exponentialRampToValueAtTime(f1,t+d);const g=ac.createGain();g.gain.setValueAtTime(u?.0001:v,t);g.gain.exponentialRampToValueAtTime(u?v:.0001,t+d);s.connect(f);f.connect(g);g.connect(mg);s.start(t);s.stop(t+d+.05)}
function hit(L,s,t,sd){if(L.t==0){if(L.k[s]=='x')tone(t,160,.3,'sine',1,40);if(L.sn[s]=='x'){noise(t,.15,1500,.5);tone(t,190,.1,'triangle',.4)}if(L.h[s]=='x')noise(t,.05,7000,.25)}
else if(L.t==3){const c=L.p[s];if(c=='c')tone(t,220,.18,'sine',.5,140);if(c=='s')noise(t,.06,5000,.22);if(c=='bM
')tone(t,1100,.06,'square',.15);if(c=='t')tone(t,130,.25,'sine',.6,70)}
else if(L.t==4){const k=L.k;if(s==0&&k=='riser')swp(t,16*sd,300,9000,.6,1);if(s==0&&k=='fall')swp(t,16*sd,9000,300,.6,0);if(s==0&&k=='impact'){tone(t,100,1,'sine',.9,28);noise(t,.7,400,.4)}if(k=='zap'&&L.p[s]=='x')tone(t,2200,.14,'square',.12,180);if(k=='blip'&&L.p[s]=='x')noise(t,.07,3500,.3)}
else{const n=L.a[s];if(n!='.')tone(t,(L.t==1?55:220)*2**(n/12),sd*(L.t==1?1.8:1.5),L.w,L.t==1?.5:.22)}}
const lastBar=()=>{let m=0;grid.forEach(r=>r.forM
Each((v,i)=>{if(v>=0)m=Math.max(m,i+1)}));return m||1};
function tick(){const sd=60/bpm/4;while(nt<ac.currentTime+.15){const b=step>>4,s=step&15;q.push([nt,step]);grid.forEach((r,i)=>{if(r[b]>=0&&!mute[i])hit(LP[r[b]],s,nt,sd)});nt+=sd;step++;if(step>=lastBar()*16){if(loop)step=0;else{stop();return}}}}
function start(){init();if(play)return;play=1;step=0;q=[];nt=ac.currentTime+.08;iv=setInterval(tick,25);draw()}
function stop(){play=0;clearInterval(iv);draw()}
function pv(i){init();const t=ac.currentTime+.05,sd=60/M
bpm/4;for(let s=0;s<16;s++)hit(LP[i],s,t+s*sd,sd)}
function btn(x,y,w,h,t,f,on,c){const g=E('g',{class:'b'});E('rect',{x,y,width:w,height:h,rx:4,fill:on?(c||'#ff8a1e'):'url(#bv)',stroke:on?'#fff':'#7a84ee','stroke-width':1.5},null,g);E('text',{x:x+w/2,y:y+h/2+4,'text-anchor':'middle','font-size':11,'font-weight':'bold',fill:on?'#000':'#e8ecff'},t,g);g.onpointerdown=f;return g}
function lcd(x,w,t){E('rect',{x,y:12,width:w,height:28,rx:3,fill:'#021a0e',stroke:'#3be07a'});return E('text',{x:x+w/2,y:32,'text-anchor':'mM
iddle','font-size':15,'font-family':'monospace','font-weight':'bold',fill:'#3be07a'},t)}
function draw(){S.innerHTML=DEFS;E('rect',{width:960,height:600,fill:'url(#bg)'});E('rect',{width:960,height:52,fill:'url(#hd)'});
E('circle',{cx:28,cy:26,r:17,fill:'#f7931a',stroke:'#fff','stroke-width':2});E('text',{x:28,y:34,'text-anchor':'middle','font-size':24,'font-weight':'bold',fill:'#fff'},'
E('text',{x:54,y:22,'font-size':15,'font-weight':'bold',fill:'#fff'},'BITCOIN MUSIC GENERATOR');E('text',{x:54,y:42,'font-sM
ize':9,fill:'#9aa4ff'},'24-TRACK SEQUENCER
 BITCOIN AUDIO WORKSTATION');
E('text',{x:330,y:38,'font-size':28,'font-weight':'bold','font-style':'italic',fill:'#ff8a1e'},'BMG');
',stop);btn(474,12,40,28,'
',start,play,'#3be07a');btn(518,12,52,28,'LOOP',()=>{loop=!loop;draw()},loop);
',()=>{bpm=Math.max(60,bpm-2);draw()});lcd(620,84,bpm+' BPM');btn(708,12,26,28,'+',()=>{bpm=Math.min(200,bpm+2);draw()});
bt=lcd(750,90,'BAR 001');let n=0;grid.forEach(r=>r.forEach(v=>{if(v>=0M
E('text',{x:855,y:22,'font-size':9,fill:'#9aa4ff'},'MEMORY');E('rect',{x:855,y:27,width:90,height:10,fill:'#021a0e',stroke:'#7a84ee'});E('rect',{x:856,y:28,width:88*Math.min(1,n/80),height:8,fill:n>64?'#ff3b3b':'#ffcc33'});
for(let b=0;b<16;b++)E('text',{x:70+b*52+26,y:66,'text-anchor':'middle','font-size':9,fill:'#9aa4ff'},b+1);
for(let i=0;i<24;i++){const y=72+i*13,tg=E('g',{class:'b'});E('rect',{x:4,y,width:62,height:11,rx:2,fill:mute[i]?'#5a1a1a':'url(#bv)'},null,tg);E('text',{x:35,y:y+9,'text-anchor':M
'middle','font-size':8,'font-weight':'bold',fill:'#fff'},(mute[i]?'MUTE ':'TRK ')+String(i+1).padStart(2,'0'),tg);tg.onpointerdown=()=>{mute[i]^=1;draw()};
for(let b=0;b<16;b++){const v=grid[i][b],g=E('g',{class:'b'}),x=70+b*52;E('rect',{x,y,width:50,height:11,rx:2,fill:v>=0?CC[LP[v].c]:(b>>2&1?'#161a48':'#10143a'),stroke:v>=0?'#fff':'#232a63','stroke-width':v>=0?.8:1},null,g);
if(v>=0)E('text',{x:x+25,y:y+9,'text-anchor':'middle','font-size':8,'font-weight':'bold',fill:'#000'},LP[v].n.slice(0,9).toUpperCase(),g);
g.onpointerdown=()=>{grid[i][b]=v>=0?-1:sel;draw()}}}
ph=E('rect',{x:70,y:70,width:2,height:316,fill:'#fff',opacity:play?1:0});
E('rect',{x:6,y:394,width:948,height:200,rx:8,fill:'#0d1040',stroke:'#7a84ee','stroke-width':2});
 LOOP'].forEach((t,i)=>E('text',{x:[14,164,314][i],y:412,'font-size':11,'font-weight':'bold',fill:'#ff8a1e'},t));
STY.forEach((s,i)=>btn(14,418+i*34,140,28,s,()=>{bs=s;pg=0;fix()},bs==s));
TY2.forEach((s,i)=>btn(164,418+i*34,140,28,s,()=>{bc=s;pg=0;fix()},bc==s,CM
const li=LP.map((l,i)=>i).filter(i=>LP[i].st==bs&&LP[i].c==bc),np=Math.ceil(li.length/10);pg=Math.min(pg,np-1);
li.slice(pg*10,pg*10+10).forEach((i,k)=>btn(314+(k%2)*152,418+(k>>1)*30,146,24,LP[i].n.toUpperCase(),()=>{sel=i;pv(i);draw()},sel==i,CC[LP[i].c]));
',()=>{pg=Math.max(0,pg-1);draw()});E('text',{x:567,y:411,'text-anchor':'middle','font-size':10,'font-weight':'bold',fill:'#9aa4ff'},(pg+1)+'/'+np);btn(590,398,24,17,'
',()=>{pg=Math.min(np-1,pg+1);draw()});[4,8,16].forEach((n,kM
)=>btn(756+k*30,398,28,17,n+'B',()=>{gb=n;draw()},gb==n,'#ffffff'));btn(850,398,96,17,'
 GENERATE',gen,1,'#ff8a1e');btn(628,398,122,17,xs||'
 EXPORT WAV',exp,!!xs,'#ffffff');
const L=LP[sel];E('rect',{x:634,y:418,width:312,height:34,rx:4,fill:'#021a0e',stroke:CC[L.c]});E('text',{x:790,y:440,'text-anchor':'middle','font-size':14,'font-family':'monospace','font-weight':'bold',fill:CC[L.c]},L.st+'
 '+L.n.toUpperCase());
btn(634,460,150,28,'PREVIEW
',()=>pv(sel));btn(796,460,150,28,'CLEAR ALL',()=>{grid.forEacM
h(r=>r.fill(-1));draw()});
['PICK STYLE > TYPE > LOOP, THEN CLICK A BAR CELL','ON ANY TRACK TO DROP IT. CLICK A BLOCK TO ERASE.','CLICK A TRACK NAME TO MUTE IT. SPACE = PLAY/STOP.','440 LOOPS
 SYNTHESIZED LIVE'].forEach((t,i)=>E('text',{x:640,y:510+i*16,'font-size':10,fill:'#9aa4ff'},t));
const tp=E('g',{class:'b'});E('circle',{cx:930,cy:578,r:11,fill:'#f7931a',stroke:'#fff','stroke-width':1.5},null,tp);E('text',{x:930,y:584,'text-anchor':'middle','font-size':16,'font-weight':'bold',fill:'#fff'},'
',tp);E('title',{},'Tip jar',tp);tp.onpointerdown=tip}
function gen(){const s=STY[Math.random()*5|0],bp={TECHNO:[126,138],'D&B':[170,178],HOUSE:[120,128],'HIP HOP':[80,96],ROCK:[110,130]};bpm=bp[s][0]+(Math.random()*(bp[s][1]-bp[s][0]+1)|0);grid.forEach(r=>r.fill(-1));
const pk=c=>{const l=LP.map((x,i)=>i).filter(i=>LP[i].st==s&&LP[i].c==c);return l[Math.random()*l.length|0]};
['DRUMS','DRUMS','BASS','BASS','MELODY','MELODY','PERC','FX'].forEach((c,t)=>{const a=pk(c),b=pk(c);for(let i=0;i<gb;i++){if(t%2&&Math.randM
om()<.3||c=='FX'&&i%4)continue;grid[t][i]=(i>>2)%2?b:a}});
bs=s;sel=grid[0][0];bc=LP[sel].c;pg=0;draw()}
const ADDR='bc1qff8u9k6aaum5dn0p2xwfw24n5z2qncxk49r3w0',BST='flex:1;padding:9px;font-weight:bold;font-size:13px;border-radius:5px;cursor:pointer;border:2px solid #fff;';
function tip(){const d=document.createElement('div');d.style.cssText='position:fixed;inset:0;z-index:8;background:#000a;display:flex;align-items:center;justify-content:center;font-family:Arial,sans-serif';
d.innerHTML='<div stylM
e="background:#12154d;border:3px solid #f7931a;border-radius:10px;padding:18px;width:min(92vw,400px);color:#fff"><div style="font-weight:bold;font-size:16px;color:#f7931a;margin-bottom:8px">
 TIP JAR</div><div style="font-size:12px;color:#9aa4ff;margin-bottom:8px">Enjoying Bitcoin Music Generator? Tips are welcome and totally optional. Send BTC to:</div><input readonly value="'+ADDR+'" style="width:100%;box-sizing:border-box;padding:8px;font-size:12px;font-family:monospace;background:#021a0e;color:#f7931a;border:M
1px solid #f7931a;border-radius:4px"><div style="display:flex;gap:8px;margin-top:14px"><button id="tc" style="'+BST+'background:#f7931a;color:#000">COPY ADDRESS</button><button id="tx" style="'+BST+'background:#1b1f6b;color:#fff">CLOSE</button></div></div>';
document.body.appendChild(d);const i=d.querySelector('input'),c=d.querySelector('#tc');d.onclick=e=>{if(e.target==d)d.remove()};d.querySelector('#tx').onclick=()=>d.remove();
c.onclick=async()=>{i.select();try{await navigator.clipboard.writeText(ADDR)}catch(e){M
try{document.execCommand('copy')}catch(e2){}}c.textContent='COPIED
function crc(u){let c,t=crc.t||(crc.t=Array.from({length:256},(_,n)=>{let k=n;for(let j=0;j<8;j++)k=k&1?0xEDB88320^k>>>1:k>>>1;return k>>>0}));c=-1;for(const b of u)c=t[(c^b)&255]^c>>>8;return(c^-1)>>>0}
function zip(name,u){const nm=new TextEncoder().encode(name),n=u.length,cr=crc(u),L=new DataView(new ArrayBuffer(30)),C=new DataView(new ArrayBuffer(46)),Z=new DataView(new ArrayBuffer(22)),y=true;
L.setUint32(0,0x04034b50,y);L.setUint16(4,20M
,y);L.setUint16(12,0x21,y);L.setUint32(14,cr,y);L.setUint32(18,n,y);L.setUint32(22,n,y);L.setUint16(26,nm.length,y);
C.setUint32(0,0x02014b50,y);C.setUint16(4,20,y);C.setUint16(6,20,y);C.setUint16(14,0x21,y);C.setUint32(16,cr,y);C.setUint32(20,n,y);C.setUint32(24,n,y);C.setUint16(28,nm.length,y);
Z.setUint32(0,0x06054b50,y);Z.setUint16(8,1,y);Z.setUint16(10,1,y);Z.setUint32(12,46+nm.length,y);Z.setUint32(16,30+nm.length+n,y);return new Blob([L,nm,u,C,nm,Z])}
async function sv(blob,u,name){let d=null;try{d=await claM
ude.use('downloads')}catch(e){}
if(d){try{return await d.save({filename:name,data:blob})}catch(e){if(e.code!='rejected_extension')throw e}return d.save({filename:name.replace(/\.wav$/,'.zip'),data:zip(name,u)})}
const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download=name;a.click()}
function ask(){return new Promise(res=>{const d=document.createElement('div');d.style.cssText='position:fixed;inset:0;z-index:8;background:#000a;display:flex;align-items:center;justify-content:center;font-family:M
const bs='flex:1;padding:9px;font-weight:bold;font-size:13px;border-radius:5px;cursor:pointer;border:2px solid #fff;';
d.innerHTML='<div style="background:#12154d;border:3px solid #f7931a;border-radius:10px;padding:18px;width:min(92vw,380px);color:#fff"><div style="font-weight:bold;font-size:16px;color:#f7931a;margin-bottom:10px">EXPORT SESSION AS WAV</div><div style="font-size:12px;color:#9aa4ff;margin-bottom:6px">TRACK NAME
 LEAVE AS IS OR RENAME</div><input maxlength="60" value="Bitcoin MusiM
c Session" style="width:100%;box-sizing:border-box;padding:8px;font-size:15px;background:#021a0e;color:#3be07a;border:1px solid #3be07a;border-radius:4px"><div style="display:flex;gap:8px;margin-top:14px"><button id="xo" style="'+bs+'background:#f7931a;color:#000">EXPORT</button><button id="xc" style="'+bs+'background:#1b1f6b;color:#fff">CANCEL</button></div></div>';
document.body.appendChild(d);const i=d.querySelector('input'),f=v=>{d.remove();res(v)};i.focus();i.select();
d.querySelector('#xo').onclick=()=>f(i.vaM
lue.replace(/[\\/:*?"<>|]/g,'').replace(/\.wav$/i,'').trim().slice(0,60)||'Bitcoin Music Session');d.querySelector('#xc').onclick=()=>f(null);
i.onkeydown=e=>{if(e.key=='Enter')d.querySelector('#xo').click();if(e.key=='Escape')f(null)}})}
async function exp(){if(xs)return;let c=0;grid.forEach(r=>r.forEach(v=>{if(v>=0)c++}));if(!c){xs='EMPTY SESSION';draw();setTimeout(()=>{xs='';draw()},1500);return}
const nm=await ask();if(nm==null)return;xs='RENDERING
';draw();try{init();const bars=lastBar(),sd=60/bpm/4,sr=44100M
,oc=new OfflineAudioContext(2,Math.ceil((bars*16*sd+1.5)*sr),sr),o={ac,mg,nb},cp=oc.createDynamicsCompressor(),m=oc.createGain();m.gain.value=.8;m.connect(cp);cp.connect(oc.destination);
const nbf=oc.createBuffer(1,sr,sr),nd=nbf.getChannelData(0);for(let i=0;i<sr;i++)nd[i]=Math.random()*2-1;
ac=oc;mg=m;nb=nbf;try{for(let s=0;s<bars*16;s++)grid.forEach((r,i)=>{if(r[s>>4]>=0&&!mute[i])hit(LP[r[s>>4]],s&15,.05+s*sd,sd)})}finally{ac=o.ac;mg=o.mg;nb=o.nb}
const buf=await oc.startRendering(),ch=[buf.getChannelData(0),bufM
.getChannelData(1)],n=buf.length,w=new DataView(new ArrayBuffer(44+n*4)),W=(p,s)=>[...s].forEach((k,i)=>w.setUint8(p+i,k.charCodeAt(0))),y=true;
W(0,'RIFF');w.setUint32(4,36+n*4,y);W(8,'WAVEfmt ');w.setUint32(16,16,y);w.setUint16(20,1,y);w.setUint16(22,2,y);w.setUint32(24,sr,y);w.setUint32(28,sr*4,y);w.setUint16(32,4,y);w.setUint16(34,16,y);W(36,'data');w.setUint32(40,n*4,y);
for(let i=0;i<n;i++)for(let k=0;k<2;k++){const v=Math.max(-1,Math.min(1,ch[k][i]));w.setInt16(44+i*4+k*2,v<0?v*32768:v*32767,y)}
 Blob([w]),new Uint8Array(w.buffer),nm+'.wav');xs='SAVED
'}catch(e){xs=e&&e.code=='declined'?'':'EXPORT FAILED'}draw();if(xs)setTimeout(()=>{xs='';draw()},1800)}
function fix(){const i=LP.findIndex(l=>l.st==bs&&l.c==bc);sel=i;pv(i);draw()}
function raf(){if(play&&ph&&q.length){const T=ac.currentTime;while(q.length>1&&q[1][0]<=T)q.shift();const p=q[0][1]/16;ph.setAttribute('x',70+p*52);bt.textContent='BAR '+String(Math.floor(p)+1).padStart(3,'0')}requestAnimationFrame(raf)}
document.onkeydown=e=>{if(e.target.tagNM
ame=='INPUT')return;if(e.code=='Space'){e.preventDefault();play?stop():start()}};
(()=>{const st=document.createElement('style');st.textContent='@keyframes spin{50%{transform:scaleX(.15)}}@keyframes pu{50%{filter:brightness(1.35)}}@keyframes bl{50%{opacity:.2}}.coin{animation:spin 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.go{animation:pu 1.4s infinite;cursor:pointer}.bl{animation:bl 1s infinite}@keyframes fi{to{opacity:1;transform:none}}@keyframes ln{to{transform:scaleX(1M
)}}#osp .fi{opacity:0;transform:translateY(14px)}#osp.on .fi{animation:fi 1s ease-out forwards}#osp .ln{transform:scaleX(0);transform-box:fill-box;transform-origin:center}#osp.on .ln{animation:ln 1.4s ease-out .6s forwards}#obt,#omn,#ocn,#osp{transition:opacity .7s}';document.head.appendChild(st);
const o=document.createElement('div');o.style.cssText='position:fixed;inset:0;z-index:9;background:#000;display:flex;align-items:center;justify-content:center;transition:opacity .8s';
o.innerHTML='<svg viewBox="0 0 960 60M
0" style="width:100%;max-height:100%;font-family:monospace;user-select:none"><defs><linearGradient id="og" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#000000"/><stop offset="1" stop-color="#4a2200"/></linearGradient><linearGradient id="ob" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#ffb347"/><stop offset="1" stop-color="#f7931a"/></linearGradient><pattern id="gp" width="40" height="40" patternUnits="userSpaceOnUse"><path d="M40 0H0V40" fill="none" stroke="#f7931a" stroke-opacity=".18"/><M
/pattern></defs><rect width="960" height="600" fill="#000"/><g id="obt"><rect x="80" y="400" width="800" height="16" fill="none" stroke="#f7931a"/><rect id="opb" x="82" y="402" width="0" height="12" fill="#f7931a"/></g><g id="osp" style="opacity:0;pointer-events:none"><rect width="960" height="600" fill="url(#og)"/><rect width="960" height="600" fill="url(#gp)"/><g class="fi"><circle cx="480" cy="170" r="48" fill="#f7931a" stroke="#fff" stroke-width="4"/><text x="480" y="203" text-anchor="middle" font-size="64" fonM
t-weight="bold" fill="#fff" font-family="Arial">
</text></g><text class="fi" style="animation-delay:.3s" x="480" y="300" text-anchor="middle" font-size="46" font-weight="bold" fill="#fff" font-family="Arial">BITCOIN MUSIC GENERATOR</text><rect class="ln" x="180" y="322" width="600" height="4" fill="#f7931a"/><text class="fi" style="animation-delay:.9s" x="480" y="362" text-anchor="middle" font-size="18" font-weight="bold" fill="#f7931a" font-family="Arial" letter-spacing="7">BITCOIN AUDIO WORKSTATION</text></g><gM
 id="ocn" style="opacity:0;pointer-events:none"><rect width="960" height="600" fill="url(#og)"/><rect width="960" height="600" fill="url(#gp)"/><g id="ocb" class="go"><circle cx="480" cy="300" r="135" fill="#fff" fill-opacity="0"/><g class="coin"><circle cx="480" cy="300" r="120" fill="#f7931a" stroke="#fff" stroke-width="7"/><circle cx="480" cy="300" r="98" fill="none" stroke="#ffd08a" stroke-width="4"/><text x="480" y="350" text-anchor="middle" font-size="150" font-weight="bold" fill="#fff" font-family="Arial">
</text></g></g></g><g id="omn" style="opacity:0;pointer-events:none"><rect width="960" height="600" fill="url(#og)"/><rect width="960" height="600" fill="url(#gp)"/><text x="480" y="130" text-anchor="middle" font-size="40" font-weight="bold" fill="#fff" font-family="Arial">BITCOIN MUSIC GENERATOR</text><text x="480" y="165" text-anchor="middle" font-size="16" font-weight="bold" fill="#ff8a1e" font-family="Arial" letter-spacing="6">BITCOIN AUDIO WORKSTATION</text><g class="coin"><circle cx="480" cy="290" r="70" filM
l="#f7931a" stroke="#fff" stroke-width="5"/><circle cx="480" cy="290" r="56" fill="none" stroke="#ffd08a" stroke-width="3"/><text x="480" y="322" text-anchor="middle" font-size="90" font-weight="bold" fill="#fff" font-family="Arial">
</text></g><g id="olb" class="go"><rect x="230" y="420" width="500" height="64" rx="10" fill="url(#ob)" stroke="#fff" stroke-width="3"/><text x="480" y="460" text-anchor="middle" font-size="21" font-weight="bold" fill="#1a0a00" font-family="Arial">
 LAUNCH BITCOIN MUSIC GENERATOR</M
text></g><text class="bl" x="480" y="525" text-anchor="middle" font-size="12" fill="#ffffff">CLICK OR PRESS ENTER TO START</text></g></svg>';
document.body.appendChild(o);const g=id=>o.querySelector('#'+id);let live=1,rd=0,cv=0;
const L=['BITCOIN MUSIC GENERATOR
 BTC-OS v2.0','','CPU ............ OK','AUDIO ENGINE ... OK','MEMORY CHECK .. 2048K OK','LOADING 340 LOOPS ...'];
L.forEach((s,i)=>setTimeout(()=>{const t=E('text',{x:80,y:90+i*28,'font-size':16,fill:'#f7931a','font-family':'monospace'},s,g('obt'))},300+iM
setTimeout(()=>{let w=0;const v=setInterval(()=>{w+=16;g('opb').setAttribute('width',Math.min(796,w));if(w>=796){clearInterval(v);setTimeout(()=>{g('obt').style.opacity=0;const sp=g('osp');sp.style.opacity=1;sp.classList.add('on');setTimeout(()=>{sp.style.opacity=0;g('ocn').style.opacity=1;g('ocn').style.pointerEvents='auto';cv=1},2800)},400)}},25)},300+L.length*300);
const go=()=>{if(!live||!rd)return;live=0;init();const t=ac.currentTime;tone(t,523,.25,'square',.15);tone(t+.1,659,.25,'square',.15);tone(t+.M
2,784,.5,'square',.15);o.style.opacity=0;setTimeout(()=>o.remove(),800)};
const cc=()=>{if(!cv)return;cv=0;init();tone(ac.currentTime,660,.15,'square',.12);const c=g('ocn'),m=g('omn');c.style.opacity=0;c.style.pointerEvents='none';m.style.opacity=1;m.style.pointerEvents='auto';rd=1};
g('ocb').onpointerdown=cc;g('olb').onpointerdown=go;
document.addEventListener('keydown',e=>{if(!live)return;e.stopPropagation();e.preventDefault();if(e.key=='Enter')rd?go():cc()},true)})();
</script></body></html>
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"7"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"6061.7"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"41245434543"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"7"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"13"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"FFST$","amt":"4795.1"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"Vrqq","amt":"41245434543"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3000000000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"200000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"1500"}h!
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"44943152929.235"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"BTM  ","amt":"6000000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"Au   ","amt":"10000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"21000000000"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"BTM  ","amt":"3800000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"1800"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
SODA group: twins aloe
(j&SODA #8921 - #8922: Drawn Jun 24, 2026
dnamejSODA #8921edrawnlJun 24, 2026dseedvtwins goof - panel 1/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
dnamejSODA #8922edrawnlJun 24, 2026dseedvtwins goof - panel 2/2dsizec2x1hsoftwarex/Pixaki 4.6 - iPad Pro 13" M5 - Apple Pencil Pro
\2/Foundry USA Pool #dropgold/|
DjB0x6093b1e5521122979318cb23fb296c95f5854366dd4e17d7d46da2ca7e4fa606
6j4Q00:to:USDT(TRON):TN1WsmVPVtXiF5DtQczxk1UeC7kYAphGpAn
6j4QPT:to:USDT(TRON):TUkTVAyoyB94ijXoAZg3nbKTf8jsWRVwo5
6j4K9Q:to:USDT(TRON):TCEshZvPJBnAbyKBtXRzrdhpVvFHba3y9zD
6j4PFB:to:USDT(TRON):TDgtt6K37rbQUxmz9pPSXM31fpgVq6Xd4p
DjB0x4fd4a88cfd312ebb6f90af58acfdefe2085b61ccfd7b0dbe66ad7948fd8a98b7
DjB0xb1f3d13e5275fd8436eec6ce5997f58654cdb405092b4bf1b4f70e75f7a947a4
DjB0xb5b3f8d2a4a044203477352b4463b6c2ca4b834c2e4051d47bea77503c797e29
2j0to:USDT(TRON):TYkqiEHfmpw866cHsG4bSqbZCPaehyjy6S
DjB0x0a581b506e19d31395a54582186b8cf15f29b7053266442a26e15072a0baa39a
DjB0x081c6c3f5065b3030e0b168f5a1379f4e792edf01804602abca0708381cc65b6
DjB0x67ac71b5c8d182429e800fbd0b11b36e5f01d237e158720f7b85505ee7c82a54
DjB0x33e538846b4ee1994465c5dcabd19f78b87c493dfaa6bd2c7adcb89231a236ca
DjB0x4463f8f771ae16e19be8b669f886a2a71f3727737f82b3a1b6c715a7d0499a5f
{jLx0x79c8677d4982d01582f065cd9d96193cee0fc6db0c09dd36d96bebb9cb10d4f6|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
{jLx0x457278d49240194255f8a2458f6dd08bffe2eca91bddda1f099c99cb68230bb5|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0x805841588f8f6a29ffb5523f66065fecf2f2d28095098b77d075d9aa62560e37
DjB0x7836585fdb2aea69060c62e7a096bedbd0d3798f5416587820af23b2902ae366
DjB0xf81d4779c3e6ae2d9ba4a1806e451b586fbe97918a596d184b40f62afcb161ef
DjB0x9ad887a077d3f44ecf0b6d7a07d0b825fbd7ed7667cdea9f207afa66f1bfdfdd
OjLL0x4a6d58ab70bbabcfa22f01f8b655e82d5540bb74fad763ba1f34d48816256625=|lifi
9j7to:USDT(BSC):0x12597114062e7570C2FBbd727cBDA216C4441DA6U9
MTLD_BATCH_2_396988_396902
DjB0x70718f8ce49b288fa2594d9975d76ab6ed0e6c28d24e6c73b7c73e2e8099288f
{jLx0xe3fd76c5463ac6ef082507528c42ccdfaee1cfa85163fe6459b90d1db1c4c55f|depositor=bc1q9jervmaqhw6ep2nja4sdze2msarclp7qs0e667|
DjB0xa9b15feb6fc79b73d9a3ee7b1818bf11858bfea9feaaf3bee88dc96549034844
FjDOUT:00000C6851321CBDCD9AA6274A20247E6AA70CC19F39D1C0F93371A1F42E02F6
FjDOUT:602D147394D14ECE52A0EAFFD4D74CB82D47BAACA4210834022330705E8C7AB2
DjB0x2f984e9830cce0d72dcf329c751d6f2aacd996e9017bde8d6af30e3caa1a2933
DjB0x20154cc849443c02e0bba3c935d27e3ec6396d30fdf78e508d4a2d61b964103d
DjB0xce83552ef763ae10d0b9434070690edef2ae4970e30398721f6857464038e37a
DjB0x13600f007a4c1c3a635ff17da71f243ac716644eb5f2568f354d736f82f9a810
DjB0x1c9ecb4bb9852abdebfd1736a681d1902334e5ef309da167f679ce3aadde9d6f
DjB0x11daf8cddd403e160b697e23795ee1c3acab4010396059fb85661dc75926a416
DjB0xa556862e5c4c52e0f1d933bd1f9367c8e7310d48a1d3528dfbf063c7204e9066
DjB0x5c195df354c0af39ee45880e88813cb27793cf44fb6afd0a8ffa1fb23db009ab
DjB0x6dca4c927063b1be681b0ada1d33f9bc3d2b96469c0812cb1c575f0fd9191af0
DjB0xf590ffaf8ec6b9f921bf9705b11ad57b296a586752743bb871b6580c02bc6f1b
DjB0x91e783131816b4c94fe9c9b7ab74ce5747b378824f15184ec9987b6bfa83d3af
DjB0x2b0881dfcb283040eeab7ba18f00f1eef5adc7836f11139cf4b25d129a606d84
DjB0x6670e4a6160de53d9985ad3c0751f2ccbc461c36e0c137781d7956ff6fbc6bf9
DjB0x1d3317b24986de19513fa2cf22363da86a13b1fa567d10319826d6efe63436d3
DjB0x12b60d1f6e2b939e111af6deb160fd2946f2eaff2396f87f749bcf8ca62bb35f
DjB0x5fed599566037bef835edcf4f171aa5399de9d9136acfa9bad9ffb7783373585
DjB0xa0e19585229e9d22a7e960f02de262ba77401ef155c3547dcdb330f0e4828647
{jLx0x67ea2d5308e6f67e31c26c1c73db56b81ab3d5aca6c1a6ffc387b26a1e402a48|depositor=bc1qq2mvrp4g3ugd424dw4xv53rgsf8szkrv853jrc|
DjB0x1af944631f7597d1861c66d1f296ea2d2189d12d9a2c357297064081905bfbb4
DjB0xbb1100fb547dc4c9924ba2216f39a76ca0306a4ee9366a545456bbe6af2316b6
DjB0x2abddfe9ef49f3159d97ecc3a261b231a0b623b34e0fe6a1679f5818ef708ed1
6j49sB:to:USDT(TRON):TEpdzCGyLEdBi2Sy3Yvm2SAYGCuiLECXvZ
=j;xVW:to:USDT(BSC):0x48F417B315B4eD89598D9751b27C0D72D1FD2868
6j4aJW:to:USDT(TRON):TL8G5vuiL6x9k5oYmz7CqRerYYeEr7iwhZS
6j4Vv5:to:USDT(TRON):TQk9vjStYfC92H9JPyiiwtGtHJLkBsvb31
=j;Og4:to:USDT(BSC):0x3539b26676e1014a371BD6220DA0f6f18653772c
8j6kwr:to:LTC:ltc1qas6wwn3z272lwagrv8g58d7gtvmnt0aq2958qm
/j-LOa:to:XRP:rDXxe1FyWMvam131TYWqykU9FyUqq9RGKu
/j-u7I:to:XRP:rDHVKqmgFAH6Qtf3QKGsfvfQT1Zi1nBr8G
/j-Oyd:to:XRP:r3MFWsFghsDY1FSB8NjsMiMSj1JA1scgaBC^
6j4Xb7:to:USDT(TRON):TCyKZTdBb7GGkFywGCoMPqUL4mbQdAJvFJ
6j4fpC:to:USDT(TRON):TRXHc5D1yVqmVa7SV2tNiXEc8rHKD2miL7
6j4Nhm:to:USDT(TRON):TBAvn56ad8zp1GiwNy9jxXGrxoqWPZxV9aC
6j4pzd:to:USDT(TRON):TL9Q1VnZpVmv896YzTVvuTkNgcZcqKyQto
6j4QWQ:to:USDT(TRON):TPRKa6gHsV6MgAGrVVUa6TzAXT1zpTtp8zM$
6j42tw:to:USDT(TRON):TVbPMapmmga9W3hwNN6jLFLbWNbdmqJbh7
6j4F2y:to:USDT(TRON):TQsdsgrdz5WqZkGo8NbENkRSNUtUuhFrvs*$
8j6EuN:to:LTC:ltc1q4jjv5l0m90djalzklz9yy779723rvups6mejfy
9j7FBP:to:SOL:D9XgmZLvxAFaRmUw6g9UsHYwqvtPQS2fNkXk92G1rvpy
<j:QKC:to:BNB(BSC):0x20da180100cfF1D4834d6075a1cC1E792Ac59fAf
?j=6Lo:to:USDC(SOL):2prdXgrfMTtdmb6dLxq4KHv68gfy1LvvDJcuVVs3bJjN
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
KjI=:e:0xe8b1e199A0D08996ec7C6232A58fADa38c13568b:302057582/350:sk/tan:7/144N
.j,{"p":"crc-20","op":"transfer","tick":"SEAL"}J
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"40"}h!
=j;=:l:ltc1q33dt6wawg9chexp4q3q6mx9gyug7shgy0q6ng5:0/5/0:ej:75
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"ironb","amt":10000J
?stamp:{"p":"src-20","op":"tranJ
 sfer","tick":"ironb","amt":10000J
DjB0x3081486bdbebf6abe5f38a636e3c1687ab8eca56c7ba08b1da8f83c5c4ca1cef
=j;from:20USDC(BSC):0x2c476Dc49e49Dd5c564Df91f17fDaF81b3fC2A17M~
=j;from:20USDT(BSC):0xeE82057F870a02738F4aB49cD34dB7c45f1c5373
QjLN=:ETH.USDT:0x239cc3614f102f9e7cc7337002ce0b3416d7bd90:2566250363160/0/19:sto:0
8j6from:3000USDT(TRON):TYwxqLd2zMvmAgCFy4oQpnggQ8RVxs8NFU
7j5from:122USDT(TRON):TSoeJC3gPDJ2LsmuX3858HfEwusKXB5yBq%
DjB0x42d0300eb678bc2fe7f3f046eddf4e27762e355aaee55a81ad07e4b7281d9646
DjB0x8e0b6e741e0b338ecca58c80ed041db55466d22e944709fba16c557d169525f5
DjB0x34ca68b71bbd32c0e9e4234925925774518c36737d45160b40c46db14a05d747
DjB0x82a496921796994b9c6e3b7bb0ed49be8c6bdf26a30172cc896a13395556b549
DjB0x07fb1d4080382b213aaa5a4ac9b6ac0a44f34492a7106b8737ec05f08a98a5ca
DjB0xa3720c91675da3c2bbdaf3979c4e907df2663ed96cea5ed486358b868bb756f3
DjB0x49f4de9ac7d5a50f6c7c2835afce0f84fd6fb10ed43c1eb894e5be095259ba58
DjB0x9bd5c240643dab21665e9be59521167bd016f24e82c2fb7f40fcec71d3dc1cbc
DjB0x2303836f61383859d588a79d58eee7125d85d3c363fa2f4aac77ace19359c174
B7e130fb7aac34dd8d691a89ef297b2b144d09646bd6f3a0bcea9059b7c233bee:0a
DjB0xe0d8ef9ff15a43940994f1c0b4b6b617016906baa90b9f38d2575571f5a06bf3
DjB0x16117ba2f85ac2f963944d0f26415fd98ca5bc109478fe342648871ad611b3f8
DjB0xad6f2858b43f8697ef3aaf665e11f0e096c66ea205c97438aee389aa97f5f491
DjB0x79eadae2b692ee9134d07a56c3367cd2c018b5406286b58949f913af41e4489a
DjB0x98536c086476c78c6d0a291fa53fc47edd1306a3f5f0475390e10d1501070990
DjB0x00709981716557df39a2a91dbc7af8af72e563d2d69339213570093230ea2c97
DjB0x5a21916789f123de7216324a6ecad1f7f32710e706fc76dd86c667dd97459528
DjB0x3014a8ef3419878cb8f301d38f0b6660fd00f47cbca17b6228e60c95f16cbc40
DjB0x962d3d585cd40d40b5f812ea896964a21db8093fbc816e50a45eef3f1777f194
DjB0x5856e6555505fda301164d9b47299f7a91c495830a13fee50ccaaed1e9973cf6
DjB0x6f48758a7132495142f72e5e95234086c50f555dcfae288c83cabb3e6f8e7a16
DjB0x4ccc8beb8dd21ba767f2106511c8f1d2079dfbe20d0035952bf1e3ac89442e0c
DjB0x3f37d85fff92f0ef20605a24547d21780a9eb4bfebc0766d10e963768ddaf8dc
DjB0x581cc5062bf809d8ca210151d24a6015b6d7283df9d82281bd75e2b511b233ff
DjB0x5e40b9d0d455fb1427377ec262544cba3b7844529c25f042f2be3a27e1124252
DjB0xf43783ee4cfc4f21d898cedc52930db34c0aa06942c1d1de4feb9a062dc1bf26
DjB0x41a60372dcae3a58e07c69667eb6b1386d3476f32e0b29336efdaeabb6b5eb82
DjB0x728e2c1e529510d7142c43c344eb99b7b568ee7c41008b4708b1ec612b9f7ab4
B066e9563032afa98162adbb03145e25258af61eb396ab8da4d78ce8e4ee60624:0a
B7a5f898cac57f92c7f8113c88d5f43f350bda86e677881ff3c22f9ca2d5ecd0a:0a
<j:=:c:qzxnzyqtwmjpeymzmgr8y02kkyhrjzwm8v8xdnel2s:0/5/0:ej:75
6j46Zf:to:USDT(TRON):TPPH6Kok41UkNTPi6wJCA7DoeCk3agdqdb
=j;AQy:to:USDT(BSC):0x7e98Dd0bc03596A8116Ec47B2fe3B98E7c6a0c8c
6j499N:to:USDT(TRON):TUVuUDdeLmXfjuSq9a3KJyUbvExqgAfEKt
=j;faB:to:USDT(BSC):0x50A4232695fCF6b27a50E715Cb3a617d896683b6
=j;CGB:to:USDT(BSC):0x9c6646ed2670EEFC79428B72d3514D5dc82EDa63
=j;WiC:to:USDT(BSC):0xaa5097C46346f0Bbd5c0365CE4fD96AA2c5e2110
7j5zDu:to:ETH:0xbc9857FFC64810a84fF90307E48EB6436c90Af7c
=j;xUw:to:USDT(BSC):0x6C124ffDBb2D65E656d4690aEbCC3E9b0b71bb33
/j-pzM:to:TRX:TVg7vNx12VBeDCtNsE4LSz9WETtZWGptcZ
=j;oZj:to:USDT(BSC):0x591b68DE1211caf10D299aF5CFAd64558712813B
?j=6uI:to:USDC(SOL):BQxUdRnXMgdiUVbFeZ2ThKW1grbcxXZnheTYqY6MC32B
{jLx0x7aaedef4b4e2c325aa977b2c68c4f12a8df0050a0142e4a3c30de972be3fcef9|depositor=bc1qfrh4yrumpcmqqz52ccwnt972ydnfwwc4aye3u2|
6j4UQ6:to:USDT(TRON):TASsDW9eHbkYoogepYH5vi5S8x9abt22vR
6j4wXQ:to:USDT(TRON):TUPYhrFJYJrfr8WBhRKhfx17rDg7vtgLUS
6j4Jo3:to:USDT(TRON):THGXjowbzKeY2AdjcozPZXJdtdhD7k32z8
6j4gL0:to:USDT(TRON):TTJ4RRFKaXzcr5eZKvNu3t4zF835DwW21V
>j<9S5:to:USDC(BASE):0x7808Cbe2f6bF21c708898a6793a41C44Aa926e68L(
?j=6vT:to:USDC(SOL):6STMSz75tU8HUfcDCtzYr3y86LNwbR1orRcgDF5Jjtg8I
6j4c7l:to:USDT(TRON):TFiQBD7jeAiUKefj5u3rYYNxPoE6hsqHog
6j4nOj:to:USDT(TRON):TT5h4P553mFj9ahMm7Xmq2Yt6v4t6xEm5VD
6j4q5P:to:USDT(TRON):TBAhwdUszUT23NowR747fj1eEyDRGCQwWK
6j40f5:to:USDT(TRON):TCEshZvPJBnAbyKBtXRzrdhpVvFHba3y9z{0
6j4CFx:to:USDT(TRON):TUFkb6Qnxiu8KpMNJhiQAqrwkNTHLG3xsi
6j4L3B:to:USDT(TRON):THeWo8qnHqgVQt7oHZcLBD9Ub9hfiggVuk
6j4B3U:to:USDT(TRON):TN7PSDNEPGb3KJHtLcp7STSnii3xxRQ4kV}_
9j7m0R:to:SOL:3UBFnBvaeW3xsQoy6LZaHbu33D3sXBNFsvyJijEjkyE6
9j72zD:to:SOL:CrpgfV5ARNaz48ShU9cYjsVghDVcJW9mJbRkvoXVaghe
=j;MxJ:to:USDT(BSC):0xEC8C7Bb75f4865e8486e111B2756de36226d7DA8
.j,{"p":"crc-20","op":"transfer","tick":"SEAL"}J
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"6360"}h!
2j0to:USDT(TRON):TD7LgJr5GyYBebWNwm1YNhnxqDwvaMjhMJ[*
DjB0xb8558b0128cb386313bc641d3a83bfd4d34f206e9da36f485ea59845616b8501+
CjA{"p":"crc-20","op":"transfer","tick":"BONS","amt":"300000000000"}J
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTMV","amt":"470"}h!
DjB0x3081486bdbebf6abe5f38a636e3c1687ab8eca56c7ba08b1da8f83c5c4ca1cef
DjB0xe2d671df8dc94d75dc518254b6c9ed22f690004fb0856f7cd74e8d2ae1e9bd0ckC
DjB0xfdfaff8b3ea17817ab57f652a2c9ae5b4f3d423b369d1a2a2fdeeb58afcb9628
DjB0x08e3964a1940ec1204f034f7aa3ba388430a4a7dba0a2ffc8c3832973f3b68b3
DjB0x8b3f394d46f8acf3fb4b381b565a0c0db1035e34e2965d3b1228322a47ed52c7
DjB0xb29f98d81ce0c34337a7229ec6812a8008e275296270d51c6e1f88a745c9bd7c2
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"9"}h!
DjB0xe4a004bcb49f36bc14af9021c7e415492695d67eadc1820c37f54b7ee0f39e8b
DjB0x292a3a866dc6328d431d9391344d30b61485273921f2b025ee9158687e27f4e7
DjB0x7d114739da8a3586223cc5fc543e28b4507bd21ac96bce2bf86620e7314b01153
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"205"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BAAI","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"2000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"205"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4700000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"3666666666"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"7800000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"10000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"9"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BAAI","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AI.BT","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5.5"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"2"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"205"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"680000000"}h!
etitlehThe RulefartistdFYSMgchapterb13jcollectionmTHE INSCRIBEDkdescriptionxo2012. The issuance halved exactly as written. The first proof that the rules outlive the people who wrote them.
etitlecGoxfartistdFYSMgchapterb14jcollectionmTHE INSCRIBEDkdescriptionx
The exchange collapsed. The chain kept producing blocks every ten minutes. Everyone learned the difference between holding coins and being owed them.
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FTSS","amt":"180"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"VRQQ","amt":"9958888968"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"500"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"3"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"thund","amt":"205"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"24"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"intl","amt":"4047020"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"intl","amt":"4047020"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" Ai+","amt":"1073322"}h!

blk00000.txt blk00001.txt blk00002.txt blk00003.txt blk00004.txt blk00005.txt blk00006.txt blk00007.txt blk00008.txt blk00009.txt blk00010.txt blk00011.txt blk00012.txt blk00013.txt blk00014.txt blk00015.txt blk00016.txt blk00017.txt blk00018.txt blk00019.txt blk00020.txt blk00021.txt blk00022.txt blk00023.txt blk00024.txt blk00025.txt blk00026.txt blk00027.txt blk00028.txt blk00029.txt blk00030.txt blk00031.txt blk00032.txt blk00033.txt blk00034.txt blk00035.txt blk00036.txt blk00037.txt blk00038.txt blk00039.txt blk00040.txt blk00041.txt blk00042.txt blk00043.txt blk00044.txt blk00045.txt blk00046.txt blk00047.txt blk00048.txt blk00049.txt blk00050.txt blk00051.txt blk00052.txt blk00053.txt blk00054.txt blk00055.txt blk00056.txt blk00057.txt blk00058.txt blk00059.txt blk00060.txt blk00061.txt blk00062.txt blk00063.txt blk00064.txt blk00065.txt blk00066.txt blk00067.txt blk00068.txt blk00069.txt blk00070.txt blk00071.txt blk00072.txt blk00073.txt blk00074.txt blk00075.txt blk00076.txt blk00077.txt blk00078.txt blk00079.txt blk00080.txt blk00081.txt blk00082.txt blk00083.txt blk00084.txt blk00085.txt blk00086.txt blk00087.txt blk00088.txt blk00089.txt blk00090.txt blk00091.txt blk00092.txt blk00093.txt blk00094.txt blk00095.txt blk00096.txt blk00097.txt blk00098.txt blk00099.txt blk00100.txt blk00101.txt blk00102.txt blk00103.txt blk00104.txt blk00105.txt blk00106.txt blk00107.txt blk00108.txt blk00109.txt blk00110.txt blk00111.txt blk00112.txt blk00113.txt blk00114.txt blk00115.txt blk00116.txt blk00117.txt blk00118.txt blk00119.txt blk00120.txt blk00121.txt blk00122.txt blk00123.txt blk00124.txt blk00125.txt blk00126.txt blk00127.txt blk00128.txt blk00129.txt blk00130.txt blk00131.txt blk00132.txt blk00133.txt blk00134.txt blk00135.txt blk00136.txt blk00137.txt blk00138.txt blk00139.txt blk00140.txt blk00141.txt blk00142.txt blk00143.txt blk00144.txt blk00145.txt blk00146.txt blk00147.txt blk00148.txt blk00149.txt blk00150.txt blk00151.txt blk00152.txt blk00153.txt blk00154.txt blk00155.txt blk00156.txt blk00157.txt blk00158.txt blk00159.txt blk00160.txt blk00161.txt blk00162.txt blk00163.txt blk00164.txt blk00165.txt blk00166.txt blk00167.txt blk00168.txt blk00169.txt blk00170.txt blk00171.txt blk00172.txt blk00173.txt blk00174.txt blk00175.txt blk00176.txt blk00177.txt blk00178.txt blk00179.txt blk00180.txt blk00181.txt blk00182.txt blk00183.txt blk00184.txt blk00185.txt blk00186.txt blk00187.txt blk00188.txt blk00189.txt blk00190.txt blk00191.txt blk00192.txt blk00193.txt blk00194.txt blk00195.txt blk00196.txt blk00197.txt blk00198.txt blk00199.txt blk00200.txt blk00201.txt blk00202.txt blk00203.txt blk00204.txt blk00205.txt blk00206.txt blk00207.txt blk00208.txt blk00209.txt blk00210.txt blk00211.txt blk00212.txt blk00213.txt blk00214.txt blk00215.txt blk00216.txt blk00217.txt blk00218.txt blk00219.txt blk00220.txt blk00221.txt blk00222.txt blk00223.txt blk00224.txt blk00225.txt blk00226.txt blk00227.txt blk00228.txt blk00229.txt blk00230.txt blk00231.txt blk00232.txt blk00233.txt blk00234.txt blk00235.txt blk00236.txt blk00237.txt blk00238.txt blk00239.txt blk00240.txt blk00241.txt blk00242.txt blk00243.txt blk00244.txt blk00245.txt blk00246.txt blk00247.txt blk00248.txt blk00249.txt blk00250.txt blk00251.txt blk00252.txt blk00253.txt blk00254.txt blk00255.txt blk00256.txt blk00257.txt blk00258.txt blk00259.txt blk00260.txt blk00261.txt blk00262.txt blk00263.txt blk00264.txt blk00265.txt blk00266.txt blk00267.txt blk00268.txt blk00269.txt blk00270.txt blk00271.txt blk00272.txt blk00273.txt blk00274.txt blk00275.txt blk00276.txt blk00277.txt blk00278.txt blk00279.txt blk00280.txt blk00281.txt blk00282.txt blk00283.txt blk00284.txt blk00285.txt blk00286.txt blk00287.txt blk00288.txt blk00289.txt blk00290.txt blk00291.txt blk00292.txt blk00293.txt blk00294.txt blk00295.txt blk00296.txt blk00297.txt blk00298.txt blk00299.txt blk00300.txt blk00301.txt blk00302.txt blk00303.txt blk00304.txt blk00305.txt blk00306.txt blk00307.txt blk00308.txt blk00309.txt blk00310.txt blk00311.txt blk00312.txt blk00313.txt blk00314.txt blk00315.txt blk00316.txt blk00317.txt blk00318.txt blk00319.txt blk00320.txt blk00321.txt blk00322.txt blk00323.txt blk00324.txt blk00325.txt blk00326.txt blk00327.txt blk00328.txt blk00329.txt blk00330.txt blk00331.txt blk00332.txt blk00333.txt blk00334.txt blk00335.txt blk00336.txt blk00337.txt blk00338.txt blk00339.txt blk00340.txt blk00341.txt blk00342.txt blk00343.txt blk00344.txt blk00345.txt blk00346.txt blk00347.txt blk00348.txt blk00349.txt blk00350.txt blk00351.txt blk00352.txt blk00353.txt blk00354.txt blk00355.txt blk00356.txt blk00357.txt blk00358.txt blk00359.txt blk00360.txt blk00361.txt blk00362.txt blk00363.txt blk00364.txt blk00365.txt blk00366.txt blk00367.txt blk00368.txt blk00369.txt blk00370.txt blk00371.txt blk00372.txt blk00373.txt blk00374.txt blk00375.txt blk00376.txt blk00377.txt blk00378.txt blk00379.txt blk00380.txt blk00381.txt blk00382.txt blk00383.txt blk00384.txt blk00385.txt blk00386.txt blk00387.txt blk00388.txt blk00389.txt blk00390.txt blk00391.txt blk00392.txt blk00393.txt blk00394.txt blk00395.txt blk00396.txt blk00397.txt blk00398.txt blk00399.txt blk00400.txt blk00401.txt blk00402.txt blk00403.txt blk00404.txt blk00405.txt blk00406.txt blk00407.txt blk00408.txt blk00409.txt blk00410.txt blk00411.txt blk00412.txt blk00413.txt blk00414.txt blk00415.txt blk00416.txt blk00417.txt blk00418.txt blk00419.txt blk00420.txt blk00421.txt blk00422.txt blk00423.txt blk00424.txt blk00425.txt blk00426.txt blk00427.txt blk00428.txt blk00429.txt blk00430.txt blk00431.txt blk00432.txt blk00433.txt blk00434.txt blk00435.txt blk00436.txt blk00437.txt blk00438.txt blk00439.txt blk00440.txt blk00441.txt blk00442.txt blk00443.txt blk00444.txt blk00445.txt blk00446.txt blk00447.txt blk00448.txt blk00449.txt blk00450.txt blk00451.txt blk00452.txt blk00453.txt blk00454.txt blk00455.txt blk00456.txt blk00457.txt blk00458.txt blk00459.txt blk00460.txt blk00461.txt blk00462.txt blk00463.txt blk00464.txt blk00465.txt blk00466.txt blk00467.txt blk00468.txt blk00469.txt blk00470.txt blk00471.txt blk00472.txt blk00473.txt blk00474.txt blk00475.txt blk00476.txt blk00477.txt blk00478.txt blk00479.txt blk00480.txt blk00481.txt blk00482.txt blk00483.txt blk00484.txt blk00485.txt blk00486.txt blk00487.txt blk00488.txt blk00489.txt blk00490.txt blk00491.txt blk00492.txt blk00493.txt blk00494.txt blk00495.txt blk00496.txt blk00497.txt blk00498.txt blk00499.txt blk00500.txt blk00501.txt blk00502.txt blk00503.txt blk00504.txt blk00505.txt blk00506.txt blk00507.txt blk00508.txt blk00509.txt blk00510.txt blk00511.txt blk00512.txt blk00513.txt blk00514.txt blk00515.txt blk00516.txt blk00517.txt blk00518.txt blk00519.txt blk00520.txt blk00521.txt blk00522.txt blk00523.txt blk00524.txt blk00525.txt blk00526.txt blk00527.txt blk00528.txt blk00529.txt blk00530.txt blk00531.txt blk00532.txt blk00533.txt blk00534.txt blk00535.txt blk00536.txt blk00537.txt blk00538.txt blk00539.txt blk00540.txt blk00541.txt blk00542.txt blk00543.txt blk00544.txt blk00545.txt blk00546.txt blk00547.txt blk00548.txt blk00549.txt blk00550.txt blk00551.txt blk00552.txt blk00553.txt blk00554.txt blk00555.txt blk00556.txt blk00557.txt blk00558.txt blk00559.txt blk00560.txt blk00561.txt blk00562.txt blk00563.txt blk00564.txt blk00565.txt blk00566.txt blk00567.txt blk00568.txt blk00569.txt blk00570.txt blk00571.txt blk00572.txt blk00573.txt blk00574.txt blk00575.txt blk00576.txt blk00577.txt blk00578.txt blk00579.txt blk00580.txt blk00581.txt blk00582.txt blk00583.txt blk00584.txt blk00585.txt blk00586.txt blk00587.txt blk00588.txt blk00589.txt blk00590.txt blk00591.txt blk00592.txt blk00593.txt blk00594.txt blk00595.txt blk00596.txt blk00597.txt blk00598.txt blk00599.txt blk00600.txt blk00601.txt blk00602.txt blk00603.txt blk00604.txt blk00605.txt blk00606.txt blk00607.txt blk00608.txt blk00609.txt blk00610.txt blk00611.txt blk00612.txt blk00613.txt blk00614.txt blk00615.txt blk00616.txt blk00617.txt blk00618.txt blk00619.txt blk00620.txt blk00621.txt blk00622.txt blk00623.txt blk00624.txt blk00625.txt blk00626.txt blk00627.txt blk00628.txt blk00629.txt blk00630.txt blk00631.txt blk00632.txt blk00633.txt blk00634.txt blk00635.txt blk00636.txt blk00637.txt blk00638.txt blk00639.txt blk00640.txt blk00641.txt blk00642.txt blk00643.txt blk00644.txt blk00645.txt blk00646.txt blk00647.txt blk00648.txt blk00649.txt blk00650.txt blk00651.txt blk00652.txt blk00653.txt blk00654.txt blk00655.txt blk00656.txt blk00657.txt blk00658.txt blk00659.txt blk00660.txt blk00661.txt blk00662.txt blk00663.txt blk00664.txt blk00665.txt blk00666.txt blk00667.txt blk00668.txt blk00669.txt blk00670.txt blk00671.txt blk00672.txt blk00673.txt blk00674.txt blk00675.txt blk00676.txt blk00677.txt blk00678.txt blk00679.txt blk00680.txt blk00681.txt blk00682.txt blk00683.txt blk00684.txt blk00685.txt blk00686.txt blk00687.txt blk00688.txt blk00689.txt blk00690.txt blk00691.txt blk00692.txt blk00693.txt blk00694.txt blk00695.txt blk00696.txt blk00697.txt blk00698.txt blk00699.txt blk00700.txt blk00701.txt blk00702.txt blk00703.txt blk00704.txt blk00705.txt blk00706.txt blk00707.txt blk00708.txt blk00709.txt blk00710.txt blk00711.txt blk00712.txt blk00713.txt blk00714.txt blk00715.txt blk00716.txt blk00717.txt blk00718.txt blk00719.txt blk00720.txt blk00721.txt blk00722.txt blk00723.txt blk00724.txt blk00725.txt blk00726.txt blk00727.txt blk00728.txt blk00729.txt blk00730.txt blk00731.txt blk00732.txt blk00733.txt blk00734.txt blk00735.txt blk00736.txt blk00737.txt blk00738.txt blk00739.txt blk00740.txt blk00741.txt blk00742.txt blk00743.txt blk00744.txt blk00745.txt blk00746.txt blk00747.txt blk00748.txt blk00749.txt blk00750.txt blk00751.txt blk00752.txt blk00753.txt blk00754.txt blk00755.txt blk00756.txt blk00757.txt blk00758.txt blk00759.txt blk00760.txt blk00761.txt blk00762.txt blk00763.txt blk00764.txt blk00765.txt blk00766.txt blk00767.txt blk00768.txt blk00769.txt blk00770.txt blk00771.txt blk00772.txt blk00773.txt blk00774.txt blk00775.txt blk00776.txt blk00777.txt blk00778.txt blk00779.txt blk00780.txt blk00781.txt blk00782.txt blk00783.txt blk00784.txt blk00785.txt blk00786.txt blk00787.txt blk00788.txt blk00789.txt blk00790.txt blk00791.txt blk00792.txt blk00793.txt blk00794.txt blk00795.txt blk00796.txt blk00797.txt blk00798.txt blk00799.txt blk00800.txt blk00801.txt blk00802.txt blk00803.txt blk00804.txt blk00805.txt blk00806.txt blk00807.txt blk00808.txt blk00809.txt blk00810.txt blk00811.txt blk00812.txt blk00813.txt blk00814.txt blk00815.txt blk00816.txt blk00817.txt blk00818.txt blk00819.txt blk00820.txt blk00821.txt blk00822.txt blk00823.txt blk00824.txt blk00825.txt blk00826.txt blk00827.txt blk00828.txt blk00829.txt blk00830.txt blk00831.txt blk00832.txt blk00833.txt blk00834.txt blk00835.txt blk00836.txt blk00837.txt blk00838.txt blk00839.txt blk00840.txt blk00841.txt blk00842.txt blk00843.txt blk00844.txt blk00845.txt blk00846.txt blk00847.txt blk00848.txt blk00849.txt blk00850.txt blk00851.txt blk00852.txt blk00853.txt blk00854.txt blk00855.txt blk00856.txt blk00857.txt blk00858.txt blk00859.txt blk00860.txt blk00861.txt blk00862.txt blk00863.txt blk00864.txt blk00865.txt blk00866.txt blk00867.txt blk00868.txt blk00869.txt blk00870.txt blk00871.txt blk00872.txt blk00873.txt blk00874.txt blk00875.txt blk00876.txt blk00877.txt blk00878.txt blk00879.txt blk00880.txt blk00881.txt blk00882.txt blk00883.txt blk00884.txt blk00885.txt blk00886.txt blk00887.txt blk00888.txt blk00889.txt blk00890.txt blk00891.txt blk00892.txt blk00893.txt blk00894.txt blk00895.txt blk00896.txt blk00897.txt blk00898.txt blk00899.txt blk00900.txt blk00901.txt blk00902.txt blk00903.txt blk00904.txt blk00905.txt blk00906.txt blk00907.txt blk00908.txt blk00909.txt blk00910.txt blk00911.txt blk00912.txt blk00913.txt blk00914.txt blk00915.txt blk00916.txt blk00917.txt blk00918.txt blk00919.txt blk00920.txt blk00921.txt blk00922.txt blk00923.txt blk00924.txt blk00925.txt blk00926.txt blk00927.txt blk00928.txt blk00929.txt blk00930.txt blk00931.txt blk00932.txt blk00933.txt blk00934.txt blk00935.txt blk00936.txt blk00937.txt blk00938.txt blk00939.txt blk00940.txt blk00941.txt blk00942.txt blk00943.txt blk00944.txt blk00945.txt blk00946.txt blk00947.txt blk00948.txt blk00949.txt blk00950.txt blk00951.txt blk00952.txt blk00953.txt blk00954.txt blk00955.txt blk00956.txt blk00957.txt blk00958.txt blk00959.txt blk00960.txt blk00961.txt blk00962.txt blk00963.txt blk00964.txt blk00965.txt blk00966.txt blk00967.txt blk00968.txt blk00969.txt blk00970.txt blk00971.txt blk00972.txt blk00973.txt blk00974.txt blk00975.txt blk00976.txt blk00977.txt blk00978.txt blk00979.txt blk00980.txt blk00981.txt blk00982.txt blk00983.txt blk00984.txt blk00985.txt blk00986.txt blk00987.txt blk00988.txt blk00989.txt blk00990.txt blk00991.txt blk00992.txt blk00993.txt blk00994.txt blk00995.txt blk00996.txt blk00997.txt blk00998.txt blk00999.txt blk01000.txt blk01001.txt blk01002.txt blk01003.txt blk01004.txt blk01005.txt blk01006.txt blk01007.txt blk01008.txt blk01009.txt blk01010.txt blk01011.txt blk01012.txt blk01013.txt blk01014.txt blk01015.txt blk01016.txt blk01017.txt blk01018.txt blk01019.txt blk01020.txt blk01021.txt blk01022.txt blk01023.txt blk01024.txt blk01025.txt blk01026.txt blk01027.txt blk01028.txt blk01029.txt blk01030.txt blk01031.txt blk01032.txt blk01033.txt blk01034.txt blk01035.txt blk01036.txt blk01037.txt blk01038.txt blk01039.txt blk01040.txt blk01041.txt blk01042.txt blk01043.txt blk01044.txt blk01045.txt blk01046.txt blk01047.txt blk01048.txt blk01049.txt blk01050.txt blk01051.txt blk01052.txt blk01053.txt blk01054.txt blk01055.txt blk01056.txt blk01057.txt blk01058.txt blk01059.txt blk01060.txt blk01061.txt blk01062.txt blk01063.txt blk01064.txt blk01065.txt blk01066.txt blk01067.txt blk01068.txt blk01069.txt blk01070.txt blk01071.txt blk01072.txt blk01073.txt blk01074.txt blk01075.txt blk01076.txt blk01077.txt blk01078.txt blk01079.txt blk01080.txt blk01081.txt blk01082.txt blk01083.txt blk01084.txt blk01085.txt blk01086.txt blk01087.txt blk01088.txt blk01089.txt blk01090.txt blk01091.txt blk01092.txt blk01093.txt blk01094.txt blk01095.txt blk01096.txt blk01097.txt blk01098.txt blk01099.txt blk01100.txt blk01101.txt blk01102.txt blk01103.txt blk01104.txt blk01105.txt blk01106.txt blk01107.txt blk01108.txt blk01109.txt blk01110.txt blk01111.txt blk01112.txt blk01113.txt blk01114.txt blk01115.txt blk01116.txt blk01117.txt blk01118.txt blk01119.txt blk01120.txt blk01121.txt blk01122.txt blk01123.txt blk01124.txt blk01125.txt blk01126.txt blk01127.txt blk01128.txt blk01129.txt blk01130.txt blk01131.txt blk01132.txt blk01133.txt blk01134.txt blk01135.txt blk01136.txt blk01137.txt blk01138.txt blk01139.txt blk01140.txt blk01141.txt blk01142.txt blk01143.txt blk01144.txt blk01145.txt blk01146.txt blk01147.txt blk01148.txt blk01149.txt blk01150.txt blk01151.txt blk01152.txt blk01153.txt blk01154.txt blk01155.txt blk01156.txt blk01157.txt blk01158.txt blk01159.txt blk01160.txt blk01161.txt blk01162.txt blk01163.txt blk01164.txt blk01165.txt blk01166.txt blk01167.txt blk01168.txt blk01169.txt blk01170.txt blk01171.txt blk01172.txt blk01173.txt blk01174.txt blk01175.txt blk01176.txt blk01177.txt blk01178.txt blk01179.txt blk01180.txt blk01181.txt blk01182.txt blk01183.txt blk01184.txt blk01185.txt blk01186.txt blk01187.txt blk01188.txt blk01189.txt blk01190.txt blk01191.txt blk01192.txt blk01193.txt blk01194.txt blk01195.txt blk01196.txt blk01197.txt blk01198.txt blk01199.txt blk01200.txt blk01201.txt blk01202.txt blk01203.txt blk01204.txt blk01205.txt blk01206.txt blk01207.txt blk01208.txt blk01209.txt blk01210.txt blk01211.txt blk01212.txt blk01213.txt blk01214.txt blk01215.txt blk01216.txt blk01217.txt blk01218.txt blk01219.txt blk01220.txt blk01221.txt blk01222.txt blk01223.txt blk01224.txt blk01225.txt blk01226.txt blk01227.txt blk01228.txt blk01229.txt blk01230.txt blk01231.txt blk01232.txt blk01233.txt blk01234.txt blk01235.txt blk01236.txt blk01237.txt blk01238.txt blk01239.txt blk01240.txt blk01241.txt blk01242.txt blk01243.txt blk01244.txt blk01245.txt blk01246.txt blk01247.txt blk01248.txt blk01249.txt blk01250.txt blk01251.txt blk01252.txt blk01253.txt blk01254.txt blk01255.txt blk01256.txt blk01257.txt blk01258.txt blk01259.txt blk01260.txt blk01261.txt blk01262.txt blk01263.txt blk01264.txt blk01265.txt blk01266.txt blk01267.txt blk01268.txt blk01269.txt blk01270.txt blk01271.txt blk01272.txt blk01273.txt blk01274.txt blk01275.txt blk01276.txt blk01277.txt blk01278.txt blk01279.txt blk01280.txt blk01281.txt blk01282.txt blk01283.txt blk01284.txt blk01285.txt blk01286.txt blk01287.txt blk01288.txt blk01289.txt blk01290.txt blk01291.txt blk01292.txt blk01293.txt blk01294.txt blk01295.txt blk01296.txt blk01297.txt blk01298.txt blk01299.txt blk01300.txt blk01301.txt blk01302.txt blk01303.txt blk01304.txt blk01305.txt blk01306.txt blk01307.txt blk01308.txt blk01309.txt blk01310.txt blk01311.txt blk01312.txt blk01313.txt blk01314.txt blk01315.txt blk01316.txt blk01317.txt blk01318.txt blk01319.txt blk01320.txt blk01321.txt blk01322.txt blk01323.txt blk01324.txt blk01325.txt blk01326.txt blk01327.txt blk01328.txt blk01329.txt blk01330.txt blk01331.txt blk01332.txt blk01333.txt blk01334.txt blk01335.txt blk01336.txt blk01337.txt blk01338.txt blk01339.txt blk01340.txt blk01341.txt blk01342.txt blk01343.txt blk01344.txt blk01345.txt blk01346.txt blk01347.txt blk01348.txt blk01349.txt blk01350.txt blk01351.txt blk01352.txt blk01353.txt blk01354.txt blk01355.txt blk01356.txt blk01357.txt blk01358.txt blk01359.txt blk01360.txt blk01361.txt blk01362.txt blk01363.txt blk01364.txt blk01365.txt blk01366.txt blk01367.txt blk01368.txt blk01369.txt blk01370.txt blk01371.txt blk01372.txt blk01373.txt blk01374.txt blk01375.txt blk01376.txt blk01377.txt blk01378.txt blk01379.txt blk01380.txt blk01381.txt blk01382.txt blk01383.txt blk01384.txt blk01385.txt blk01386.txt blk01387.txt blk01388.txt blk01389.txt blk01390.txt blk01391.txt blk01392.txt blk01393.txt blk01394.txt blk01395.txt blk01396.txt blk01397.txt blk01398.txt blk01399.txt blk01400.txt blk01401.txt blk01402.txt blk01403.txt blk01404.txt blk01405.txt blk01406.txt blk01407.txt blk01408.txt blk01409.txt blk01410.txt blk01411.txt blk01412.txt blk01413.txt blk01414.txt blk01415.txt blk01416.txt blk01417.txt blk01418.txt blk01419.txt blk01420.txt blk01421.txt blk01422.txt blk01423.txt blk01424.txt blk01425.txt blk01426.txt blk01427.txt blk01428.txt blk01429.txt blk01430.txt blk01431.txt blk01432.txt blk01433.txt blk01434.txt blk01435.txt blk01436.txt blk01437.txt blk01438.txt blk01439.txt blk01440.txt blk01441.txt blk01442.txt blk01443.txt blk01444.txt blk01445.txt blk01446.txt blk01447.txt blk01448.txt blk01449.txt blk01450.txt blk01451.txt blk01452.txt blk01453.txt blk01454.txt blk01455.txt blk01456.txt blk01457.txt blk01458.txt blk01459.txt blk01460.txt blk01461.txt blk01462.txt blk01463.txt blk01464.txt blk01465.txt blk01466.txt blk01467.txt blk01468.txt blk01469.txt blk01470.txt blk01471.txt blk01472.txt blk01473.txt blk01474.txt blk01475.txt blk01476.txt blk01477.txt blk01478.txt blk01479.txt blk01480.txt blk01481.txt blk01482.txt blk01483.txt blk01484.txt blk01485.txt blk01486.txt blk01487.txt blk01488.txt blk01489.txt blk01490.txt blk01491.txt blk01492.txt blk01493.txt blk01494.txt blk01495.txt blk01496.txt blk01497.txt blk01498.txt blk01499.txt blk01500.txt blk01501.txt blk01502.txt blk01503.txt blk01504.txt blk01505.txt blk01506.txt blk01507.txt blk01508.txt blk01509.txt blk01510.txt blk01511.txt blk01512.txt blk01513.txt blk01514.txt blk01515.txt blk01516.txt blk01517.txt blk01518.txt blk01519.txt blk01520.txt blk01521.txt blk01522.txt blk01523.txt blk01524.txt blk01525.txt blk01526.txt blk01527.txt blk01528.txt blk01529.txt blk01530.txt blk01531.txt blk01532.txt blk01533.txt blk01534.txt blk01535.txt blk01536.txt blk01537.txt blk01538.txt blk01539.txt blk01540.txt blk01541.txt blk01542.txt blk01543.txt blk01544.txt blk01545.txt blk01546.txt blk01547.txt blk01548.txt blk01549.txt blk01550.txt blk01551.txt blk01552.txt blk01553.txt blk01554.txt blk01555.txt blk01556.txt blk01557.txt blk01558.txt blk01559.txt blk01560.txt blk01561.txt blk01562.txt blk01563.txt blk01564.txt blk01565.txt blk01566.txt blk01567.txt blk01568.txt blk01569.txt blk01570.txt blk01571.txt blk01572.txt blk01573.txt blk01574.txt blk01575.txt blk01576.txt blk01577.txt blk01578.txt blk01579.txt blk01580.txt blk01581.txt blk01582.txt blk01583.txt blk01584.txt blk01585.txt blk01586.txt blk01587.txt blk01588.txt blk01589.txt blk01590.txt blk01591.txt blk01592.txt blk01593.txt blk01594.txt blk01595.txt blk01596.txt blk01597.txt blk01598.txt blk01599.txt blk01600.txt blk01601.txt blk01602.txt blk01603.txt blk01604.txt blk01605.txt blk01606.txt blk01607.txt blk01608.txt blk01609.txt blk01610.txt blk01611.txt blk01612.txt blk01613.txt blk01614.txt blk01615.txt blk01616.txt blk01617.txt blk01618.txt blk01619.txt blk01620.txt blk01621.txt blk01622.txt blk01623.txt blk01624.txt blk01625.txt blk01626.txt blk01627.txt blk01628.txt blk01629.txt blk01630.txt blk01631.txt blk01632.txt blk01633.txt blk01634.txt blk01635.txt blk01636.txt blk01637.txt blk01638.txt blk01639.txt blk01640.txt blk01641.txt blk01642.txt blk01643.txt blk01644.txt blk01645.txt blk01646.txt blk01647.txt blk01648.txt blk01649.txt blk01650.txt blk01651.txt blk01652.txt blk01653.txt blk01654.txt blk01655.txt blk01656.txt blk01657.txt blk01658.txt blk01659.txt blk01660.txt blk01661.txt blk01662.txt blk01663.txt blk01664.txt blk01665.txt blk01666.txt blk01667.txt blk01668.txt blk01669.txt blk01670.txt blk01671.txt blk01672.txt blk01673.txt blk01674.txt blk01675.txt blk01676.txt blk01677.txt blk01678.txt blk01679.txt blk01680.txt blk01681.txt blk01682.txt blk01683.txt blk01684.txt blk01685.txt blk01686.txt blk01687.txt blk01688.txt blk01689.txt blk01690.txt blk01691.txt blk01692.txt blk01693.txt blk01694.txt blk01695.txt blk01696.txt blk01697.txt blk01698.txt blk01699.txt blk01700.txt blk01701.txt blk01702.txt blk01703.txt blk01704.txt blk01705.txt blk01706.txt blk01707.txt blk01708.txt blk01709.txt blk01710.txt blk01711.txt blk01712.txt blk01713.txt blk01714.txt blk01715.txt blk01716.txt blk01717.txt blk01718.txt blk01719.txt blk01720.txt blk01721.txt blk01722.txt blk01723.txt blk01724.txt blk01725.txt blk01726.txt blk01727.txt blk01728.txt blk01729.txt blk01730.txt blk01731.txt blk01732.txt blk01733.txt blk01734.txt blk01735.txt blk01736.txt blk01737.txt blk01738.txt blk01739.txt blk01740.txt blk01741.txt blk01742.txt blk01743.txt blk01744.txt blk01745.txt blk01746.txt blk01747.txt blk01748.txt blk01749.txt blk01750.txt blk01751.txt blk01752.txt blk01753.txt blk01754.txt blk01755.txt blk01756.txt blk01757.txt blk01758.txt blk01759.txt blk01760.txt blk01761.txt blk01762.txt blk01763.txt blk01764.txt blk01765.txt blk01766.txt blk01767.txt blk01768.txt blk01769.txt blk01770.txt blk01771.txt blk01772.txt blk01773.txt blk01774.txt blk01775.txt blk01776.txt blk01777.txt blk01778.txt blk01779.txt blk01780.txt blk01781.txt blk01782.txt blk01783.txt blk01784.txt blk01785.txt blk01786.txt blk01787.txt blk01788.txt blk01789.txt blk01790.txt blk01791.txt blk01792.txt blk01793.txt blk01794.txt blk01795.txt blk01796.txt blk01797.txt blk01798.txt blk01799.txt blk01800.txt blk01801.txt blk01802.txt blk01803.txt blk01804.txt blk01805.txt blk01806.txt blk01807.txt blk01808.txt blk01809.txt blk01810.txt blk01811.txt blk01812.txt blk01813.txt blk01814.txt blk01815.txt blk01816.txt blk01817.txt blk01818.txt blk01819.txt blk01820.txt blk01821.txt blk01822.txt blk01823.txt blk01824.txt blk01825.txt blk01826.txt blk01827.txt blk01828.txt blk01829.txt blk01830.txt blk01831.txt blk01832.txt blk01833.txt blk01834.txt blk01835.txt blk01836.txt blk01837.txt blk01838.txt blk01839.txt blk01840.txt blk01841.txt blk01842.txt blk01843.txt blk01844.txt blk01845.txt blk01846.txt blk01847.txt blk01848.txt blk01849.txt blk01850.txt blk01851.txt blk01852.txt blk01853.txt blk01854.txt blk01855.txt blk01856.txt blk01857.txt blk01858.txt blk01859.txt blk01860.txt blk01861.txt blk01862.txt blk01863.txt blk01864.txt blk01865.txt blk01866.txt blk01867.txt blk01868.txt blk01869.txt blk01870.txt blk01871.txt blk01872.txt blk01873.txt blk01874.txt blk01875.txt blk01876.txt blk01877.txt blk01878.txt blk01879.txt blk01880.txt blk01881.txt blk01882.txt blk01883.txt blk01884.txt blk01885.txt blk01886.txt blk01887.txt blk01888.txt blk01889.txt blk01890.txt blk01891.txt blk01892.txt blk01893.txt blk01894.txt blk01895.txt blk01896.txt blk01897.txt blk01898.txt blk01899.txt blk01900.txt blk01901.txt blk01902.txt blk01903.txt blk01904.txt blk01905.txt blk01906.txt blk01907.txt blk01908.txt blk01909.txt blk01910.txt blk01911.txt blk01912.txt blk01913.txt blk01914.txt blk01915.txt blk01916.txt blk01917.txt blk01918.txt blk01919.txt blk01920.txt blk01921.txt blk01922.txt blk01923.txt blk01924.txt blk01925.txt blk01926.txt blk01927.txt blk01928.txt blk01929.txt blk01930.txt blk01931.txt blk01932.txt blk01933.txt blk01934.txt blk01935.txt blk01936.txt blk01937.txt blk01938.txt blk01939.txt blk01940.txt blk01941.txt blk01942.txt blk01943.txt blk01944.txt blk01945.txt blk01946.txt blk01947.txt blk01948.txt blk01949.txt blk01950.txt blk01951.txt blk01952.txt blk01953.txt blk01954.txt blk01955.txt blk01956.txt blk01957.txt blk01958.txt blk01959.txt blk01960.txt blk01961.txt blk01962.txt blk01963.txt blk01964.txt blk01965.txt blk01966.txt blk01967.txt blk01968.txt blk01969.txt blk01970.txt blk01971.txt blk01972.txt blk01973.txt blk01974.txt blk01975.txt blk01976.txt blk01977.txt blk01978.txt blk01979.txt blk01980.txt blk01981.txt blk01982.txt blk01983.txt blk01984.txt blk01985.txt blk01986.txt blk01987.txt blk01988.txt blk01989.txt blk01990.txt blk01991.txt blk01992.txt blk01993.txt blk01994.txt blk01995.txt blk01996.txt blk01997.txt blk01998.txt blk01999.txt blk02000.txt blk02001.txt blk02002.txt blk02003.txt blk02004.txt blk02005.txt blk02006.txt blk02007.txt blk02008.txt blk02009.txt blk02010.txt blk02011.txt blk02012.txt blk02013.txt blk02014.txt blk02015.txt blk02016.txt blk02017.txt blk02018.txt blk02019.txt blk02020.txt blk02021.txt blk02022.txt blk02023.txt blk02024.txt blk02025.txt blk02026.txt blk02027.txt blk02028.txt blk02029.txt blk02030.txt blk02031.txt blk02032.txt blk02033.txt blk02034.txt blk02035.txt blk02036.txt blk02037.txt blk02038.txt blk02039.txt blk02040.txt blk02041.txt blk02042.txt blk02043.txt blk02044.txt blk02045.txt blk02046.txt blk02047.txt blk02048.txt blk02049.txt blk02050.txt blk02051.txt blk02052.txt blk02053.txt blk02054.txt blk02055.txt blk02056.txt blk02057.txt blk02058.txt blk02059.txt blk02060.txt blk02061.txt blk02062.txt blk02063.txt blk02064.txt blk02065.txt blk02066.txt blk02067.txt blk02068.txt blk02069.txt blk02070.txt blk02071.txt blk02072.txt blk02073.txt blk02074.txt blk02075.txt blk02076.txt blk02077.txt blk02078.txt blk02079.txt blk02080.txt blk02081.txt blk02082.txt blk02083.txt blk02084.txt blk02085.txt blk02086.txt blk02087.txt blk02088.txt blk02089.txt blk02090.txt blk02091.txt blk02092.txt blk02093.txt blk02094.txt blk02095.txt blk02096.txt blk02097.txt blk02098.txt blk02099.txt blk02100.txt blk02101.txt blk02102.txt blk02103.txt blk02104.txt blk02105.txt blk02106.txt blk02107.txt blk02108.txt blk02109.txt blk02110.txt blk02111.txt blk02112.txt blk02113.txt blk02114.txt blk02115.txt blk02116.txt blk02117.txt blk02118.txt blk02119.txt blk02120.txt blk02121.txt blk02122.txt blk02123.txt blk02124.txt blk02125.txt blk02126.txt blk02127.txt blk02128.txt blk02129.txt blk02130.txt blk02131.txt blk02132.txt blk02133.txt blk02134.txt blk02135.txt blk02136.txt blk02137.txt blk02138.txt blk02139.txt blk02140.txt blk02141.txt blk02142.txt blk02143.txt blk02144.txt blk02145.txt blk02146.txt blk02147.txt blk02148.txt blk02149.txt blk02150.txt blk02151.txt blk02152.txt blk02153.txt blk02154.txt blk02155.txt blk02156.txt blk02157.txt blk02158.txt blk02159.txt blk02160.txt blk02161.txt blk02162.txt blk02163.txt blk02164.txt blk02165.txt blk02166.txt blk02167.txt blk02168.txt blk02169.txt blk02170.txt blk02171.txt blk02172.txt blk02173.txt blk02174.txt blk02175.txt blk02176.txt blk02177.txt blk02178.txt blk02179.txt blk02180.txt blk02181.txt blk02182.txt blk02183.txt blk02184.txt blk02185.txt blk02186.txt blk02187.txt blk02188.txt blk02189.txt blk02190.txt blk02191.txt blk02192.txt blk02193.txt blk02194.txt blk02195.txt blk02196.txt blk02197.txt blk02198.txt blk02199.txt blk02200.txt blk02201.txt blk02202.txt blk02203.txt blk02204.txt blk02205.txt blk02206.txt blk02207.txt blk02208.txt blk02209.txt blk02210.txt blk02211.txt blk02212.txt blk02213.txt blk02214.txt blk02215.txt blk02216.txt blk02217.txt blk02218.txt blk02219.txt blk02220.txt blk02221.txt blk02222.txt blk02223.txt blk02224.txt blk02225.txt blk02226.txt blk02227.txt blk02228.txt blk02229.txt blk02230.txt blk02231.txt blk02232.txt blk02233.txt blk02234.txt blk02235.txt blk02236.txt blk02237.txt blk02238.txt blk02239.txt blk02240.txt blk02241.txt blk02242.txt blk02243.txt blk02244.txt blk02245.txt blk02246.txt blk02247.txt blk02248.txt blk02249.txt blk02250.txt blk02251.txt blk02252.txt blk02253.txt blk02254.txt blk02255.txt blk02256.txt blk02257.txt blk02258.txt blk02259.txt blk02260.txt blk02261.txt blk02262.txt blk02263.txt blk02264.txt blk02265.txt blk02266.txt blk02267.txt blk02268.txt blk02269.txt blk02270.txt blk02271.txt blk02272.txt blk02273.txt blk02274.txt blk02275.txt blk02276.txt blk02277.txt blk02278.txt blk02279.txt blk02280.txt blk02281.txt blk02282.txt blk02283.txt blk02284.txt blk02285.txt blk02286.txt blk02287.txt blk02288.txt blk02289.txt blk02290.txt blk02291.txt blk02292.txt blk02293.txt blk02294.txt blk02295.txt blk02296.txt blk02297.txt blk02298.txt blk02299.txt blk02300.txt blk02301.txt blk02302.txt blk02303.txt blk02304.txt blk02305.txt blk02306.txt blk02307.txt blk02308.txt blk02309.txt blk02310.txt blk02311.txt blk02312.txt blk02313.txt blk02314.txt blk02315.txt blk02316.txt blk02317.txt blk02318.txt blk02319.txt blk02320.txt blk02321.txt blk02322.txt blk02323.txt blk02324.txt blk02325.txt blk02326.txt blk02327.txt blk02328.txt blk02329.txt blk02330.txt blk02331.txt blk02332.txt blk02333.txt blk02334.txt blk02335.txt blk02336.txt blk02337.txt blk02338.txt blk02339.txt blk02340.txt blk02341.txt blk02342.txt blk02343.txt blk02344.txt blk02345.txt blk02346.txt blk02347.txt blk02348.txt blk02349.txt blk02350.txt blk02351.txt blk02352.txt blk02353.txt blk02354.txt blk02355.txt blk02356.txt blk02357.txt blk02358.txt blk02359.txt blk02360.txt blk02361.txt blk02362.txt blk02363.txt blk02364.txt blk02365.txt blk02366.txt blk02367.txt blk02368.txt blk02369.txt blk02370.txt blk02371.txt blk02372.txt blk02373.txt blk02374.txt blk02375.txt blk02376.txt blk02377.txt blk02378.txt blk02379.txt blk02380.txt blk02381.txt blk02382.txt blk02383.txt blk02384.txt blk02385.txt blk02386.txt blk02387.txt blk02388.txt blk02389.txt blk02390.txt blk02391.txt blk02392.txt blk02393.txt blk02394.txt blk02395.txt blk02396.txt blk02397.txt blk02398.txt blk02399.txt blk02400.txt blk02401.txt blk02402.txt blk02403.txt blk02404.txt blk02405.txt blk02406.txt blk02407.txt blk02408.txt blk02409.txt blk02410.txt blk02411.txt blk02412.txt blk02413.txt blk02414.txt blk02415.txt blk02416.txt blk02417.txt blk02418.txt blk02419.txt blk02420.txt blk02421.txt blk02422.txt blk02423.txt blk02424.txt blk02425.txt blk02426.txt blk02427.txt blk02428.txt blk02429.txt blk02430.txt blk02431.txt blk02432.txt blk02433.txt blk02434.txt blk02435.txt blk02436.txt blk02437.txt blk02438.txt blk02439.txt blk02440.txt blk02441.txt blk02442.txt blk02443.txt blk02444.txt blk02445.txt blk02446.txt blk02447.txt blk02448.txt blk02449.txt blk02450.txt blk02451.txt blk02452.txt blk02453.txt blk02454.txt blk02455.txt blk02456.txt blk02457.txt blk02458.txt blk02459.txt blk02460.txt blk02461.txt blk02462.txt blk02463.txt blk02464.txt blk02465.txt blk02466.txt blk02467.txt blk02468.txt blk02469.txt blk02470.txt blk02471.txt blk02472.txt blk02473.txt blk02474.txt blk02475.txt blk02476.txt blk02477.txt blk02478.txt blk02479.txt blk02480.txt blk02481.txt blk02482.txt blk02483.txt blk02484.txt blk02485.txt blk02486.txt blk02487.txt blk02488.txt blk02489.txt blk02490.txt blk02491.txt blk02492.txt blk02493.txt blk02494.txt blk02495.txt blk02496.txt blk02497.txt blk02498.txt blk02499.txt blk02500.txt blk02501.txt blk02502.txt blk02503.txt blk02504.txt blk02505.txt blk02506.txt blk02507.txt blk02508.txt blk02509.txt blk02510.txt blk02511.txt blk02512.txt blk02513.txt blk02514.txt blk02515.txt blk02516.txt blk02517.txt blk02518.txt blk02519.txt blk02520.txt blk02521.txt blk02522.txt blk02523.txt blk02524.txt blk02525.txt blk02526.txt blk02527.txt blk02528.txt blk02529.txt blk02530.txt blk02531.txt blk02532.txt blk02533.txt blk02534.txt blk02535.txt blk02536.txt blk02537.txt blk02538.txt blk02539.txt blk02540.txt blk02541.txt blk02542.txt blk02543.txt blk02544.txt blk02545.txt blk02546.txt blk02547.txt blk02548.txt blk02549.txt blk02550.txt blk02551.txt blk02552.txt blk02553.txt blk02554.txt blk02555.txt blk02556.txt blk02557.txt blk02558.txt blk02559.txt blk02560.txt blk02561.txt blk02562.txt blk02563.txt blk02564.txt blk02565.txt blk02566.txt blk02567.txt blk02568.txt blk02569.txt blk02570.txt blk02571.txt blk02572.txt blk02573.txt blk02574.txt blk02575.txt blk02576.txt blk02577.txt blk02578.txt blk02579.txt blk02580.txt blk02581.txt blk02582.txt blk02583.txt blk02584.txt blk02585.txt blk02586.txt blk02587.txt blk02588.txt blk02589.txt blk02590.txt blk02591.txt blk02592.txt blk02593.txt blk02594.txt blk02595.txt blk02596.txt blk02597.txt blk02598.txt blk02599.txt blk02600.txt blk02601.txt blk02602.txt blk02603.txt blk02604.txt blk02605.txt blk02606.txt blk02607.txt blk02608.txt blk02609.txt blk02610.txt blk02611.txt blk02612.txt blk02613.txt blk02614.txt blk02615.txt blk02616.txt blk02617.txt blk02618.txt blk02619.txt blk02620.txt blk02621.txt blk02622.txt blk02623.txt blk02624.txt blk02625.txt blk02626.txt blk02627.txt blk02628.txt blk02629.txt blk02630.txt blk02631.txt blk02632.txt blk02633.txt blk02634.txt blk02635.txt blk02636.txt blk02637.txt blk02638.txt blk02639.txt blk02640.txt blk02641.txt blk02642.txt blk02643.txt blk02644.txt blk02645.txt blk02646.txt blk02647.txt blk02648.txt blk02649.txt blk02650.txt blk02651.txt blk02652.txt blk02653.txt blk02654.txt blk02655.txt blk02656.txt blk02657.txt blk02658.txt blk02659.txt blk02660.txt blk02661.txt blk02662.txt blk02663.txt blk02664.txt blk02665.txt blk02666.txt blk02667.txt blk02668.txt blk02669.txt blk02670.txt blk02671.txt blk02672.txt blk02673.txt blk02674.txt blk02675.txt blk02676.txt blk02677.txt blk02678.txt blk02679.txt blk02680.txt blk02681.txt blk02682.txt blk02683.txt blk02684.txt blk02685.txt blk02686.txt blk02687.txt blk02688.txt blk02689.txt blk02690.txt blk02691.txt blk02692.txt blk02693.txt blk02694.txt blk02695.txt blk02696.txt blk02697.txt blk02698.txt blk02699.txt blk02700.txt blk02701.txt blk02702.txt blk02703.txt blk02704.txt blk02705.txt blk02706.txt blk02707.txt blk02708.txt blk02709.txt blk02710.txt blk02711.txt blk02712.txt blk02713.txt blk02714.txt blk02715.txt blk02716.txt blk02717.txt blk02718.txt blk02719.txt blk02720.txt blk02721.txt blk02722.txt blk02723.txt blk02724.txt blk02725.txt blk02726.txt blk02727.txt blk02728.txt blk02729.txt blk02730.txt blk02731.txt blk02732.txt blk02733.txt blk02734.txt blk02735.txt blk02736.txt blk02737.txt blk02738.txt blk02739.txt blk02740.txt blk02741.txt blk02742.txt blk02743.txt blk02744.txt blk02745.txt blk02746.txt blk02747.txt blk02748.txt blk02749.txt blk02750.txt blk02751.txt blk02752.txt blk02753.txt blk02754.txt blk02755.txt blk02756.txt blk02757.txt blk02758.txt blk02759.txt blk02760.txt blk02761.txt blk02762.txt blk02763.txt blk02764.txt blk02765.txt blk02766.txt blk02767.txt blk02768.txt blk02769.txt blk02770.txt blk02771.txt blk02772.txt blk02773.txt blk02774.txt blk02775.txt blk02776.txt blk02777.txt blk02778.txt blk02779.txt blk02780.txt blk02781.txt blk02782.txt blk02783.txt blk02784.txt blk02785.txt blk02786.txt blk02787.txt blk02788.txt blk02789.txt blk02790.txt blk02791.txt blk02792.txt blk02793.txt blk02794.txt blk02795.txt blk02796.txt blk02797.txt blk02798.txt blk02799.txt blk02800.txt blk02801.txt blk02802.txt blk02803.txt blk02804.txt blk02805.txt blk02806.txt blk02807.txt blk02808.txt blk02809.txt blk02810.txt blk02811.txt blk02812.txt blk02813.txt blk02814.txt blk02815.txt blk02816.txt blk02817.txt blk02818.txt blk02819.txt blk02820.txt blk02821.txt blk02822.txt blk02823.txt blk02824.txt blk02825.txt blk02826.txt blk02827.txt blk02828.txt blk02829.txt blk02830.txt blk02831.txt blk02832.txt blk02833.txt blk02834.txt blk02835.txt blk02836.txt blk02837.txt blk02838.txt blk02839.txt blk02840.txt blk02841.txt blk02842.txt blk02843.txt blk02844.txt blk02845.txt blk02846.txt blk02847.txt blk02848.txt blk02849.txt blk02850.txt blk02851.txt blk02852.txt blk02853.txt blk02854.txt blk02855.txt blk02856.txt blk02857.txt blk02858.txt blk02859.txt blk02860.txt blk02861.txt blk02862.txt blk02863.txt blk02864.txt blk02865.txt blk02866.txt blk02867.txt blk02868.txt blk02869.txt blk02870.txt blk02871.txt blk02872.txt blk02873.txt blk02874.txt blk02875.txt blk02876.txt blk02877.txt blk02878.txt blk02879.txt blk02880.txt blk02881.txt blk02882.txt blk02883.txt blk02884.txt blk02885.txt blk02886.txt blk02887.txt blk02888.txt blk02889.txt blk02890.txt blk02891.txt blk02892.txt blk02893.txt blk02894.txt blk02895.txt blk02896.txt blk02897.txt blk02898.txt blk02899.txt blk02900.txt blk02901.txt blk02902.txt blk02903.txt blk02904.txt blk02905.txt blk02906.txt blk02907.txt blk02908.txt blk02909.txt blk02910.txt blk02911.txt blk02912.txt blk02913.txt blk02914.txt blk02915.txt blk02916.txt blk02917.txt blk02918.txt blk02919.txt blk02920.txt blk02921.txt blk02922.txt blk02923.txt blk02924.txt blk02925.txt blk02926.txt blk02927.txt blk02928.txt blk02929.txt blk02930.txt blk02931.txt blk02932.txt blk02933.txt blk02934.txt blk02935.txt blk02936.txt blk02937.txt blk02938.txt blk02939.txt blk02940.txt blk02941.txt blk02942.txt blk02943.txt blk02944.txt blk02945.txt blk02946.txt blk02947.txt blk02948.txt blk02949.txt blk02950.txt blk02951.txt blk02952.txt blk02953.txt blk02954.txt blk02955.txt blk02956.txt blk02957.txt blk02958.txt blk02959.txt blk02960.txt blk02961.txt blk02962.txt blk02963.txt blk02964.txt blk02965.txt blk02966.txt blk02967.txt blk02968.txt blk02969.txt blk02970.txt blk02971.txt blk02972.txt blk02973.txt blk02974.txt blk02975.txt blk02976.txt blk02977.txt blk02978.txt blk02979.txt blk02980.txt blk02981.txt blk02982.txt blk02983.txt blk02984.txt blk02985.txt blk02986.txt blk02987.txt blk02988.txt blk02989.txt blk02990.txt blk02991.txt blk02992.txt blk02993.txt blk02994.txt blk02995.txt blk02996.txt blk02997.txt blk02998.txt blk02999.txt blk03000.txt blk03001.txt blk03002.txt blk03003.txt blk03004.txt blk03005.txt blk03006.txt blk03007.txt blk03008.txt blk03009.txt blk03010.txt blk03011.txt blk03012.txt blk03013.txt blk03014.txt blk03015.txt blk03016.txt blk03017.txt blk03018.txt blk03019.txt blk03020.txt blk03021.txt blk03022.txt blk03023.txt blk03024.txt blk03025.txt blk03026.txt blk03027.txt blk03028.txt blk03029.txt blk03030.txt blk03031.txt blk03032.txt blk03033.txt blk03034.txt blk03035.txt blk03036.txt blk03037.txt blk03038.txt blk03039.txt blk03040.txt blk03041.txt blk03042.txt blk03043.txt blk03044.txt blk03045.txt blk03046.txt blk03047.txt blk03048.txt blk03049.txt blk03050.txt blk03051.txt blk03052.txt blk03053.txt blk03054.txt blk03055.txt blk03056.txt blk03057.txt blk03058.txt blk03059.txt blk03060.txt blk03061.txt blk03062.txt blk03063.txt blk03064.txt blk03065.txt blk03066.txt blk03067.txt blk03068.txt blk03069.txt blk03070.txt blk03071.txt blk03072.txt blk03073.txt blk03074.txt blk03075.txt blk03076.txt blk03077.txt blk03078.txt blk03079.txt blk03080.txt blk03081.txt blk03082.txt blk03083.txt blk03084.txt blk03085.txt blk03086.txt blk03087.txt blk03088.txt blk03089.txt blk03090.txt blk03091.txt blk03092.txt blk03093.txt blk03094.txt blk03095.txt blk03096.txt blk03097.txt blk03098.txt blk03099.txt blk03100.txt blk03101.txt blk03102.txt blk03103.txt blk03104.txt blk03105.txt blk03106.txt blk03107.txt blk03108.txt blk03109.txt blk03110.txt blk03111.txt blk03112.txt blk03113.txt blk03114.txt blk03115.txt blk03116.txt blk03117.txt blk03118.txt blk03119.txt blk03120.txt blk03121.txt blk03122.txt blk03123.txt blk03124.txt blk03125.txt blk03126.txt blk03127.txt blk03128.txt blk03129.txt blk03130.txt blk03131.txt blk03132.txt blk03133.txt blk03134.txt blk03135.txt blk03136.txt blk03137.txt blk03138.txt blk03139.txt blk03140.txt blk03141.txt blk03142.txt blk03143.txt blk03144.txt blk03145.txt blk03146.txt blk03147.txt blk03148.txt blk03149.txt blk03150.txt blk03151.txt blk03152.txt blk03153.txt blk03154.txt blk03155.txt blk03156.txt blk03157.txt blk03158.txt blk03159.txt blk03160.txt blk03161.txt blk03162.txt blk03163.txt blk03164.txt blk03165.txt blk03166.txt blk03167.txt blk03168.txt blk03169.txt blk03170.txt blk03171.txt blk03172.txt blk03173.txt blk03174.txt blk03175.txt blk03176.txt blk03177.txt blk03178.txt blk03179.txt blk03180.txt blk03181.txt blk03182.txt blk03183.txt blk03184.txt blk03185.txt blk03186.txt blk03187.txt blk03188.txt blk03189.txt blk03190.txt blk03191.txt blk03192.txt blk03193.txt blk03194.txt blk03195.txt blk03196.txt blk03197.txt blk03198.txt blk03199.txt blk03200.txt blk03201.txt blk03202.txt blk03203.txt blk03204.txt blk03205.txt blk03206.txt blk03207.txt blk03208.txt blk03209.txt blk03210.txt blk03211.txt blk03212.txt blk03213.txt blk03214.txt blk03215.txt blk03216.txt blk03217.txt blk03218.txt blk03219.txt blk03220.txt blk03221.txt blk03222.txt blk03223.txt blk03224.txt blk03225.txt blk03226.txt blk03227.txt blk03228.txt blk03229.txt blk03230.txt blk03231.txt blk03232.txt blk03233.txt blk03234.txt blk03235.txt blk03236.txt blk03237.txt blk03238.txt blk03239.txt blk03240.txt blk03241.txt blk03242.txt blk03243.txt blk03244.txt blk03245.txt blk03246.txt blk03247.txt blk03248.txt blk03249.txt blk03250.txt blk03251.txt blk03252.txt blk03253.txt blk03254.txt blk03255.txt blk03256.txt blk03257.txt blk03258.txt blk03259.txt blk03260.txt blk03261.txt blk03262.txt blk03263.txt blk03264.txt blk03265.txt blk03266.txt blk03267.txt blk03268.txt blk03269.txt blk03270.txt blk03271.txt blk03272.txt blk03273.txt blk03274.txt blk03275.txt blk03276.txt blk03277.txt blk03278.txt blk03279.txt blk03280.txt blk03281.txt blk03282.txt blk03283.txt blk03284.txt blk03285.txt blk03286.txt blk03287.txt blk03288.txt blk03289.txt blk03290.txt blk03291.txt blk03292.txt blk03293.txt blk03294.txt blk03295.txt blk03296.txt blk03297.txt blk03298.txt blk03299.txt blk03300.txt blk03301.txt blk03302.txt blk03303.txt blk03304.txt blk03305.txt blk03306.txt blk03307.txt blk03308.txt blk03309.txt blk03310.txt blk03311.txt blk03312.txt blk03313.txt blk03314.txt blk03315.txt blk03316.txt blk03317.txt blk03318.txt blk03319.txt blk03320.txt blk03321.txt blk03322.txt blk03323.txt blk03324.txt blk03325.txt blk03326.txt blk03327.txt blk03328.txt blk03329.txt blk03330.txt blk03331.txt blk03332.txt blk03333.txt blk03334.txt blk03335.txt blk03336.txt blk03337.txt blk03338.txt blk03339.txt blk03340.txt blk03341.txt blk03342.txt blk03343.txt blk03344.txt blk03345.txt blk03346.txt blk03347.txt blk03348.txt blk03349.txt blk03350.txt blk03351.txt blk03352.txt blk03353.txt blk03354.txt blk03355.txt blk03356.txt blk03357.txt blk03358.txt blk03359.txt blk03360.txt blk03361.txt blk03362.txt blk03363.txt blk03364.txt blk03365.txt blk03366.txt blk03367.txt blk03368.txt blk03369.txt blk03370.txt blk03371.txt blk03372.txt blk03373.txt blk03374.txt blk03375.txt blk03376.txt blk03377.txt blk03378.txt blk03379.txt blk03380.txt blk03381.txt blk03382.txt blk03383.txt blk03384.txt blk03385.txt blk03386.txt blk03387.txt blk03388.txt blk03389.txt blk03390.txt blk03391.txt blk03392.txt blk03393.txt blk03394.txt blk03395.txt blk03396.txt blk03397.txt blk03398.txt blk03399.txt blk03400.txt blk03401.txt blk03402.txt blk03403.txt blk03404.txt blk03405.txt blk03406.txt blk03407.txt blk03408.txt blk03409.txt blk03410.txt blk03411.txt blk03412.txt blk03413.txt blk03414.txt blk03415.txt blk03416.txt blk03417.txt blk03418.txt blk03419.txt blk03420.txt blk03421.txt blk03422.txt blk03423.txt blk03424.txt blk03425.txt blk03426.txt blk03427.txt blk03428.txt blk03429.txt blk03430.txt blk03431.txt blk03432.txt blk03433.txt blk03434.txt blk03435.txt blk03436.txt blk03437.txt blk03438.txt blk03439.txt blk03440.txt blk03441.txt blk03442.txt blk03443.txt blk03444.txt blk03445.txt blk03446.txt blk03447.txt blk03448.txt blk03449.txt blk03450.txt blk03451.txt blk03452.txt blk03453.txt blk03454.txt blk03455.txt blk03456.txt blk03457.txt blk03458.txt blk03459.txt blk03460.txt blk03461.txt blk03462.txt blk03463.txt blk03464.txt blk03465.txt blk03466.txt blk03467.txt blk03468.txt blk03469.txt blk03470.txt blk03471.txt blk03472.txt blk03473.txt blk03474.txt blk03475.txt blk03476.txt blk03477.txt blk03478.txt blk03479.txt blk03480.txt blk03481.txt blk03482.txt blk03483.txt blk03484.txt blk03485.txt blk03486.txt blk03487.txt blk03488.txt blk03489.txt blk03490.txt blk03491.txt blk03492.txt blk03493.txt blk03494.txt blk03495.txt blk03496.txt blk03497.txt blk03498.txt blk03499.txt blk03500.txt blk03501.txt blk03502.txt blk03503.txt blk03504.txt blk03505.txt blk03506.txt blk03507.txt blk03508.txt blk03509.txt blk03510.txt blk03511.txt blk03512.txt blk03513.txt blk03514.txt blk03515.txt blk03516.txt blk03517.txt blk03518.txt blk03519.txt blk03520.txt blk03521.txt blk03522.txt blk03523.txt blk03524.txt blk03525.txt blk03526.txt blk03527.txt blk03528.txt blk03529.txt blk03530.txt blk03531.txt blk03532.txt blk03533.txt blk03534.txt blk03535.txt blk03536.txt blk03537.txt blk03538.txt blk03539.txt blk03540.txt blk03541.txt blk03542.txt blk03543.txt blk03544.txt blk03545.txt blk03546.txt blk03547.txt blk03548.txt blk03549.txt blk03550.txt blk03551.txt blk03552.txt blk03553.txt blk03554.txt blk03555.txt blk03556.txt blk03557.txt blk03558.txt blk03559.txt blk03560.txt blk03561.txt blk03562.txt blk03563.txt blk03564.txt blk03565.txt blk03566.txt blk03567.txt blk03568.txt blk03569.txt blk03570.txt blk03571.txt blk03572.txt blk03573.txt blk03574.txt blk03575.txt blk03576.txt blk03577.txt blk03578.txt blk03579.txt blk03580.txt blk03581.txt blk03582.txt blk03583.txt blk03584.txt blk03585.txt blk03586.txt blk03587.txt blk03588.txt blk03589.txt blk03590.txt blk03591.txt blk03592.txt blk03593.txt blk03594.txt blk03595.txt blk03596.txt blk03597.txt blk03598.txt blk03599.txt blk03600.txt blk03601.txt blk03602.txt blk03603.txt blk03604.txt blk03605.txt blk03606.txt blk03607.txt blk03608.txt blk03609.txt blk03610.txt blk03611.txt blk03612.txt blk03613.txt blk03614.txt blk03615.txt blk03616.txt blk03617.txt blk03618.txt blk03619.txt blk03620.txt blk03621.txt blk03622.txt blk03623.txt blk03624.txt blk03625.txt blk03626.txt blk03627.txt blk03628.txt blk03629.txt blk03630.txt blk03631.txt blk03632.txt blk03633.txt blk03634.txt blk03635.txt blk03636.txt blk03637.txt blk03638.txt blk03639.txt blk03640.txt blk03641.txt blk03642.txt blk03643.txt blk03644.txt blk03645.txt blk03646.txt blk03647.txt blk03648.txt blk03649.txt blk03650.txt blk03651.txt blk03652.txt blk03653.txt blk03654.txt blk03655.txt blk03656.txt blk03657.txt blk03658.txt blk03659.txt blk03660.txt blk03661.txt blk03662.txt blk03663.txt blk03664.txt blk03665.txt blk03666.txt blk03667.txt blk03668.txt blk03669.txt blk03670.txt blk03671.txt blk03672.txt blk03673.txt blk03674.txt blk03675.txt blk03676.txt blk03677.txt blk03678.txt blk03679.txt blk03680.txt blk03681.txt blk03682.txt blk03683.txt blk03684.txt blk03685.txt blk03686.txt blk03687.txt blk03688.txt blk03689.txt blk03690.txt blk03691.txt blk03692.txt blk03693.txt blk03694.txt blk03695.txt blk03696.txt blk03697.txt blk03698.txt blk03699.txt blk03700.txt blk03701.txt blk03702.txt blk03703.txt blk03704.txt blk03705.txt blk03706.txt blk03707.txt blk03708.txt blk03709.txt blk03710.txt blk03711.txt blk03712.txt blk03713.txt blk03714.txt blk03715.txt blk03716.txt blk03717.txt blk03718.txt blk03719.txt blk03720.txt blk03721.txt blk03722.txt blk03723.txt blk03724.txt blk03725.txt blk03726.txt blk03727.txt blk03728.txt blk03729.txt blk03730.txt blk03731.txt blk03732.txt blk03733.txt blk03734.txt blk03735.txt blk03736.txt blk03737.txt blk03738.txt blk03739.txt blk03740.txt blk03741.txt blk03742.txt blk03743.txt blk03744.txt blk03745.txt blk03746.txt blk03747.txt blk03748.txt blk03749.txt blk03750.txt blk03751.txt blk03752.txt blk03753.txt blk03754.txt blk03755.txt blk03756.txt blk03757.txt blk03758.txt blk03759.txt blk03760.txt blk03761.txt blk03762.txt blk03763.txt blk03764.txt blk03765.txt blk03766.txt blk03767.txt blk03768.txt blk03769.txt blk03770.txt blk03771.txt blk03772.txt blk03773.txt blk03774.txt blk03775.txt blk03776.txt blk03777.txt blk03778.txt blk03779.txt blk03780.txt blk03781.txt blk03782.txt blk03783.txt blk03784.txt blk03785.txt blk03786.txt blk03787.txt blk03788.txt blk03789.txt blk03790.txt blk03791.txt blk03792.txt blk03793.txt blk03794.txt blk03795.txt blk03796.txt blk03797.txt blk03798.txt blk03799.txt blk03800.txt blk03801.txt blk03802.txt blk03803.txt blk03804.txt blk03805.txt blk03806.txt blk03807.txt blk03808.txt blk03809.txt blk03810.txt blk03811.txt blk03812.txt blk03813.txt blk03814.txt blk03815.txt blk03816.txt blk03817.txt blk03818.txt blk03819.txt blk03820.txt blk03821.txt blk03822.txt blk03823.txt blk03824.txt blk03825.txt blk03826.txt blk03827.txt blk03828.txt blk03829.txt blk03830.txt blk03831.txt blk03832.txt blk03833.txt blk03834.txt blk03835.txt blk03836.txt blk03837.txt blk03838.txt blk03839.txt blk03840.txt blk03841.txt blk03842.txt blk03843.txt blk03844.txt blk03845.txt blk03846.txt blk03847.txt blk03848.txt blk03849.txt blk03850.txt blk03851.txt blk03852.txt blk03853.txt blk03854.txt blk03855.txt blk03856.txt blk03857.txt blk03858.txt blk03859.txt blk03860.txt blk03861.txt blk03862.txt blk03863.txt blk03864.txt blk03865.txt blk03866.txt blk03867.txt blk03868.txt blk03869.txt blk03870.txt blk03871.txt blk03872.txt blk03873.txt blk03874.txt blk03875.txt blk03876.txt blk03877.txt blk03878.txt blk03879.txt blk03880.txt blk03881.txt blk03882.txt blk03883.txt blk03884.txt blk03885.txt blk03886.txt blk03887.txt blk03888.txt blk03889.txt blk03890.txt blk03891.txt blk03892.txt blk03893.txt blk03894.txt blk03895.txt blk03896.txt blk03897.txt blk03898.txt blk03899.txt blk03900.txt blk03901.txt blk03902.txt blk03903.txt blk03904.txt blk03905.txt blk03906.txt blk03907.txt blk03908.txt blk03909.txt blk03910.txt blk03911.txt blk03912.txt blk03913.txt blk03914.txt blk03915.txt blk03916.txt blk03917.txt blk03918.txt blk03919.txt blk03920.txt blk03921.txt blk03922.txt blk03923.txt blk03924.txt blk03925.txt blk03926.txt blk03927.txt blk03928.txt blk03929.txt blk03930.txt blk03931.txt blk03932.txt blk03933.txt blk03934.txt blk03935.txt blk03936.txt blk03937.txt blk03938.txt blk03939.txt blk03940.txt blk03941.txt blk03942.txt blk03943.txt blk03944.txt blk03945.txt blk03946.txt blk03947.txt blk03948.txt blk03949.txt blk03950.txt blk03951.txt blk03952.txt blk03953.txt blk03954.txt blk03955.txt blk03956.txt blk03957.txt blk03958.txt blk03959.txt blk03960.txt blk03961.txt blk03962.txt blk03963.txt blk03964.txt blk03965.txt blk03966.txt blk03967.txt blk03968.txt blk03969.txt blk03970.txt blk03971.txt blk03972.txt blk03973.txt blk03974.txt blk03975.txt blk03976.txt blk03977.txt blk03978.txt blk03979.txt blk03980.txt blk03981.txt blk03982.txt blk03983.txt blk03984.txt blk03985.txt blk03986.txt blk03987.txt blk03988.txt blk03989.txt blk03990.txt blk03991.txt blk03992.txt blk03993.txt blk03994.txt blk03995.txt blk03996.txt blk03997.txt blk03998.txt blk03999.txt blk04000.txt blk04001.txt blk04002.txt blk04003.txt blk04004.txt blk04005.txt blk04006.txt blk04007.txt blk04008.txt blk04009.txt blk04010.txt blk04011.txt blk04012.txt blk04013.txt blk04014.txt blk04015.txt blk04016.txt blk04017.txt blk04018.txt blk04019.txt blk04020.txt blk04021.txt blk04022.txt blk04023.txt blk04024.txt blk04025.txt blk04026.txt blk04027.txt blk04028.txt blk04029.txt blk04030.txt blk04031.txt blk04032.txt blk04033.txt blk04034.txt blk04035.txt blk04036.txt blk04037.txt blk04038.txt blk04039.txt blk04040.txt blk04041.txt blk04042.txt blk04043.txt blk04044.txt blk04045.txt blk04046.txt blk04047.txt blk04048.txt blk04049.txt blk04050.txt blk04051.txt blk04052.txt blk04053.txt blk04054.txt blk04055.txt blk04056.txt blk04057.txt blk04058.txt blk04059.txt blk04060.txt blk04061.txt blk04062.txt blk04063.txt blk04064.txt blk04065.txt blk04066.txt blk04067.txt blk04068.txt blk04069.txt blk04070.txt blk04071.txt blk04072.txt blk04073.txt blk04074.txt blk04075.txt blk04076.txt blk04077.txt blk04078.txt blk04079.txt blk04080.txt blk04081.txt blk04082.txt blk04083.txt blk04084.txt blk04085.txt blk04086.txt blk04087.txt blk04088.txt blk04089.txt blk04090.txt blk04091.txt blk04092.txt blk04093.txt blk04094.txt blk04095.txt blk04096.txt blk04097.txt blk04098.txt blk04099.txt blk04100.txt blk04101.txt blk04102.txt blk04103.txt blk04104.txt blk04105.txt blk04106.txt blk04107.txt blk04108.txt blk04109.txt blk04110.txt blk04111.txt blk04112.txt blk04113.txt blk04114.txt blk04115.txt blk04116.txt blk04117.txt blk04118.txt blk04119.txt blk04120.txt blk04121.txt blk04122.txt blk04123.txt blk04124.txt blk04125.txt blk04126.txt blk04127.txt blk04128.txt blk04129.txt blk04130.txt blk04131.txt blk04132.txt blk04133.txt blk04134.txt blk04135.txt blk04136.txt blk04137.txt blk04138.txt blk04139.txt blk04140.txt blk04141.txt blk04142.txt blk04143.txt blk04144.txt blk04145.txt blk04146.txt blk04147.txt blk04148.txt blk04149.txt blk04150.txt blk04151.txt blk04152.txt blk04153.txt blk04154.txt blk04155.txt blk04156.txt blk04157.txt blk04158.txt blk04159.txt blk04160.txt blk04161.txt blk04162.txt blk04163.txt blk04164.txt blk04165.txt blk04166.txt blk04167.txt blk04168.txt blk04169.txt blk04170.txt blk04171.txt blk04172.txt blk04173.txt blk04174.txt blk04175.txt blk04176.txt blk04177.txt blk04178.txt blk04179.txt blk04180.txt blk04181.txt blk04182.txt blk04183.txt blk04184.txt blk04185.txt blk04186.txt blk04187.txt blk04188.txt blk04189.txt blk04190.txt blk04191.txt blk04192.txt blk04193.txt blk04194.txt blk04195.txt blk04196.txt blk04197.txt blk04198.txt blk04199.txt blk04200.txt blk04201.txt blk04202.txt blk04203.txt blk04204.txt blk04205.txt blk04206.txt blk04207.txt blk04208.txt blk04209.txt blk04210.txt blk04211.txt blk04212.txt blk04213.txt blk04214.txt blk04215.txt blk04216.txt blk04217.txt blk04218.txt blk04219.txt blk04220.txt blk04221.txt blk04222.txt blk04223.txt blk04224.txt blk04225.txt blk04226.txt blk04227.txt blk04228.txt blk04229.txt blk04230.txt blk04231.txt blk04232.txt blk04233.txt blk04234.txt blk04235.txt blk04236.txt blk04237.txt blk04238.txt blk04239.txt blk04240.txt blk04241.txt blk04242.txt blk04243.txt blk04244.txt blk04245.txt blk04246.txt blk04247.txt blk04248.txt blk04249.txt blk04250.txt blk04251.txt blk04252.txt blk04253.txt blk04254.txt blk04255.txt blk04256.txt blk04257.txt blk04258.txt blk04259.txt blk04260.txt blk04261.txt blk04262.txt blk04263.txt blk04264.txt blk04265.txt blk04266.txt blk04267.txt blk04268.txt blk04269.txt blk04270.txt blk04271.txt blk04272.txt blk04273.txt blk04274.txt blk04275.txt blk04276.txt blk04277.txt blk04278.txt blk04279.txt blk04280.txt blk04281.txt blk04282.txt blk04283.txt blk04284.txt blk04285.txt blk04286.txt blk04287.txt blk04288.txt blk04289.txt blk04290.txt blk04291.txt blk04292.txt blk04293.txt blk04294.txt blk04295.txt blk04296.txt blk04297.txt blk04298.txt blk04299.txt blk04300.txt blk04301.txt blk04302.txt blk04303.txt blk04304.txt blk04305.txt blk04306.txt blk04307.txt blk04308.txt blk04309.txt blk04310.txt blk04311.txt blk04312.txt blk04313.txt blk04314.txt blk04315.txt blk04316.txt blk04317.txt blk04318.txt blk04319.txt blk04320.txt blk04321.txt blk04322.txt blk04323.txt blk04324.txt blk04325.txt blk04326.txt blk04327.txt blk04328.txt blk04329.txt blk04330.txt blk04331.txt blk04332.txt blk04333.txt blk04334.txt blk04335.txt blk04336.txt blk04337.txt blk04338.txt blk04339.txt blk04340.txt blk04341.txt blk04342.txt blk04343.txt blk04344.txt blk04345.txt blk04346.txt blk04347.txt blk04348.txt blk04349.txt blk04350.txt blk04351.txt blk04352.txt blk04353.txt blk04354.txt blk04355.txt blk04356.txt blk04357.txt blk04358.txt blk04359.txt blk04360.txt blk04361.txt blk04362.txt blk04363.txt blk04364.txt blk04365.txt blk04366.txt blk04367.txt blk04368.txt blk04369.txt blk04370.txt blk04371.txt blk04372.txt blk04373.txt blk04374.txt blk04375.txt blk04376.txt blk04377.txt blk04378.txt blk04379.txt blk04380.txt blk04381.txt blk04382.txt blk04383.txt blk04384.txt blk04385.txt blk04386.txt blk04387.txt blk04388.txt blk04389.txt blk04390.txt blk04391.txt blk04392.txt blk04393.txt blk04394.txt blk04395.txt blk04396.txt blk04397.txt blk04398.txt blk04399.txt blk04400.txt blk04401.txt blk04402.txt blk04403.txt blk04404.txt blk04405.txt blk04406.txt blk04407.txt blk04408.txt blk04409.txt blk04410.txt blk04411.txt blk04412.txt blk04413.txt blk04414.txt blk04415.txt blk04416.txt blk04417.txt blk04418.txt blk04419.txt blk04420.txt blk04421.txt blk04422.txt blk04423.txt blk04424.txt blk04425.txt blk04426.txt blk04427.txt blk04428.txt blk04429.txt blk04430.txt blk04431.txt blk04432.txt blk04433.txt blk04434.txt blk04435.txt blk04436.txt blk04437.txt blk04438.txt blk04439.txt blk04440.txt blk04441.txt blk04442.txt blk04443.txt blk04444.txt blk04445.txt blk04446.txt blk04447.txt blk04448.txt blk04449.txt blk04450.txt blk04451.txt blk04452.txt blk04453.txt blk04454.txt blk04455.txt blk04456.txt blk04457.txt blk04458.txt blk04459.txt blk04460.txt blk04461.txt blk04462.txt blk04463.txt blk04464.txt blk04465.txt blk04466.txt blk04467.txt blk04468.txt blk04469.txt blk04470.txt blk04471.txt blk04472.txt blk04473.txt blk04474.txt blk04475.txt blk04476.txt blk04477.txt blk04478.txt blk04479.txt blk04480.txt blk04481.txt blk04482.txt blk04483.txt blk04484.txt blk04485.txt blk04486.txt blk04487.txt blk04488.txt blk04489.txt blk04490.txt blk04491.txt blk04492.txt blk04493.txt blk04494.txt blk04495.txt blk04496.txt blk04497.txt blk04498.txt blk04499.txt blk04500.txt blk04501.txt blk04502.txt blk04503.txt blk04504.txt blk04505.txt blk04506.txt blk04507.txt blk04508.txt blk04509.txt blk04510.txt blk04511.txt blk04512.txt blk04513.txt blk04514.txt blk04515.txt blk04516.txt blk04517.txt blk04518.txt blk04519.txt blk04520.txt blk04521.txt blk04522.txt blk04523.txt blk04524.txt blk04525.txt blk04526.txt blk04527.txt blk04528.txt blk04529.txt blk04530.txt blk04531.txt blk04532.txt blk04533.txt blk04534.txt blk04535.txt blk04536.txt blk04537.txt blk04538.txt blk04539.txt blk04540.txt blk04541.txt blk04542.txt blk04543.txt blk04544.txt blk04545.txt blk04546.txt blk04547.txt blk04548.txt blk04549.txt blk04550.txt blk04551.txt blk04552.txt blk04553.txt blk04554.txt blk04555.txt blk04556.txt blk04557.txt blk04558.txt blk04559.txt blk04560.txt blk04561.txt blk04562.txt blk04563.txt blk04564.txt blk04565.txt blk04566.txt blk04567.txt blk04568.txt blk04569.txt blk04570.txt blk04571.txt blk04572.txt blk04573.txt blk04574.txt blk04575.txt blk04576.txt blk04577.txt blk04578.txt blk04579.txt blk04580.txt blk04581.txt blk04582.txt blk04583.txt blk04584.txt blk04585.txt blk04586.txt blk04587.txt blk04588.txt blk04589.txt blk04590.txt blk04591.txt blk04592.txt blk04593.txt blk04594.txt blk04595.txt blk04596.txt blk04597.txt blk04598.txt blk04599.txt blk04600.txt blk04601.txt blk04602.txt blk04603.txt blk04604.txt blk04605.txt blk04606.txt blk04607.txt blk04608.txt blk04609.txt blk04610.txt blk04611.txt blk04612.txt blk04613.txt blk04614.txt blk04615.txt blk04616.txt blk04617.txt blk04618.txt blk04619.txt blk04620.txt blk04621.txt blk04622.txt blk04623.txt blk04624.txt blk04625.txt blk04626.txt blk04627.txt blk04628.txt blk04629.txt blk04630.txt blk04631.txt blk04632.txt blk04633.txt blk04634.txt blk04635.txt blk04636.txt blk04637.txt blk04638.txt blk04639.txt blk04640.txt blk04641.txt blk04642.txt blk04643.txt blk04644.txt blk04645.txt blk04646.txt blk04647.txt blk04648.txt blk04649.txt blk04650.txt blk04651.txt blk04652.txt blk04653.txt blk04654.txt blk04655.txt blk04656.txt blk04657.txt blk04658.txt blk04659.txt blk04660.txt blk04661.txt blk04662.txt blk04663.txt blk04664.txt blk04665.txt blk04666.txt blk04667.txt blk04668.txt blk04669.txt blk04670.txt blk04671.txt blk04672.txt blk04673.txt blk04674.txt blk04675.txt blk04676.txt blk04677.txt blk04678.txt blk04679.txt blk04680.txt blk04681.txt blk04682.txt blk04683.txt blk04684.txt blk04685.txt blk04686.txt blk04687.txt blk04688.txt blk04689.txt blk04690.txt blk04691.txt blk04692.txt blk04693.txt blk04694.txt blk04695.txt blk04696.txt blk04697.txt blk04698.txt blk04699.txt blk04700.txt blk04701.txt blk04702.txt blk04703.txt blk04704.txt blk04705.txt blk04706.txt blk04707.txt blk04708.txt blk04709.txt blk04710.txt blk04711.txt blk04712.txt blk04713.txt blk04714.txt blk04715.txt blk04716.txt blk04717.txt blk04718.txt blk04719.txt blk04720.txt blk04721.txt blk04722.txt blk04723.txt blk04724.txt blk04725.txt blk04726.txt blk04727.txt blk04728.txt blk04729.txt blk04730.txt blk04731.txt blk04732.txt blk04733.txt blk04734.txt blk04735.txt blk04736.txt blk04737.txt blk04738.txt blk04739.txt blk04740.txt blk04741.txt blk04742.txt blk04743.txt blk04744.txt blk04745.txt blk04746.txt blk04747.txt blk04748.txt blk04749.txt blk04750.txt blk04751.txt blk04752.txt blk04753.txt blk04754.txt blk04755.txt blk04756.txt blk04757.txt blk04758.txt blk04759.txt blk04760.txt blk04761.txt blk04762.txt blk04763.txt blk04764.txt blk04765.txt blk04766.txt blk04767.txt blk04768.txt blk04769.txt blk04770.txt blk04771.txt blk04772.txt blk04773.txt blk04774.txt blk04775.txt blk04776.txt blk04777.txt blk04778.txt blk04779.txt blk04780.txt blk04781.txt blk04782.txt blk04783.txt blk04784.txt blk04785.txt blk04786.txt blk04787.txt blk04788.txt blk04789.txt blk04790.txt blk04791.txt blk04792.txt blk04793.txt blk04794.txt blk04795.txt blk04796.txt blk04797.txt blk04798.txt blk04799.txt blk04800.txt blk04801.txt blk04802.txt blk04803.txt blk04804.txt blk04805.txt blk04806.txt blk04807.txt blk04808.txt blk04809.txt blk04810.txt blk04811.txt blk04812.txt blk04813.txt blk04814.txt blk04815.txt blk04816.txt blk04817.txt blk04818.txt blk04819.txt blk04820.txt blk04821.txt blk04822.txt blk04823.txt blk04824.txt blk04825.txt blk04826.txt blk04827.txt blk04828.txt blk04829.txt blk04830.txt blk04831.txt blk04832.txt blk04833.txt blk04834.txt blk04835.txt blk04836.txt blk04837.txt blk04838.txt blk04839.txt blk04840.txt blk04841.txt blk04842.txt blk04843.txt blk04844.txt blk04845.txt blk04846.txt blk04847.txt blk04848.txt blk04849.txt blk04850.txt blk04851.txt blk04852.txt blk04853.txt blk04854.txt blk04855.txt blk04856.txt blk04857.txt blk04858.txt blk04859.txt blk04860.txt blk04861.txt blk04862.txt blk04863.txt blk04864.txt blk04865.txt blk04866.txt blk04867.txt blk04868.txt blk04869.txt blk04870.txt blk04871.txt blk04872.txt blk04873.txt blk04874.txt blk04875.txt blk04876.txt blk04877.txt blk04878.txt blk04879.txt blk04880.txt blk04881.txt blk04882.txt blk04883.txt blk04884.txt blk04885.txt blk04886.txt blk04887.txt blk04888.txt blk04889.txt blk04890.txt blk04891.txt blk04892.txt blk04893.txt blk04894.txt blk04895.txt blk04896.txt blk04897.txt blk04898.txt blk04899.txt blk04900.txt blk04901.txt blk04902.txt blk04903.txt blk04904.txt blk04905.txt blk04906.txt blk04907.txt blk04908.txt blk04909.txt blk04910.txt blk04911.txt blk04912.txt blk04913.txt blk04914.txt blk04915.txt blk04916.txt blk04917.txt blk04918.txt blk04919.txt blk04920.txt blk04921.txt blk04922.txt blk04923.txt blk04924.txt blk04925.txt blk04926.txt blk04927.txt blk04928.txt blk04929.txt blk04930.txt blk04931.txt blk04932.txt blk04933.txt blk04934.txt blk04935.txt blk04936.txt blk04937.txt blk04938.txt blk04939.txt blk04940.txt blk04941.txt blk04942.txt blk04943.txt blk04944.txt blk04945.txt blk04946.txt blk04947.txt blk04948.txt blk04949.txt blk04950.txt blk04951.txt blk04952.txt blk04953.txt blk04954.txt blk04955.txt blk04956.txt blk04957.txt blk04958.txt blk04959.txt blk04960.txt blk04961.txt blk04962.txt blk04963.txt blk04964.txt blk04965.txt blk04966.txt blk04967.txt blk04968.txt blk04969.txt blk04970.txt blk04971.txt blk04972.txt blk04973.txt blk04974.txt blk04975.txt blk04976.txt blk04977.txt blk04978.txt blk04979.txt blk04980.txt blk04981.txt blk04982.txt blk04983.txt blk04984.txt blk04985.txt blk04986.txt blk04987.txt blk04988.txt blk04989.txt blk04990.txt blk04991.txt blk04992.txt blk04993.txt blk04994.txt blk04995.txt blk04996.txt blk04997.txt blk04998.txt blk04999.txt blk05000.txt blk05001.txt blk05002.txt blk05003.txt blk05004.txt blk05005.txt blk05006.txt blk05007.txt blk05008.txt blk05009.txt blk05010.txt blk05011.txt blk05012.txt blk05013.txt blk05014.txt blk05015.txt blk05016.txt blk05017.txt blk05018.txt blk05019.txt blk05020.txt blk05021.txt blk05022.txt blk05023.txt blk05024.txt blk05025.txt blk05026.txt blk05027.txt blk05028.txt blk05029.txt blk05030.txt blk05031.txt blk05032.txt blk05033.txt blk05034.txt blk05035.txt blk05036.txt blk05037.txt blk05038.txt blk05039.txt blk05040.txt blk05041.txt blk05042.txt blk05043.txt blk05044.txt blk05045.txt blk05046.txt blk05047.txt blk05048.txt blk05049.txt blk05050.txt blk05051.txt blk05052.txt blk05053.txt blk05054.txt blk05055.txt blk05056.txt blk05057.txt blk05058.txt blk05059.txt blk05060.txt blk05061.txt blk05062.txt blk05063.txt blk05064.txt blk05065.txt blk05066.txt blk05067.txt blk05068.txt blk05069.txt blk05070.txt blk05071.txt blk05072.txt blk05073.txt blk05074.txt blk05075.txt blk05076.txt blk05077.txt blk05078.txt blk05079.txt blk05080.txt blk05081.txt blk05082.txt blk05083.txt blk05084.txt blk05085.txt blk05086.txt blk05087.txt blk05088.txt blk05089.txt blk05090.txt blk05091.txt blk05092.txt blk05093.txt blk05094.txt blk05095.txt blk05096.txt blk05097.txt blk05098.txt blk05099.txt blk05100.txt blk05101.txt blk05102.txt blk05103.txt blk05104.txt blk05105.txt blk05106.txt blk05107.txt blk05108.txt blk05109.txt blk05110.txt blk05111.txt blk05112.txt blk05113.txt blk05114.txt blk05115.txt blk05116.txt blk05117.txt blk05118.txt blk05119.txt blk05120.txt blk05121.txt blk05122.txt blk05123.txt blk05124.txt blk05125.txt blk05126.txt blk05127.txt blk05128.txt blk05129.txt blk05130.txt blk05131.txt blk05132.txt blk05133.txt blk05134.txt blk05135.txt blk05136.txt blk05137.txt blk05138.txt blk05139.txt blk05140.txt blk05141.txt blk05142.txt blk05143.txt blk05144.txt blk05145.txt blk05146.txt blk05147.txt blk05148.txt blk05149.txt blk05150.txt blk05151.txt blk05152.txt blk05153.txt blk05154.txt blk05155.txt blk05156.txt blk05157.txt blk05158.txt blk05159.txt blk05160.txt blk05161.txt blk05162.txt blk05163.txt blk05164.txt blk05165.txt blk05166.txt blk05167.txt blk05168.txt blk05169.txt blk05170.txt blk05171.txt blk05172.txt blk05173.txt blk05174.txt blk05175.txt blk05176.txt blk05177.txt blk05178.txt blk05179.txt blk05180.txt blk05181.txt blk05182.txt blk05183.txt blk05184.txt blk05185.txt blk05186.txt blk05187.txt blk05188.txt blk05189.txt blk05190.txt blk05191.txt blk05192.txt blk05193.txt blk05194.txt blk05195.txt blk05196.txt blk05197.txt blk05198.txt blk05199.txt blk05200.txt blk05201.txt blk05202.txt blk05203.txt blk05204.txt blk05205.txt blk05206.txt blk05207.txt blk05208.txt blk05209.txt blk05210.txt blk05211.txt blk05212.txt blk05213.txt blk05214.txt blk05215.txt blk05216.txt blk05217.txt blk05218.txt blk05219.txt blk05220.txt blk05221.txt blk05222.txt blk05223.txt blk05224.txt blk05225.txt blk05226.txt blk05227.txt blk05228.txt blk05229.txt blk05230.txt blk05231.txt blk05232.txt blk05233.txt blk05234.txt blk05235.txt blk05236.txt blk05237.txt blk05238.txt blk05239.txt blk05240.txt blk05241.txt blk05242.txt blk05243.txt blk05244.txt blk05245.txt blk05246.txt blk05247.txt blk05248.txt blk05249.txt blk05250.txt blk05251.txt blk05252.txt blk05253.txt blk05254.txt blk05255.txt blk05256.txt blk05257.txt blk05258.txt blk05259.txt blk05260.txt blk05261.txt blk05262.txt blk05263.txt blk05264.txt blk05265.txt blk05266.txt blk05267.txt blk05268.txt blk05269.txt blk05270.txt blk05271.txt blk05272.txt blk05273.txt blk05274.txt blk05275.txt blk05276.txt blk05277.txt blk05278.txt blk05279.txt blk05280.txt blk05281.txt blk05282.txt blk05283.txt blk05284.txt blk05285.txt blk05286.txt blk05287.txt blk05288.txt blk05289.txt blk05290.txt blk05291.txt blk05292.txt blk05293.txt blk05294.txt blk05295.txt blk05296.txt blk05297.txt blk05298.txt blk05299.txt blk05300.txt blk05301.txt blk05302.txt blk05303.txt blk05304.txt blk05305.txt blk05306.txt blk05307.txt blk05308.txt blk05309.txt blk05310.txt blk05311.txt blk05312.txt blk05313.txt blk05314.txt blk05315.txt blk05316.txt blk05317.txt blk05318.txt blk05319.txt blk05320.txt blk05321.txt blk05322.txt blk05323.txt blk05324.txt blk05325.txt blk05326.txt blk05327.txt blk05328.txt blk05329.txt blk05330.txt blk05331.txt blk05332.txt blk05333.txt blk05334.txt blk05335.txt blk05336.txt blk05337.txt blk05338.txt blk05339.txt blk05340.txt blk05341.txt blk05342.txt blk05343.txt blk05344.txt blk05345.txt blk05346.txt blk05347.txt blk05348.txt blk05349.txt blk05350.txt blk05351.txt blk05352.txt blk05353.txt blk05354.txt blk05355.txt blk05356.txt blk05357.txt blk05358.txt blk05359.txt blk05360.txt blk05361.txt blk05362.txt blk05363.txt blk05364.txt blk05365.txt blk05366.txt blk05367.txt blk05368.txt blk05369.txt blk05370.txt blk05371.txt blk05372.txt blk05373.txt blk05374.txt blk05375.txt blk05376.txt blk05377.txt blk05378.txt blk05379.txt blk05380.txt blk05381.txt blk05382.txt blk05383.txt blk05384.txt blk05385.txt blk05386.txt blk05387.txt blk05388.txt blk05389.txt blk05390.txt blk05391.txt blk05392.txt blk05393.txt blk05394.txt blk05395.txt blk05396.txt blk05397.txt blk05398.txt blk05399.txt blk05400.txt blk05401.txt blk05402.txt blk05403.txt blk05404.txt blk05405.txt blk05406.txt blk05407.txt blk05408.txt blk05409.txt blk05410.txt blk05411.txt blk05412.txt blk05413.txt blk05414.txt blk05415.txt blk05416.txt blk05417.txt blk05418.txt blk05419.txt blk05420.txt blk05421.txt blk05422.txt blk05423.txt blk05424.txt blk05425.txt blk05426.txt blk05427.txt blk05428.txt blk05429.txt blk05430.txt blk05431.txt blk05432.txt blk05433.txt blk05434.txt blk05435.txt blk05436.txt blk05437.txt blk05438.txt blk05439.txt blk05440.txt blk05441.txt blk05442.txt blk05443.txt blk05444.txt blk05445.txt blk05446.txt blk05447.txt blk05448.txt blk05449.txt blk05450.txt blk05451.txt blk05452.txt blk05453.txt blk05454.txt blk05455.txt blk05456.txt blk05457.txt blk05458.txt blk05459.txt blk05460.txt blk05461.txt blk05462.txt blk05463.txt blk05464.txt blk05465.txt blk05466.txt blk05467.txt blk05468.txt blk05469.txt blk05470.txt blk05471.txt blk05472.txt blk05473.txt blk05474.txt blk05475.txt blk05476.txt blk05477.txt blk05478.txt blk05479.txt blk05480.txt blk05481.txt blk05482.txt blk05483.txt blk05484.txt blk05485.txt blk05486.txt blk05487.txt blk05488.txt blk05489.txt blk05490.txt blk05491.txt blk05492.txt blk05493.txt blk05494.txt blk05495.txt blk05496.txt blk05497.txt blk05498.txt blk05499.txt blk05500.txt blk05501.txt blk05502.txt blk05503.txt blk05504.txt blk05505.txt blk05506.txt blk05507.txt blk05508.txt blk05509.txt blk05510.txt blk05511.txt blk05512.txt blk05513.txt blk05514.txt blk05515.txt blk05516.txt blk05517.txt blk05518.txt blk05519.txt blk05520.txt blk05521.txt blk05522.txt blk05523.txt blk05524.txt blk05525.txt blk05526.txt blk05527.txt blk05528.txt blk05529.txt blk05530.txt blk05531.txt blk05532.txt blk05533.txt blk05534.txt blk05535.txt blk05536.txt blk05537.txt blk05538.txt blk05539.txt blk05540.txt blk05541.txt blk05542.txt blk05543.txt blk05544.txt blk05545.txt blk05546.txt blk05547.txt blk05548.txt blk05549.txt blk05550.txt blk05551.txt blk05552.txt blk05553.txt blk05554.txt blk05555.txt blk05556.txt blk05557.txt blk05558.txt blk05559.txt blk05560.txt blk05561.txt blk05562.txt blk05563.txt blk05564.txt blk05565.txt blk05566.txt blk05567.txt blk05568.txt blk05569.txt blk05570.txt blk05571.txt blk05572.txt blk05573.txt blk05574.txt blk05575.txt blk05576.txt blk05577.txt blk05578.txt blk05579.txt blk05580.txt blk05581.txt blk05582.txt blk05583.txt blk05584.txt blk05585.txt blk05586.txt blk05587.txt blk05588.txt blk05589.txt blk05590.txt blk05591.txt blk05592.txt blk05593.txt blk05594.txt blk05595.txt blk05596.txt blk05597.txt blk05598.txt blk05599.txt blk05600.txt blk05601.txt blk05602.txt blk05603.txt blk05604.txt blk05605.txt blk05606.txt blk05607.txt blk05608.txt blk05609.txt blk05610.txt blk05611.txt blk05612.txt blk05613.txt blk05614.txt blk05615.txt blk05616.txt blk05617.txt blk05618.txt blk05619.txt blk05620.txt blk05621.txt blk05622.txt blk05623.txt blk05624.txt blk05625.txt blk05626.txt blk05627.txt blk05628.txt blk05629.txt blk05630.txt blk05631.txt blk05632.txt blk05633.txt blk05634.txt blk05635.txt blk05636.txt blk05637.txt blk05638.txt blk05639.txt blk05640.txt blk05641.txt blk05642.txt blk05643.txt blk05644.txt blk05645.txt blk05646.txt blk05647.txt blk05648.txt blk05649.txt blk05650.txt blk05651.txt blk05652.txt blk05653.txt blk05654.txt blk05655.txt blk05656.txt blk05657.txt blk05658.txt blk05659.txt blk05660.txt blk05661.txt blk05662.txt blk05663.txt blk05664.txt blk05665.txt blk05666.txt blk05667.txt blk05668.txt blk05669.txt blk05670.txt blk05671.txt blk05672.txt blk05673.txt blk05674.txt blk05675.txt blk05676.txt blk05677.txt blk05678.txt blk05679.txt blk05680.txt blk05681.txt blk05682.txt blk05683.txt blk05684.txt blk05685.txt blk05686.txt blk05687.txt blk05688.txt blk05689.txt blk05690.txt blk05691.txt blk05692.txt blk05693.txt blk05694.txt blk05695.txt blk05696.txt blk05697.txt blk05698.txt blk05699.txt blk05700.txt blk05701.txt blk05702.txt blk05703.txt blk05704.txt blk05705.txt blk05706.txt blk05707.txt blk05708.txt blk05709.txt blk05710.txt blk05711.txt blk05712.txt blk05713.txt blk05714.txt blk05715.txt blk05716.txt blk05717.txt blk05718.txt blk05719.txt blk05720.txt blk05721.txt blk05722.txt blk05723.txt blk05724.txt blk05725.txt blk05726.txt blk05727.txt blk05728.txt blk05729.txt blk05730.txt blk05731.txt blk05732.txt blk05733.txt blk05734.txt blk05735.txt blk05736.txt blk05737.txt blk05738.txt blk05739.txt blk05740.txt blk05741.txt blk05742.txt blk05743.txt blk05744.txt blk05745.txt blk05746.txt blk05747.txt blk05748.txt blk05749.txt blk05750.txt blk05751.txt blk05752.txt blk05753.txt blk05754.txt blk05755.txt blk05756.txt blk05757.txt blk05758.txt blk05759.txt blk05760.txt blk05761.txt blk05762.txt blk05763.txt blk05764.txt blk05765.txt blk05766.txt blk05767.txt blk05768.txt blk05769.txt blk05770.txt blk05771.txt blk05772.txt blk05773.txt blk05774.txt blk05775.txt blk05776.txt blk05777.txt blk05778.txt blk05779.txt blk05780.txt blk05781.txt blk05782.txt blk05783.txt blk05784.txt blk05785.txt blk05786.txt blk05787.txt blk05788.txt Show all files
Advertisement: