@wildshard/shard-format 0.0.1 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. package/corpus/brasscap-mesa/blobs/bin/02da0052111419cdff3a29f1c6d0ff0d223e0b53a956c16c65ed63d87928b3b9.bin +0 -0
  2. package/corpus/brasscap-mesa/blobs/bin/068a121cd780a2a9164416f6e4fde44834f2d2f3a5ed65c174e480b7a2d3f627.bin +0 -0
  3. package/corpus/brasscap-mesa/blobs/bin/07d5a061cd338618e528747d61eb2b17709510550ef0ba40a58b67761b200f3f.bin +0 -0
  4. package/corpus/brasscap-mesa/blobs/bin/086e3706070555baca863f6ecf9dbca09c084afa501d92d4246d896b09546f36.bin +0 -0
  5. package/corpus/brasscap-mesa/blobs/bin/08b1b9ab7c732d7dbe8f961f1fc40e84042d1fe42544f55c9ee89f04dffe3d5e.bin +0 -0
  6. package/corpus/brasscap-mesa/blobs/bin/18bdbdc704cb8aac93435d208dfe0e9a44374efb73afa3bc58c631650e0a2995.bin +0 -0
  7. package/corpus/brasscap-mesa/blobs/bin/1a210fcddcb9749ecb1c244837e8e37ea69b038faae191dee6bbbde228d31a18.bin +0 -0
  8. package/corpus/brasscap-mesa/blobs/bin/264ab9ede386504a5ff9814b0a620b879cb29f3f45a80bcfc0c80b8ee236e364.bin +0 -0
  9. package/corpus/brasscap-mesa/blobs/bin/2b6fbea4c846a23cf4802ebdb1804e128896c8dd87e5d23509db6729e5b1be4e.bin +0 -0
  10. package/corpus/brasscap-mesa/blobs/bin/2d755cc635dee90b0f3958272855a821e2dd605a189a5ffcd480a325155fe84f.bin +0 -0
  11. package/corpus/brasscap-mesa/blobs/bin/2d76c6829fe77fb55cc2541e4aca5ce5d18b68508dcdf3fa957fe4a83b9c887a.bin +0 -0
  12. package/corpus/brasscap-mesa/blobs/bin/32c15d55a4548501740593807c5007217c72dbc10a21f4613ef5e0cee0b90d1d.bin +0 -0
  13. package/corpus/brasscap-mesa/blobs/bin/3539b362cf3a61a79e92e113ebf8f255d0b25ec2d2edd816498879de831fa912.bin +0 -0
  14. package/corpus/brasscap-mesa/blobs/bin/3af38a2377bc89f6c6c82ee1e83df674efa2793db932b50a23bbce7ec9cd7941.bin +0 -0
  15. package/corpus/brasscap-mesa/blobs/bin/3c176a7a0d0850fdcee790ed2641216fc3d1cba025928de3d7784262bb9b6f4a.bin +0 -0
  16. package/corpus/brasscap-mesa/blobs/bin/3fb37e488aa81a64c997b3dd09794e988994c6ee3476c6d653ced1670888dd8e.bin +0 -0
  17. package/corpus/brasscap-mesa/blobs/bin/424dcc7b320317bf3f2c62c8f19bc80564035127eb38ab811e460934d57ea38c.bin +0 -0
  18. package/corpus/brasscap-mesa/blobs/bin/45cea35fab6bb06051a3286fca2307944850c7f9ed7aa89b7c24fafef28efda6.bin +0 -0
  19. package/corpus/brasscap-mesa/blobs/bin/499cc7863851f97d79dbfc64e76f9e6978894199184a0d80ebdca13066a8fa78.bin +0 -0
  20. package/corpus/brasscap-mesa/blobs/bin/4b7217644763b00c6ee6ae3f176c726914966fb791654a385c0638bb998b6dd2.bin +0 -0
  21. package/corpus/brasscap-mesa/blobs/bin/4cf11c7177bb082f335e5bc7a037ef00d09355c5ad8263e284a96a92630ff9ae.bin +0 -0
  22. package/corpus/brasscap-mesa/blobs/bin/536b37cab5a1edd6a68a71d122aab6898e44c68a5470a4ca8a9a72c57c02e034.bin +0 -0
  23. package/corpus/brasscap-mesa/blobs/bin/55d3628b27e0fcea383df86c434a69761439f51a013359f0829675b07ee2b616.bin +0 -0
  24. package/corpus/brasscap-mesa/blobs/bin/5652ba90fbd8146edaf42660329cc81798752f2f60b8d03956714460d5ba75ef.bin +0 -0
  25. package/corpus/brasscap-mesa/blobs/bin/57459ab5e2ac6cec65ef5e59789dd82b9666d8573df41c4a398df603f1fa456f.bin +0 -0
  26. package/corpus/brasscap-mesa/blobs/bin/5915b6aed21bba49b841b45574f44f60d26b44810bd68ac70b22f3f3b0dab072.bin +0 -0
  27. package/corpus/brasscap-mesa/blobs/bin/5c4a5c7a8e99253561105c5fa3faf14326cf0c23adc32bfe7f8aea4dbf4b05f9.bin +0 -0
  28. package/corpus/brasscap-mesa/blobs/bin/61822a412cfd461f4f7ae50bc13f242a0fca6c5c58fca72247b596ab037a1c85.bin +0 -0
  29. package/corpus/brasscap-mesa/blobs/bin/673b7712908966718341508469b39cd49e6461f690ca3c23d4621ea7eba0cc30.bin +0 -0
  30. package/corpus/brasscap-mesa/blobs/bin/69394a49520f84f6dccc1655f1c89eedc913ac53a7e48ac5dc1bff4141639bb4.bin +0 -0
  31. package/corpus/brasscap-mesa/blobs/bin/6e58a53a6c2acd50f9f80fd270ca034c54421df8a587e181101b4b75b952ac5d.bin +0 -0
  32. package/corpus/brasscap-mesa/blobs/bin/75dc9f23ee71e11a3a0c67eb77275d741a281c3398808fb42efd52b9973d5d04.bin +0 -0
  33. package/corpus/brasscap-mesa/blobs/bin/76c6a403293a68ed3d6ad14e9dd27b555c3a1ef4a3cae12a2bd2ab3e67c5ad02.bin +0 -0
  34. package/corpus/brasscap-mesa/blobs/bin/82b73ce3a18e47092840fc029177861887aa2867b007248ac79ffa20895a4491.bin +0 -0
  35. package/corpus/brasscap-mesa/blobs/bin/8430d9bbfb4e2b678c54595ad95555c3c73d0e1b144a4d6e29664ccb4371baf0.bin +0 -0
  36. package/corpus/brasscap-mesa/blobs/bin/848d4492508689f5c4a224079dca8809e872e33b8f2635c9f16da5dc21beed16.bin +0 -0
  37. package/corpus/brasscap-mesa/blobs/bin/84941ac387a0d245ea20bd663ff4ee78c5315bedfa058ada0961765aff61acaf.bin +0 -0
  38. package/corpus/brasscap-mesa/blobs/bin/859b7bbcf048a4525db0548b8f5afef83bfc4870914767153f44c05e83436ec5.bin +0 -0
  39. package/corpus/brasscap-mesa/blobs/bin/87b68b45680a57c796eed9183211b03335a6ad6737372b3ef476c2cf42efa631.bin +0 -0
  40. package/corpus/brasscap-mesa/blobs/bin/8cef94308af8d09670e4c99a3b6c3d9280b7a27d386653a3bd7d482b2cdf2b65.bin +0 -0
  41. package/corpus/brasscap-mesa/blobs/bin/8e564bce3f352c2186ae09ed7fbca9739c10abc46fd5f6893c68cb47178bd2b4.bin +0 -0
  42. package/corpus/brasscap-mesa/blobs/bin/8f89e79d0fb9b04d48c7b5719e1d024161c6a2119835b18dcb193ff51123a9be.bin +0 -0
  43. package/corpus/brasscap-mesa/blobs/bin/8fe511ad48656a0b10801100b9100edab1be605a8a182dc5c834d298bf0d9166.bin +0 -0
  44. package/corpus/brasscap-mesa/blobs/bin/900bda6562d06fafda54c495e325d57dbb7931813178ee207449c5519d89d537.bin +0 -0
  45. package/corpus/brasscap-mesa/blobs/bin/997b1b7d9210bfa77dc71f16a57c6bd66bc7c648686dc2a2666044c95042978a.bin +0 -0
  46. package/corpus/brasscap-mesa/blobs/bin/a111bb4c6cec536bcf57dddc744b871ac9f3d094ce459c16243adca19020db77.bin +0 -0
  47. package/corpus/brasscap-mesa/blobs/bin/a2208bf899e6c84942eef9fbab569d597f574551afae5864f1953c6a517af068.bin +0 -0
  48. package/corpus/brasscap-mesa/blobs/bin/a302ddb2598a72ece53780094b64ad861dc68e6913d8a1ea08f5d141736e2986.bin +0 -0
  49. package/corpus/brasscap-mesa/blobs/bin/afcbc671326d0dac14e460662c1f793335877ba53cc965f67c0306833b087e7c.bin +0 -0
  50. package/corpus/brasscap-mesa/blobs/bin/b657159e6a28c801a211024f96a7ef60e388ce928a7b41ae3d7555a6f8fd2e3e.bin +0 -0
  51. package/corpus/brasscap-mesa/blobs/bin/be6bbc6cd15ba525790075252ba0ed0b28dae5cfbfa118c00dfb9ea1ab95e668.bin +0 -0
  52. package/corpus/brasscap-mesa/blobs/bin/c1360e3cbe6b3dc8894bc66c359853854c2e5adeac9c7cd5ba63f5db448be601.bin +0 -0
  53. package/corpus/brasscap-mesa/blobs/bin/c7983018dbf8e384ddf73191f526075bd0b29907061ab17642ecdc18ea7b9897.bin +0 -0
  54. package/corpus/brasscap-mesa/blobs/bin/cea66f27ca60ea173ee0a2bcd91964dc2638eb5657250fe3aa5bd3e41faf8730.bin +0 -0
  55. package/corpus/brasscap-mesa/blobs/bin/d052be571a0f3ab69926951f3a4c9d63f05da2ca6d91e5963dd63e04ecb515de.bin +0 -0
  56. package/corpus/brasscap-mesa/blobs/bin/d162a993a60dd682c8c21dd111429d84d8d30413a000cf481cf98d06ca83e706.bin +0 -0
  57. package/corpus/brasscap-mesa/blobs/bin/d238c3d3d054911714ebe30dafc99e6ad13925b7a600ba9f8d532d0f515f3f5a.bin +0 -0
  58. package/corpus/brasscap-mesa/blobs/bin/d9a98cfe2865a9bb0e94f35c735a570b0625b58f890a6b1f6e14fab2401f0af2.bin +0 -0
  59. package/corpus/brasscap-mesa/blobs/bin/dc27ae954b7b8a13a9459d6ca6ef2997f662715ff5f5453ea0da169f141748b8.bin +0 -0
  60. package/corpus/brasscap-mesa/blobs/bin/e3ff1fd41cf76668b8e1927c0c2e4056b63a293ebbd300a8f1b1d27d87786271.bin +0 -0
  61. package/corpus/brasscap-mesa/blobs/bin/e45b7344d373b3ef4a94f560cf4e17b1eb3b8cd89d1e552fc9be11d6b7b546f0.bin +0 -0
  62. package/corpus/brasscap-mesa/blobs/bin/eb14eb898224d5d81d1012bec54f2b79f9377dc60fa1d01e49b4c3e148292d77.bin +0 -0
  63. package/corpus/brasscap-mesa/blobs/bin/ed0e0101a3d91a3a615f9e78ef36f7deb8bb0eab0f133241d621925d0b596599.bin +0 -0
  64. package/corpus/brasscap-mesa/blobs/bin/f722e3a3b1f0a3d7b9f7d7c66c46d8c87245de5f8eece055daf95c7086f8c267.bin +0 -0
  65. package/corpus/brasscap-mesa/blobs/bin/f76013aedfd810f136fa689a151024bcb942687ef42ae7edf1fd3513ac4e22c7.bin +0 -0
  66. package/corpus/brasscap-mesa/blobs/glb/0547e63693282614673b13bade4c08eb772020757b131b7c80f2077873aab70e.glb +0 -0
  67. package/corpus/brasscap-mesa/blobs/glb/0cf89e9b1824440d213c8e9e33fb357734b7241b4c7eedaba3df7f8306e05425.glb +0 -0
  68. package/corpus/brasscap-mesa/blobs/glb/0e01060e3a507ffff6461c50b5c565c71380a6a67d9760cdd7a09afd3e30b584.glb +0 -0
  69. package/corpus/brasscap-mesa/blobs/glb/0ef326c5cf5292cd15b48b851460ee8156f51e0a5b62457c8f1f3c53c41665a3.glb +0 -0
  70. package/corpus/brasscap-mesa/blobs/glb/1112ff4a3f69db3b62c6d2d6ae021e7c43ce0ca1feb1d3130376881decb3c6b0.glb +0 -0
  71. package/corpus/brasscap-mesa/blobs/glb/11357cb8a0670fdc9a03780dd79a31e0aa7a0537786cbf66491bae1722d6feb3.glb +0 -0
  72. package/corpus/brasscap-mesa/blobs/glb/11dbecc73bd343c375bd4b79db8dbda2272e76a6b8426ac29e90f2b1272ccfc2.glb +0 -0
  73. package/corpus/brasscap-mesa/blobs/glb/133f639cfa837bc5da7915121c71fd32281660c2aaa0248bd59bde47e7faf8bc.glb +0 -0
  74. package/corpus/brasscap-mesa/blobs/glb/16812a090136b6678633aa4db03e4187920ae0aca776ad6da373c600cd341972.glb +0 -0
  75. package/corpus/brasscap-mesa/blobs/glb/17e63980d7934cfe1d2823d78652af338fe9f0c2170106cd4506a2c4e7f4716f.glb +0 -0
  76. package/corpus/brasscap-mesa/blobs/glb/199224cafc86904bdefec8f01d131d7ca3e076a22b689bfc6a26dd20373cf286.glb +0 -0
  77. package/corpus/brasscap-mesa/blobs/glb/1a5c8cf223a2f64715ea5eaf14d97a0131f9ebdef4388dc4823dcfa57817724c.glb +0 -0
  78. package/corpus/brasscap-mesa/blobs/glb/1b0ec09ad6718149d7ca514136cee09b04c96425f03af0559fd097112aa0daa5.glb +0 -0
  79. package/corpus/brasscap-mesa/blobs/glb/1e5024bbb1284b2ed39bbca2d0ade3acb5be2a2c6ba643291f269b76098c7f79.glb +0 -0
  80. package/corpus/brasscap-mesa/blobs/glb/1e7635972e13468ffcbb1608f1d12559b066b4533912be2c35e3db07fd4a679d.glb +0 -0
  81. package/corpus/brasscap-mesa/blobs/glb/1f03db3a38a21b8d4d02f8ede30e1303cd8d4c426815326a88f45a268b17a492.glb +0 -0
  82. package/corpus/brasscap-mesa/blobs/glb/2624abb7bf45618be40f8c3221445179fca44f7321baff415fdf7ddd5e0afc6f.glb +0 -0
  83. package/corpus/brasscap-mesa/blobs/glb/27fc3bad6db6e2b5ade5d242867d882362482ddf19c647edef821afc27d52dc2.glb +0 -0
  84. package/corpus/brasscap-mesa/blobs/glb/29959bdb5b04a9180e88ec1ed976bae55424d3dc50985f13c0f85bae11ae79ee.glb +0 -0
  85. package/corpus/brasscap-mesa/blobs/glb/308cbce2b1b6360f9a2dc275d0bc28be1966fc3ff5e0a58844405ba867f3f668.glb +0 -0
  86. package/corpus/brasscap-mesa/blobs/glb/3674d7be969755aaffa368e57b8d1bb743bc98e766a57948859d54fdc7d2c066.glb +0 -0
  87. package/corpus/brasscap-mesa/blobs/glb/3736ca95c9c40b30e21302ae6c89148d8ac09264dfbb7e5764b08c265a73ba3c.glb +0 -0
  88. package/corpus/brasscap-mesa/blobs/glb/3bc90e1dc9411d249697e4ec352baa4886f91cacfe4940ac43aed879f60966c9.glb +0 -0
  89. package/corpus/brasscap-mesa/blobs/glb/3f519c7c7482307cae908b27602dcb7716e2da4b651eff39c4c37103998d18fa.glb +0 -0
  90. package/corpus/brasscap-mesa/blobs/glb/4767636d5554b60c94b447b87b77fc1456a2b9af42bfe08585389d27f306dd5e.glb +0 -0
  91. package/corpus/brasscap-mesa/blobs/glb/4a3242773b3a73a73ee746a0cdf30c8d6d904bb4406dfdf9822dcd535d6ae308.glb +0 -0
  92. package/corpus/brasscap-mesa/blobs/glb/4c7bf3788cba151442d85c3f76553c2e356edf8566ae8243d0a535c9bcde51d0.glb +0 -0
  93. package/corpus/brasscap-mesa/blobs/glb/4f3b9f4c818ed6d375947e9603dd058c539e14ff05aa193fb5054d899dbb82a2.glb +0 -0
  94. package/corpus/brasscap-mesa/blobs/glb/4fdf7ee67d12de1cd30c3c2bbd9409032dcab5feb3a7d3977b92c50b1d161afe.glb +0 -0
  95. package/corpus/brasscap-mesa/blobs/glb/5821f33aa00e9acd2f4c0a29129978ee7006a879d163ce1463ae476031bfabcf.glb +0 -0
  96. package/corpus/brasscap-mesa/blobs/glb/5a986c3e44fc686a2efe7648c3945bb7b51cf303918381383f21f898dd312cad.glb +0 -0
  97. package/corpus/brasscap-mesa/blobs/glb/5c32fc1de6d198ed606d3e8c3264319acdd950dab18e8b723fc6332bf2f56aea.glb +0 -0
  98. package/corpus/brasscap-mesa/blobs/glb/602ce4e8b00a0afbc1a894b65641e48d362ec834a559b9d97a4801473bb01da7.glb +0 -0
  99. package/corpus/brasscap-mesa/blobs/glb/6180f9f96167522d8cab4de1d52598cecee8d7ee042f48e41669c98cf61c19c3.glb +0 -0
  100. package/corpus/brasscap-mesa/blobs/glb/6205973ba63f7a554662ba05010d25131bed2d9656de422e2067ca54709d5b3c.glb +0 -0
  101. package/corpus/brasscap-mesa/blobs/glb/693e556f2165232e8a38b1b2d68676f235ece5705c564992cfa7731426f4d376.glb +0 -0
  102. package/corpus/brasscap-mesa/blobs/glb/6a46175438bec5527c281b577bd220b6badedf3c74266b997d39e596f83b8853.glb +0 -0
  103. package/corpus/brasscap-mesa/blobs/glb/6ca1bcad7ea053a259b7f9fc5a7ec388a4cd29d44391d93386ea8b1143d94c21.glb +0 -0
  104. package/corpus/brasscap-mesa/blobs/glb/6f9bc99656b611890d6acc76ee416f6222ca2d5f62167840b4216a21e020a4c8.glb +0 -0
  105. package/corpus/brasscap-mesa/blobs/glb/6fb1e7857996662233ab5314fc13f8aa30703f91c04542e352ec17f9dc4fc054.glb +0 -0
  106. package/corpus/brasscap-mesa/blobs/glb/7028ec39712143a7e9d09d2e1477282b654d0470102ca9d272ac82b23604cb21.glb +0 -0
  107. package/corpus/brasscap-mesa/blobs/glb/73af65ac86efa61099178f3e7075dcd26d389ee9b9aa3546c18dede10c3dfda1.glb +0 -0
  108. package/corpus/brasscap-mesa/blobs/glb/73b992b71bd3165ff7701ab1430c075cb5ba9b74e6363d24640377b1011ddc93.glb +0 -0
  109. package/corpus/brasscap-mesa/blobs/glb/7471261d4df59979ba41a622d93779b66ebecd50353ad433862e603ee65f8748.glb +0 -0
  110. package/corpus/brasscap-mesa/blobs/glb/76e9a3fcca962c2f900cf79dc1a0851840bd405dc11231f629f784adbcb69d23.glb +0 -0
  111. package/corpus/brasscap-mesa/blobs/glb/79d2d29e8cd8b642386b5f31429b39bc4d6f13e53107dda00ebc463abf80c79d.glb +0 -0
  112. package/corpus/brasscap-mesa/blobs/glb/7de66fcfffe4ff108510cbe6bebec44e28ab4b78e98e9c1a38466db5b81881f7.glb +0 -0
  113. package/corpus/brasscap-mesa/blobs/glb/811fa798cb81ea99488db98e3d3ddea815aac8f6e7493ad04d0176f603978678.glb +0 -0
  114. package/corpus/brasscap-mesa/blobs/glb/89b277f1636be220ff5658ff1f1c62efe14079d6e1f42efb373fbf0246801533.glb +0 -0
  115. package/corpus/brasscap-mesa/blobs/glb/905c5fe666d9f6174e987382e47d3f325c5696cf8792d7a4a1dd120a438b8270.glb +0 -0
  116. package/corpus/brasscap-mesa/blobs/glb/90efe3e05370ee853c0130b98ee82f00b86f7c7104e96b094715187fa49ac16f.glb +0 -0
  117. package/corpus/brasscap-mesa/blobs/glb/968a7c5cb13014bce00a29d43b344bd6943ff00ae2908abbc6b40a994f1172a1.glb +0 -0
  118. package/corpus/brasscap-mesa/blobs/glb/9a955b4e69dfa5b38f071099053c1a3684cf85ec2d346420de2853c61768f8cc.glb +0 -0
  119. package/corpus/brasscap-mesa/blobs/glb/9da2781216a2e482dd8a6ada5ebb43bcf48e0169430e787ac277559cb2ade19a.glb +0 -0
  120. package/corpus/brasscap-mesa/blobs/glb/9db02aab14a3b52463deadefbf4ba771809941e7fcb137c905955bdc80ec23bd.glb +0 -0
  121. package/corpus/brasscap-mesa/blobs/glb/a3fe1788cf5d7f260249c722f0e0695a4d55744d1b14be44122377147a296256.glb +0 -0
  122. package/corpus/brasscap-mesa/blobs/glb/a5c75af8f090d3c95fa46d2be49be5031138d7cd1bae234ae028edf717bf299e.glb +0 -0
  123. package/corpus/brasscap-mesa/blobs/glb/a771abd40bd337a464c1bd19f841b62e290124faa89b19ec50e85ab36bc740a5.glb +0 -0
  124. package/corpus/brasscap-mesa/blobs/glb/a94a2ad2ed463a47cdda117df25b06b3cf6be37ddac08594bc5f5d76c7237730.glb +0 -0
  125. package/corpus/brasscap-mesa/blobs/glb/ad434e4a6490e495994b25f7574a5847a9f7d9c2ca5a2b229a9dfdd2e5e2bb72.glb +0 -0
  126. package/corpus/brasscap-mesa/blobs/glb/aeae7b05404b852008a7897689e58aacef44a2c3bc0e87d2519ecdb4cb1e3ff5.glb +0 -0
  127. package/corpus/brasscap-mesa/blobs/glb/b0c0c8a4985f92be3b358a8e703c67957427501882aeee05b4ccd3c7880930d4.glb +0 -0
  128. package/corpus/brasscap-mesa/blobs/glb/b25174c3cd13eea6e1d9c3104ee5197dc6330129b2f0f7676e8a429900999d9b.glb +0 -0
  129. package/corpus/brasscap-mesa/blobs/glb/b3eecdec571df96338edf690443394ff859383b4c94f4cf33d42c240006f8543.glb +0 -0
  130. package/corpus/brasscap-mesa/blobs/glb/b7aa0c61ff9e7411535c7b7b8e587849a92bad00d431171ab16ad47d55db0a53.glb +0 -0
  131. package/corpus/brasscap-mesa/blobs/glb/b9deef944c22331bc05220d1d6e46412e3cb1246ef041a4405d0cbbd90c2d624.glb +0 -0
  132. package/corpus/brasscap-mesa/blobs/glb/ba9376e4ac39b809133ab717edb4c88b5219118766db492d7c97534ce119c2ec.glb +0 -0
  133. package/corpus/brasscap-mesa/blobs/glb/baf338e9c272158b905fb58a712e29410c657a45be2764f1c6c43ca87fd1db48.glb +0 -0
  134. package/corpus/brasscap-mesa/blobs/glb/bd442ac9fbe52b9f2e4ba586670017c3f2d9fedf1cbdec77ef24e9f8b3a183c8.glb +0 -0
  135. package/corpus/brasscap-mesa/blobs/glb/c142adcf253be43b66f23ede8cea1e8fcfa256ebf53054a1068ace04745718a6.glb +0 -0
  136. package/corpus/brasscap-mesa/blobs/glb/c6d7cbdc4b2ee9d416edf4d736a4f374f08aea98ca395ad371a50a1853744cfc.glb +0 -0
  137. package/corpus/brasscap-mesa/blobs/glb/cfb165a7675d15cee2c490b31095a58f73bace50ccc1e0fdf2c8dc4400f1df27.glb +0 -0
  138. package/corpus/brasscap-mesa/blobs/glb/d40f2ee59612473e9f687f17a0e203fdb4ba54c7185b05a8d81a433b04f24134.glb +0 -0
  139. package/corpus/brasscap-mesa/blobs/glb/d50ce95411156a6b6cf386aefa5ee58db659811813f74be74f323e7c5795056f.glb +0 -0
  140. package/corpus/brasscap-mesa/blobs/glb/d6af418bbde39b4fc7d22a61401d416be7a3fc1214ea2d3f42b4549c392d22ca.glb +0 -0
  141. package/corpus/brasscap-mesa/blobs/glb/de7222ceeb1f72693dfb7fd1f343798659e03772d77f2b498fd8ebece2d5550a.glb +0 -0
  142. package/corpus/brasscap-mesa/blobs/glb/e26975b198127ac3b6b4f5c4bc08ad47d6691398feee777743285391cd36d502.glb +0 -0
  143. package/corpus/brasscap-mesa/blobs/glb/ea428490cd5f2672676a2776a598b819b08246871e76de94b7196f9643144986.glb +0 -0
  144. package/corpus/brasscap-mesa/blobs/glb/eb96567a266d24be188cb5b08021112f2fad311cbead939d53c5565da11f6265.glb +0 -0
  145. package/corpus/brasscap-mesa/blobs/glb/ecf66230bf7b68050c0827c2e4caf3de90e46859d291b794faa0dd3816d9dac6.glb +0 -0
  146. package/corpus/brasscap-mesa/blobs/glb/ed8f067763a4a8adb83d80c8324b2a9668f1061f5f5352f21295e6cc5132386f.glb +0 -0
  147. package/corpus/brasscap-mesa/blobs/glb/ee507a38772865467736d370791fe73c6aa4d83fe3e7ff4baa156b9cb2894c1c.glb +0 -0
  148. package/corpus/brasscap-mesa/blobs/glb/eedc5b62dc6f27d4a089e9f5b282f626129236d3f1689b001e04f8748bf8859c.glb +0 -0
  149. package/corpus/brasscap-mesa/blobs/glb/f4119b9c6c23435619682b5d247743459e76584b9b0d6c5cb689d8e156906695.glb +0 -0
  150. package/corpus/brasscap-mesa/blobs/glb/f576047267a0bf9bd4bfc47072ea3d11066345b839953546292da678d1cb4722.glb +0 -0
  151. package/corpus/brasscap-mesa/blobs/glb/f8cdfb11997d4ccabea88bcdd3924cc8b621b33618b18fe5fbfd286edfc1d87e.glb +0 -0
  152. package/corpus/brasscap-mesa/blobs/glb/fce95ecc5db24c903bd46f338e366e2715411465a5efac180e2f0f46397e59de.glb +0 -0
  153. package/corpus/brasscap-mesa/blobs/image/0579557f9344df6f2c4b1225e6252e53ab86d417a4c9b504b5c714a08a388e47.jpg +0 -0
  154. package/corpus/brasscap-mesa/blobs/image/9e18816a2ec16fbbb1f00f4a39c73ac2cbf6a8cdc17b4c96b1eba4cc9a754dc7.jpg +0 -0
  155. package/corpus/brasscap-mesa/blobs/image/eb453c71cfb1f9441eb00b32281f98e226e49d9dcf75c231455575fcdc652222.jpg +0 -0
  156. package/corpus/brasscap-mesa/blobs/json/e0072ed82115c519b891f53a194ea3b28fff7d3826d8ddf23460d6f21b7728d9.json +1 -0
  157. package/corpus/brasscap-mesa/blobs/json/ffb0e08eaaa7188db1f55931c9b6330937316091cc7463ed2eff6767bbfa33de.json +1 -0
  158. package/corpus/brasscap-mesa/blobs/wasm/1d6ace79610c4d510b60ad0c52915e42b57797d91f1ef292f60d8a3daec03dd6.wasm +0 -0
  159. package/corpus/brasscap-mesa/blobs/wasm/24a4d4c1292677b1c984b5c0d3497ae2929528bf511df475f80cc20945bb08ec.wasm +0 -0
  160. package/corpus/brasscap-mesa/blobs/wasm/b86d8afcc269fb063ebf64768fc3787635b65a7409a571115b07be2e4da39733.wasm +0 -0
  161. package/corpus/brasscap-mesa/cook.json +1 -0
  162. package/corpus/brasscap-mesa/mounts/shardfiles/brasscap-mesa/discovery.json +1 -0
  163. package/corpus/brasscap-mesa/sections/actors/creatures.json +1 -0
  164. package/corpus/brasscap-mesa/sections/actors/crowds.json +1 -0
  165. package/corpus/brasscap-mesa/sections/actors/species.json +1 -0
  166. package/corpus/brasscap-mesa/sections/audio/audio.json +1 -0
  167. package/corpus/brasscap-mesa/sections/combat/encounters.json +1 -0
  168. package/corpus/brasscap-mesa/sections/combat/items.json +1 -0
  169. package/corpus/brasscap-mesa/sections/combat/strikes.json +1 -0
  170. package/corpus/brasscap-mesa/sections/economy/ledger.json +1 -0
  171. package/corpus/brasscap-mesa/sections/economy/loot.json +1 -0
  172. package/corpus/brasscap-mesa/sections/look/look.json +1 -0
  173. package/corpus/brasscap-mesa/sections/look/materials.json +1 -0
  174. package/corpus/brasscap-mesa/sections/quests/quests.json +1 -0
  175. package/corpus/brasscap-mesa/sections/sim/client-scripts.json +1 -0
  176. package/corpus/brasscap-mesa/sections/sim/hooks.json +1 -0
  177. package/corpus/brasscap-mesa/sections/sim/plumbing.json +1 -0
  178. package/corpus/brasscap-mesa/sections/sim/scripts.json +1 -0
  179. package/corpus/brasscap-mesa/sections/sim/sim.json +1 -0
  180. package/corpus/brasscap-mesa/sections/state/migrations.json +1 -0
  181. package/corpus/brasscap-mesa/sections/state/state.json +1 -0
  182. package/corpus/brasscap-mesa/sections/ui/card.json +1 -0
  183. package/corpus/brasscap-mesa/sections/ui/compendium.json +1 -0
  184. package/corpus/brasscap-mesa/sections/ui/level.json +1 -0
  185. package/corpus/brasscap-mesa/sections/ui/ui.json +1 -0
  186. package/corpus/brasscap-mesa/sections/world/collision.json +1 -0
  187. package/corpus/brasscap-mesa/sections/world/days.json +1 -0
  188. package/corpus/brasscap-mesa/sections/world/edge.json +1 -0
  189. package/corpus/brasscap-mesa/sections/world/movers.json +1 -0
  190. package/corpus/brasscap-mesa/sections/world/navigation.json +1 -0
  191. package/corpus/brasscap-mesa/sections/world/props.json +1 -0
  192. package/corpus/brasscap-mesa/sections/world/spawn.json +1 -0
  193. package/corpus/brasscap-mesa/sections/world/terrain.json +1 -0
  194. package/corpus/brasscap-mesa/sections/world/tiles.json +1 -0
  195. package/corpus/brasscap-mesa/sections/world/traversal.json +1 -0
  196. package/corpus/brasscap-mesa/sections/world/water.json +1 -0
  197. package/corpus/brasscap-mesa/sections/world/weather.json +1 -0
  198. package/corpus/brasscap-mesa/shard.json +1 -0
  199. package/corpus/brasscap-mesa/validation.json +1 -0
  200. package/corpus/handwritten/blobs/bin/027822f6ae9c374ce1ced851f2227cb9acb03077e5cc6b7fecb245c31f021abd.bin +0 -0
  201. package/corpus/handwritten/blobs/bin/0377ce182bd604bcf4d501f14bf954c434ea64ad856ad9d71c502d1045612703.bin +0 -0
  202. package/corpus/handwritten/blobs/bin/05ad93d239eeeb5d9afa09b00d90c56098d88e8850e5b5e691fcaa7520dec3cd.bin +0 -0
  203. package/corpus/handwritten/blobs/bin/0c8980141e6e394ea473df1eb11c347ba617a1a9a4b39b3fa1871b5d15b97d87.bin +0 -0
  204. package/corpus/handwritten/blobs/bin/14eb11f8d809320e0a68b1edea7837d7a5b4a3da71f1ce4f54068e0afe0b039b.bin +0 -0
  205. package/corpus/handwritten/blobs/bin/16590066c039ac71e5038a9866a53ccb95e21af13db29cb655b379c4fcfef7bb.bin +0 -0
  206. package/corpus/handwritten/blobs/bin/1795b5147ad52482445d2414ee22823b947c43a917b6e96fd9ec017f17000912.bin +0 -0
  207. package/corpus/handwritten/blobs/bin/18f2e24ecc1ed1b1d12ae1c89732a5a1a618ab6e973d4ff0332cf9ecc4e4f4a6.bin +0 -0
  208. package/corpus/handwritten/blobs/bin/1a18ade01095f1a9ebe75650127861ef27dda0bb17c2b91bde057ec88ef2e98a.bin +0 -0
  209. package/corpus/handwritten/blobs/bin/1dba017cddb874bc147efb00c55418846ffa344a696f4df702bbabeea55034d0.bin +0 -0
  210. package/corpus/handwritten/blobs/bin/248c703537e4687ddd2b69a40d1ef3936da718626289d6867ce0a6866f562ba4.bin +0 -0
  211. package/corpus/handwritten/blobs/bin/2612d9fd4727f8c349f2dbfb7b1650bb7a752d0798a4966ac22cf2b6cdd9fcef.bin +0 -0
  212. package/corpus/handwritten/blobs/bin/28c54c766e90e3b046a2377b9fa015b0ce45cf3da4420f2b10553251f86c06aa.bin +0 -0
  213. package/corpus/handwritten/blobs/bin/30866b4807b12579f50218f6525c3db00919fbd43c97921daf47b3244b25dca6.bin +0 -0
  214. package/corpus/handwritten/blobs/bin/3d14fae85d77406a9b8c59f2e973cdae9587d49108ea92fb460679ca860196b8.bin +0 -0
  215. package/corpus/handwritten/blobs/bin/3f2201a53c441abcfb52089fe9bbb01f26fac8744099d3fb6668452885c2fa11.bin +0 -0
  216. package/corpus/handwritten/blobs/bin/42f270a99367fc4cc901518ccaa344ab595e265f113be944510da745c11f69d1.bin +0 -0
  217. package/corpus/handwritten/blobs/bin/43fd4327fedd51a586684ac611bcad4a8b9d62e51e03967de71fb42c9bf0f6e1.bin +0 -0
  218. package/corpus/handwritten/blobs/bin/484adda0898a881b6f095dad447f6a619bf0933f65efe940b72f1ab7f3630c22.bin +0 -0
  219. package/corpus/handwritten/blobs/bin/4a38cd49e8797429ce76265c3d8972195d5b0a02a35fc05fc513eab11240f415.bin +0 -0
  220. package/corpus/handwritten/blobs/bin/4fe636237bbbd4f836b0816bc61702f4c224d4cb91fbd94f244c731e24a1b945.bin +0 -0
  221. package/corpus/handwritten/blobs/bin/51b1cff782dc7ebb382bc429ee965023d4cdb52c7b3e37d6ffff5ef55c1c2813.bin +0 -0
  222. package/corpus/handwritten/blobs/bin/52561f02071ecaa98432fab5e8ece407a8e8f733a01f8eb7c543d1efe02614da.bin +0 -0
  223. package/corpus/handwritten/blobs/bin/556d6333923afea9641c4738741a41d6a46ae28a508288b9a49a749a344c1398.bin +0 -0
  224. package/corpus/handwritten/blobs/bin/5caeb97f32c7f31e1029eebdf31131f879f781bb5e3a225206a646710d83fd75.bin +0 -0
  225. package/corpus/handwritten/blobs/bin/5d1131e42a045083225105b640ff72e02c7f353ee6285545ac264d01bea26b1b.bin +0 -0
  226. package/corpus/handwritten/blobs/bin/5d80b30eee9f8342a92f6756fd0d84fb9d2d2ce994d222627641e584ad45d2a8.bin +0 -0
  227. package/corpus/handwritten/blobs/bin/5e0f9f7f2a85abe11a0a61ede853c9b9942b4494c3eb9943785cf6ae221e40e3.bin +0 -0
  228. package/corpus/handwritten/blobs/bin/5fdc5485343bba8201185c9bae862ad8618498ab5ce63b53514e4e0226fa7bdb.bin +0 -0
  229. package/corpus/handwritten/blobs/bin/6623dcb0b31c9ca0be342f6dca6b9e607ec3c12ff82068fa6030c142c2df77f7.bin +0 -0
  230. package/corpus/handwritten/blobs/bin/6887131a04175edbd1989aa95e8749d1703e7f2d0b8464e85f6bad28d6964125.bin +0 -0
  231. package/corpus/handwritten/blobs/bin/6cf89771d998486cad9049e6f4fc177d742a18ad79fafa4596814ff9d3cf1952.bin +0 -0
  232. package/corpus/handwritten/blobs/bin/74bbb0fc219e8476cd5550014a357ee18abc981ff3fe787ae3e60d4593705ec5.bin +0 -0
  233. package/corpus/handwritten/blobs/bin/76784a7f519ac43ce113a0c9365881839b75f66f96aa009fe8d3c8ab539ef283.bin +0 -0
  234. package/corpus/handwritten/blobs/bin/79a2f693ee2da546bb551f8b641b9c3affd2b8bfb5632ed7f417daba9d900af9.bin +0 -0
  235. package/corpus/handwritten/blobs/bin/7b593b0f9eefb957fb9d58b316d9836971203038d7c8127284bba44ccb3090bb.bin +0 -0
  236. package/corpus/handwritten/blobs/bin/7bb8e518ca5606de78972a6c648b57623f8bc12d7e06b4bbf43c60ac419a9bbd.bin +0 -0
  237. package/corpus/handwritten/blobs/bin/7c6133f3350147257fa501f41269cb77cb11d8ed96d351e873333b079cee524a.bin +0 -0
  238. package/corpus/handwritten/blobs/bin/7f5acf1893828995256f5b2c54948f80ba21e53de72db26ea72ce2479f5b0682.bin +0 -0
  239. package/corpus/handwritten/blobs/bin/836516253cf0f3e6e79537609fdbe6331c8c5c974f9ec4d3fbe4a7db48cf123d.bin +0 -0
  240. package/corpus/handwritten/blobs/bin/89900344f82d5c1474d2a163f8d29903447bac64e9c9775123ef499be70c2380.bin +0 -0
  241. package/corpus/handwritten/blobs/bin/95d76a9273c3edd98b3643c54e2e7989800bdcaf6f815230ef09f601e760330f.bin +0 -0
  242. package/corpus/handwritten/blobs/bin/a7b5a5fe053a38c93eed899bde5051cddd80e0a3f3c82b6fd814869097f0944b.bin +0 -0
  243. package/corpus/handwritten/blobs/bin/b29be84df0bfd1bc97a1464fd5ea068130947bfed3328e167640c81326eb45d7.bin +0 -0
  244. package/corpus/handwritten/blobs/bin/b6518dc352be03332a256f1cd9d1149da262fe6829e87ba43364f19c687ca7c9.bin +0 -0
  245. package/corpus/handwritten/blobs/bin/b7edb8095beeb158adb61ae3caa1653773757afbcd8fb2764c94b975a43fe9e2.bin +0 -0
  246. package/corpus/handwritten/blobs/bin/b86d617ae7fa397df51ff7af87cd89fa113ac19abd3840ea8f3a086d6c82905c.bin +0 -0
  247. package/corpus/handwritten/blobs/bin/bb860b5c67ee7f2fafd67588822152228d6f6c9de1231123eeafa4844732b18b.bin +0 -0
  248. package/corpus/handwritten/blobs/bin/bf8c3971bbb224075d488ffa9cfc20e322c61f9ca0c59c356838415f6778014b.bin +0 -0
  249. package/corpus/handwritten/blobs/bin/c2edd52ee14ebdc9fcc01d38c15d6ab3379df7a20098c260c546551898959cd1.bin +0 -0
  250. package/corpus/handwritten/blobs/bin/c3de13c551c5b45270143dcbb9fc9a31651f6012355823c0709c2fe6cafda940.bin +0 -0
  251. package/corpus/handwritten/blobs/bin/c57a8d9da18b1289afd16de00dd1ec75027048b8dcf7dd218da36bc3276ff035.bin +0 -0
  252. package/corpus/handwritten/blobs/bin/cc2975c9dea4c31b1bf380623a8f44059423004653f9cae4f603d374174323b7.bin +0 -0
  253. package/corpus/handwritten/blobs/bin/d476abba2e1c63ad3c7527617559173484ee837a5be2744d968466d5527c286b.bin +0 -0
  254. package/corpus/handwritten/blobs/bin/db242f89115c878cf0c3b976a1647e9cdeb6a1a51813b1dacaf1188715603294.bin +0 -0
  255. package/corpus/handwritten/blobs/bin/dcc4b9b3bc4ca777d11c494ae5478f17ad7cf2efa18dcba30def872d55355bc3.bin +0 -0
  256. package/corpus/handwritten/blobs/bin/dd99da483f385327d6b8319d6e2e9000b580280069353718aa0fda2230707e8b.bin +0 -0
  257. package/corpus/handwritten/blobs/bin/dfc139dba26f1789e16f72602e654636f2d99bcd41e3f10454da74b3a6a64dda.bin +0 -0
  258. package/corpus/handwritten/blobs/bin/e15ab3cc9f60657321cfe8d9751e086f025734f4e7068271e0baf6066a686f18.bin +0 -0
  259. package/corpus/handwritten/blobs/bin/e16a83a71213db6f804ce1d53981a2308062752c85c440022d9eeb7605fd37c8.bin +0 -0
  260. package/corpus/handwritten/blobs/bin/e7355876487f660ac9f25c9d9dfcd66eaf432e1e1669eb89d12ce8267a8d3e86.bin +0 -0
  261. package/corpus/handwritten/blobs/bin/e81a632e2da0f6a4d801f18aadfe2c6e640401cc1178935a9099ebb8e3af6cc1.bin +0 -0
  262. package/corpus/handwritten/blobs/bin/f0721c60d0b1046579d8c587fac8482a70822f0b39a85f9acc0cfc31f82b7dd2.bin +0 -0
  263. package/corpus/handwritten/blobs/bin/f301cf574de6d84030f839098ca44705dca115f9d3e4ee848e0b35fff3deaf77.bin +0 -0
  264. package/corpus/handwritten/blobs/bin/f7797f295a7570c437bf7020a1ddf208fea2a7aab595333320a6396c1608d360.bin +0 -0
  265. package/corpus/handwritten/blobs/glb/08de0bb2439ac812adef528b4b073bdb954bbeada972a2f3afb1757bd0540396.glb +0 -0
  266. package/corpus/handwritten/blobs/glb/153681171c35d2898569324e21ebe734b8418d4122833618a1e64ea326be1e5e.glb +0 -0
  267. package/corpus/handwritten/blobs/glb/1df5ce0b6cae72ec4cf3c41510681ba70ebb474f9745d536ebd4f03e8fc82de9.glb +0 -0
  268. package/corpus/handwritten/blobs/glb/262031e2fa710bd8d586eafce1019ca1434a2170e407567741aac1d99fc9c5ab.glb +0 -0
  269. package/corpus/handwritten/blobs/glb/27466efb180fb5b5074b40e424bd0b8d78f7ff0f5f3663748e014daeeeb5bedd.glb +0 -0
  270. package/corpus/handwritten/blobs/glb/2d2f6d00a14c89a4efb7f679b371118f564f258797ed8b8b42baf4ae60902ea6.glb +0 -0
  271. package/corpus/handwritten/blobs/glb/31f327d215ed7ef422e2169172f3869769e9816c9da979616844081e74f2eb09.glb +0 -0
  272. package/corpus/handwritten/blobs/glb/3bfe0e9ca18077ffee9c284ef40fed9f2fc354f7495612c785a6f980b5966559.glb +0 -0
  273. package/corpus/handwritten/blobs/glb/3db43042b3eeb1dee7ce9de1cc00322cefc348aa18c37d168b0858e6af6ca7a4.glb +0 -0
  274. package/corpus/handwritten/blobs/glb/46460a50da44fb8e792b48a646ec9ce025bb309d315dbcf67d2e9598591750de.glb +0 -0
  275. package/corpus/handwritten/blobs/glb/4902213556fedaf269fba6f0f195e424b2e49973ab45dcb8b69e34d253d9d8ff.glb +0 -0
  276. package/corpus/handwritten/blobs/glb/4dda463c9cd4bf339e5611871d4ba2fe16fe1487389a88b2888e96bc55e45d93.glb +0 -0
  277. package/corpus/handwritten/blobs/glb/4ed23469bd2b6b73183564cfc80a1ebcd0ffe2666a90a556752af0ca147fd2f7.glb +0 -0
  278. package/corpus/handwritten/blobs/glb/4fe74a1bed6b67129885b90cfcae01b5ca82e23e6d40507e280f02fca7fda54f.glb +0 -0
  279. package/corpus/handwritten/blobs/glb/50521bb3a50cc7199d324a0b25bc167c2e9d69770cb500490428efefc81ce3ea.glb +0 -0
  280. package/corpus/handwritten/blobs/glb/5ecca36d1e503edc092af0ef42f139cdcad99b8c2008318eb6ad337023d57296.glb +0 -0
  281. package/corpus/handwritten/blobs/glb/60fc036925852568cdb1b9fb85218dc43a8bf2ed86d3971a221ad942ece203a7.glb +0 -0
  282. package/corpus/handwritten/blobs/glb/611633cee0e5822b744486e6dff5414ad5b159eaabffe1c0ba0bb68be794bfa1.glb +0 -0
  283. package/corpus/handwritten/blobs/glb/67c7f983a0bcb9f84425378acac121a53f30795dce3181643bc1b763d0ae80b5.glb +0 -0
  284. package/corpus/handwritten/blobs/glb/6ecc0d307030943727484b49b1872643479c55ccc92252fca06e9e3cbe98fa90.glb +0 -0
  285. package/corpus/handwritten/blobs/glb/774b366df4de56cb6f9e3c904f02ec98016ac2ec489dc9e214b09220fca2f8e5.glb +0 -0
  286. package/corpus/handwritten/blobs/glb/785bae514ffc029e611d602259db7d37cbef589409a0814b9d37175d8b6c0a45.glb +0 -0
  287. package/corpus/handwritten/blobs/glb/79e79524efb2830e90af3c945c5b36ef07c1a38f2da2958112203a99eac52a16.glb +0 -0
  288. package/corpus/handwritten/blobs/glb/7bebdcdaf0be30d9f8d21bde72af68c32d825d12dc668f48109223ed7ff71c9f.glb +0 -0
  289. package/corpus/handwritten/blobs/glb/7d8b5ec9326a11362b3f9fa3409cb59d11b99f549cc304319c63c1ec55cbf5ab.glb +0 -0
  290. package/corpus/handwritten/blobs/glb/82e886f826315e4bf962363165fadadd3d93f85132c1909095045e0a7ccc0b34.glb +0 -0
  291. package/corpus/handwritten/blobs/glb/84b4ef190c3994ae7ca1b1f7a936526d1d20ad7deac13f949e3fe6bb7ba139ed.glb +0 -0
  292. package/corpus/handwritten/blobs/glb/85b7153e943fbe8c659bd6e4b323511dc6f6e2c7a3a1185e7a9a29ea6ddfdfa6.glb +0 -0
  293. package/corpus/handwritten/blobs/glb/85cf2d2be91cedbaf454ca42ad53c0c17b311088528d274695dbcea490d6c684.glb +0 -0
  294. package/corpus/handwritten/blobs/glb/8662b4cdc626c61a45e63f71dc866746c083cd0d4644b817a373105f936a7047.glb +0 -0
  295. package/corpus/handwritten/blobs/glb/8a4d33bfbb17d865e5deb0a0bdf3de67fc2312950a7568ed2635c22fbe4b1ecf.glb +0 -0
  296. package/corpus/handwritten/blobs/glb/8b11171d41c9027411ca8b87797d9ec70355471bdd3a247c114c49b8b781bbd9.glb +0 -0
  297. package/corpus/handwritten/blobs/glb/9026e1c4f0250832b69a989e69fe3071e5cad72adfe9c22ce11c409b18bb3357.glb +0 -0
  298. package/corpus/handwritten/blobs/glb/945b946f17b6393ea040230641c3083678bb6ab42e1d7239aeb9c950d0e7d5bb.glb +0 -0
  299. package/corpus/handwritten/blobs/glb/9afab455d603f1f8a38074c5a6cbed26d7d7f2cfd8a531820bd165d4b37399ee.glb +0 -0
  300. package/corpus/handwritten/blobs/glb/a6d702fb1be1095517625bfb2a2383f5f9638775059fd7e0d093d2044651b848.glb +0 -0
  301. package/corpus/handwritten/blobs/glb/aae479c2f99848998a1b499bbcad815d971349c2442bc363786aef63baad4337.glb +0 -0
  302. package/corpus/handwritten/blobs/glb/b155bd41f260d5303e293d691b657e0fb9b9c8b2f8aa589a0187061baa033eb7.glb +0 -0
  303. package/corpus/handwritten/blobs/glb/b1e8b770d99e8ca4396f21fd512f632c587149fc13db69deba388f702a46982f.glb +0 -0
  304. package/corpus/handwritten/blobs/glb/b382c318a5baac35da59a7b99ebaad6992e30c4bac327e85851ce0b2f89aa58b.glb +0 -0
  305. package/corpus/handwritten/blobs/glb/ba4478198696802808262af9bbfc224fe37e24e3f8c13de91debc87d3e1a9d41.glb +0 -0
  306. package/corpus/handwritten/blobs/glb/baf02cd967d1bf3c6a2ae878f4ca4ed34d0c39302ca2b8b6e3560a4e87b5c16f.glb +0 -0
  307. package/corpus/handwritten/blobs/glb/bc14dd152815ea6ed39458dcf89f2d69173d61d6e2b57be99d31ce2da64ccf67.glb +0 -0
  308. package/corpus/handwritten/blobs/glb/bc4e4d3bcf7ace855183efec0fbf242d444a32714d8b2fd8a45fa7b539ef2c73.glb +0 -0
  309. package/corpus/handwritten/blobs/glb/bc53475e2aa2fc9c2c0574b36a449fd57259c462d771e2b360def5c338d37c26.glb +0 -0
  310. package/corpus/handwritten/blobs/glb/c35d9e50f392c29f2587e3a6eb4f21143ba08e48d76a53b9de62d3b5be46c1a5.glb +0 -0
  311. package/corpus/handwritten/blobs/glb/c6911e059d3ac6aea75bc0ad3dd8b220704bfbba8ba98b57705e7aa3ecbe0050.glb +0 -0
  312. package/corpus/handwritten/blobs/glb/c84d88b6ed878490bcf9fa985b5e6a7a683de8ee7808ee4151a3b6a898fbe4f2.glb +0 -0
  313. package/corpus/handwritten/blobs/glb/c9d5d02ef0e38ac2898d3e6ecbc2ea0a6d2bd04531118550ab54b5e83293d7ec.glb +0 -0
  314. package/corpus/handwritten/blobs/glb/cd9d04e361e4c3d0aeb82f8682d71114ff8318b8fc4980bccee3c5e5c16afc27.glb +0 -0
  315. package/corpus/handwritten/blobs/glb/d32499928422a0cd1a32b1afaeacc31d2d84d74876f6805b36218dc04402a921.glb +0 -0
  316. package/corpus/handwritten/blobs/glb/dc7ea629fcddeba445599d73a5d721f4d5004e056c3c140baa3e6817393c6462.glb +0 -0
  317. package/corpus/handwritten/blobs/glb/dce79b59c85ca5a7f9fc25e585d253b15558f8f5d8497a76923c9071601de8b1.glb +0 -0
  318. package/corpus/handwritten/blobs/glb/e7fa1b02bae6c8d19ace0e8db44810beab9a1be9f8172d5816324760267d6d11.glb +0 -0
  319. package/corpus/handwritten/blobs/glb/eb664feed0fdcc3ac73cecbe737109994fe5dfad8a33997de88598965fa936ba.glb +0 -0
  320. package/corpus/handwritten/blobs/glb/ec6a771ca852b0b69e55a12df9d347384d01e611c8c6151ea771910f1601605d.glb +0 -0
  321. package/corpus/handwritten/blobs/glb/ede05013f575b4216d2b4b3f8a14d611ef28756f952f702bb169529c8ab02eff.glb +0 -0
  322. package/corpus/handwritten/blobs/glb/fec21fa96950340a1a031b31b37407468361ab0a7645c683e0d7773c18591a26.glb +0 -0
  323. package/corpus/handwritten/blobs/glb/ff21ea082bb00b01006900e7dbbb85220f31f45c144405c840a70872f9e09cb9.glb +0 -0
  324. package/corpus/handwritten/blobs/image/248fe9601e921305ffb35421414bc5f03e9f1b3dba15bf9b5c3387d8f255da17.png +0 -0
  325. package/corpus/handwritten/blobs/image/4b47420aff1ded28c9c6cf1eb92d6e2d7b01d057f2654654405445ff8d562e55.webp +0 -0
  326. package/corpus/handwritten/blobs/image/5dbc818ed0be692e6ba3df87898fd623280a2686eed5a538333e1325764b238d.png +0 -0
  327. package/corpus/handwritten/blobs/image/d5ae692911bbc2b60b5fdde239b70aad4ce9be0d7665c4a91b438de6077e21e3.jpg +0 -0
  328. package/corpus/handwritten/blobs/ktx2/df0dd2e8adc1d9479148bb198cb750471df454680cf0c9ffd6dc85d6262ed676.ktx2 +0 -0
  329. package/corpus/handwritten/blobs/wasm/ecc886d8bbebcf190298ff9162b6bb364f2125606f5bdc8cc220ea28044f96ea.wasm +0 -0
  330. package/corpus/handwritten/cook.json +1 -0
  331. package/corpus/handwritten/mounts/shardfiles/blender-template/discovery.json +1 -0
  332. package/corpus/handwritten/sections/actors/creatures.json +1 -0
  333. package/corpus/handwritten/sections/actors/crowds.json +1 -0
  334. package/corpus/handwritten/sections/actors/species.json +1 -0
  335. package/corpus/handwritten/sections/audio/audio.json +1 -0
  336. package/corpus/handwritten/sections/client/plan.json +1 -0
  337. package/corpus/handwritten/sections/combat/encounters.json +1 -0
  338. package/corpus/handwritten/sections/combat/items.json +1 -0
  339. package/corpus/handwritten/sections/combat/strikes.json +1 -0
  340. package/corpus/handwritten/sections/economy/ledger.json +1 -0
  341. package/corpus/handwritten/sections/economy/loot.json +1 -0
  342. package/corpus/handwritten/sections/look/look.json +1 -0
  343. package/corpus/handwritten/sections/look/map.json +1 -0
  344. package/corpus/handwritten/sections/look/materials.json +1 -0
  345. package/corpus/handwritten/sections/quests/quests.json +1 -0
  346. package/corpus/handwritten/sections/sim/client-scripts.json +1 -0
  347. package/corpus/handwritten/sections/sim/hooks.json +1 -0
  348. package/corpus/handwritten/sections/sim/plumbing.json +1 -0
  349. package/corpus/handwritten/sections/sim/sim.json +1 -0
  350. package/corpus/handwritten/sections/state/migrations.json +1 -0
  351. package/corpus/handwritten/sections/state/state.json +1 -0
  352. package/corpus/handwritten/sections/ui/card.json +1 -0
  353. package/corpus/handwritten/sections/ui/compendium.json +1 -0
  354. package/corpus/handwritten/sections/ui/level.json +1 -0
  355. package/corpus/handwritten/sections/ui/ui.json +1 -0
  356. package/corpus/handwritten/sections/world/collision.json +1 -0
  357. package/corpus/handwritten/sections/world/days.json +1 -0
  358. package/corpus/handwritten/sections/world/edge.json +1 -0
  359. package/corpus/handwritten/sections/world/movers.json +1 -0
  360. package/corpus/handwritten/sections/world/navigation.json +1 -0
  361. package/corpus/handwritten/sections/world/props.json +1 -0
  362. package/corpus/handwritten/sections/world/spawn.json +1 -0
  363. package/corpus/handwritten/sections/world/terrain.json +1 -0
  364. package/corpus/handwritten/sections/world/tiles.json +1 -0
  365. package/corpus/handwritten/sections/world/traversal.json +1 -0
  366. package/corpus/handwritten/sections/world/water.json +1 -0
  367. package/corpus/handwritten/sections/world/weather.json +1 -0
  368. package/corpus/handwritten/shard.json +1 -0
  369. package/corpus/handwritten/validation.json +1 -0
  370. package/package.json +508 -2
  371. package/packages/wire/src/net-command.ts +150 -0
  372. package/src/cli/bin.mjs +9 -0
  373. package/src/cli/main.ts +148 -0
  374. package/src/cli/pack.ts +262 -0
  375. package/src/cli/validate.ts +210 -0
  376. package/src/cli/version.ts +13 -0
  377. package/src/format/aacIndex.ts +160 -0
  378. package/src/format/accent.ts +35 -0
  379. package/src/format/achievementCounters.ts +22 -0
  380. package/src/format/actorMoves.ts +615 -0
  381. package/src/format/actorProjectionV2.ts +93 -0
  382. package/src/format/admissionControl.ts +66 -0
  383. package/src/format/admissionLate.ts +22 -0
  384. package/src/format/admissionLimits.ts +11 -0
  385. package/src/format/admissionServer.ts +30 -0
  386. package/src/format/ambientLife.ts +123 -0
  387. package/src/format/arenaRoomDocument.ts +114 -0
  388. package/src/format/arenaScriptRows.ts +107 -0
  389. package/src/format/arenaView.ts +30 -0
  390. package/src/format/assetAdmission.ts +279 -0
  391. package/src/format/audio-measure.ts +184 -0
  392. package/src/format/audio-mp4.ts +234 -0
  393. package/src/format/audio-rules.ts +295 -0
  394. package/src/format/audio-waiver.ts +55 -0
  395. package/src/format/audio.ts +463 -0
  396. package/src/format/audioBank.ts +37 -0
  397. package/src/format/audioProfiles.ts +501 -0
  398. package/src/format/audioRouting.ts +67 -0
  399. package/src/format/audioScene.ts +342 -0
  400. package/src/format/bakedTerrainBytes.ts +35 -0
  401. package/src/format/bakedTerrainSampling.ts +66 -0
  402. package/src/format/bakedTiles.ts +407 -0
  403. package/src/format/binarySource.ts +32 -0
  404. package/src/format/bodySlots.ts +90 -0
  405. package/src/format/bossEncounter.ts +354 -0
  406. package/src/format/bossProfiles.ts +709 -0
  407. package/src/format/bossSocketRig.ts +92 -0
  408. package/src/format/bowVariantRows.ts +68 -0
  409. package/src/format/brains.ts +252 -0
  410. package/src/format/budget.ts +214 -0
  411. package/src/format/buildings.ts +496 -0
  412. package/src/format/builtIndexes.ts +26 -0
  413. package/src/format/catalogueEconomy.ts +65 -0
  414. package/src/format/caveInterior.ts +225 -0
  415. package/src/format/cellBounds.ts +47 -0
  416. package/src/format/cellField.ts +98 -0
  417. package/src/format/chapterDirector.ts +193 -0
  418. package/src/format/clientChannels.ts +450 -0
  419. package/src/format/clientCues.ts +34 -0
  420. package/src/format/clientNative.ts +358 -0
  421. package/src/format/clientOwnership.ts +43 -0
  422. package/src/format/clientPlan.ts +306 -0
  423. package/src/format/clientScripts.ts +116 -0
  424. package/src/format/clientState.ts +273 -0
  425. package/src/format/clientTrails.ts +56 -0
  426. package/src/format/collectionDisplay.ts +232 -0
  427. package/src/format/colourFunction.ts +44 -0
  428. package/src/format/colourLut.ts +4 -0
  429. package/src/format/commonsCosts.ts +28 -0
  430. package/src/format/compendiumRows.ts +151 -0
  431. package/src/format/compendiumSketches.ts +23 -0
  432. package/src/format/completion.ts +83 -0
  433. package/src/format/contentBounds.ts +76 -0
  434. package/src/format/contentCost.ts +50 -0
  435. package/src/format/contracts.ts +305 -0
  436. package/src/format/cook-data.ts +148 -0
  437. package/src/format/cook-preparation.ts +241 -0
  438. package/src/format/coverAppearance.ts +53 -0
  439. package/src/format/creatures.ts +175 -0
  440. package/src/format/crowdPresentation.ts +87 -0
  441. package/src/format/crowds.ts +46 -0
  442. package/src/format/cueDirector.ts +134 -0
  443. package/src/format/dayCycle.ts +28 -0
  444. package/src/format/dayLook.ts +44 -0
  445. package/src/format/decisionBindings.ts +80 -0
  446. package/src/format/decisionPublication.ts +35 -0
  447. package/src/format/decisionScripts.ts +327 -0
  448. package/src/format/declaredQuestPage.ts +101 -0
  449. package/src/format/deviceMemoryCost.ts +50 -0
  450. package/src/format/director.ts +52 -0
  451. package/src/format/directorProduct.ts +27 -0
  452. package/src/format/directorStages.ts +165 -0
  453. package/src/format/directorWhen.ts +78 -0
  454. package/src/format/discoveryValues.ts +416 -0
  455. package/src/format/easedFields.ts +48 -0
  456. package/src/format/edgeProfiles.ts +40 -0
  457. package/src/format/eliteContinuation.ts +110 -0
  458. package/src/format/eliteEntryRows.ts +351 -0
  459. package/src/format/eliteFeature.ts +605 -0
  460. package/src/format/eliteScripts.ts +60 -0
  461. package/src/format/encounterRows.ts +1030 -0
  462. package/src/format/encounters.ts +65 -0
  463. package/src/format/engine-music.ts +42 -0
  464. package/src/format/entryClearance.ts +86 -0
  465. package/src/format/entryCoverage.ts +61 -0
  466. package/src/format/entryGeometry.ts +56 -0
  467. package/src/format/entryLanding.ts +83 -0
  468. package/src/format/entryReads.ts +45 -0
  469. package/src/format/entrywayAssets.ts +33 -0
  470. package/src/format/entryways.ts +58 -0
  471. package/src/format/exchange.ts +25 -0
  472. package/src/format/explorerCatalogue.ts +312 -0
  473. package/src/format/feature-sides.ts +233 -0
  474. package/src/format/fieldPresentation.ts +62 -0
  475. package/src/format/figures.ts +437 -0
  476. package/src/format/findsCatalogue.ts +67 -0
  477. package/src/format/fixedDraws.ts +24 -0
  478. package/src/format/flyers.ts +226 -0
  479. package/src/format/forestNativeInputs.ts +37 -0
  480. package/src/format/forestPage.ts +285 -0
  481. package/src/format/forestWeather.ts +333 -0
  482. package/src/format/geometryPack.ts +136 -0
  483. package/src/format/glbBuffers.ts +77 -0
  484. package/src/format/glbCost.ts +212 -0
  485. package/src/format/glbImages.ts +95 -0
  486. package/src/format/glbTriangles.ts +95 -0
  487. package/src/format/graphArmsRows.ts +200 -0
  488. package/src/format/grapple.ts +123 -0
  489. package/src/format/grazers.ts +164 -0
  490. package/src/format/grid-catalogue.ts +247 -0
  491. package/src/format/gridReadiness.ts +49 -0
  492. package/src/format/groupBrains.ts +249 -0
  493. package/src/format/heldArms.ts +576 -0
  494. package/src/format/heldEquipment.ts +78 -0
  495. package/src/format/heldFinishes.ts +415 -0
  496. package/src/format/heldGear.ts +68 -0
  497. package/src/format/heldJianDocument.ts +75 -0
  498. package/src/format/heldMelee.ts +866 -0
  499. package/src/format/heldView.ts +26 -0
  500. package/src/format/heldWeaponDocuments.ts +36 -0
  501. package/src/format/herdShelter.ts +58 -0
  502. package/src/format/hooks.ts +45 -0
  503. package/src/format/immutable.ts +59 -0
  504. package/src/format/inputDeclarations.ts +157 -0
  505. package/src/format/islandLibrary.ts +51 -0
  506. package/src/format/issue-codes.ts +262 -0
  507. package/src/format/items.ts +229 -0
  508. package/src/format/json.ts +143 -0
  509. package/src/format/keyedSky.ts +314 -0
  510. package/src/format/kitFigure.ts +68 -0
  511. package/src/format/ktx2Cost.ts +47 -0
  512. package/src/format/ledger.ts +56 -0
  513. package/src/format/liftApproach.ts +75 -0
  514. package/src/format/liftRider.ts +10 -0
  515. package/src/format/lightEmitters.ts +105 -0
  516. package/src/format/lights.ts +135 -0
  517. package/src/format/limbCollision.ts +136 -0
  518. package/src/format/limbPopulation.ts +33 -0
  519. package/src/format/limbRig.ts +202 -0
  520. package/src/format/loadout.ts +156 -0
  521. package/src/format/look-light.ts +153 -0
  522. package/src/format/lootBag.ts +145 -0
  523. package/src/format/lootEconomy.ts +235 -0
  524. package/src/format/materialFamilies.ts +565 -0
  525. package/src/format/materialGraph.ts +1220 -0
  526. package/src/format/materials.ts +449 -0
  527. package/src/format/memoryAdmission.ts +84 -0
  528. package/src/format/memoryGates.json +7 -0
  529. package/src/format/meshCollision.ts +56 -0
  530. package/src/format/meshCollisionAssets.ts +19 -0
  531. package/src/format/meshCollisionBytes.ts +102 -0
  532. package/src/format/meshEntryways.ts +54 -0
  533. package/src/format/meshopt-decoder.wasm +0 -0
  534. package/src/format/meshopt-module.ts +177 -0
  535. package/src/format/meshopt-static.mjs +11 -0
  536. package/src/format/meshopt-wasm.ts +61 -0
  537. package/src/format/migrations.ts +209 -0
  538. package/src/format/minimap.ts +1052 -0
  539. package/src/format/mixedPopulation.ts +222 -0
  540. package/src/format/modes.ts +304 -0
  541. package/src/format/mountedSpecimenRows.ts +64 -0
  542. package/src/format/moverLifecycle.ts +34 -0
  543. package/src/format/moverMotion.ts +271 -0
  544. package/src/format/movers.ts +224 -0
  545. package/src/format/namedJsonContracts.ts +423 -0
  546. package/src/format/nativeActors.ts +45 -0
  547. package/src/format/nativeAssembly.ts +141 -0
  548. package/src/format/nativeGround.ts +37 -0
  549. package/src/format/nativeGroundAssets.ts +35 -0
  550. package/src/format/nativeItems.ts +184 -0
  551. package/src/format/nativePhysics.ts +140 -0
  552. package/src/format/nativeQuestComposition.ts +398 -0
  553. package/src/format/nativeRiding.ts +103 -0
  554. package/src/format/nativeRuntimePlan.ts +89 -0
  555. package/src/format/navigation.ts +99 -0
  556. package/src/format/navigationBytes.ts +111 -0
  557. package/src/format/nearPlaceholder.ts +111 -0
  558. package/src/format/nearPlaceholderAssets.ts +23 -0
  559. package/src/format/netCommand.ts +11 -0
  560. package/src/format/npcs.ts +546 -0
  561. package/src/format/outputAddress.ts +11 -0
  562. package/src/format/outputDownload.ts +34 -0
  563. package/src/format/outputFields.ts +123 -0
  564. package/src/format/outputIndex.ts +352 -0
  565. package/src/format/overdraw.ts +41 -0
  566. package/src/format/pageLife.ts +303 -0
  567. package/src/format/pagePreparation.ts +60 -0
  568. package/src/format/paintedLook.ts +55 -0
  569. package/src/format/paintedResources.ts +158 -0
  570. package/src/format/panelTemplate.ts +139 -0
  571. package/src/format/placeholderSource.ts +209 -0
  572. package/src/format/platformDataSections.ts +146 -0
  573. package/src/format/platformFileFamilies.ts +299 -0
  574. package/src/format/plumbing.ts +165 -0
  575. package/src/format/populationEnvironment.ts +210 -0
  576. package/src/format/populationKeeper.ts +163 -0
  577. package/src/format/populationProjection.ts +496 -0
  578. package/src/format/populationRespawn.ts +48 -0
  579. package/src/format/populationRoster.ts +158 -0
  580. package/src/format/portalFloor.ts +56 -0
  581. package/src/format/portalLink.ts +112 -0
  582. package/src/format/portalLinkAssets.ts +42 -0
  583. package/src/format/portalRide.ts +22 -0
  584. package/src/format/postGraphDocument.ts +36 -0
  585. package/src/format/postGraphLook.ts +477 -0
  586. package/src/format/postStack.ts +114 -0
  587. package/src/format/practiceCourseRows.ts +466 -0
  588. package/src/format/preflight.ts +155 -0
  589. package/src/format/presentation.ts +33 -0
  590. package/src/format/product-audio.ts +76 -0
  591. package/src/format/product-reads.ts +178 -0
  592. package/src/format/product-stream-admit.ts +114 -0
  593. package/src/format/product-stream-assets.ts +511 -0
  594. package/src/format/product-stream-facts.ts +208 -0
  595. package/src/format/product-stream-miss.ts +15 -0
  596. package/src/format/product-stream-node.ts +47 -0
  597. package/src/format/product-stream-packs.ts +247 -0
  598. package/src/format/product-stream-rows.ts +234 -0
  599. package/src/format/product-stream-tar.ts +204 -0
  600. package/src/format/product-stream.ts +297 -0
  601. package/src/format/product.ts +366 -0
  602. package/src/format/productValidation.ts +236 -0
  603. package/src/format/propMaterials.ts +254 -0
  604. package/src/format/props.ts +137 -0
  605. package/src/format/questContinuation.ts +42 -0
  606. package/src/format/questFigures.ts +227 -0
  607. package/src/format/questGraph.ts +30 -0
  608. package/src/format/questHost.ts +314 -0
  609. package/src/format/questInteractionSource.ts +57 -0
  610. package/src/format/questInteractions.ts +642 -0
  611. package/src/format/questPageComposition.ts +92 -0
  612. package/src/format/questPageFacets.ts +121 -0
  613. package/src/format/questRuntime.ts +118 -0
  614. package/src/format/questSteps.ts +182 -0
  615. package/src/format/questStory.ts +512 -0
  616. package/src/format/questStoryBindings.ts +43 -0
  617. package/src/format/questWorld.ts +36 -0
  618. package/src/format/quests.ts +333 -0
  619. package/src/format/rainPresentation.ts +131 -0
  620. package/src/format/rangedPage.ts +117 -0
  621. package/src/format/receipt-cost.ts +71 -0
  622. package/src/format/registeredJson.ts +530 -0
  623. package/src/format/returnProgramDocument.ts +40 -0
  624. package/src/format/returnProjectionV2.ts +84 -0
  625. package/src/format/riding.ts +377 -0
  626. package/src/format/riggedHulls.ts +160 -0
  627. package/src/format/roamingBossProjection.ts +178 -0
  628. package/src/format/roamingCombat.ts +22 -0
  629. package/src/format/ropeDeckSite.ts +148 -0
  630. package/src/format/rows.ts +86 -0
  631. package/src/format/runtime.ts +38 -0
  632. package/src/format/runtimeBinds.ts +49 -0
  633. package/src/format/runtimeCost.ts +80 -0
  634. package/src/format/runtimeSpawns.ts +73 -0
  635. package/src/format/scalarChannel.ts +38 -0
  636. package/src/format/scaledPost.ts +27 -0
  637. package/src/format/scaledPostContract.ts +51 -0
  638. package/src/format/sceneBuffers.ts +122 -0
  639. package/src/format/sceneDraws.ts +89 -0
  640. package/src/format/sceneDressing.ts +247 -0
  641. package/src/format/sceneInstances.ts +192 -0
  642. package/src/format/sceneMotion.ts +122 -0
  643. package/src/format/sceneRefs.ts +71 -0
  644. package/src/format/sceneSources.ts +730 -0
  645. package/src/format/script-side-grandfather.ts +62 -0
  646. package/src/format/script-sides.ts +289 -0
  647. package/src/format/scriptAbi.ts +14 -0
  648. package/src/format/scriptAbiV1.ts +56 -0
  649. package/src/format/scriptActionsV2.ts +101 -0
  650. package/src/format/scriptAdmission.ts +165 -0
  651. package/src/format/scriptAdmissionV2.ts +126 -0
  652. package/src/format/scriptContract.ts +170 -0
  653. package/src/format/scriptFuelV2.ts +124 -0
  654. package/src/format/scriptGroupBankV2.ts +54 -0
  655. package/src/format/scriptGroupStepV2.ts +165 -0
  656. package/src/format/scriptInputStateV2.ts +52 -0
  657. package/src/format/scriptLimits.ts +5 -0
  658. package/src/format/scriptMemoryV2.ts +17 -0
  659. package/src/format/scriptModuleV2.ts +116 -0
  660. package/src/format/scriptObservationColumnsV2.ts +226 -0
  661. package/src/format/scriptQueriesV2.ts +164 -0
  662. package/src/format/scriptQueryStateV2.ts +40 -0
  663. package/src/format/scriptRngV2.ts +52 -0
  664. package/src/format/scriptWireV2.ts +106 -0
  665. package/src/format/scripts.ts +31 -0
  666. package/src/format/sections.ts +140 -0
  667. package/src/format/shardSchema.ts +632 -0
  668. package/src/format/shardSections.ts +383 -0
  669. package/src/format/sketch.ts +79 -0
  670. package/src/format/skin-materials.ts +172 -0
  671. package/src/format/skinAssets.ts +107 -0
  672. package/src/format/skinData.ts +110 -0
  673. package/src/format/skinLayers.ts +90 -0
  674. package/src/format/skins.ts +37 -0
  675. package/src/format/socketLift.ts +58 -0
  676. package/src/format/socketLiftAssets.ts +81 -0
  677. package/src/format/socketRigCreature.ts +66 -0
  678. package/src/format/sourceResidency.ts +16 -0
  679. package/src/format/spawnCombat.ts +26 -0
  680. package/src/format/spawnScriptV2.ts +145 -0
  681. package/src/format/spawnScripts.ts +229 -0
  682. package/src/format/spawnTables.ts +46 -0
  683. package/src/format/spawnView.ts +26 -0
  684. package/src/format/speciesActorsFile.ts +86 -0
  685. package/src/format/speciesBookRows.ts +84 -0
  686. package/src/format/speciesBrain.ts +96 -0
  687. package/src/format/speciesLooks.ts +1021 -0
  688. package/src/format/speciesPrograms.ts +97 -0
  689. package/src/format/speciesScripts.ts +45 -0
  690. package/src/format/specimenCatalogue.ts +94 -0
  691. package/src/format/splatTerrain.ts +192 -0
  692. package/src/format/standalone-catalogue.ts +144 -0
  693. package/src/format/standaloneControl.ts +44 -0
  694. package/src/format/state.ts +61 -0
  695. package/src/format/stateLineage.ts +71 -0
  696. package/src/format/stealth.ts +106 -0
  697. package/src/format/stillImage.ts +135 -0
  698. package/src/format/streamedCover.ts +105 -0
  699. package/src/format/surfaceLooks.ts +50 -0
  700. package/src/format/tar-fields.ts +54 -0
  701. package/src/format/tar-paths.ts +104 -0
  702. package/src/format/tar-source.ts +13 -0
  703. package/src/format/tar-write.ts +152 -0
  704. package/src/format/tar.ts +204 -0
  705. package/src/format/targets.ts +217 -0
  706. package/src/format/terrain.ts +241 -0
  707. package/src/format/terrainTileBytes.ts +104 -0
  708. package/src/format/tierSelection.ts +195 -0
  709. package/src/format/toonLighting.ts +32 -0
  710. package/src/format/toonLook.ts +332 -0
  711. package/src/format/trail.ts +17 -0
  712. package/src/format/traversal.ts +13 -0
  713. package/src/format/treeSetRows.ts +93 -0
  714. package/src/format/ui.ts +90 -0
  715. package/src/format/uiStrings.ts +17 -0
  716. package/src/format/uniformRows.ts +31 -0
  717. package/src/format/upload-wire.ts +184 -0
  718. package/src/format/validationReceipt.ts +142 -0
  719. package/src/format/version.ts +9 -0
  720. package/src/format/vertexWear.ts +45 -0
  721. package/src/format/viewProgram.ts +329 -0
  722. package/src/format/voicePatches.ts +47 -0
  723. package/src/format/water.ts +247 -0
  724. package/src/format/waterWaves.ts +7 -0
  725. package/src/format/waterWorld.ts +34 -0
  726. package/src/format/weaponProfiles.ts +1315 -0
  727. package/src/format/weatherBundle.ts +36 -0
  728. package/src/format/weatherEffects.ts +78 -0
  729. package/src/format/weatherProgram.ts +422 -0
  730. package/src/format/wildlifePopulation.ts +210 -0
  731. package/src/format/wireLimits.ts +9 -0
  732. package/src/format/worldAssembly.ts +104 -0
  733. package/src/format/worldEntry.ts +151 -0
  734. package/src/format/worldPhysics.ts +292 -0
  735. package/src/format/worldSceneBatch.ts +106 -0
  736. package/src/format/worldSceneModels.ts +79 -0
  737. package/src/format/worldScenePages.ts +89 -0
  738. package/src/format/worldScenePlacement.ts +191 -0
  739. package/src/format/worldSceneSlabs.ts +43 -0
  740. package/src/format/worldSceneSurface.ts +113 -0
  741. package/src/format/worldSceneWeld.ts +702 -0
  742. package/src/format/worldScenes.ts +184 -0
  743. package/src/format/worldTargets.ts +111 -0
  744. package/src/format/worldUpdates.ts +229 -0
  745. package/src/hook/format-hook.d.mts +2 -0
  746. package/src/hook/format-hook.mjs +47 -0
  747. package/src/tools/runtime-hosts.json +497 -0
  748. package/README.md +0 -8
@@ -0,0 +1,241 @@
1
+ import * as v from 'valibot';
2
+ import { CELL_ABOVE, CELL_BELOW } from './contentBounds.ts';
3
+ import { WaterBodySchema,WaterBodyIdSchema,waterBodiesOrdered } from './water.ts';
4
+ import { isJsonData } from './json.ts';
5
+ import { ScalarChannelSchema,ScalarLatticeSchema } from './scalarChannel.ts';
6
+
7
+ const ref = v.pipe(v.string(), v.regex(/^[a-f0-9]{64}$/u));
8
+ const address = v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(7));
9
+ /**
10
+ * The terrain tiles' shadow flags: `cast` lets an L0 tile inside the client's shadow disc cast, `receive` lets every tile
11
+ * receive. Absent: both on (the default every shard drew with before the row).
12
+ */
13
+ const shadow = v.strictObject({ cast: v.boolean(), receive: v.boolean() });
14
+ /** How far (m) the viewer moves before the client's tile residency re-centres; absent: 5 m (the data client's `FOLLOW`). */
15
+ const follow = v.pipe(v.number(), v.finite(), v.minValue(1), v.maxValue(62.5));
16
+ /** A separate original lattice used only for native placement queries; it never installs collision. */
17
+ const sampling = v.strictObject({ law: v.literal('bilinear'), file: ref,
18
+ normalEpsilon: v.pipe(v.number(), v.finite(), v.minValue(0.001), v.maxValue(4)),
19
+ datum: v.pipe(v.number(), v.finite(), v.minValue(-CELL_BELOW), v.maxValue(CELL_ABOVE)) });
20
+ /**
21
+ * The tiles' draw order among the opaque surfaces (three's renderOrder): a lower order draws first, so it decides which
22
+ * surface wins where two lie at the same depth (a ground drawn before a far horizon ring). Absent: -1, the ground first
23
+ * (game/shardfile/clientViews.ts `TERRAIN_ORDER`).
24
+ */
25
+ const order = v.pipe(v.number(), v.integer(), v.minValue(-100), v.maxValue(100));
26
+ /** The terrain's render files address the ordinary tile grid; the collider file is a separate critical sim root. */
27
+ const renderedTerrain: v.GenericSchema<RenderedTerrainRowsInput, RenderedTerrainRows> = v.pipe(v.strictObject({ version: v.literal(1), form: v.exactOptional(v.literal('render')), family: v.pipe(v.string(), v.regex(/^[a-z][a-z0-9.-]*$/u)), collider: ref,
28
+ tiles: v.pipe(v.array(v.strictObject({ lod: v.picklist([0, 1]), x: address, z: address, file: ref })), v.length(80)),
29
+ shadow: v.exactOptional(shadow), follow: v.exactOptional(follow), sampling: v.exactOptional(sampling), order: v.exactOptional(order) }),
30
+ v.check((terrain) => new Set(terrain.tiles.map((tile) => `${tile.lod}/${tile.x}/${tile.z}`)).size === 80 && terrain.tiles.every((tile) => tile.x < (tile.lod === 0 ? 8 : 4) && tile.z < (tile.lod === 0 ? 8 : 4)), 'complete terrain tile grids'));
31
+ const queryTerrain: v.GenericSchema<QueryTerrainRowsInput, QueryTerrainRows> & { readonly pipe: readonly [unknown, v.TransformAction<Omit<QueryTerrainRows, 'collider'> & { collider?: string }, QueryTerrainRows>] } = v.pipe(v.strictObject({ version: v.literal(1), form: v.literal('query'),
32
+ family: v.optional(v.pipe(v.string(), v.regex(/^[a-z][a-z0-9.-]*$/u)), 'toon'), collider: v.exactOptional(ref),
33
+ tiles: v.pipe(v.array(v.strictObject({ lod: v.picklist([0, 1]), x: address, z: address, file: ref })), v.length(0)),
34
+ sampling, shadow: v.exactOptional(shadow), follow: v.exactOptional(follow), order: v.exactOptional(order) }),
35
+ v.transform((row) => ({ ...row, collider: row.collider ?? row.sampling.file })));
36
+ /** Rendered terrain retains its original defaults; query terrain has no render tiles and requires a runtime terrain owner.
37
+ * An omitted query collider reference derives from sampling.file; this does not allocate collision. */
38
+ export const TerrainSchema: v.UnionSchema<[typeof renderedTerrain, typeof queryTerrain], undefined> = v.union([renderedTerrain, queryTerrain]);
39
+ /** A validated terrain section, containing no landscape closures. */
40
+
41
+
42
+ const metre = v.pipe(v.number(), v.finite(), v.minValue(-1000), v.maxValue(1000));
43
+ const groundPoint = v.tuple([metre, metre]);
44
+ const seed = v.pipe(v.number(), v.integer(), v.minValue(0), v.maxValue(0xffffffff));
45
+ /**
46
+ * A hybrid shard's declared ground (G4): its baked terrain by key and seed, the trails, pads and pond its terrain metadata
47
+ * reads (grading masks, grass and forest clearings), its rest water level and render datum. Ordinary bodies use the
48
+ * shardfile's water grammar; a ground-only basin borrows this field's mask and live water level. The game builds the
49
+ * manifest ground from these rows (`declaredGround`); no shard code. Generated from the shard's own layout.
50
+ */
51
+ export const GroundRowsSchema: v.GenericSchema<GroundRowsInput, GroundRows> = v.pipe(v.unknown(),v.check(isJsonData,'Ground rows require plain JSON'),v.strictObject({
52
+ /** the baked terrain field by key, or a flat placement datum at `flat` (a structure-first world's ground) */
53
+ terrain: v.union([v.strictObject({ key: v.pipe(v.string(), v.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/u)), seed }), v.strictObject({ flat: metre, seed })]),
54
+ trails: v.pipe(v.array(v.pipe(v.array(groundPoint), v.minLength(2), v.maxLength(256))), v.maxLength(64)),
55
+ cabinSites: v.pipe(v.array(v.strictObject({ x: metre, z: metre, rot: v.pipe(v.number(), v.finite()) })), v.maxLength(64)),
56
+ pond: v.exactOptional(v.strictObject({ x: metre, z: metre, r: v.pipe(metre, v.minValue(0)) })),
57
+ water: metre,
58
+ datum: v.exactOptional(v.pipe(v.number(), v.finite(), v.minValue(-CELL_BELOW), v.maxValue(CELL_ABOVE))),
59
+ /** A sampled pond has the original clamped native lattice, never an implied cell-edge clip. */
60
+ mask: v.exactOptional(ScalarLatticeSchema),
61
+ bodies: v.pipe(v.array(v.union([WaterBodySchema,v.strictObject({ id: WaterBodyIdSchema,kind: v.literal('terrain-basin') })])),
62
+ v.maxLength(64),v.check(rows => waterBodiesOrdered(rows),'unique water ids and sea last')),
63
+ /** the shard's own runtime grades its paths (the plugin's `paths`), as the manifest ground declares */
64
+ paths: v.exactOptional(v.literal('plugin')),
65
+ }),v.check(row => row.pond === undefined || row.mask === undefined,'Geometric pond and sampled mask are exclusive'));
66
+
67
+
68
+ const finite = v.pipe(v.number(), v.finite());
69
+ /** A declared forest's exact candidate answers (the manifest's `forestQueries`, G4): every jittered sample's density, scale
70
+ * and species mix, read from a generated geography file's `forest` rows (its other rows are not read). */
71
+ const forestCandidate = v.strictObject({ x: finite,z: finite,density: finite,
72
+ scale: finite,species: v.record(v.pipe(v.string(),v.minLength(1),v.maxLength(64)),finite) });
73
+ export const ForestRowsSchema: v.GenericSchema<ForestRowsInput, ForestRows> = v.union([
74
+ v.object({ forest: v.pipe(v.array(forestCandidate),v.maxLength(65536)),density: v.exactOptional(v.never()) }),
75
+ v.pipe(v.object({ forest: v.pipe(v.array(v.omit(forestCandidate,['density'])),v.maxLength(65536)),density: ScalarChannelSchema }),
76
+ v.check(rows => rows.density.type === 'f64' && rows.density.count === rows.forest.length,'Forest density requires one f64 per candidate')),
77
+ ]);
78
+ /** A declared clip (the manifest's `pondClip`, G4): the pond surface's grid (`segs` cells a side of `cell` m from its corner
79
+ * `x0`, `z0`) and the row-major indices of the cells another water body draws instead. */
80
+ export const PondClipSchema: v.GenericSchema<PondClipRowsInput, PondClipRows> = v.strictObject({ x0: finite, z0: finite, cell: v.pipe(finite, v.minValue(Number.MIN_VALUE)),
81
+ segs: v.pipe(v.number(), v.integer(), v.minValue(1), v.maxValue(1024)), cells: v.pipe(v.array(v.pipe(v.number(), v.integer(), v.minValue(0))), v.maxLength(65536)) });
82
+
83
+ /** Admitted data contracts, independent of validator implementation metadata. */
84
+ export type RenderedTerrainRowsInput = RenderedTerrainRows;
85
+ interface RenderedTerrainRowsFields {
86
+ version: 1;
87
+ form?: 'render';
88
+ family: string;
89
+ collider: string;
90
+ tiles: ({
91
+ lod: 0 | 1;
92
+ x: number;
93
+ z: number;
94
+ file: string;
95
+ })[];
96
+ shadow?: {
97
+ cast: boolean;
98
+ receive: boolean;
99
+ };
100
+ follow?: number;
101
+ sampling?: {
102
+ law: 'bilinear';
103
+ file: string;
104
+ normalEpsilon: number;
105
+ datum: number;
106
+ };
107
+ order?: number;
108
+ }
109
+ export type RenderedTerrainRows = { [Key in keyof RenderedTerrainRowsFields]: RenderedTerrainRowsFields[Key] };
110
+ interface QueryTerrainRowsInputFields {
111
+ version: 1;
112
+ form: 'query';
113
+ family?: string | undefined;
114
+ collider?: string;
115
+ tiles: ({
116
+ lod: 0 | 1;
117
+ x: number;
118
+ z: number;
119
+ file: string;
120
+ })[];
121
+ sampling: {
122
+ law: 'bilinear';
123
+ file: string;
124
+ normalEpsilon: number;
125
+ datum: number;
126
+ };
127
+ shadow?: {
128
+ cast: boolean;
129
+ receive: boolean;
130
+ };
131
+ follow?: number;
132
+ order?: number;
133
+ }
134
+ export type QueryTerrainRowsInput = { [Key in keyof QueryTerrainRowsInputFields]: QueryTerrainRowsInputFields[Key] };
135
+ export type QueryTerrainRows = Omit<{
136
+ version: 1;
137
+ form: 'query';
138
+ family: string;
139
+ collider?: string;
140
+ tiles: ({
141
+ lod: 0 | 1;
142
+ x: number;
143
+ z: number;
144
+ file: string;
145
+ })[];
146
+ sampling: {
147
+ law: 'bilinear';
148
+ file: string;
149
+ normalEpsilon: number;
150
+ datum: number;
151
+ };
152
+ shadow?: {
153
+ cast: boolean;
154
+ receive: boolean;
155
+ };
156
+ follow?: number;
157
+ order?: number;
158
+ }, 'collider'> & {
159
+ collider: string;
160
+ };
161
+ export type ShardTerrain = (RenderedTerrainRows) | (QueryTerrainRows);
162
+ export type GroundRowsInput = unknown;
163
+ interface GroundRowsFields {
164
+ terrain: ({
165
+ key: string;
166
+ seed: number;
167
+ }) | ({
168
+ flat: number;
169
+ seed: number;
170
+ });
171
+ trails: (([
172
+ number,
173
+ number
174
+ ])[])[];
175
+ cabinSites: ({
176
+ x: number;
177
+ z: number;
178
+ rot: number;
179
+ })[];
180
+ pond?: {
181
+ x: number;
182
+ z: number;
183
+ r: number;
184
+ };
185
+ water: number;
186
+ datum?: number;
187
+ mask?: v.InferOutput<typeof ScalarLatticeSchema>;
188
+ bodies: ((v.InferOutput<typeof WaterBodySchema>) | ({
189
+ id: v.InferOutput<typeof WaterBodyIdSchema>;
190
+ kind: 'terrain-basin';
191
+ }))[];
192
+ paths?: 'plugin';
193
+ }
194
+ export type GroundRows = { [Key in keyof GroundRowsFields]: GroundRowsFields[Key] };
195
+ export type ForestRowsInput = ({
196
+ forest: ({
197
+ x: number;
198
+ z: number;
199
+ density: number;
200
+ scale: number;
201
+ species: Record<string, number>;
202
+ })[];
203
+ density?: never;
204
+ }) | ({
205
+ forest: (Omit<{
206
+ x: number;
207
+ z: number;
208
+ density: number;
209
+ scale: number;
210
+ species: Record<string, number>;
211
+ }, 'density'>)[];
212
+ density: v.InferInput<typeof ScalarChannelSchema>;
213
+ });
214
+ export type ForestRows = ({
215
+ forest: ({
216
+ x: number;
217
+ z: number;
218
+ density: number;
219
+ scale: number;
220
+ species: Record<string, number>;
221
+ })[];
222
+ density?: never;
223
+ }) | ({
224
+ forest: (Omit<{
225
+ x: number;
226
+ z: number;
227
+ density: number;
228
+ scale: number;
229
+ species: Record<string, number>;
230
+ }, 'density'>)[];
231
+ density: v.InferOutput<typeof ScalarChannelSchema>;
232
+ });
233
+ export type PondClipRowsInput = PondClipRows;
234
+ interface PondClipRowsFields {
235
+ x0: number;
236
+ z0: number;
237
+ cell: number;
238
+ segs: number;
239
+ cells: (number)[];
240
+ }
241
+ export type PondClipRows = { [Key in keyof PondClipRowsFields]: PondClipRowsFields[Key] };
@@ -0,0 +1,104 @@
1
+ import type { BakedGrid } from './bakedTerrainBytes.ts';
2
+ import { isJsonData } from './json.ts';
3
+ import { CELL_ABOVE, CELL_BELOW, CHUNK_HALF } from './contentBounds.ts';
4
+ import { bakedSamplers, type BakedTerrainSamplers } from './bakedTerrainSampling.ts';
5
+
6
+ const MAGIC = 0x31545457, HEADER = 32;
7
+ /** Baked row-major heights in a shard-local square; optional linear RGB values describe the rendered vertices. */
8
+ export interface TerrainTileData {
9
+ resolution: number; x: number; z: number; size: number;
10
+ heights: Float32Array; colours?: Float32Array;
11
+ /** Original normalized-on-query four-channel byte weights; absent preserves the existing wire bytes. */
12
+ splat?: Uint8Array;
13
+ }
14
+ function check(data: TerrainTileData): void {
15
+ const { resolution: r, x, z, size, heights, colours, splat } = data;
16
+ if (!Number.isInteger(r) || r < 2 || r > 257 || ![x, z, size].every(Number.isFinite) || size <= 0 || x < -CHUNK_HALF || z < -CHUNK_HALF || x + size > CHUNK_HALF || z + size > CHUNK_HALF || heights.length !== r * r || (colours !== undefined && colours.length !== r * r * 3) || (splat !== undefined && splat.length !== r * r * 4)) throw new Error('Invalid terrain dimensions');
17
+ // js-heap H9: plain loops (a per-sample callback boxed every float: ~3 MiB a boot)
18
+ for (let i = 0; i < heights.length; i++) { const h = heights[i] ?? Number.NaN; if (!(h >= -CELL_BELOW && h <= CELL_ABOVE)) throw new Error('Invalid terrain samples'); }
19
+ if (colours !== undefined) for (let i = 0; i < colours.length; i++) { const c = colours[i] ?? Number.NaN; if (!(c >= 0 && c <= 1)) throw new Error('Invalid terrain samples'); }
20
+ }
21
+ /** Recognise the terrain wire format before its full bounded decoder checks the payload. */
22
+ export function isTerrainTileData(bytes: Uint8Array): boolean {
23
+ return bytes.length >= 4 && new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(0, true) === MAGIC;
24
+ }
25
+ /** Encode version-one terrain using explicit little-endian floats, without host paths or timestamps. */
26
+ export function encodeTerrainTile(data: TerrainTileData): Uint8Array {
27
+ check(data);
28
+ const stride = 4 + (data.colours === undefined ? 0 : 12) + (data.splat === undefined ? 0 : 4);
29
+ const bytes = new Uint8Array(HEADER + data.heights.length * stride);
30
+ const view = new DataView(bytes.buffer);
31
+ view.setUint32(0, MAGIC, true); view.setUint16(4, 1, true); view.setUint16(6, data.resolution, true);
32
+ view.setUint32(8, (data.colours === undefined ? 0 : 1) | (data.splat === undefined ? 0 : 2), true);
33
+ view.setFloat32(12, data.x, true); view.setFloat32(16, data.z, true); view.setFloat32(20, data.size, true);
34
+ data.heights.forEach((height, i) => view.setFloat32(HEADER + i * 4, height, true));
35
+ data.colours?.forEach((colour, i) => view.setFloat32(HEADER + data.heights.length * 4 + i * 4, colour, true));
36
+ if (data.splat !== undefined) bytes.set(data.splat, HEADER + data.heights.length * (data.colours === undefined ? 4 : 16));
37
+ return bytes;
38
+ }
39
+ /** Finite centred query-grid dimensions; typed samples stay owned by the tile decoder. */
40
+ export interface TerrainSamplingRows { readonly resolution: number; readonly size: number; readonly seed: number }
41
+ function samplingGrid(data: TerrainTileData, rows: TerrainSamplingRows): BakedGrid {
42
+ if (data.splat === undefined || data.colours !== undefined || data.resolution !== rows.resolution || data.size !== rows.size
43
+ || data.x !== -rows.size/2 || data.z !== -rows.size/2) throw new Error('Invalid terrain sampling profile');
44
+ return { res: data.resolution,size: data.size,seed: rows.seed,landscapeHash: 0,heights: data.heights,splat: data.splat,undergrowth: null };
45
+ }
46
+ /** Validate dimensions and exact byte counts before allocating sample arrays; reject unknown versions and flags.
47
+ * Optional strict sampling rows return the same decoded arrays in the native baked-grid shape, without another read. */
48
+ export function decodeTerrainTile(bytes: Uint8Array): TerrainTileData;
49
+ export function decodeTerrainTile(bytes: Uint8Array | undefined, sampling: TerrainSamplingRows): BakedGrid;
50
+ export function decodeTerrainTile(bytes: Uint8Array | undefined, sampling?: TerrainSamplingRows): TerrainTileData | BakedGrid {
51
+ if (sampling !== undefined && (!isJsonData(sampling) || Object.keys(sampling).sort().join(',') !== 'resolution,seed,size'
52
+ || !Number.isInteger(sampling.resolution) || sampling.resolution < 2 || sampling.resolution > 257
53
+ || !Number.isFinite(sampling.size) || sampling.size <= 0 || sampling.size > 500 || !Number.isFinite(sampling.seed))) throw new Error('Invalid terrain sampling rows');
54
+ if (bytes === undefined || bytes.length < HEADER || !isTerrainTileData(bytes)) throw new Error('Invalid terrain header');
55
+ const v = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength), r = v.getUint16(6, true), flags = v.getUint32(8, true);
56
+ const colour = (flags & 1) !== 0, splat = (flags & 2) !== 0;
57
+ if (v.getUint16(4, true) !== 1 || r < 2 || r > 257 || flags > 3 || v.getUint32(24, true) !== 0 || v.getUint32(28, true) !== 0 || bytes.length !== HEADER + r * r * (4 + (colour ? 12 : 0) + (splat ? 4 : 0))) throw new Error('Invalid terrain version or length');
58
+ const heights = new Float32Array(r * r);
59
+ for (let i = 0; i < heights.length; i++) heights[i] = v.getFloat32(HEADER + i * 4, true);
60
+ const data: TerrainTileData = { resolution: r, x: v.getFloat32(12, true), z: v.getFloat32(16, true), size: v.getFloat32(20, true), heights };
61
+ if (colour) {
62
+ const colours = new Float32Array(r * r * 3);
63
+ for (let i = 0; i < colours.length; i++) colours[i] = v.getFloat32(HEADER + r * r * 4 + i * 4, true);
64
+ data.colours = colours;
65
+ }
66
+ if (splat) data.splat = Uint8Array.from(bytes.subarray(HEADER + r * r * (colour ? 16 : 4)));
67
+ check(data); return sampling === undefined ? data : samplingGrid(data,sampling);
68
+ }
69
+ /** Sample the same diagonal split as Rapier heightfields, rather than a bilinear surface that differs from collision. */
70
+ export function terrainTileHeight(data: TerrainTileData, x: number, z: number, policy?: { layout?: 'column-major'; boundary?: 'clamp' }): number {
71
+ if (policy?.boundary !== 'clamp' && (!Number.isFinite(x) || !Number.isFinite(z) || x < data.x || z < data.z || x > data.x + data.size || z > data.z + data.size)) throw new Error('Point outside terrain');
72
+ const n = data.resolution - 1, column = policy?.layout === 'column-major', step = data.size / n;
73
+ const gridX = column ? (x - data.x) / step : (x - data.x) / data.size * n, gridZ = column ? (z - data.z) / step : (z - data.z) / data.size * n;
74
+ const gx = policy?.boundary === 'clamp' ? Math.min(n, Math.max(0, gridX)) : gridX, gz = policy?.boundary === 'clamp' ? Math.min(n, Math.max(0, gridZ)) : gridZ;
75
+ const ix = Math.min(n - 1, Math.floor(gx)), iz = Math.min(n - 1, Math.floor(gz)), u = gx - ix, v = gz - iz;
76
+ const base = column ? ix * data.resolution + iz : iz * data.resolution + ix;
77
+ const xStep = column ? data.resolution : 1, zStep = column ? 1 : data.resolution, empty = column ? Number.NaN : 0;
78
+ const h10 = data.heights[base + xStep] ?? empty, h01 = data.heights[base + zStep] ?? empty;
79
+ if (u + v <= 1) {
80
+ const h00 = data.heights[base] ?? empty;
81
+ return h00 + (h10 - h00) * u + (h01 - h00) * v;
82
+ }
83
+ const h11 = data.heights[base + xStep + zStep] ?? empty;
84
+ return h11 + (h01 - h11) * (1 - u) + (h10 - h11) * (1 - v);
85
+ }
86
+ /** Native bilinear queries on an admitted whole-cell original lattice, with its original central-difference normal law.
87
+ * Datum shifts height only; normals are computed before the shift, preserving the native floating-point operation order. */
88
+ export function bilinearTerrainSamplers(data: TerrainTileData, normalEpsilon: number, datum = 0): BakedTerrainSamplers {
89
+ check(data);
90
+ if ((data.resolution !== 256 && data.resolution !== 257) || data.x !== -250 || data.z !== -250 || data.size !== 500
91
+ || data.colours !== undefined || data.splat === undefined || !Number.isFinite(normalEpsilon) || normalEpsilon < 0.001 || normalEpsilon > 4
92
+ || !Number.isFinite(datum) || datum < -CELL_BELOW || datum > CELL_ABOVE) throw new Error('Invalid bilinear terrain sampling profile');
93
+ const native = bakedSamplers(samplingGrid(data,{ resolution: data.resolution,size: data.size,seed: 0 }));
94
+ return { heightAt: datum === 0 ? native.heightAt : (x, z) => native.heightAt(x, z) + datum,
95
+ normalAt: (x, z, eps = normalEpsilon) => native.normalAt(x, z, eps), splatAt: native.splatAt };
96
+ }
97
+ /** Conservative sample/mesh residency and draws, including an L0 shadow pass; collider-only payloads have no draws. */
98
+ export function terrainTileCost(data: TerrainTileData): { decoded: number; gpu: number; triangles: number; draws: number } {
99
+ const vertices = data.resolution ** 2, cells = (data.resolution - 1) ** 2, skirt = data.resolution === 17 && data.size === 125 ? 0 : 4 * (data.resolution - 1);
100
+ const indexBytes = (cells * 6 + skirt * 6) * (vertices + skirt > 65535 ? 4 : 2);
101
+ const splatBytes = data.splat === undefined ? 0 : vertices * 8;
102
+ return data.colours === undefined ? { decoded: HEADER + vertices * 8 + splatBytes, gpu: 0, triangles: 0, draws: 0 }
103
+ : { decoded: HEADER + vertices * (skirt === 0 ? 56 : 68) + skirt * 36 + indexBytes + splatBytes, gpu: (vertices + skirt) * 36 + indexBytes, triangles: cells * 2 + skirt * 2, draws: data.size === 62.5 ? 2 : 1 };
104
+ }
@@ -0,0 +1,195 @@
1
+ import type { LateFile } from './admissionLate.ts';
2
+ import { parseWorldScenes, worldScenesForTier } from './worldScenes.ts';
3
+ import { parseRiggedHullBook } from './riggedHulls.ts';
4
+ import { PosedLibrarySchema } from './namedJsonContracts.ts';
5
+ import { parseClientPlan } from './clientPlan.ts';
6
+ import * as v from 'valibot';
7
+
8
+ /** Only immutable addressing and typed alternatives are needed for selection.
9
+ * Other root fields are retained by the conservative string walk at runtime. */
10
+ export interface TierSelectionSource {
11
+ readonly identity: { readonly slug: string };
12
+ readonly files: readonly { readonly hash: string; readonly kind: string; readonly decoded: number; readonly dependencies: readonly string[] }[];
13
+ readonly library: readonly string[]; readonly critical: readonly string[];
14
+ /** Scheduling metadata never creates a synchronous consumer or a tier pin. */
15
+ readonly late?: readonly LateFile[];
16
+ readonly manifest?: { readonly horizonStrips?: { readonly day: string; readonly night: string; readonly phone?: { readonly day: string; readonly night: string } } };
17
+ }
18
+
19
+ /** Pure typed-alternative selection, shared by boot compilation and admission.
20
+ * No runtime owner, current device, storage or transport is read here. */
21
+ export function* stringsSteps(roots: readonly unknown[], found: (text: string) => void): Generator<void> {
22
+ const pending: unknown[] = [...roots];
23
+ let visited = 0;
24
+ while (pending.length > 0) {
25
+ const value = pending.pop();
26
+ if (++visited % 4096 === 0) yield;
27
+ if (typeof value === 'string') found(value);
28
+ else if (Array.isArray(value)) {
29
+ const items: readonly unknown[] = value;
30
+ for (const item of items) {
31
+ if (typeof item === 'string' || typeof item === 'object' && item !== null) pending.push(item);
32
+ else if (++visited % 4096 === 0) yield;
33
+ }
34
+ }
35
+ // Preserve every own key and string callback, without queueing numeric pose
36
+ // words (they cannot name an asset). Count their scan toward paint
37
+ // checkpoints anyway; schema validation still checks those values.
38
+ else if (typeof value === 'object' && value !== null) for (const key in value) if (Object.hasOwn(value, key)) {
39
+ found(key); const child: unknown = Reflect.get(value, key);
40
+ if (typeof child === 'string' || typeof child === 'object' && child !== null) pending.push(child);
41
+ else if (++visited % 4096 === 0) yield;
42
+ }
43
+ }
44
+ }
45
+
46
+ /** Entry transport omits manifest-only URL-image copies. Their authored URL
47
+ * readers do not consume admitted buffers; any other host or dependency does.
48
+ * Cost projection stays separate and retains URL-image pixels and wire. */
49
+ export function* entryFileSteps(source: TierSelectionSource, tier: 'phone' | 'desktop', descriptor: Parameters<typeof tierLibrarySteps>[2]): Generator<void, ReadonlySet<string>> {
50
+ const alternatives = yield* tierLibrarySteps(source, tier, descriptor);
51
+ const inactive = new Set(alternatives);
52
+ if (source.manifest === undefined) return inactive;
53
+ const images = new Set(source.files.filter(file => file.kind === 'image').map(file => file.hash));
54
+ const names = new Map<string, string>();
55
+ for (const file of descriptor.index.files) if (images.has(file.hash)) {
56
+ for (const name of [file.hash, file.path, `/shardfiles/${source.identity.slug}/${file.path}`]) names.set(name, file.hash);
57
+ if (file.name !== undefined) names.set(file.name, file.hash);
58
+ }
59
+ const eligible = new Set<string>(), used = new Set(source.critical);
60
+ yield* stringsSteps([source.manifest], text => { const hash = names.get(text); if (hash !== undefined) eligible.add(hash); });
61
+ const { files: _files, library: _library, critical: _critical, manifest: _manifest, late: _late, ...fields } = source;
62
+ const sections = [...descriptor.sections].map(([name, row]) => name === 'ui/level' && typeof row === 'object' && row !== null
63
+ ? Object.fromEntries(Object.entries(row).filter(([key]) => key !== 'manifest')) : row);
64
+ yield* stringsSteps([fields, ...sections], text => { const hash = names.get(text); if (hash !== undefined) used.add(hash); });
65
+ for (const file of source.files) for (const dependency of file.dependencies) used.add(dependency);
66
+ for (const hash of eligible) if (!used.has(hash)) inactive.add(hash);
67
+ return inactive;
68
+ }
69
+
70
+ export function* tierLibrarySteps(source: TierSelectionSource, tier: 'phone' | 'desktop', descriptor: { readonly index: { readonly files: readonly { readonly hash: string; readonly path: string; readonly name?: string; readonly tier?: 'phone' | 'desktop'; readonly variantOf?: string; readonly compressed?: number }[] }; readonly sections: ReadonlyMap<string, unknown> }, assets?: ReadonlyMap<string, Uint8Array>): Generator<void, ReadonlySet<string>> {
71
+ const names = new Map<string, string>();
72
+ for (const file of descriptor.index.files) {
73
+ for (const name of [file.hash, file.path, `/shardfiles/${source.identity.slug}/${file.path}`]) names.set(name, file.hash);
74
+ if (file.name !== undefined) names.set(file.name, file.hash);
75
+ }
76
+ const inactive = new Set<string>(), used = new Set(source.critical);
77
+ // a named file marked for the other device tier is that tier's download only, even where an active row names it (an
78
+ // alias table naming both tiers' payloads); only a critical pin or a file dependency keeps it
79
+ const otherTier = new Set(descriptor.index.files.filter(file => file.tier !== undefined && file.tier !== tier).map(file => file.hash));
80
+ // variants of one payload (its texture modes' alternatives): the device fetches one, so this tier keeps only its largest
81
+ const variants = new Map<string, { readonly hash: string; readonly compressed: number }[]>();
82
+ for (const file of descriptor.index.files) if (file.variantOf !== undefined && !otherTier.has(file.hash))
83
+ variants.set(file.variantOf, [...variants.get(file.variantOf) ?? [], { hash: file.hash, compressed: file.compressed ?? 0 }]);
84
+ for (const group of variants.values()) {
85
+ const kept = group.reduce((best, row) => row.compressed > best.compressed || (row.compressed === best.compressed && row.hash < best.hash) ? row : best);
86
+ for (const row of group) if (row !== kept) otherTier.add(row.hash);
87
+ }
88
+ for (const hash of otherTier) inactive.add(hash);
89
+ const alternative = (selected: string, other: string): void => {
90
+ const off = names.get(other); if (off !== undefined) inactive.add(off);
91
+ const on = names.get(selected); if (on !== undefined) used.add(on);
92
+ };
93
+ const sections = new Map(descriptor.sections);
94
+ const metadata = source.manifest;
95
+ let manifest = source.manifest;
96
+ if (metadata?.horizonStrips?.phone !== undefined) {
97
+ const horizon = metadata.horizonStrips, selected = tier === 'phone' ? horizon.phone : horizon;
98
+ const other = tier === 'phone' ? horizon : horizon.phone;
99
+ if (selected !== undefined && other !== undefined) {
100
+ alternative(selected.day, other.day); alternative(selected.night, other.night);
101
+ const { phone: _phone, ...base } = horizon;
102
+ manifest = { ...metadata, horizonStrips: { ...base, day: selected.day, night: selected.night } };
103
+ sections.set('ui/level', { manifest });
104
+ }
105
+ }
106
+ const scenes = sections.get('world/scenes');
107
+ if (scenes !== undefined) {
108
+ const declared = parseWorldScenes(scenes);
109
+ for (const library of declared.libraries) if (library.kind === 'owned') for (const model of library.models) {
110
+ if (model.tier === undefined || model.tier === tier) continue;
111
+ for (const file of typeof model.file === 'string' ? [model.file] : Object.values(model.file)) {
112
+ const ref = names.get(file); if (ref !== undefined) inactive.add(ref);
113
+ }
114
+ }
115
+ for (const placement of declared.placements) if (placement.tier !== undefined && placement.tier !== tier && 'file' in placement) {
116
+ const ref = names.get(placement.file); if (ref !== undefined) inactive.add(ref);
117
+ }
118
+ const row = worldScenesForTier(declared, tier);
119
+ const libraries: typeof row.libraries = [];
120
+ for (const library of row.libraries) {
121
+ if (library.kind !== 'owned') { libraries.push(library); continue; }
122
+ const models: typeof library.models = [];
123
+ for (const model of library.models) {
124
+ if (typeof model.file === 'string') models.push(model);
125
+ else {
126
+ alternative(model.file[tier], model.file[tier === 'phone' ? 'desktop' : 'phone']);
127
+ models.push({ ...model, file: model.file[tier] });
128
+ }
129
+ }
130
+ libraries.push({ ...library, models });
131
+ }
132
+ sections.set('world/scenes', { ...row, libraries });
133
+ }
134
+ const client = sections.get('client/plan');
135
+ if (client !== undefined) {
136
+ const plan = parseClientPlan(client);
137
+ // iPhone downloads I8: a water row draws its page tier's grid and a baked row its tier's tiles, lightmaps, wear and
138
+ // plan (clientWaterSurfaces, bakedTiles): every { phone, desktop } pair keeps only this tier's files
139
+ const strings = (input: unknown, into: (text: string) => void): void => {
140
+ if (typeof input === 'string') into(input);
141
+ else if (typeof input === 'object' && input !== null) for (const value of Object.values(input)) strings(value, into);
142
+ };
143
+ const tiered = (input: unknown): unknown => {
144
+ if (Array.isArray(input)) return input.map(tiered);
145
+ if (typeof input !== 'object' || input === null) return input;
146
+ if (Object.keys(input).length === 2 && 'phone' in input && 'desktop' in input) {
147
+ strings(tier === 'phone' ? input.desktop : input.phone, text => { const ref = names.get(text); if (ref !== undefined) inactive.add(ref); });
148
+ const selected = tiered(tier === 'phone' ? input.phone : input.desktop);
149
+ return { phone: selected, desktop: selected };
150
+ }
151
+ return Object.fromEntries(Object.entries(input).map(([key, value]) => [key, tiered(value)]));
152
+ };
153
+ const features: unknown[] = plan.features.map(feature => {
154
+ if (feature.kind === 'world.water' || feature.kind === 'world.baked') return { ...feature, rows: tiered(feature.rows) };
155
+ if (feature.kind !== 'world.assembly' || feature.rows.construction?.cells === undefined) return feature;
156
+ const construction = feature.rows.construction, cells = construction.cells;
157
+ if (cells === undefined) return feature;
158
+ // WorldAssembly.construct reads exactly cells[TIER], including on a
159
+ // restored entry. Other sections, critical pins and dependencies below
160
+ // still protect a shared file; the descriptor itself is never changed.
161
+ alternative(cells[tier], cells[tier === 'phone' ? 'desktop' : 'phone']);
162
+ return { ...feature, rows: { ...feature.rows, construction: { ...construction,
163
+ cells: { phone: cells[tier], desktop: cells[tier] } } } };
164
+ });
165
+ sections.set('client/plan', { ...plan, features });
166
+ }
167
+ const hulls = sections.get('look/rigged-hulls');
168
+ if (hulls !== undefined) {
169
+ // The rigged-hull loader reads only its page tier's resources (looks/riggedHulls.ts).
170
+ const book = parseRiggedHullBook(hulls);
171
+ const off = (input: unknown): void => {
172
+ if (typeof input === 'string') { const hash = names.get(input); if (hash !== undefined) inactive.add(hash); }
173
+ else if (typeof input === 'object' && input !== null) for (const value of Object.values(input)) off(value);
174
+ };
175
+ off(book.tiers[tier === 'phone' ? 'desktop' : 'phone']);
176
+ sections.set('look/rigged-hulls', { ...book, tiers: { [tier]: book.tiers[tier] } });
177
+ }
178
+ // Posed libraries (looks/posedInstances.ts) read only their page tier's geometry and atlas.
179
+ // Only a small named JSON can be one; the strict schema, not a name, identifies it.
180
+ if (assets !== undefined) for (const file of source.files) {
181
+ const bytes = file.kind === 'json' && file.decoded <= 65_536 ? assets.get(file.hash) : undefined;
182
+ const text = bytes === undefined ? '' : new TextDecoder('utf-8', { fatal: true }).decode(bytes);
183
+ if (!text.includes('"tiers"')) continue;
184
+ const row = v.safeParse(PosedLibrarySchema, JSON.parse(text));
185
+ if (!row.success) continue;
186
+ const selected = row.output.tiers[tier], other = row.output.tiers[tier === 'phone' ? 'desktop' : 'phone'];
187
+ alternative(selected.geometry, other.geometry); if (selected.atlas !== undefined && other.atlas !== undefined) alternative(selected.atlas, other.atlas);
188
+ }
189
+ if (inactive.size === 0) return inactive;
190
+ const { files: _files, library: _library, critical: _critical, manifest: _manifest, late: _late, ...fields } = source;
191
+ yield* stringsSteps([{ ...fields, manifest }, ...sections.values()], text => { const hash = names.get(text); if (hash !== undefined) used.add(hash); });
192
+ const pinned = new Set([...source.critical, ...source.files.flatMap(file => file.dependencies)]);
193
+ for (const file of source.files) for (const ref of file.dependencies) used.add(ref);
194
+ return new Set([...inactive].filter(hash => otherTier.has(hash) ? !pinned.has(hash) : !used.has(hash)));
195
+ }
@@ -0,0 +1,32 @@
1
+ import * as v from 'valibot';
2
+
3
+ const finite = v.pipe(v.number(), v.finite());
4
+ const vector = v.tuple([finite, finite, finite]);
5
+ /** Shared presentation lighting identity, initialized from admitted data. */
6
+ export const ToonLightingSchema: v.GenericSchema<ToonLightingRowInput, ToonLightingRow> = v.strictObject({ id: v.pipe(v.string(), v.minLength(1), v.maxLength(512)),
7
+ initial: v.strictObject({ uToonLift: vector, uToonRim: vector,
8
+ uCloudShadow: finite, uToonNight: finite, uSeaLevel: finite, uCloudTime: finite }) });
9
+
10
+
11
+ /** Admitted data contracts, independent of validator implementation metadata. */
12
+ export type ToonLightingRowInput = ToonLightingRow;
13
+ interface ToonLightingRowFields {
14
+ id: string;
15
+ initial: {
16
+ uToonLift: [
17
+ number,
18
+ number,
19
+ number
20
+ ];
21
+ uToonRim: [
22
+ number,
23
+ number,
24
+ number
25
+ ];
26
+ uCloudShadow: number;
27
+ uToonNight: number;
28
+ uSeaLevel: number;
29
+ uCloudTime: number;
30
+ };
31
+ }
32
+ export type ToonLightingRow = { [Key in keyof ToonLightingRowFields]: ToonLightingRowFields[Key] };