@shipload/sdk 2.0.0-rc2 → 2.0.0-rc4

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 (39) hide show
  1. package/lib/shipload.d.ts +319 -137
  2. package/lib/shipload.js +3253 -1812
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +2657 -1131
  5. package/lib/shipload.m.js.map +1 -1
  6. package/package.json +1 -1
  7. package/src/capabilities/extraction.ts +14 -21
  8. package/src/capabilities/storage.ts +2 -2
  9. package/src/contracts/server.ts +311 -120
  10. package/src/data/items.json +16 -0
  11. package/src/data/nebula-adjectives.json +211 -0
  12. package/src/data/nebula-nouns.json +151 -0
  13. package/src/data/syllables.json +1386 -780
  14. package/src/derivation/index.ts +25 -0
  15. package/src/derivation/location-size.ts +15 -0
  16. package/src/derivation/resources.ts +141 -0
  17. package/src/derivation/stratum.ts +118 -0
  18. package/src/entities/cargo-utils.ts +8 -8
  19. package/src/entities/entity-inventory.ts +13 -9
  20. package/src/entities/inventory-accessor.ts +2 -2
  21. package/src/entities/location.ts +10 -10
  22. package/src/entities/ship.ts +10 -6
  23. package/src/entities/warehouse.ts +2 -2
  24. package/src/errors.ts +4 -4
  25. package/src/index-module.ts +31 -6
  26. package/src/managers/actions.ts +21 -9
  27. package/src/managers/locations.ts +7 -7
  28. package/src/managers/trades.ts +5 -5
  29. package/src/market/items.ts +31 -0
  30. package/src/market/market.ts +9 -9
  31. package/src/scheduling/projection.ts +7 -7
  32. package/src/trading/collect.ts +25 -25
  33. package/src/trading/deal.ts +8 -8
  34. package/src/trading/trade.ts +9 -9
  35. package/src/travel/travel.ts +6 -6
  36. package/src/types.ts +17 -7
  37. package/src/utils/system.ts +51 -52
  38. package/src/data/goods.json +0 -23
  39. package/src/market/goods.ts +0 -31
package/lib/shipload.m.js CHANGED
@@ -205,7 +205,7 @@ var platform = /*#__PURE__*/Object.freeze({
205
205
  Contract: Contract$1
206
206
  });
207
207
 
208
- const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhQB2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgxidXljb250YWluZXIAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcIYnV5Z29vZHMABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIHYnV5c2hpcAACB2FjY291bnQEbmFtZQRuYW1lBnN0cmluZwxidXl3YXJlaG91c2UAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcGY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NAdtaXh0dXJlDW1peHR1cmVfaW5mbz8JY2FyZ29fcm93AAUCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CXVuaXRfY29zdAZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ng1jb250YWluZXJfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MGdWludDMyCGNhcGFjaXR5BnVpbnQzMgljYXJnb21hc3MGdWludDMyCHNjaGVkdWxlCXNjaGVkdWxlPwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8GZW5hYmxlAAEHZW5hYmxlZARib29sDGVuZXJneV9zdGF0cwACCGNhcGFjaXR5BnVpbnQxNghyZWNoYXJnZQZ1aW50MTYUZW50aXR5X2N1cnJlbnRfc3RhdGUAAgtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kGdWludDE2C2VudGl0eV9pbmZvABUEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQdsb2FkZXJzDWxvYWRlcl9zdGF0cz8GZW5lcmd5B3VpbnQxNj8IaHVsbG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/CmVudGl0eV9yZWYAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludA9lbnRpdHlncm91cF9yb3cAAgJpZAZ1aW50NjQMcGFydGljaXBhbnRzDGVudGl0eV9yZWZbXQdleHRyYWN0AAEHc2hpcF9pZAZ1aW50NjQPZXh0cmFjdG9yX3N0YXRzAAMEcmF0ZQZ1aW50MTYFZHJhaW4GdWludDE2CmVmZmljaWVuY3kGdWludDE2C2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIZ2V0Z29vZHMAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0CWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCWdldHBsYXllcgABB2FjY291bnQEbmFtZQpnZXRzdGFydGVyAAAMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwRnb29kAAMCaWQGdWludDE2CmJhc2VfcHJpY2UGdWludDMyBG1hc3MGdWludDMyCmdvb2RzX2luZm8AAQVnb29kcwZnb29kW10LZ3JvdXB0cmF2ZWwABAhlbnRpdGllcwxlbnRpdHlfcmVmW10BeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nBGluaXQAAQRzZWVkC2NoZWNrc3VtMjU2BGpvaW4AAQdhY2NvdW50BG5hbWUMbG9hZGVyX3N0YXRzAAMEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNghxdWFudGl0eQV1aW50OBBsb2NhdGlvbl9kZXJpdmVkAAIMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwtlcG9jaF9wcm9wcw5sb2NhdGlvbl9lcG9jaA5sb2NhdGlvbl9lcG9jaAADBmFjdGl2ZQRib29sBXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DWxvY2F0aW9uX2dvb2QABQJpZAZ1aW50MTYFcHJpY2UGdWludDMyBnN1cHBseQZ1aW50MTYRcmFyaXR5X211bHRpcGxpZXIGdWludDMyE2xvY2F0aW9uX211bHRpcGxpZXIGdWludDMyDWxvY2F0aW9uX2luZm8AAwZjb29yZHMLY29vcmRpbmF0ZXMJaXNfc3lzdGVtBGJvb2wFZ29vZHMPbG9jYXRpb25fZ29vZFtdDGxvY2F0aW9uX3JvdwAGAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29faXRlbVtdCHNjaGVkdWxlCXNjaGVkdWxlPw9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgRbWl4dHVyZV9jb21wb25lbnQAAgdnb29kX2lkBnVpbnQxNgZwdXJpdHkGdWludDE2DG1peHR1cmVfaW5mbwABCmNvbXBvbmVudHMTbWl4dHVyZV9jb21wb25lbnRbXQ5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQHcGF5bG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0C3BsYXllcl9pbmZvAA0Fb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0DmF2YWlsYWJsZV9sb2FuBnVpbnQ2NA9uZXh0X3NoaXBfcHJpY2UGdWludDY0FG5leHRfd2FyZWhvdXNlX3ByaWNlBnVpbnQ2NBRuZXh0X2NvbnRhaW5lcl9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NA9jb250YWluZXJfY291bnQGdWludDY0CnBsYXllcl9yb3cABAVvd25lcgRuYW1lB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDMyCG5ldHdvcnRoBWludDY0C3B1cmdlc3VwcGx5AAEIbWF4X3Jvd3MHdWludDY0PwhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B3Jlc29sdmUAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAVjb3VudAd1aW50NjQ/D3Jlc29sdmVfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ5yZXNvbHZlZF9jb3VudAV1aW50OBRuZXdfc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwRzYWx0AAEEc2FsdAZ1aW50NjQIc2NoZWR1bGUAAgdzdGFydGVkCnRpbWVfcG9pbnQFdGFza3MGdGFza1tdCXNlbGxnb29kcwAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQIc2hpcF9yb3cADgJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwZ1aW50MzIIY2FwYWNpdHkGdWludDMyBmVuZXJneQZ1aW50MTYJY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzDm1vdmVtZW50X3N0YXRzCWdlbmVyYXRvcgxlbmVyZ3lfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMFdHJhZGUMdHJhZGVfc3RhdHM/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/CHNjaGVkdWxlCXNjaGVkdWxlPwxzdGFydGVyX2luZm8AAwdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQ2NARzaGlwC2VudGl0eV9pbmZvCXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50MzIEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2CnN1cHBseV9yb3cABQJpZAZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMFZXBvY2gGdWludDY0B2dvb2RfaWQGdWludDE2BnN1cHBseQZ1aW50MTYIdGFrZWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAR0YXNrAAkEdHlwZQV1aW50OAhkdXJhdGlvbgZ1aW50MzIKY2FuY2VsYWJsZQV1aW50OAtjb29yZGluYXRlcwxjb29yZGluYXRlcz8FY2FyZ28MY2FyZ29faXRlbVtdDGVudGl0eXRhcmdldAtlbnRpdHlfcmVmPwtlbnRpdHlncm91cAd1aW50NjQ/B2NyZWRpdHMGaW50NjQ/C2VuZXJneV9jb3N0B3VpbnQxNj8KdGFza19ldmVudAAOCmV2ZW50X3R5cGUFdWludDgFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/D25ld19jb29yZGluYXRlcwxjb29yZGluYXRlcz8PY2FyZ29tYXNzX2RlbHRhBWludDY0C2NhcmdvX2FkZGVkDGNhcmdvX2l0ZW1bXQ1jYXJnb19yZW1vdmVkDGNhcmdvX2l0ZW1bXQdjcmVkaXRzBmludDY0Pwx0YXNrX3Jlc3VsdHMAAQhlbnRpdGllcxJlbnRpdHlfdGFza19pbmZvW10LdHJhZGVfc3RhdHMAAQZtYXJnaW4GdWludDE2CHRyYW5zZmVyAAYLc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cAAwJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRFzdGFydGVyX2luZm9fdHlwZQxzdGFydGVyX2luZm8MdXBkYXRlY3JlZGl0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NAp1cGRhdGVkZWJ0AAIHYWNjb3VudARuYW1lBmFtb3VudAVpbnQ2NA13YXJlaG91c2Vfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIY2FwYWNpdHkGdWludDMyCWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACYAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4ucNV0Jk+KvD4MYnV5Y29udGFpbmVyygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5Y29udGFpbmVyCnN1bW1hcnk6ICdCdXkgYSBuZXcgY29udGFpbmVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBjb250YWluZXIgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gQ29udGFpbmVycyBwcm92aWRlIGNhcmdvIHN0b3JhZ2UgYnV0IGhhdmUgbm8gbG9hZGVycyBhbmQgY2Fubm90IG1vdmUgaW5kZXBlbmRlbnRseS4AAAA4Ucq8PghidXlnb29kc90BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eWdvb2RzCnN1bW1hcnk6ICdCdXkgZ29vZHMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGdvb2RzIGFuZCBhZGQgdGhlbSB0byBhIHNoaXAncyBjYXJnby4AAACguoa9PgdidXlzaGlwxgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5c2hpcApzdW1tYXJ5OiAnQnV5IGEgbmV3IHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHNoaXCgsKZNXcO9PgxidXl3YXJlaG91c2XMAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXl3YXJlaG91c2UKc3VtbWFyeTogJ0J1eSBhIG5ldyB3YXJlaG91c2UnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IHdhcmVob3VzZSBhdCB0aGUgbG9jYXRpb24gb2YgYW4gaWRsZSBzaGlwLiBXYXJlaG91c2VzIHByb3ZpZGUgY2FyZ28gc3RvcmFnZSB3aXRoIGxvYWRpbmcvdW5sb2FkaW5nIGNhcGFiaWxpdGllcyBidXQgY2Fubm90IG1vdmUuAAAAAESFpkEGY2FuY2VsxwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuCgotLS0AgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl08QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgoKLS0tAAAAAKh4zFQGZW5hYmxl4gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdTZXQgZW5hYmxlZCBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBnYW1lIG9mIFNoaXBsb2FkLgoKLS0tAAAAICNzc1cHZXh0cmFjdKADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGV4dHJhY3QKc3VtbWFyeTogJ0V4dHJhY3QgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFeHRyYWN0IHJlc291cmNlcyBhdCB0aGUgc2hpcCdzIGN1cnJlbnQgbG9jYXRpb24uIE9ubHkgd29ya3MgYXQgZXh0cmFjdGFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhbiBleHRyYWN0aW9uIHRhc2sgdGhhdCBjb25zdW1lcyBlbmVyZ3kgYW5kIHlpZWxkcyBjYXJnbyBiYXNlZCBvbiB0aGUgc2hpcCdzIGV4dHJhY3RvciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgbWl4dHVyZSBjb21wb3NpdGlvbi4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4AAAA4UcqyYghnZXRnb29kc6oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGdvb2RzCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRyYWRlYWJsZSBnb29kcyBpbiB0aGUgZ2FtZSBpbmNsdWRpbmcgdGhlaXIgaWQsIG5hbWUsIGJhc2UgcHJpY2UsIGFuZCBtYXNzLgAmddkgGrNiC2dldGxvY2F0aW9u4gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jYXRpb24Kc3VtbWFyeTogJ0dldCBsb2NhdGlvbiBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2F0aW9uIGluY2x1ZGluZyB3aGV0aGVyIGEgc3lzdGVtIGV4aXN0cywgYW5kIGZvciBlYWNoIGdvb2Q6IHByaWNlLCBzdXBwbHksIHJhcml0eSBtdWx0aXBsaWVyLCBhbmQgbG9jYXRpb24gbXVsdGlwbGllci4AgMkmIRqzYgpnZXRsb2NkYXRh/gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jZGF0YQpzdW1tYXJ5OiAnR2V0IGRlcml2ZWQgbG9jYXRpb24gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBkZXJpdmVkIGxvY2F0aW9uIGRhdGEgaW5jbHVkaW5nIHN0YXRpYyBwcm9wZXJ0aWVzICh0eXBlLCBkaWZmaWN1bHR5LCBzZWVkcykgZnJvbSB0aGUgZ2FtZSBzZWVkIGFuZCBlcG9jaC1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY3RpdmUsIHNlZWRzKSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoIHNlZWQuAADw5xo1s2IJZ2V0bmVhcmJ53gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmVhcmJ5CnN1bW1hcnk6ICdHZXQgbmVhcmJ5IHJlYWNoYWJsZSBzeXN0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIG5lYXJieSBzeXN0ZW1zIHJlYWNoYWJsZSBieSBhbiBlbnRpdHkgZnJvbSBpdHMgcHJvamVjdGVkIGxvY2F0aW9uLiBSZXR1cm5zIGN1cnJlbnQgc3RhdGUgKHdpdGggY29tcGxldGVkIHRhc2tzIHJlc29sdmVkKSwgcHJvamVjdGVkIHN0YXRlIChhZnRlciBhbGwgc2NoZWR1bGVkIHRhc2tzKSwgYW5kIGEgbGlzdCBvZiByZWFjaGFibGUgc3lzdGVtcyB3aXRoIGRpc3RhbmNlLCBlbmVyZ3kgY29zdCwgZmxpZ2h0IHRpbWUsIGFuZCBtYXJrZXQgaW5mb3JtYXRpb24uAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AwFX5moyzYgpnZXRzdGFydGVyhQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3RhcnRlcgpzdW1tYXJ5OiAnR2V0IHN0YXJ0ZXIgc2hpcCBhbmQgYmFsYW5jZSBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgc3RhcnRlciBzaGlwIHN0YXRzIGFuZCBpbml0aWFsIGJhbGFuY2UgYSBuZXcgcGxheWVyIHdvdWxkIHJlY2VpdmUgdXBvbiBqb2luaW5nLiBVc2VkIGZvciBvbmJvYXJkaW5nIFVJIHRvIGRpc3BsYXkgd2hhdCBwbGF5ZXJzIHdpbGwgZ2V0IGJlZm9yZSB0aGV5IHJlZ2lzdGVyLoCVu0ZKjbNiDGdldHN1bW1hcmllc+gCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN1bW1hcmllcwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdW1tYXJpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGxpZ2h0d2VpZ2h0IHN1bW1hcmllcyBvZiBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIgaW5jbHVkaW5nIHR5cGUsIGlkLCBvd25lciwgbmFtZSwgbG9jYXRpb24sIGFuZCBpZGxlIHN0YXR1cy4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXVAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuCgotLS0AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwIlSFqPCCXNlbGxnb29kc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxnb29kcwpzdW1tYXJ5OiAnU2VsbCBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBnb29kcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAA09CooMkIdGFrZWxvYW7qAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0YWtlbG9hbgpzdW1tYXJ5OiAnQ3JlZGl0IExvYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJvcnJvdyBjcmVkaXRzIGZyb20gdGhlIGJhbmsgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVwYWlkLgAAAFctPM3NCHRyYW5zZmVyyAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhbnNmZXIKc3VtbWFyeTogJ1RyYW5zZmVyIGNhcmdvIGJldHdlZW4gZW50aXRpZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZmVyIGNhcmdvIGJldHdlZW4gdHdvIGVudGl0aWVzIGF0IHRoZSBzYW1lIGxvY2F0aW9uLiBCb3RoIGVudGl0aWVzIG11c3QgYmUgb3duZWQgYnkgdGhlIGNhbGxlciBhbmQgYXQgbGVhc3Qgb25lIG11c3QgaGF2ZSBsb2FkZXJzLiBDcmVhdGVzIGxvYWQgYW5kIHVubG9hZCB0YXNrcyBvbiBib3RoIGVudGl0aWVzIHdpdGggZHVyYXRpb24gYmFzZWQgb24gY29tYmluZWQgbG9hZGVyIGNhcGFjaXR5IGFuZCBaLWRpc3RhbmNlIGJldHdlZW4gdGhlbS4AAAAARLXNzQZ0cmF2ZWzLAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgYSBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSB0cmF2ZWwgb2YgYW4gZW50aXR5IGZyb20gaXRzIGN1cnJlbnQgbG9jYXRpb24gdG8gYSBuZXcgZGVzdGluYXRpb24uCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgYSBnaXZlbiBsb2NhdGlvbi6QXVIXqWxS1Qx1cGRhdGVjcmVkaXTCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVjcmVkaXQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVjcmVkaXQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAEA+KqlsUtUKdXBkYXRlZGVidL4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWRlYnQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVkZWJ0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCwAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAuGo6kydFA2k2NAAADWNvbnRhaW5lcl9yb3cAqqaX+ezyVANpNjQAAA9lbnRpdHlncm91cF9yb3cAAACTumwQjQNpNjQAAAxsb2NhdGlvbl9yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAACk2lrcIDaTY0AAAMc2VxdWVuY2Vfcm93AAAAAABQXcMDaTY0AAAIc2hpcF9yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAAAAA+FirxgNpNjQAAApzdXBwbHlfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAUAAAAOFHKvD4MdGFza19yZXN1bHRzAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAgI3NzVwx0YXNrX3Jlc3VsdHMAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm8AAAA4UcqyYgpnb29kc19pbmZvACZ12SAas2INbG9jYXRpb25faW5mbwCAySYhGrNiEGxvY2F0aW9uX2Rlcml2ZWQAAPDnGjWzYgtuZWFyYnlfaW5mbwAAuMqbWLNiC3BsYXllcl9pbmZvAMBV+ZqMs2IMc3RhcnRlcl9pbmZvgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXQCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAAMCJUhajwgx0YXNrX3Jlc3VsdHMAAABXLTzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHM=');
208
+ const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhaB2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgxidXljb250YWluZXIAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcIYnV5aXRlbXMABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIHYnV5c2hpcAACB2FjY291bnQEbmFtZQRuYW1lBnN0cmluZwxidXl3YXJlaG91c2UAAwdhY2NvdW50BG5hbWUHc2hpcF9pZAZ1aW50NjQEbmFtZQZzdHJpbmcGY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NARzZWVkB3VpbnQ2ND8JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CXVuaXRfY29zdAZ1aW50NjQEc2VlZAZ1aW50NjQJY2xlYW5yc3ZwAAIFZXBvY2gGdWludDY0CG1heF9yb3dzBnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2CWNvbmZpZ2xvZwABBmNvbmZpZwtnYW1lX2NvbmZpZw1jb250YWluZXJfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MGdWludDMyCGNhcGFjaXR5BnVpbnQzMgljYXJnb21hc3MGdWludDMyCHNjaGVkdWxlCXNjaGVkdWxlPwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8GZW5hYmxlAAEHZW5hYmxlZARib29sDGVuZXJneV9zdGF0cwACCGNhcGFjaXR5BnVpbnQxNghyZWNoYXJnZQZ1aW50MTYUZW50aXR5X2N1cnJlbnRfc3RhdGUAAgtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kGdWludDE2D2VudGl0eV9kZWZhdWx0cwAQDXNoaXBfaHVsbG1hc3MGdWludDMyDXNoaXBfY2FwYWNpdHkGdWludDMyC3NoaXBfZW5lcmd5BnVpbnQxNgZzaGlwX3oGdWludDE2DHNoaXBfZW5naW5lcw5tb3ZlbWVudF9zdGF0cw5zaGlwX2dlbmVyYXRvcgxlbmVyZ3lfc3RhdHMMc2hpcF9sb2FkZXJzDGxvYWRlcl9zdGF0cwpzaGlwX3RyYWRlC3RyYWRlX3N0YXRzDnNoaXBfZXh0cmFjdG9yD2V4dHJhY3Rvcl9zdGF0cwlzaGlwX3dhcnAKd2FycF9zdGF0cxJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhF3YXJlaG91c2VfbG9hZGVycwxsb2FkZXJfc3RhdHMSY29udGFpbmVyX2h1bGxtYXNzBnVpbnQzMhJjb250YWluZXJfY2FwYWNpdHkGdWludDMyC2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAWBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/CGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8IY2FwYWNpdHkHdWludDMyPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/CmVudGl0eV9yZWYAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludA9lbnRpdHlncm91cF9yb3cAAgJpZAZ1aW50NjQMcGFydGljaXBhbnRzDGVudGl0eV9yZWZbXQdleHRyYWN0AAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYIcXVhbnRpdHkGdWludDMyD2V4dHJhY3Rvcl9zdGF0cwAFBHJhdGUGdWludDE2BWRyYWluBnVpbnQxNgplZmZpY2llbmN5BnVpbnQxNgVkZXB0aAZ1aW50MTYFZHJpbGwGdWludDE2C2dhbWVfY29uZmlnAAMHdmVyc2lvbgZ1aW50MzIIZGVmYXVsdHMPZW50aXR5X2RlZmF1bHRzBWl0ZW1zCml0ZW1fZGVmW10JZ2V0Y29uZmlnAAALZ2V0ZW50aXRpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/CWdldGVudGl0eQACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhnZXRpdGVtcwAAC2dldGxvY2F0aW9uAAIBeAVpbnQ2NAF5BWludDY0CmdldGxvY2RhdGEAAgF4BWludDY0AXkFaW50NjQJZ2V0bmVhcmJ5AAMLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wJZ2V0cGxheWVyAAEHYWNjb3VudARuYW1lCmdldHN0YXJ0ZXIAAApnZXRzdHJhdHVtAAMBeAVpbnQ2NAF5BWludDY0B3N0cmF0dW0GdWludDE2DGdldHN1bW1hcmllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8LZ3JvdXB0cmF2ZWwABAhlbnRpdGllcwxlbnRpdHlfcmVmW10BeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nBGluaXQAAQRzZWVkC2NoZWNrc3VtMjU2CGl0ZW1fZGVmAAMCaWQGdWludDE2CmJhc2VfcHJpY2UGdWludDMyBG1hc3MGdWludDMyCml0ZW1zX2luZm8AAQVpdGVtcwppdGVtX2RlZltdBGpvaW4AAQdhY2NvdW50BG5hbWUMbG9hZGVyX3N0YXRzAAMEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNghxdWFudGl0eQV1aW50OBBsb2NhdGlvbl9kZXJpdmVkAAMMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwtlcG9jaF9wcm9wcw5sb2NhdGlvbl9lcG9jaARzaXplBnVpbnQxNg5sb2NhdGlvbl9lcG9jaAADBmFjdGl2ZQRib29sBXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DWxvY2F0aW9uX2luZm8AAwZjb29yZHMLY29vcmRpbmF0ZXMJaXNfc3lzdGVtBGJvb2wFaXRlbXMPbG9jYXRpb25faXRlbVtdDWxvY2F0aW9uX2l0ZW0ABQJpZAZ1aW50MTYFcHJpY2UGdWludDMyBnN1cHBseQZ1aW50MTYRcmFyaXR5X211bHRpcGxpZXIGdWludDMyE2xvY2F0aW9uX211bHRpcGxpZXIGdWludDMyDGxvY2F0aW9uX3JvdwAGAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29faXRlbVtdCHNjaGVkdWxlCXNjaGVkdWxlPw9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50FGVudGl0eV9jdXJyZW50X3N0YXRlCXByb2plY3RlZBRlbnRpdHlfY3VycmVudF9zdGF0ZQptYXhfZW5lcmd5BnVpbnQxNgdzeXN0ZW1zD25lYXJieV9zeXN0ZW1bXQ1uZWFyYnlfc3lzdGVtAAQIZGlzdGFuY2UGdWludDY0C2VuZXJneV9jb3N0BnVpbnQ2NAtmbGlnaHRfdGltZQZ1aW50MzIIbG9jYXRpb24NbG9jYXRpb25faW5mbwZub3RpZnkAAQVldmVudAp0YXNrX2V2ZW50B3BheWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAtwbGF5ZXJfaW5mbwANBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NA5hdmFpbGFibGVfbG9hbgZ1aW50NjQPbmV4dF9zaGlwX3ByaWNlBnVpbnQ2NBRuZXh0X3dhcmVob3VzZV9wcmljZQZ1aW50NjQUbmV4dF9jb250YWluZXJfcHJpY2UGdWludDY0CnNoaXBfY291bnQGdWludDY0D3dhcmVob3VzZV9jb3VudAZ1aW50NjQPY29udGFpbmVyX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAQFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NAtwdXJnZXN1cHBseQABCG1heF9yb3dzB3VpbnQ2ND8IcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAtyZXNlcnZlX3JvdwACAmlkBnVpbnQ2NAlyZW1haW5pbmcGdWludDMyB3Jlc29sdmUAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAVjb3VudAd1aW50NjQ/D3Jlc29sdmVfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ5yZXNvbHZlZF9jb3VudAV1aW50OBRuZXdfc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPw5yZXNvdXJjZV9zdGF0cwAEBnB1cml0eQZ1aW50MTYHZGVuc2l0eQZ1aW50MTYKcmVhY3Rpdml0eQZ1aW50MTYJcmVzb25hbmNlBnVpbnQxNgRzYWx0AAEEc2FsdAZ1aW50NjQIc2NoZWR1bGUAAgdzdGFydGVkCnRpbWVfcG9pbnQFdGFza3MGdGFza1tdCXNlbGxpdGVtcwAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B2l0ZW1faWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQIc2hpcF9yb3cADwJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwZ1aW50MzIIY2FwYWNpdHkGdWludDMyBmVuZXJneQZ1aW50MTYJY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzDm1vdmVtZW50X3N0YXRzCWdlbmVyYXRvcgxlbmVyZ3lfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMFdHJhZGUMdHJhZGVfc3RhdHM/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8Ic2NoZWR1bGUJc2NoZWR1bGU/DHN0YXJ0ZXJfaW5mbwADB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDY0BHNoaXALZW50aXR5X2luZm8Jc3RhdGVfcm93AAYHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzYWx0BnVpbnQ2NAVzaGlwcwZ1aW50MzIEc2VlZAtjaGVja3N1bTI1NgZjb21taXQLY2hlY2tzdW0yNTYMc3RyYXR1bV9kYXRhAAIHc3RyYXR1bQxzdHJhdHVtX2luZm8Fc3RhdHMOcmVzb3VyY2Vfc3RhdHMMc3RyYXR1bV9pbmZvAAQHaXRlbV9pZAZ1aW50MTYEc2VlZAZ1aW50NjQIcmljaG5lc3MGdWludDE2B3Jlc2VydmUGdWludDMyCnN1cHBseV9yb3cABQJpZAZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMFZXBvY2gGdWludDY0B2l0ZW1faWQGdWludDE2BnN1cHBseQZ1aW50MTYIdGFrZWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAR0YXNrAAkEdHlwZQV1aW50OAhkdXJhdGlvbgZ1aW50MzIKY2FuY2VsYWJsZQV1aW50OAtjb29yZGluYXRlcwxjb29yZGluYXRlcz8FY2FyZ28MY2FyZ29faXRlbVtdDGVudGl0eXRhcmdldAtlbnRpdHlfcmVmPwtlbnRpdHlncm91cAd1aW50NjQ/B2NyZWRpdHMGaW50NjQ/C2VuZXJneV9jb3N0B3VpbnQxNj8KdGFza19ldmVudAAJCmV2ZW50X3R5cGUFdWludDgFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DHRhc2tfcmVzdWx0cwABCGVudGl0aWVzEmVudGl0eV90YXNrX2luZm9bXQt0cmFkZV9zdGF0cwABBm1hcmdpbgZ1aW50MTYIdHJhbnNmZXIABgtzb3VyY2VfdHlwZQRuYW1lCXNvdXJjZV9pZAZ1aW50NjQJZGVzdF90eXBlBG5hbWUHZGVzdF9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBnRyYXZlbAAFC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sCXR5cGVzX3JvdwAEAmlkBnVpbnQ2NBNlbnRpdHlfc3VtbWFyeV90eXBlDmVudGl0eV9zdW1tYXJ5EXN0YXJ0ZXJfaW5mb190eXBlDHN0YXJ0ZXJfaW5mbxBnYW1lX2NvbmZpZ190eXBlC2dhbWVfY29uZmlnDHVwZGF0ZWNyZWRpdAACB2FjY291bnQEbmFtZQZhbW91bnQFaW50NjQKdXBkYXRlZGVidAACB2FjY291bnQEbmFtZQZhbW91bnQFaW50NjQNd2FyZWhvdXNlX3JvdwAIAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGNhcGFjaXR5BnVpbnQzMgljYXJnb21hc3MGdWludDMyB2xvYWRlcnMMbG9hZGVyX3N0YXRzCHNjaGVkdWxlCXNjaGVkdWxlPwR3YXJwAAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CndhcnBfc3RhdHMAAQVyYW5nZQZ1aW50MzIEd2lwZQAADHdpcGVzZXF1ZW5jZQAAKwAAAEChaXYyB2FkdmFuY2XTAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZHZhbmNlCnN1bW1hcnk6ICdBZHZhbmNlIHR1cm4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkdmFuY2UgdGhlIGdhbWUgdG8gdGhlIG5leHQgdHVybi5w1XQmT4q8PgxidXljb250YWluZXLKAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXljb250YWluZXIKc3VtbWFyeTogJ0J1eSBhIG5ldyBjb250YWluZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClB1cmNoYXNlIGEgbmV3IGNvbnRhaW5lciBhdCB0aGUgbG9jYXRpb24gb2YgYW4gaWRsZSBzaGlwLiBDb250YWluZXJzIHByb3ZpZGUgY2FyZ28gc3RvcmFnZSBidXQgaGF2ZSBubyBsb2FkZXJzIGFuZCBjYW5ub3QgbW92ZSBpbmRlcGVuZGVudGx5LgAAAFiq7Lw+CGJ1eWl0ZW1z3QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5aXRlbXMKc3VtbWFyeTogJ0J1eSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUHVyY2hhc2UgaXRlbXMgYW5kIGFkZCB0aGVtIHRvIGEgc2hpcCdzIGNhcmdvLgAAAKC6hr0+B2J1eXNoaXDGAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlzaGlwCnN1bW1hcnk6ICdCdXkgYSBuZXcgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUHVyY2hhc2UgYSBuZXcgc2hpcKCwpk1dw70+DGJ1eXdhcmVob3VzZcwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eXdhcmVob3VzZQpzdW1tYXJ5OiAnQnV5IGEgbmV3IHdhcmVob3VzZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUHVyY2hhc2UgYSBuZXcgd2FyZWhvdXNlIGF0IHRoZSBsb2NhdGlvbiBvZiBhbiBpZGxlIHNoaXAuIFdhcmVob3VzZXMgcHJvdmlkZSBjYXJnbyBzdG9yYWdlIHdpdGggbG9hZGluZy91bmxvYWRpbmcgY2FwYWJpbGl0aWVzIGJ1dCBjYW5ub3QgbW92ZS4AAAAARIWmQQZjYW5jZWzHAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjYW5jZWwKc3VtbWFyeTogJ0NhbmNlbCBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbmNlbCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0YXNrcyBmcm9tIHRoZSBlbmQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUuIFRhc2tzIHRoYXQgYXJlIGltbXV0YWJsZSBhbmQgaW4gcHJvZ3Jlc3MgY2Fubm90IGJlIGNhbmNlbGxlZC4KCi0tLQAAqBvfaVRECWNsZWFucnN2cAAAgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl08QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgoKLS0tAABgNDK3JkUJY29uZmlnbG9nAAAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQAAACAjc3NXB2V4dHJhY3ShAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBleHRyYWN0CnN1bW1hcnk6ICdFeHRyYWN0IHJlc291cmNlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXh0cmFjdCByZXNvdXJjZXMgYXQgdGhlIHNoaXAncyBjdXJyZW50IGxvY2F0aW9uLiBPbmx5IHdvcmtzIGF0IGV4dHJhY3RhYmxlIGxvY2F0aW9uIHR5cGVzLiBTY2hlZHVsZXMgYW4gZXh0cmFjdGlvbiB0YXNrIHRoYXQgY29uc3VtZXMgZW5lcmd5IGFuZCB5aWVsZHMgY2FyZ28gYmFzZWQgb24gdGhlIHNoaXAncyBleHRyYWN0b3Igc3RhdHMgYW5kIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIGNvbXBvc2l0aW9uLgAAYG5NirJiCWdldGNvbmZpZwAAsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4AAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggaXRlbTogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgCAySYhGrNiCmdldGxvY2RhdGH+Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NkYXRhCnN1bW1hcnk6ICdHZXQgZGVyaXZlZCBsb2NhdGlvbiBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGRlcml2ZWQgbG9jYXRpb24gZGF0YSBpbmNsdWRpbmcgc3RhdGljIHByb3BlcnRpZXMgKHR5cGUsIGRpZmZpY3VsdHksIHNlZWRzKSBmcm9tIHRoZSBnYW1lIHNlZWQgYW5kIGVwb2NoLXNwZWNpZmljIHByb3BlcnRpZXMgKGFjdGl2ZSwgc2VlZHMpIGZyb20gdGhlIGN1cnJlbnQgZXBvY2ggc2VlZC4AAPDnGjWzYglnZXRuZWFyYnneAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZWFyYnkKc3VtbWFyeTogJ0dldCBuZWFyYnkgcmVhY2hhYmxlIHN5c3RlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgbmVhcmJ5IHN5c3RlbXMgcmVhY2hhYmxlIGJ5IGFuIGVudGl0eSBmcm9tIGl0cyBwcm9qZWN0ZWQgbG9jYXRpb24uIFJldHVybnMgY3VycmVudCBzdGF0ZSAod2l0aCBjb21wbGV0ZWQgdGFza3MgcmVzb2x2ZWQpLCBwcm9qZWN0ZWQgc3RhdGUgKGFmdGVyIGFsbCBzY2hlZHVsZWQgdGFza3MpLCBhbmQgYSBsaXN0IG9mIHJlYWNoYWJsZSBzeXN0ZW1zIHdpdGggZGlzdGFuY2UsIGVuZXJneSBjb3N0LCBmbGlnaHQgdGltZSwgYW5kIG1hcmtldCBpbmZvcm1hdGlvbi4AALjKm1izYglnZXRwbGF5ZXL9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRwbGF5ZXIKc3VtbWFyeTogJ0dldCBwbGF5ZXIgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBwbGF5ZXIgaW5jbHVkaW5nIGJhbGFuY2UsIGRlYnQsIG5ldHdvcnRoLCBlbnRpdHkgY291bnRzLCBhbmQgcHJpY2luZyBmb3IgbmV4dCBwdXJjaGFzZXMuIFJldHVybnMgaXNfcGxheWVyPWZhbHNlIGlmIHRoZSBhY2NvdW50IGhhcyBub3Qgam9pbmVkIHRoZSBnYW1lLgDAVfmajLNiCmdldHN0YXJ0ZXKFAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdGFydGVyCnN1bW1hcnk6ICdHZXQgc3RhcnRlciBzaGlwIGFuZCBiYWxhbmNlIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBzdGFydGVyIHNoaXAgc3RhdHMgYW5kIGluaXRpYWwgYmFsYW5jZSBhIG5ldyBwbGF5ZXIgd291bGQgcmVjZWl2ZSB1cG9uIGpvaW5pbmcuIFVzZWQgZm9yIG9uYm9hcmRpbmcgVUkgdG8gZGlzcGxheSB3aGF0IHBsYXllcnMgd2lsbCBnZXQgYmVmb3JlIHRoZXkgcmVnaXN0ZXIuAIDU2dyMs2IKZ2V0c3RyYXR1bQCAlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgCi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaP0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4KCi0tLQAAAECE0rBpB2hhc2g1MTL7AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoNTEyCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhNTEyIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTUxMiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuAAAAAACQ3XQEaW5pdPoBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGluaXQKc3VtbWFyeTogJ0luaXRpYWxpemUgZ2FtZSBzZWVkJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWFsaXplIGEgdGhlIGdhbWVzIHNlZWQgYW5kIHNlZWQgdmFsdWVzIHRvIGJvb3RzdHJhcCBnYW1lIHN0YXRlLgAAAAAAMB19BGpvaW7JAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBqb2luCnN1bW1hcnk6ICdKb2luIGEgZ2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSm9pbiBhIGdhbWUgb2YgU2hpcGxvYWQKCi0tLQAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAGAaGr2pB3BheWxvYW6vAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBwYXlsb2FuCnN1bW1hcnk6ICdMb2FuIFBheW1lbnQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AfKxVY8WurgtwdXJnZXN1cHBseekBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHB1cmdlc3VwcGx5CnN1bW1hcnk6ICdVcGRhdGUgR2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUHVyZ2Ugb2xkIHN1cHBseSByZWNvcmRzIGFuZCBoZWxwIGNsZWFudXAgZ2FtZSBzdGF0ZS4AAACKXdOQughyZWNoYXJnZdICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlY2hhcmdlCnN1bW1hcnk6ICdSZWNoYXJnZSBzaGlwIGVuZXJneScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2NoZWR1bGUgYSByZWNoYXJnZSB0YXNrIGZvciBhbiBlbnRpdHkgdG8gcmVzdG9yZSBlbmVyZ3kgdG8gZnVsbCBjYXBhY2l0eS4gVGhlIHJlY2hhcmdlIGR1cmF0aW9uIGRlcGVuZHMgb24gY3VycmVudCBlbmVyZ3kgbGV2ZWwgYW5kIHJlY2hhcmdlIHJhdGUuCgotLS0AAABA7UixugdyZXNvbHZl1QMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVzb2x2ZQpzdW1tYXJ5OiAnQ29tcGxldGUgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXNvbHZlIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4gSWYgY291bnQgaXMgc3BlY2lmaWVkLCByZXNvbHZlIGV4YWN0bHkgdGhhdCBtYW55IHRhc2tzOyBvdGhlcndpc2UgcmVzb2x2ZSBhbGwgY29tcGxldGVkIHRhc2tzLiBGYWlscyBpZiBjb3VudCBleGNlZWRzIHRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRhc2tzLgoKLS0tAAAAAACQo8EEc2FsdN0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNhbHQKc3VtbWFyeTogJ0FwcGVuZCBTYWx0JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZGQgYWRkaXRpb25hbCBzYWx0IHRvIHRoZSBuZXh0IGVwb2NoIHNlZWQuCgotLS0AAMBSZRejwglzZWxsaXRlbXPVAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzZWxsaXRlbXMKc3VtbWFyeTogJ1NlbGwgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNlbGwgaXRlbXMgZnJvbSBhIHNoaXAncyBjYXJnby4KCi0tLQAAANPQqKDJCHRha2Vsb2Fu6gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdGFrZWxvYW4Kc3VtbWFyeTogJ0NyZWRpdCBMb2FuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpCb3Jyb3cgY3JlZGl0cyBmcm9tIHRoZSBiYW5rIHRoYXQgd2lsbCBuZWVkIHRvIGJlIHJlcGFpZC4AAABXLTzNzQh0cmFuc2ZlcsgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYW5zZmVyCnN1bW1hcnk6ICdUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIGVudGl0aWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUcmFuc2ZlciBjYXJnbyBiZXR3ZWVuIHR3byBlbnRpdGllcyBhdCB0aGUgc2FtZSBsb2NhdGlvbi4gQm90aCBlbnRpdGllcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBjYWxsZXIgYW5kIGF0IGxlYXN0IG9uZSBtdXN0IGhhdmUgbG9hZGVycy4gQ3JlYXRlcyBsb2FkIGFuZCB1bmxvYWQgdGFza3Mgb24gYm90aCBlbnRpdGllcyB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIGNvbWJpbmVkIGxvYWRlciBjYXBhY2l0eSBhbmQgWi1kaXN0YW5jZSBiZXR3ZWVuIHRoZW0uAAAAAES1zc0GdHJhdmVsywItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGFuIGVudGl0eSBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgoKLS0tCgpUaGlzIGFjdGlvbiBkZXRlcm1pbmVzIHRoZSBtYXJrZXQgcHJpY2Ugb2YgYWxsIGl0ZW1zIGF0IGEgZ2l2ZW4gbG9jYXRpb24ukF1SF6lsUtUMdXBkYXRlY3JlZGl0wgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlY3JlZGl0CnN1bW1hcnk6ICdERUJVRzogdXBkYXRlY3JlZGl0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQBAPiqpbFLVCnVwZGF0ZWRlYnS+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVkZWJ0CnN1bW1hcnk6ICdERUJVRzogdXBkYXRlZGVidCBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAFCv4QR3YXJwAAAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tDAAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAuGo6kydFA2k2NAAADWNvbnRhaW5lcl9yb3cAqqaX+ezyVANpNjQAAA9lbnRpdHlncm91cF9yb3cAAACTumwQjQNpNjQAAAxsb2NhdGlvbl9yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAAD4WKvGA2k2NAAACnN1cHBseV9yb3cAAAAAAKyqzwNpNjQAAAl0eXBlc19yb3cAAFBY06au4QNpNjQAAA13YXJlaG91c2Vfcm93ARFTaGlwbG9hZCAoU2VydmVyKRFTaGlwbG9hZCAoU2VydmVyKQAAABcAAABYquy8Pgx0YXNrX3Jlc3VsdHMAAAAARIWmQQ5jYW5jZWxfcmVzdWx0cwAAACAjc3NXDHRhc2tfcmVzdWx0cwAAYG5NirJiC2dhbWVfY29uZmlnALBy2eWpsmINZW50aXR5X2luZm9bXQAA8NnlqbJiC2VudGl0eV9pbmZvAAAAWKrssmIKaXRlbXNfaW5mbwAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkAADw5xo1s2ILbmVhcmJ5X2luZm8AALjKm1izYgtwbGF5ZXJfaW5mbwDAVfmajLNiDHN0YXJ0ZXJfaW5mbwCA1NncjLNiDHN0cmF0dW1fZGF0YYCVu0ZKjbNiEGVudGl0eV9zdW1tYXJ5W10Aotrm5qrpZQx0YXNrX3Jlc3VsdHMAAAAAANCwaQtjaGVja3N1bTI1NgAAAECE0rBpC2NoZWNrc3VtNTEyAAAAil3TkLoMdGFza19yZXN1bHRzAAAAQO1IsboPcmVzb2x2ZV9yZXN1bHRzAADAUmUXo8IMdGFza19yZXN1bHRzAAAAVy08zc0MdGFza19yZXN1bHRzAAAAAES1zc0MdGFza19yZXN1bHRzAAAAAABQr+EMdGFza19yZXN1bHRz');
209
209
  const abi = ABI.from(abiBlob);
210
210
  var Types;
211
211
  (function (Types) {
@@ -236,24 +236,24 @@ var Types;
236
236
  Struct.type('buycontainer')
237
237
  ], buycontainer);
238
238
  Types.buycontainer = buycontainer;
239
- let buygoods = class buygoods extends Struct {
239
+ let buyitems = class buyitems extends Struct {
240
240
  };
241
241
  __decorate([
242
242
  Struct.field(Name)
243
- ], buygoods.prototype, "entity_type", void 0);
243
+ ], buyitems.prototype, "entity_type", void 0);
244
244
  __decorate([
245
245
  Struct.field(UInt64)
246
- ], buygoods.prototype, "id", void 0);
246
+ ], buyitems.prototype, "id", void 0);
247
247
  __decorate([
248
248
  Struct.field(UInt16)
249
- ], buygoods.prototype, "good_id", void 0);
249
+ ], buyitems.prototype, "item_id", void 0);
250
250
  __decorate([
251
251
  Struct.field(UInt32)
252
- ], buygoods.prototype, "quantity", void 0);
253
- buygoods = __decorate([
254
- Struct.type('buygoods')
255
- ], buygoods);
256
- Types.buygoods = buygoods;
252
+ ], buyitems.prototype, "quantity", void 0);
253
+ buyitems = __decorate([
254
+ Struct.type('buyitems')
255
+ ], buyitems);
256
+ Types.buyitems = buyitems;
257
257
  let buyship = class buyship extends Struct {
258
258
  };
259
259
  __decorate([
@@ -332,32 +332,11 @@ var Types;
332
332
  Struct.type('cancel_results')
333
333
  ], cancel_results);
334
334
  Types.cancel_results = cancel_results;
335
- let mixture_component = class mixture_component extends Struct {
336
- };
337
- __decorate([
338
- Struct.field(UInt16)
339
- ], mixture_component.prototype, "good_id", void 0);
340
- __decorate([
341
- Struct.field(UInt16)
342
- ], mixture_component.prototype, "purity", void 0);
343
- mixture_component = __decorate([
344
- Struct.type('mixture_component')
345
- ], mixture_component);
346
- Types.mixture_component = mixture_component;
347
- let mixture_info = class mixture_info extends Struct {
348
- };
349
- __decorate([
350
- Struct.field(mixture_component, { array: true })
351
- ], mixture_info.prototype, "components", void 0);
352
- mixture_info = __decorate([
353
- Struct.type('mixture_info')
354
- ], mixture_info);
355
- Types.mixture_info = mixture_info;
356
335
  let cargo_item = class cargo_item extends Struct {
357
336
  };
358
337
  __decorate([
359
338
  Struct.field(UInt16)
360
- ], cargo_item.prototype, "good_id", void 0);
339
+ ], cargo_item.prototype, "item_id", void 0);
361
340
  __decorate([
362
341
  Struct.field(UInt32)
363
342
  ], cargo_item.prototype, "quantity", void 0);
@@ -365,8 +344,8 @@ var Types;
365
344
  Struct.field(UInt64)
366
345
  ], cargo_item.prototype, "unit_cost", void 0);
367
346
  __decorate([
368
- Struct.field(mixture_info, { optional: true })
369
- ], cargo_item.prototype, "mixture", void 0);
347
+ Struct.field(UInt64, { optional: true })
348
+ ], cargo_item.prototype, "seed", void 0);
370
349
  cargo_item = __decorate([
371
350
  Struct.type('cargo_item')
372
351
  ], cargo_item);
@@ -381,17 +360,32 @@ var Types;
381
360
  ], cargo_row.prototype, "entity_id", void 0);
382
361
  __decorate([
383
362
  Struct.field(UInt64)
384
- ], cargo_row.prototype, "good_id", void 0);
363
+ ], cargo_row.prototype, "item_id", void 0);
385
364
  __decorate([
386
365
  Struct.field(UInt64)
387
366
  ], cargo_row.prototype, "quantity", void 0);
388
367
  __decorate([
389
368
  Struct.field(UInt64)
390
369
  ], cargo_row.prototype, "unit_cost", void 0);
370
+ __decorate([
371
+ Struct.field(UInt64)
372
+ ], cargo_row.prototype, "seed", void 0);
391
373
  cargo_row = __decorate([
392
374
  Struct.type('cargo_row')
393
375
  ], cargo_row);
394
376
  Types.cargo_row = cargo_row;
377
+ let cleanrsvp = class cleanrsvp extends Struct {
378
+ };
379
+ __decorate([
380
+ Struct.field(UInt64)
381
+ ], cleanrsvp.prototype, "epoch", void 0);
382
+ __decorate([
383
+ Struct.field(UInt64)
384
+ ], cleanrsvp.prototype, "max_rows", void 0);
385
+ cleanrsvp = __decorate([
386
+ Struct.type('cleanrsvp')
387
+ ], cleanrsvp);
388
+ Types.cleanrsvp = cleanrsvp;
395
389
  let cleartable = class cleartable extends Struct {
396
390
  };
397
391
  __decorate([
@@ -416,6 +410,177 @@ var Types;
416
410
  Struct.type('commit')
417
411
  ], commit);
418
412
  Types.commit = commit;
413
+ let movement_stats = class movement_stats extends Struct {
414
+ };
415
+ __decorate([
416
+ Struct.field(UInt32)
417
+ ], movement_stats.prototype, "thrust", void 0);
418
+ __decorate([
419
+ Struct.field(UInt16)
420
+ ], movement_stats.prototype, "drain", void 0);
421
+ movement_stats = __decorate([
422
+ Struct.type('movement_stats')
423
+ ], movement_stats);
424
+ Types.movement_stats = movement_stats;
425
+ let energy_stats = class energy_stats extends Struct {
426
+ };
427
+ __decorate([
428
+ Struct.field(UInt16)
429
+ ], energy_stats.prototype, "capacity", void 0);
430
+ __decorate([
431
+ Struct.field(UInt16)
432
+ ], energy_stats.prototype, "recharge", void 0);
433
+ energy_stats = __decorate([
434
+ Struct.type('energy_stats')
435
+ ], energy_stats);
436
+ Types.energy_stats = energy_stats;
437
+ let loader_stats = class loader_stats extends Struct {
438
+ };
439
+ __decorate([
440
+ Struct.field(UInt32)
441
+ ], loader_stats.prototype, "mass", void 0);
442
+ __decorate([
443
+ Struct.field(UInt16)
444
+ ], loader_stats.prototype, "thrust", void 0);
445
+ __decorate([
446
+ Struct.field(UInt8)
447
+ ], loader_stats.prototype, "quantity", void 0);
448
+ loader_stats = __decorate([
449
+ Struct.type('loader_stats')
450
+ ], loader_stats);
451
+ Types.loader_stats = loader_stats;
452
+ let trade_stats = class trade_stats extends Struct {
453
+ };
454
+ __decorate([
455
+ Struct.field(UInt16)
456
+ ], trade_stats.prototype, "margin", void 0);
457
+ trade_stats = __decorate([
458
+ Struct.type('trade_stats')
459
+ ], trade_stats);
460
+ Types.trade_stats = trade_stats;
461
+ let extractor_stats = class extractor_stats extends Struct {
462
+ };
463
+ __decorate([
464
+ Struct.field(UInt16)
465
+ ], extractor_stats.prototype, "rate", void 0);
466
+ __decorate([
467
+ Struct.field(UInt16)
468
+ ], extractor_stats.prototype, "drain", void 0);
469
+ __decorate([
470
+ Struct.field(UInt16)
471
+ ], extractor_stats.prototype, "efficiency", void 0);
472
+ __decorate([
473
+ Struct.field(UInt16)
474
+ ], extractor_stats.prototype, "depth", void 0);
475
+ __decorate([
476
+ Struct.field(UInt16)
477
+ ], extractor_stats.prototype, "drill", void 0);
478
+ extractor_stats = __decorate([
479
+ Struct.type('extractor_stats')
480
+ ], extractor_stats);
481
+ Types.extractor_stats = extractor_stats;
482
+ let warp_stats = class warp_stats extends Struct {
483
+ };
484
+ __decorate([
485
+ Struct.field(UInt32)
486
+ ], warp_stats.prototype, "range", void 0);
487
+ warp_stats = __decorate([
488
+ Struct.type('warp_stats')
489
+ ], warp_stats);
490
+ Types.warp_stats = warp_stats;
491
+ let entity_defaults = class entity_defaults extends Struct {
492
+ };
493
+ __decorate([
494
+ Struct.field(UInt32)
495
+ ], entity_defaults.prototype, "ship_hullmass", void 0);
496
+ __decorate([
497
+ Struct.field(UInt32)
498
+ ], entity_defaults.prototype, "ship_capacity", void 0);
499
+ __decorate([
500
+ Struct.field(UInt16)
501
+ ], entity_defaults.prototype, "ship_energy", void 0);
502
+ __decorate([
503
+ Struct.field(UInt16)
504
+ ], entity_defaults.prototype, "ship_z", void 0);
505
+ __decorate([
506
+ Struct.field(movement_stats)
507
+ ], entity_defaults.prototype, "ship_engines", void 0);
508
+ __decorate([
509
+ Struct.field(energy_stats)
510
+ ], entity_defaults.prototype, "ship_generator", void 0);
511
+ __decorate([
512
+ Struct.field(loader_stats)
513
+ ], entity_defaults.prototype, "ship_loaders", void 0);
514
+ __decorate([
515
+ Struct.field(trade_stats)
516
+ ], entity_defaults.prototype, "ship_trade", void 0);
517
+ __decorate([
518
+ Struct.field(extractor_stats)
519
+ ], entity_defaults.prototype, "ship_extractor", void 0);
520
+ __decorate([
521
+ Struct.field(warp_stats)
522
+ ], entity_defaults.prototype, "ship_warp", void 0);
523
+ __decorate([
524
+ Struct.field(UInt32)
525
+ ], entity_defaults.prototype, "warehouse_capacity", void 0);
526
+ __decorate([
527
+ Struct.field(UInt16)
528
+ ], entity_defaults.prototype, "warehouse_z", void 0);
529
+ __decorate([
530
+ Struct.field(loader_stats)
531
+ ], entity_defaults.prototype, "warehouse_loaders", void 0);
532
+ __decorate([
533
+ Struct.field(UInt32)
534
+ ], entity_defaults.prototype, "container_hullmass", void 0);
535
+ __decorate([
536
+ Struct.field(UInt32)
537
+ ], entity_defaults.prototype, "container_capacity", void 0);
538
+ __decorate([
539
+ Struct.field(UInt16)
540
+ ], entity_defaults.prototype, "container_z", void 0);
541
+ entity_defaults = __decorate([
542
+ Struct.type('entity_defaults')
543
+ ], entity_defaults);
544
+ Types.entity_defaults = entity_defaults;
545
+ let item_def = class item_def extends Struct {
546
+ };
547
+ __decorate([
548
+ Struct.field(UInt16)
549
+ ], item_def.prototype, "id", void 0);
550
+ __decorate([
551
+ Struct.field(UInt32)
552
+ ], item_def.prototype, "base_price", void 0);
553
+ __decorate([
554
+ Struct.field(UInt32)
555
+ ], item_def.prototype, "mass", void 0);
556
+ item_def = __decorate([
557
+ Struct.type('item_def')
558
+ ], item_def);
559
+ Types.item_def = item_def;
560
+ let game_config = class game_config extends Struct {
561
+ };
562
+ __decorate([
563
+ Struct.field(UInt32)
564
+ ], game_config.prototype, "version", void 0);
565
+ __decorate([
566
+ Struct.field(entity_defaults)
567
+ ], game_config.prototype, "defaults", void 0);
568
+ __decorate([
569
+ Struct.field(item_def, { array: true })
570
+ ], game_config.prototype, "items", void 0);
571
+ game_config = __decorate([
572
+ Struct.type('game_config')
573
+ ], game_config);
574
+ Types.game_config = game_config;
575
+ let configlog = class configlog extends Struct {
576
+ };
577
+ __decorate([
578
+ Struct.field(game_config)
579
+ ], configlog.prototype, "config", void 0);
580
+ configlog = __decorate([
581
+ Struct.type('configlog')
582
+ ], configlog);
583
+ Types.configlog = configlog;
419
584
  let coordinates = class coordinates extends Struct {
420
585
  };
421
586
  __decorate([
@@ -515,18 +680,6 @@ var Types;
515
680
  Struct.type('enable')
516
681
  ], enable);
517
682
  Types.enable = enable;
518
- let energy_stats = class energy_stats extends Struct {
519
- };
520
- __decorate([
521
- Struct.field(UInt16)
522
- ], energy_stats.prototype, "capacity", void 0);
523
- __decorate([
524
- Struct.field(UInt16)
525
- ], energy_stats.prototype, "recharge", void 0);
526
- energy_stats = __decorate([
527
- Struct.type('energy_stats')
528
- ], energy_stats);
529
- Types.energy_stats = energy_stats;
530
683
  let entity_current_state = class entity_current_state extends Struct {
531
684
  };
532
685
  __decorate([
@@ -539,48 +692,6 @@ var Types;
539
692
  Struct.type('entity_current_state')
540
693
  ], entity_current_state);
541
694
  Types.entity_current_state = entity_current_state;
542
- let loader_stats = class loader_stats extends Struct {
543
- };
544
- __decorate([
545
- Struct.field(UInt32)
546
- ], loader_stats.prototype, "mass", void 0);
547
- __decorate([
548
- Struct.field(UInt16)
549
- ], loader_stats.prototype, "thrust", void 0);
550
- __decorate([
551
- Struct.field(UInt8)
552
- ], loader_stats.prototype, "quantity", void 0);
553
- loader_stats = __decorate([
554
- Struct.type('loader_stats')
555
- ], loader_stats);
556
- Types.loader_stats = loader_stats;
557
- let movement_stats = class movement_stats extends Struct {
558
- };
559
- __decorate([
560
- Struct.field(UInt32)
561
- ], movement_stats.prototype, "thrust", void 0);
562
- __decorate([
563
- Struct.field(UInt16)
564
- ], movement_stats.prototype, "drain", void 0);
565
- movement_stats = __decorate([
566
- Struct.type('movement_stats')
567
- ], movement_stats);
568
- Types.movement_stats = movement_stats;
569
- let extractor_stats = class extractor_stats extends Struct {
570
- };
571
- __decorate([
572
- Struct.field(UInt16)
573
- ], extractor_stats.prototype, "rate", void 0);
574
- __decorate([
575
- Struct.field(UInt16)
576
- ], extractor_stats.prototype, "drain", void 0);
577
- __decorate([
578
- Struct.field(UInt16)
579
- ], extractor_stats.prototype, "efficiency", void 0);
580
- extractor_stats = __decorate([
581
- Struct.type('extractor_stats')
582
- ], extractor_stats);
583
- Types.extractor_stats = extractor_stats;
584
695
  let entity_info = class entity_info extends Struct {
585
696
  };
586
697
  __decorate([
@@ -625,6 +736,9 @@ var Types;
625
736
  __decorate([
626
737
  Struct.field(extractor_stats, { optional: true })
627
738
  ], entity_info.prototype, "extractor", void 0);
739
+ __decorate([
740
+ Struct.field(warp_stats, { optional: true })
741
+ ], entity_info.prototype, "warp", void 0);
628
742
  __decorate([
629
743
  Struct.field('bool')
630
744
  ], entity_info.prototype, "is_idle", void 0);
@@ -712,13 +826,28 @@ var Types;
712
826
  Types.entitygroup_row = entitygroup_row;
713
827
  let extract = class extract extends Struct {
714
828
  };
829
+ __decorate([
830
+ Struct.field(Name)
831
+ ], extract.prototype, "entity_type", void 0);
715
832
  __decorate([
716
833
  Struct.field(UInt64)
717
- ], extract.prototype, "ship_id", void 0);
834
+ ], extract.prototype, "id", void 0);
835
+ __decorate([
836
+ Struct.field(UInt16)
837
+ ], extract.prototype, "stratum", void 0);
838
+ __decorate([
839
+ Struct.field(UInt32)
840
+ ], extract.prototype, "quantity", void 0);
718
841
  extract = __decorate([
719
842
  Struct.type('extract')
720
843
  ], extract);
721
844
  Types.extract = extract;
845
+ let getconfig = class getconfig extends Struct {
846
+ };
847
+ getconfig = __decorate([
848
+ Struct.type('getconfig')
849
+ ], getconfig);
850
+ Types.getconfig = getconfig;
722
851
  let getentities = class getentities extends Struct {
723
852
  };
724
853
  __decorate([
@@ -743,12 +872,12 @@ var Types;
743
872
  Struct.type('getentity')
744
873
  ], getentity);
745
874
  Types.getentity = getentity;
746
- let getgoods = class getgoods extends Struct {
875
+ let getitems = class getitems extends Struct {
747
876
  };
748
- getgoods = __decorate([
749
- Struct.type('getgoods')
750
- ], getgoods);
751
- Types.getgoods = getgoods;
877
+ getitems = __decorate([
878
+ Struct.type('getitems')
879
+ ], getitems);
880
+ Types.getitems = getitems;
752
881
  let getlocation = class getlocation extends Struct {
753
882
  };
754
883
  __decorate([
@@ -803,6 +932,21 @@ var Types;
803
932
  Struct.type('getstarter')
804
933
  ], getstarter);
805
934
  Types.getstarter = getstarter;
935
+ let getstratum = class getstratum extends Struct {
936
+ };
937
+ __decorate([
938
+ Struct.field(Int64)
939
+ ], getstratum.prototype, "x", void 0);
940
+ __decorate([
941
+ Struct.field(Int64)
942
+ ], getstratum.prototype, "y", void 0);
943
+ __decorate([
944
+ Struct.field(UInt16)
945
+ ], getstratum.prototype, "stratum", void 0);
946
+ getstratum = __decorate([
947
+ Struct.type('getstratum')
948
+ ], getstratum);
949
+ Types.getstratum = getstratum;
806
950
  let getsummaries = class getsummaries extends Struct {
807
951
  };
808
952
  __decorate([
@@ -815,30 +959,6 @@ var Types;
815
959
  Struct.type('getsummaries')
816
960
  ], getsummaries);
817
961
  Types.getsummaries = getsummaries;
818
- let good = class good extends Struct {
819
- };
820
- __decorate([
821
- Struct.field(UInt16)
822
- ], good.prototype, "id", void 0);
823
- __decorate([
824
- Struct.field(UInt32)
825
- ], good.prototype, "base_price", void 0);
826
- __decorate([
827
- Struct.field(UInt32)
828
- ], good.prototype, "mass", void 0);
829
- good = __decorate([
830
- Struct.type('good')
831
- ], good);
832
- Types.good = good;
833
- let goods_info = class goods_info extends Struct {
834
- };
835
- __decorate([
836
- Struct.field(good, { array: true })
837
- ], goods_info.prototype, "goods", void 0);
838
- goods_info = __decorate([
839
- Struct.type('goods_info')
840
- ], goods_info);
841
- Types.goods_info = goods_info;
842
962
  let grouptravel = class grouptravel extends Struct {
843
963
  };
844
964
  __decorate([
@@ -884,6 +1004,15 @@ var Types;
884
1004
  Struct.type('init')
885
1005
  ], init);
886
1006
  Types.init = init;
1007
+ let items_info = class items_info extends Struct {
1008
+ };
1009
+ __decorate([
1010
+ Struct.field(item_def, { array: true })
1011
+ ], items_info.prototype, "items", void 0);
1012
+ items_info = __decorate([
1013
+ Struct.type('items_info')
1014
+ ], items_info);
1015
+ Types.items_info = items_info;
887
1016
  let join = class join extends Struct {
888
1017
  };
889
1018
  __decorate([
@@ -937,31 +1066,34 @@ var Types;
937
1066
  __decorate([
938
1067
  Struct.field(location_epoch)
939
1068
  ], location_derived.prototype, "epoch_props", void 0);
1069
+ __decorate([
1070
+ Struct.field(UInt16)
1071
+ ], location_derived.prototype, "size", void 0);
940
1072
  location_derived = __decorate([
941
1073
  Struct.type('location_derived')
942
1074
  ], location_derived);
943
1075
  Types.location_derived = location_derived;
944
- let location_good = class location_good extends Struct {
1076
+ let location_item = class location_item extends Struct {
945
1077
  };
946
1078
  __decorate([
947
1079
  Struct.field(UInt16)
948
- ], location_good.prototype, "id", void 0);
1080
+ ], location_item.prototype, "id", void 0);
949
1081
  __decorate([
950
1082
  Struct.field(UInt32)
951
- ], location_good.prototype, "price", void 0);
1083
+ ], location_item.prototype, "price", void 0);
952
1084
  __decorate([
953
1085
  Struct.field(UInt16)
954
- ], location_good.prototype, "supply", void 0);
1086
+ ], location_item.prototype, "supply", void 0);
955
1087
  __decorate([
956
1088
  Struct.field(UInt32)
957
- ], location_good.prototype, "rarity_multiplier", void 0);
1089
+ ], location_item.prototype, "rarity_multiplier", void 0);
958
1090
  __decorate([
959
1091
  Struct.field(UInt32)
960
- ], location_good.prototype, "location_multiplier", void 0);
961
- location_good = __decorate([
962
- Struct.type('location_good')
963
- ], location_good);
964
- Types.location_good = location_good;
1092
+ ], location_item.prototype, "location_multiplier", void 0);
1093
+ location_item = __decorate([
1094
+ Struct.type('location_item')
1095
+ ], location_item);
1096
+ Types.location_item = location_item;
965
1097
  let location_info = class location_info extends Struct {
966
1098
  };
967
1099
  __decorate([
@@ -971,8 +1103,8 @@ var Types;
971
1103
  Struct.field('bool')
972
1104
  ], location_info.prototype, "is_system", void 0);
973
1105
  __decorate([
974
- Struct.field(location_good, { array: true })
975
- ], location_info.prototype, "goods", void 0);
1106
+ Struct.field(location_item, { array: true })
1107
+ ], location_info.prototype, "items", void 0);
976
1108
  location_info = __decorate([
977
1109
  Struct.type('location_info')
978
1110
  ], location_info);
@@ -1069,21 +1201,6 @@ var Types;
1069
1201
  __decorate([
1070
1202
  Struct.field(UInt16, { optional: true })
1071
1203
  ], task_event.prototype, "new_energy", void 0);
1072
- __decorate([
1073
- Struct.field(coordinates, { optional: true })
1074
- ], task_event.prototype, "new_coordinates", void 0);
1075
- __decorate([
1076
- Struct.field(Int64)
1077
- ], task_event.prototype, "cargomass_delta", void 0);
1078
- __decorate([
1079
- Struct.field(cargo_item, { array: true })
1080
- ], task_event.prototype, "cargo_added", void 0);
1081
- __decorate([
1082
- Struct.field(cargo_item, { array: true })
1083
- ], task_event.prototype, "cargo_removed", void 0);
1084
- __decorate([
1085
- Struct.field(Int64, { optional: true })
1086
- ], task_event.prototype, "credits", void 0);
1087
1204
  task_event = __decorate([
1088
1205
  Struct.type('task_event')
1089
1206
  ], task_event);
@@ -1193,6 +1310,18 @@ var Types;
1193
1310
  Struct.type('recharge')
1194
1311
  ], recharge);
1195
1312
  Types.recharge = recharge;
1313
+ let reserve_row = class reserve_row extends Struct {
1314
+ };
1315
+ __decorate([
1316
+ Struct.field(UInt64)
1317
+ ], reserve_row.prototype, "id", void 0);
1318
+ __decorate([
1319
+ Struct.field(UInt32)
1320
+ ], reserve_row.prototype, "remaining", void 0);
1321
+ reserve_row = __decorate([
1322
+ Struct.type('reserve_row')
1323
+ ], reserve_row);
1324
+ Types.reserve_row = reserve_row;
1196
1325
  let resolve = class resolve extends Struct {
1197
1326
  };
1198
1327
  __decorate([
@@ -1232,6 +1361,24 @@ var Types;
1232
1361
  Struct.type('resolve_results')
1233
1362
  ], resolve_results);
1234
1363
  Types.resolve_results = resolve_results;
1364
+ let resource_stats = class resource_stats extends Struct {
1365
+ };
1366
+ __decorate([
1367
+ Struct.field(UInt16)
1368
+ ], resource_stats.prototype, "purity", void 0);
1369
+ __decorate([
1370
+ Struct.field(UInt16)
1371
+ ], resource_stats.prototype, "density", void 0);
1372
+ __decorate([
1373
+ Struct.field(UInt16)
1374
+ ], resource_stats.prototype, "reactivity", void 0);
1375
+ __decorate([
1376
+ Struct.field(UInt16)
1377
+ ], resource_stats.prototype, "resonance", void 0);
1378
+ resource_stats = __decorate([
1379
+ Struct.type('resource_stats')
1380
+ ], resource_stats);
1381
+ Types.resource_stats = resource_stats;
1235
1382
  let salt = class salt extends Struct {
1236
1383
  };
1237
1384
  __decorate([
@@ -1241,24 +1388,24 @@ var Types;
1241
1388
  Struct.type('salt')
1242
1389
  ], salt);
1243
1390
  Types.salt = salt;
1244
- let sellgoods = class sellgoods extends Struct {
1391
+ let sellitems = class sellitems extends Struct {
1245
1392
  };
1246
1393
  __decorate([
1247
1394
  Struct.field(Name)
1248
- ], sellgoods.prototype, "entity_type", void 0);
1395
+ ], sellitems.prototype, "entity_type", void 0);
1249
1396
  __decorate([
1250
1397
  Struct.field(UInt64)
1251
- ], sellgoods.prototype, "id", void 0);
1398
+ ], sellitems.prototype, "id", void 0);
1252
1399
  __decorate([
1253
1400
  Struct.field(UInt16)
1254
- ], sellgoods.prototype, "good_id", void 0);
1401
+ ], sellitems.prototype, "item_id", void 0);
1255
1402
  __decorate([
1256
1403
  Struct.field(UInt32)
1257
- ], sellgoods.prototype, "quantity", void 0);
1258
- sellgoods = __decorate([
1259
- Struct.type('sellgoods')
1260
- ], sellgoods);
1261
- Types.sellgoods = sellgoods;
1404
+ ], sellitems.prototype, "quantity", void 0);
1405
+ sellitems = __decorate([
1406
+ Struct.type('sellitems')
1407
+ ], sellitems);
1408
+ Types.sellitems = sellitems;
1262
1409
  let sequence_row = class sequence_row extends Struct {
1263
1410
  };
1264
1411
  __decorate([
@@ -1271,15 +1418,6 @@ var Types;
1271
1418
  Struct.type('sequence_row')
1272
1419
  ], sequence_row);
1273
1420
  Types.sequence_row = sequence_row;
1274
- let trade_stats = class trade_stats extends Struct {
1275
- };
1276
- __decorate([
1277
- Struct.field(UInt16)
1278
- ], trade_stats.prototype, "margin", void 0);
1279
- trade_stats = __decorate([
1280
- Struct.type('trade_stats')
1281
- ], trade_stats);
1282
- Types.trade_stats = trade_stats;
1283
1421
  let ship_row = class ship_row extends Struct {
1284
1422
  };
1285
1423
  __decorate([
@@ -1321,6 +1459,9 @@ var Types;
1321
1459
  __decorate([
1322
1460
  Struct.field(extractor_stats, { optional: true })
1323
1461
  ], ship_row.prototype, "extractor", void 0);
1462
+ __decorate([
1463
+ Struct.field(warp_stats, { optional: true })
1464
+ ], ship_row.prototype, "warp", void 0);
1324
1465
  __decorate([
1325
1466
  Struct.field(schedule, { optional: true })
1326
1467
  ], ship_row.prototype, "schedule", void 0);
@@ -1367,6 +1508,36 @@ var Types;
1367
1508
  Struct.type('state_row')
1368
1509
  ], state_row);
1369
1510
  Types.state_row = state_row;
1511
+ let stratum_info = class stratum_info extends Struct {
1512
+ };
1513
+ __decorate([
1514
+ Struct.field(UInt16)
1515
+ ], stratum_info.prototype, "item_id", void 0);
1516
+ __decorate([
1517
+ Struct.field(UInt64)
1518
+ ], stratum_info.prototype, "seed", void 0);
1519
+ __decorate([
1520
+ Struct.field(UInt16)
1521
+ ], stratum_info.prototype, "richness", void 0);
1522
+ __decorate([
1523
+ Struct.field(UInt32)
1524
+ ], stratum_info.prototype, "reserve", void 0);
1525
+ stratum_info = __decorate([
1526
+ Struct.type('stratum_info')
1527
+ ], stratum_info);
1528
+ Types.stratum_info = stratum_info;
1529
+ let stratum_data = class stratum_data extends Struct {
1530
+ };
1531
+ __decorate([
1532
+ Struct.field(stratum_info)
1533
+ ], stratum_data.prototype, "stratum", void 0);
1534
+ __decorate([
1535
+ Struct.field(resource_stats)
1536
+ ], stratum_data.prototype, "stats", void 0);
1537
+ stratum_data = __decorate([
1538
+ Struct.type('stratum_data')
1539
+ ], stratum_data);
1540
+ Types.stratum_data = stratum_data;
1370
1541
  let supply_row = class supply_row extends Struct {
1371
1542
  };
1372
1543
  __decorate([
@@ -1380,7 +1551,7 @@ var Types;
1380
1551
  ], supply_row.prototype, "epoch", void 0);
1381
1552
  __decorate([
1382
1553
  Struct.field(UInt16)
1383
- ], supply_row.prototype, "good_id", void 0);
1554
+ ], supply_row.prototype, "item_id", void 0);
1384
1555
  __decorate([
1385
1556
  Struct.field(UInt16)
1386
1557
  ], supply_row.prototype, "supply", void 0);
@@ -1425,7 +1596,7 @@ var Types;
1425
1596
  ], transfer.prototype, "dest_id", void 0);
1426
1597
  __decorate([
1427
1598
  Struct.field(UInt16)
1428
- ], transfer.prototype, "good_id", void 0);
1599
+ ], transfer.prototype, "item_id", void 0);
1429
1600
  __decorate([
1430
1601
  Struct.field(UInt32)
1431
1602
  ], transfer.prototype, "quantity", void 0);
@@ -1465,6 +1636,9 @@ var Types;
1465
1636
  __decorate([
1466
1637
  Struct.field(starter_info)
1467
1638
  ], types_row.prototype, "starter_info_type", void 0);
1639
+ __decorate([
1640
+ Struct.field(game_config)
1641
+ ], types_row.prototype, "game_config_type", void 0);
1468
1642
  types_row = __decorate([
1469
1643
  Struct.type('types_row')
1470
1644
  ], types_row);
@@ -1523,6 +1697,24 @@ var Types;
1523
1697
  Struct.type('warehouse_row')
1524
1698
  ], warehouse_row);
1525
1699
  Types.warehouse_row = warehouse_row;
1700
+ let warp = class warp extends Struct {
1701
+ };
1702
+ __decorate([
1703
+ Struct.field(Name)
1704
+ ], warp.prototype, "entity_type", void 0);
1705
+ __decorate([
1706
+ Struct.field(UInt64)
1707
+ ], warp.prototype, "id", void 0);
1708
+ __decorate([
1709
+ Struct.field(Int64)
1710
+ ], warp.prototype, "x", void 0);
1711
+ __decorate([
1712
+ Struct.field(Int64)
1713
+ ], warp.prototype, "y", void 0);
1714
+ warp = __decorate([
1715
+ Struct.type('warp')
1716
+ ], warp);
1717
+ Types.warp = warp;
1526
1718
  let wipe = class wipe extends Struct {
1527
1719
  };
1528
1720
  wipe = __decorate([
@@ -1542,6 +1734,7 @@ const TableMap = {
1542
1734
  entitygroup: Types.entitygroup_row,
1543
1735
  location: Types.location_row,
1544
1736
  player: Types.player_row,
1737
+ reserve: Types.reserve_row,
1545
1738
  sequence: Types.sequence_row,
1546
1739
  ship: Types.ship_row,
1547
1740
  state: Types.state_row,
@@ -1588,11 +1781,11 @@ const ERROR_SYSTEM_DISABLED = 'This game is currently disabled.';
1588
1781
  const ERROR_SYSTEM_NOT_INITIALIZED = 'This game has not been initialized.';
1589
1782
  const GAME_NOT_FOUND = 'Cannot find game for given account name.';
1590
1783
  const GAME_SEED_NOT_SET = 'This game has not initialized an epoch seed value.';
1591
- const GOOD_DOES_NOT_EXIST = 'Good does not exist.';
1592
- const GOOD_NOT_AVAILABLE_AT_LOCATION = 'Good is not tradeable at ship location.';
1784
+ const ITEM_DOES_NOT_EXIST = 'Item does not exist.';
1785
+ const ITEM_NOT_AVAILABLE_AT_LOCATION = 'Item is not tradeable at ship location.';
1593
1786
  const INSUFFICIENT_BALANCE = 'Insufficient balance.';
1594
- const INSUFFICIENT_GOOD_QUANTITY = 'Insufficient quantity in cargo.';
1595
- const INSUFFICIENT_GOOD_SUPPLY = 'Insufficient supply of good at location.';
1787
+ const INSUFFICIENT_ITEM_QUANTITY = 'Insufficient quantity in cargo.';
1788
+ const INSUFFICIENT_ITEM_SUPPLY = 'Insufficient supply of item at location.';
1596
1789
  const INVALID_AMOUNT = 'Invalid amount.';
1597
1790
  const REQUIRES_MORE_THAN_ONE = 'A value greater than one is required.';
1598
1791
  const REQUIRES_POSITIVE_VALUE = 'Value must be greater than zero.';
@@ -1653,6 +1846,7 @@ var TaskType;
1653
1846
  TaskType[TaskType["LOAD"] = 3] = "LOAD";
1654
1847
  TaskType[TaskType["UNLOAD"] = 4] = "UNLOAD";
1655
1848
  TaskType[TaskType["EXTRACT"] = 5] = "EXTRACT";
1849
+ TaskType[TaskType["WARP"] = 6] = "WARP";
1656
1850
  })(TaskType || (TaskType = {}));
1657
1851
  var LocationType;
1658
1852
  (function (LocationType) {
@@ -1692,43 +1886,52 @@ function coordsToLocationId(coords) {
1692
1886
  const id = (x << BigInt(32)) | y;
1693
1887
  return UInt64.from(id);
1694
1888
  }
1695
- let Good = class Good extends Struct {
1889
+ let Item = class Item extends Struct {
1696
1890
  };
1697
1891
  __decorate([
1698
1892
  Struct.field(UInt16)
1699
- ], Good.prototype, "id", void 0);
1893
+ ], Item.prototype, "id", void 0);
1700
1894
  __decorate([
1701
1895
  Struct.field('string')
1702
- ], Good.prototype, "name", void 0);
1896
+ ], Item.prototype, "name", void 0);
1703
1897
  __decorate([
1704
1898
  Struct.field('string')
1705
- ], Good.prototype, "description", void 0);
1899
+ ], Item.prototype, "description", void 0);
1706
1900
  __decorate([
1707
1901
  Struct.field(UInt32)
1708
- ], Good.prototype, "base_price", void 0);
1902
+ ], Item.prototype, "base_price", void 0);
1709
1903
  __decorate([
1710
1904
  Struct.field(UInt32)
1711
- ], Good.prototype, "mass", void 0);
1712
- Good = __decorate([
1713
- Struct.type('good')
1714
- ], Good);
1715
- let GoodPrice = class GoodPrice extends Struct {
1905
+ ], Item.prototype, "mass", void 0);
1906
+ __decorate([
1907
+ Struct.field('string')
1908
+ ], Item.prototype, "category", void 0);
1909
+ __decorate([
1910
+ Struct.field('string')
1911
+ ], Item.prototype, "rarity", void 0);
1912
+ __decorate([
1913
+ Struct.field('string')
1914
+ ], Item.prototype, "color", void 0);
1915
+ Item = __decorate([
1916
+ Struct.type('item')
1917
+ ], Item);
1918
+ let ItemPrice = class ItemPrice extends Struct {
1716
1919
  };
1717
1920
  __decorate([
1718
1921
  Struct.field(UInt16)
1719
- ], GoodPrice.prototype, "id", void 0);
1922
+ ], ItemPrice.prototype, "id", void 0);
1720
1923
  __decorate([
1721
- Struct.field(Good)
1722
- ], GoodPrice.prototype, "good", void 0);
1924
+ Struct.field(Item)
1925
+ ], ItemPrice.prototype, "item", void 0);
1723
1926
  __decorate([
1724
1927
  Struct.field(UInt32)
1725
- ], GoodPrice.prototype, "price", void 0);
1928
+ ], ItemPrice.prototype, "price", void 0);
1726
1929
  __decorate([
1727
1930
  Struct.field(UInt16)
1728
- ], GoodPrice.prototype, "supply", void 0);
1729
- GoodPrice = __decorate([
1730
- Struct.type('GoodPrice')
1731
- ], GoodPrice);
1931
+ ], ItemPrice.prototype, "supply", void 0);
1932
+ ItemPrice = __decorate([
1933
+ Struct.type('ItemPrice')
1934
+ ], ItemPrice);
1732
1935
 
1733
1936
  function getCurrentEpoch(game) {
1734
1937
  const current = new Date().getTime();
@@ -1758,1188 +1961,2158 @@ function hash512(seed, string) {
1758
1961
  }
1759
1962
 
1760
1963
  var syllables = [
1964
+ "A",
1965
+ "Ab",
1966
+ "Abl",
1967
+ "Abr",
1968
+ "Ach",
1969
+ "Acr",
1970
+ "Ad",
1971
+ "Ae",
1972
+ "Aed",
1761
1973
  "Aeg",
1974
+ "Aek",
1762
1975
  "Ael",
1976
+ "Aem",
1977
+ "Aen",
1978
+ "Aeon",
1979
+ "Aep",
1980
+ "Aer",
1981
+ "Aes",
1982
+ "Aesk",
1763
1983
  "Aet",
1984
+ "Aev",
1985
+ "Ag",
1986
+ "Agr",
1987
+ "Ahl",
1988
+ "Ai",
1764
1989
  "Ail",
1990
+ "Ain",
1765
1991
  "Ais",
1992
+ "Ak",
1766
1993
  "Aka",
1767
1994
  "Al",
1995
+ "Alb",
1996
+ "Ald",
1997
+ "Alg",
1998
+ "Alk",
1999
+ "Alm",
2000
+ "Alt",
2001
+ "Alv",
2002
+ "Am",
2003
+ "Amb",
1768
2004
  "Ami",
1769
- "And",
2005
+ "Amp",
2006
+ "An",
2007
+ "Anc",
2008
+ "Ang",
1770
2009
  "Ank",
2010
+ "Ann",
2011
+ "Ant",
2012
+ "Ap",
2013
+ "Aph",
2014
+ "Aqu",
2015
+ "Ar",
1771
2016
  "Ara",
2017
+ "Arb",
2018
+ "Arc",
1772
2019
  "Ard",
2020
+ "Arg",
1773
2021
  "Ari",
1774
2022
  "Arl",
2023
+ "Arm",
2024
+ "Arn",
1775
2025
  "Arr",
2026
+ "Ars",
2027
+ "Art",
2028
+ "As",
1776
2029
  "Asa",
2030
+ "Ash",
2031
+ "Asp",
2032
+ "Ast",
2033
+ "Astr",
2034
+ "At",
1777
2035
  "Ath",
2036
+ "Atr",
2037
+ "Aud",
2038
+ "Aug",
2039
+ "Aul",
2040
+ "Aum",
2041
+ "Aun",
2042
+ "Aur",
2043
+ "Aus",
2044
+ "Av",
2045
+ "Avn",
2046
+ "Ax",
1778
2047
  "Ayn",
2048
+ "Az",
1779
2049
  "Aza",
2050
+ "Ba",
2051
+ "Bad",
2052
+ "Bae",
2053
+ "Bael",
2054
+ "Bal",
2055
+ "Bale",
2056
+ "Balm",
2057
+ "Balv",
2058
+ "Ban",
2059
+ "Bane",
2060
+ "Bar",
2061
+ "Bark",
1780
2062
  "Bas",
2063
+ "Bask",
2064
+ "Bast",
1781
2065
  "Bay",
2066
+ "Be",
1782
2067
  "Bel",
2068
+ "Beld",
2069
+ "Belk",
2070
+ "Belm",
2071
+ "Belv",
1783
2072
  "Ben",
1784
- "Bic",
2073
+ "Ber",
2074
+ "Berm",
2075
+ "Bern",
2076
+ "Bet",
2077
+ "Bex",
2078
+ "Bi",
2079
+ "Bin",
2080
+ "Bir",
2081
+ "Birk",
1785
2082
  "Bla",
2083
+ "Blak",
2084
+ "Blas",
2085
+ "Blaz",
2086
+ "Ble",
2087
+ "Bli",
2088
+ "Blin",
2089
+ "Blo",
2090
+ "Blor",
2091
+ "Blu",
1786
2092
  "Bly",
2093
+ "Bo",
1787
2094
  "Bod",
1788
2095
  "Boe",
2096
+ "Bol",
2097
+ "Bolk",
2098
+ "Bolm",
2099
+ "Bolt",
1789
2100
  "Bon",
1790
2101
  "Bor",
1791
2102
  "Bra",
1792
- "Brae",
1793
- "Bret",
2103
+ "Bral",
2104
+ "Bram",
2105
+ "Bran",
2106
+ "Bre",
2107
+ "Brel",
2108
+ "Bren",
1794
2109
  "Bri",
2110
+ "Brim",
2111
+ "Brin",
1795
2112
  "Bro",
2113
+ "Bron",
2114
+ "Bru",
2115
+ "Brul",
2116
+ "Bry",
1796
2117
  "Bryn",
1797
- "Byn",
2118
+ "Bul",
2119
+ "Bun",
2120
+ "Bur",
2121
+ "Busk",
2122
+ "Byr",
2123
+ "Byx",
2124
+ "Ca",
1798
2125
  "Cael",
2126
+ "Caer",
1799
2127
  "Cal",
2128
+ "Cald",
2129
+ "Calv",
1800
2130
  "Cam",
2131
+ "Cand",
1801
2132
  "Car",
2133
+ "Carn",
2134
+ "Cas",
2135
+ "Ce",
2136
+ "Cel",
2137
+ "Celd",
2138
+ "Celm",
1802
2139
  "Cen",
2140
+ "Ceph",
1803
2141
  "Cer",
1804
- "Cet",
1805
- "Chae",
2142
+ "Cern",
2143
+ "Cex",
2144
+ "Cha",
2145
+ "Chal",
2146
+ "Char",
2147
+ "Che",
2148
+ "Cher",
2149
+ "Chi",
2150
+ "Chir",
2151
+ "Cho",
2152
+ "Chol",
2153
+ "Chor",
2154
+ "Chr",
2155
+ "Chra",
2156
+ "Chre",
2157
+ "Chri",
2158
+ "Chro",
2159
+ "Chru",
2160
+ "Chyl",
2161
+ "Ci",
1806
2162
  "Cil",
2163
+ "Cilk",
1807
2164
  "Cin",
2165
+ "Cind",
2166
+ "Cir",
2167
+ "Cla",
2168
+ "Clan",
2169
+ "Clar",
2170
+ "Cle",
1808
2171
  "Cli",
1809
2172
  "Clo",
2173
+ "Cly",
2174
+ "Clyn",
2175
+ "Co",
2176
+ "Col",
2177
+ "Colk",
2178
+ "Coln",
2179
+ "Con",
2180
+ "Cond",
2181
+ "Cor",
2182
+ "Cord",
2183
+ "Cos",
2184
+ "Cra",
2185
+ "Cral",
2186
+ "Cran",
1810
2187
  "Cre",
2188
+ "Crel",
2189
+ "Cres",
2190
+ "Cri",
2191
+ "Crin",
1811
2192
  "Cro",
1812
- "Cy",
2193
+ "Cron",
2194
+ "Cru",
2195
+ "Crul",
2196
+ "Cry",
2197
+ "Cryp",
2198
+ "Cu",
2199
+ "Cul",
2200
+ "Culs",
2201
+ "Cur",
2202
+ "Curn",
1813
2203
  "Cyn",
1814
- "Dae",
1815
- "Dai",
2204
+ "Cyr",
2205
+ "Cyx",
2206
+ "Da",
2207
+ "Dael",
1816
2208
  "Dal",
1817
- "Dax",
2209
+ "Dalk",
2210
+ "Dalv",
2211
+ "Dam",
2212
+ "Dan",
2213
+ "Dand",
2214
+ "Dar",
2215
+ "Darm",
2216
+ "Das",
2217
+ "Dask",
2218
+ "Dast",
2219
+ "Dav",
2220
+ "Dawn",
2221
+ "De",
1818
2222
  "Del",
1819
- "Deo",
1820
- "Dia",
1821
- "Dix",
2223
+ "Delm",
2224
+ "Deln",
2225
+ "Delv",
2226
+ "Dem",
2227
+ "Den",
2228
+ "Dend",
2229
+ "Der",
2230
+ "Derm",
2231
+ "Dern",
2232
+ "Des",
2233
+ "Dest",
2234
+ "Dev",
2235
+ "Dex",
2236
+ "Dha",
2237
+ "Dhal",
2238
+ "Dho",
2239
+ "Dhor",
2240
+ "Dhra",
2241
+ "Dhre",
2242
+ "Dhri",
2243
+ "Dhro",
2244
+ "Dhru",
2245
+ "Di",
2246
+ "Dilk",
2247
+ "Dim",
2248
+ "Din",
2249
+ "Dind",
2250
+ "Dir",
2251
+ "Dirl",
2252
+ "Dis",
2253
+ "Div",
2254
+ "Do",
2255
+ "Dol",
2256
+ "Dolk",
2257
+ "Dom",
1822
2258
  "Don",
1823
2259
  "Dor",
2260
+ "Dorn",
2261
+ "Dos",
2262
+ "Dra",
2263
+ "Dral",
2264
+ "Dran",
2265
+ "Dre",
2266
+ "Dren",
2267
+ "Dri",
2268
+ "Drin",
2269
+ "Dro",
2270
+ "Dron",
2271
+ "Dru",
2272
+ "Drul",
1824
2273
  "Dry",
1825
- "Dyl",
2274
+ "Dryn",
2275
+ "Du",
2276
+ "Duel",
2277
+ "Dul",
2278
+ "Dulk",
2279
+ "Dulm",
2280
+ "Dun",
2281
+ "Dur",
2282
+ "Durn",
2283
+ "Dusk",
1826
2284
  "Dyn",
2285
+ "Dyr",
2286
+ "Dyst",
2287
+ "Dyx",
2288
+ "E",
1827
2289
  "Ean",
1828
- "Ede",
2290
+ "Earl",
2291
+ "Eb",
2292
+ "Ebon",
2293
+ "Ech",
2294
+ "Ecl",
2295
+ "Ed",
2296
+ "Edr",
2297
+ "Ef",
2298
+ "Eg",
1829
2299
  "Eil",
2300
+ "Eild",
2301
+ "Ein",
1830
2302
  "Eir",
2303
+ "Eis",
2304
+ "Ek",
1831
2305
  "El",
1832
- "Ela",
2306
+ "Elb",
1833
2307
  "Eld",
1834
- "Eli",
1835
- "Ely",
1836
- "Ena",
2308
+ "Elk",
2309
+ "Elm",
2310
+ "Elt",
2311
+ "Elv",
2312
+ "Em",
2313
+ "Emb",
2314
+ "Emp",
2315
+ "En",
2316
+ "Enc",
1837
2317
  "End",
2318
+ "Eng",
2319
+ "Enk",
1838
2320
  "Enn",
2321
+ "Ent",
2322
+ "Enth",
2323
+ "Ep",
2324
+ "Eph",
2325
+ "Er",
2326
+ "Erd",
2327
+ "Erg",
1839
2328
  "Eri",
2329
+ "Erk",
2330
+ "Erl",
1840
2331
  "Ern",
1841
- "Ess",
1842
- "Eve",
1843
- "Evo",
2332
+ "Erv",
2333
+ "Es",
2334
+ "Esh",
2335
+ "Esk",
2336
+ "Esr",
2337
+ "Est",
2338
+ "Estr",
2339
+ "Et",
2340
+ "Eth",
2341
+ "Eu",
2342
+ "Eul",
2343
+ "Eur",
2344
+ "Ev",
2345
+ "Evi",
2346
+ "Evr",
2347
+ "Ex",
2348
+ "Exl",
2349
+ "Exr",
2350
+ "Eyn",
2351
+ "Ez",
2352
+ "Fa",
1844
2353
  "Fae",
1845
2354
  "Fael",
1846
2355
  "Fal",
1847
- "Fay",
2356
+ "Falk",
2357
+ "Falm",
2358
+ "Falv",
2359
+ "Fan",
2360
+ "Fand",
2361
+ "Farn",
2362
+ "Fas",
2363
+ "Fe",
2364
+ "Felm",
2365
+ "Feln",
2366
+ "Felv",
1848
2367
  "Fen",
1849
- "Fio",
1850
- "Fis",
2368
+ "Fend",
2369
+ "Fer",
2370
+ "Fern",
2371
+ "Fest",
2372
+ "Fex",
2373
+ "Fi",
2374
+ "Fil",
2375
+ "Fild",
2376
+ "Filk",
2377
+ "Fin",
2378
+ "Fir",
2379
+ "Firn",
2380
+ "Fla",
2381
+ "Flar",
2382
+ "Fle",
2383
+ "Flen",
2384
+ "Fli",
2385
+ "Flin",
2386
+ "Flo",
2387
+ "Flor",
1851
2388
  "Flu",
1852
- "Foe",
1853
- "For",
2389
+ "Fly",
2390
+ "Flyn",
2391
+ "Fo",
2392
+ "Fol",
2393
+ "Fon",
2394
+ "Forn",
2395
+ "Fra",
2396
+ "Fral",
2397
+ "Fran",
1854
2398
  "Fre",
2399
+ "Fren",
2400
+ "Fri",
2401
+ "Frin",
1855
2402
  "Fro",
2403
+ "Fron",
2404
+ "Frul",
2405
+ "Fry",
2406
+ "Fryn",
2407
+ "Fu",
2408
+ "Ful",
2409
+ "Fulk",
2410
+ "Fulm",
2411
+ "Fur",
2412
+ "Furn",
1856
2413
  "Fyn",
1857
- "Gae",
2414
+ "Fyr",
2415
+ "Fyx",
2416
+ "Ga",
1858
2417
  "Gael",
1859
2418
  "Gal",
2419
+ "Gald",
2420
+ "Galk",
2421
+ "Galm",
2422
+ "Galv",
1860
2423
  "Gan",
2424
+ "Gand",
1861
2425
  "Gar",
1862
- "Gem",
1863
- "Geo",
2426
+ "Garn",
2427
+ "Gas",
2428
+ "Gast",
2429
+ "Ge",
2430
+ "Gel",
2431
+ "Geld",
2432
+ "Gelm",
2433
+ "Geln",
2434
+ "Gelv",
2435
+ "Gen",
2436
+ "Gend",
2437
+ "Ger",
2438
+ "Germ",
2439
+ "Gest",
2440
+ "Gex",
2441
+ "Gha",
2442
+ "Ghal",
2443
+ "Ghar",
2444
+ "Ghe",
2445
+ "Ghen",
2446
+ "Ghi",
2447
+ "Gho",
2448
+ "Ghor",
2449
+ "Gi",
1864
2450
  "Gil",
2451
+ "Gild",
2452
+ "Gilk",
1865
2453
  "Gin",
2454
+ "Gind",
2455
+ "Gir",
1866
2456
  "Gla",
2457
+ "Glan",
2458
+ "Gle",
2459
+ "Glen",
2460
+ "Gli",
2461
+ "Glin",
2462
+ "Glo",
2463
+ "Glon",
2464
+ "Gly",
2465
+ "Glyn",
2466
+ "Gna",
2467
+ "Gnar",
2468
+ "Gne",
2469
+ "Gnel",
2470
+ "Gni",
2471
+ "Gno",
2472
+ "Go",
2473
+ "Gol",
2474
+ "Golk",
2475
+ "Goln",
2476
+ "Gon",
2477
+ "Gond",
1867
2478
  "Gor",
2479
+ "Gorm",
2480
+ "Gorn",
2481
+ "Gra",
2482
+ "Gral",
2483
+ "Gran",
1868
2484
  "Gre",
2485
+ "Gren",
2486
+ "Gri",
2487
+ "Gril",
2488
+ "Grin",
1869
2489
  "Gro",
2490
+ "Gron",
1870
2491
  "Gru",
2492
+ "Grul",
2493
+ "Gul",
2494
+ "Gulk",
2495
+ "Gun",
2496
+ "Gur",
2497
+ "Gurn",
2498
+ "Gyn",
2499
+ "Gyr",
2500
+ "Gyx",
2501
+ "Ha",
2502
+ "Hael",
1871
2503
  "Hal",
2504
+ "Halk",
2505
+ "Halm",
2506
+ "Halv",
2507
+ "Han",
1872
2508
  "Har",
1873
- "Has",
2509
+ "Harn",
2510
+ "Hask",
2511
+ "Hast",
1874
2512
  "Hav",
1875
- "Her",
2513
+ "He",
2514
+ "Hel",
2515
+ "Helk",
2516
+ "Heln",
2517
+ "Helv",
2518
+ "Hen",
2519
+ "Hend",
2520
+ "Herm",
2521
+ "Hex",
2522
+ "Hi",
1876
2523
  "Hil",
2524
+ "Hild",
2525
+ "Hilk",
2526
+ "Hilm",
1877
2527
  "Hin",
1878
2528
  "Hir",
2529
+ "Hirn",
2530
+ "Ho",
1879
2531
  "Hol",
2532
+ "Holk",
2533
+ "Holm",
2534
+ "Hon",
2535
+ "Hond",
1880
2536
  "Hor",
1881
- "Hya",
1882
- "Ial",
1883
- "Ian",
1884
- "Ias",
1885
- "Ila",
1886
- "Ile",
2537
+ "Hu",
2538
+ "Hul",
2539
+ "Hulm",
2540
+ "Hun",
2541
+ "Hur",
2542
+ "Hurn",
2543
+ "Hyn",
2544
+ "Hyr",
2545
+ "Hyx",
2546
+ "I",
2547
+ "Ib",
2548
+ "Ich",
2549
+ "Id",
2550
+ "If",
2551
+ "Ig",
2552
+ "Ik",
2553
+ "Il",
2554
+ "Ild",
2555
+ "Ilk",
1887
2556
  "Ilm",
1888
- "Ina",
2557
+ "Iln",
2558
+ "Ilt",
2559
+ "Im",
2560
+ "Imb",
2561
+ "Imp",
2562
+ "In",
2563
+ "Incl",
1889
2564
  "Ind",
1890
- "Ion",
1891
- "Ira",
1892
- "Iro",
2565
+ "Ings",
2566
+ "Ink",
2567
+ "Inl",
2568
+ "Inn",
2569
+ "Int",
2570
+ "Inv",
2571
+ "Io",
2572
+ "Ir",
2573
+ "Ird",
2574
+ "Irk",
2575
+ "Irl",
2576
+ "Irm",
2577
+ "Irn",
2578
+ "Is",
2579
+ "Ish",
2580
+ "Isk",
1893
2581
  "Isl",
2582
+ "Ism",
1894
2583
  "Ist",
2584
+ "It",
1895
2585
  "Ith",
2586
+ "Iv",
2587
+ "Ivr",
2588
+ "Ix",
2589
+ "Iz",
2590
+ "Ja",
2591
+ "Jael",
2592
+ "Jal",
2593
+ "Jalk",
2594
+ "Jalm",
2595
+ "Jalv",
2596
+ "Jan",
2597
+ "Jand",
1896
2598
  "Jar",
2599
+ "Jarn",
1897
2600
  "Jas",
1898
- "Jax",
2601
+ "Je",
2602
+ "Jelk",
2603
+ "Jeln",
1899
2604
  "Jen",
1900
- "Jil",
2605
+ "Jer",
2606
+ "Jern",
2607
+ "Jex",
2608
+ "Ji",
2609
+ "Jild",
2610
+ "Jilk",
2611
+ "Jin",
2612
+ "Jir",
2613
+ "Jirn",
2614
+ "Jo",
1901
2615
  "Jol",
2616
+ "Jolk",
2617
+ "Joln",
1902
2618
  "Jon",
1903
2619
  "Jor",
1904
- "Joy",
2620
+ "Jorn",
2621
+ "Ju",
2622
+ "Jul",
2623
+ "Julk",
2624
+ "Julm",
1905
2625
  "Jun",
2626
+ "Jur",
2627
+ "Jurn",
1906
2628
  "Jyn",
1907
- "Kae",
1908
- "Kai",
2629
+ "Jyr",
2630
+ "Jyx",
2631
+ "Ka",
2632
+ "Kael",
1909
2633
  "Kal",
2634
+ "Kald",
2635
+ "Kalm",
2636
+ "Kalv",
2637
+ "Kam",
2638
+ "Kan",
2639
+ "Kand",
2640
+ "Kar",
2641
+ "Karn",
1910
2642
  "Kas",
1911
- "Kat",
2643
+ "Kask",
2644
+ "Kast",
2645
+ "Ke",
1912
2646
  "Kel",
2647
+ "Keld",
2648
+ "Kelm",
2649
+ "Keln",
2650
+ "Kelv",
1913
2651
  "Ken",
2652
+ "Kend",
1914
2653
  "Ker",
1915
- "Ket",
2654
+ "Kern",
2655
+ "Kes",
2656
+ "Kest",
2657
+ "Kex",
1916
2658
  "Kha",
2659
+ "Khal",
2660
+ "Khan",
2661
+ "Khar",
2662
+ "Khe",
2663
+ "Khen",
2664
+ "Khi",
2665
+ "Kho",
2666
+ "Khor",
2667
+ "Khul",
2668
+ "Ki",
2669
+ "Kil",
2670
+ "Kild",
2671
+ "Kilk",
2672
+ "Kilm",
2673
+ "Kin",
2674
+ "Kir",
2675
+ "Kirn",
2676
+ "Kis",
2677
+ "Kla",
2678
+ "Klan",
2679
+ "Kle",
2680
+ "Klen",
2681
+ "Kli",
2682
+ "Klin",
2683
+ "Klo",
2684
+ "Klon",
2685
+ "Kly",
2686
+ "Kna",
2687
+ "Knar",
2688
+ "Kne",
2689
+ "Knel",
2690
+ "Kni",
2691
+ "Knir",
2692
+ "Ko",
1917
2693
  "Kol",
2694
+ "Kolk",
2695
+ "Koln",
2696
+ "Kon",
2697
+ "Kond",
1918
2698
  "Kor",
2699
+ "Kord",
2700
+ "Korn",
2701
+ "Kos",
2702
+ "Kra",
2703
+ "Kral",
2704
+ "Kran",
2705
+ "Kre",
2706
+ "Kren",
1919
2707
  "Kri",
2708
+ "Kril",
2709
+ "Krin",
2710
+ "Kro",
2711
+ "Kron",
2712
+ "Kru",
2713
+ "Krul",
2714
+ "Kry",
2715
+ "Kryn",
2716
+ "Ku",
2717
+ "Kul",
2718
+ "Kulk",
2719
+ "Kulm",
2720
+ "Kun",
2721
+ "Kur",
2722
+ "Kurn",
1920
2723
  "Kyn",
1921
- "Lad",
2724
+ "Kyr",
2725
+ "Kyx",
2726
+ "La",
2727
+ "Lae",
2728
+ "Lael",
2729
+ "Lal",
2730
+ "Lald",
2731
+ "Lalm",
1922
2732
  "Lam",
1923
2733
  "Lan",
2734
+ "Lar",
2735
+ "Larn",
1924
2736
  "Las",
2737
+ "Lask",
2738
+ "Lav",
2739
+ "Le",
2740
+ "Lel",
2741
+ "Leld",
2742
+ "Lelm",
2743
+ "Leln",
1925
2744
  "Lem",
1926
2745
  "Len",
1927
- "Leo",
1928
2746
  "Ler",
2747
+ "Lerm",
2748
+ "Lern",
1929
2749
  "Les",
2750
+ "Lev",
1930
2751
  "Lex",
1931
- "Lia",
1932
- "Lil",
2752
+ "Li",
2753
+ "Lild",
2754
+ "Lilk",
2755
+ "Lilm",
1933
2756
  "Lim",
2757
+ "Lin",
2758
+ "Lind",
2759
+ "Lir",
2760
+ "Lirn",
1934
2761
  "Lis",
1935
- "Lith",
1936
- "Lom",
2762
+ "Lo",
2763
+ "Lol",
2764
+ "Lolk",
2765
+ "Loln",
2766
+ "Lon",
2767
+ "Lond",
1937
2768
  "Lor",
1938
- "Lot",
1939
- "Luc",
2769
+ "Lorn",
2770
+ "Los",
2771
+ "Lu",
2772
+ "Lul",
2773
+ "Lulk",
2774
+ "Lulm",
1940
2775
  "Lum",
2776
+ "Lun",
2777
+ "Lur",
2778
+ "Lurn",
2779
+ "Lux",
1941
2780
  "Lyn",
2781
+ "Lyr",
1942
2782
  "Lys",
1943
- "Mae",
2783
+ "Lyx",
2784
+ "Ma",
2785
+ "Mab",
2786
+ "Mael",
1944
2787
  "Mal",
1945
- "Man",
2788
+ "Mald",
2789
+ "Malm",
2790
+ "Malv",
2791
+ "Mand",
1946
2792
  "Mar",
2793
+ "Marn",
1947
2794
  "Mas",
1948
- "Max",
1949
- "Mea",
2795
+ "Mask",
2796
+ "Mav",
2797
+ "Me",
1950
2798
  "Mel",
1951
- "Men",
2799
+ "Meld",
2800
+ "Melm",
2801
+ "Meln",
2802
+ "Melv",
1952
2803
  "Mer",
2804
+ "Merm",
2805
+ "Mern",
2806
+ "Mes",
2807
+ "Mest",
2808
+ "Met",
2809
+ "Mex",
2810
+ "Mi",
2811
+ "Mil",
2812
+ "Mild",
2813
+ "Milm",
2814
+ "Min",
1953
2815
  "Mir",
1954
- "Moe",
2816
+ "Mirn",
2817
+ "Mis",
2818
+ "Mna",
2819
+ "Mne",
2820
+ "Mni",
2821
+ "Mno",
2822
+ "Mo",
2823
+ "Mol",
2824
+ "Molk",
2825
+ "Moln",
1955
2826
  "Mon",
2827
+ "Mond",
1956
2828
  "Mor",
1957
- "Myc",
2829
+ "Mord",
2830
+ "Morn",
2831
+ "Mos",
2832
+ "Mu",
2833
+ "Mul",
2834
+ "Mulk",
2835
+ "Mulm",
2836
+ "Mun",
2837
+ "Mur",
2838
+ "Murn",
1958
2839
  "Myn",
1959
2840
  "Myr",
1960
- "Nad",
2841
+ "Myx",
2842
+ "Na",
1961
2843
  "Nae",
1962
- "Nai",
2844
+ "Nael",
1963
2845
  "Nal",
2846
+ "Nald",
2847
+ "Nalm",
2848
+ "Nalv",
1964
2849
  "Nam",
1965
2850
  "Nan",
2851
+ "Nand",
1966
2852
  "Nar",
1967
- "Nax",
1968
- "Ned",
2853
+ "Narn",
2854
+ "Nas",
2855
+ "Nask",
2856
+ "Nast",
2857
+ "Nav",
2858
+ "Ne",
1969
2859
  "Nel",
2860
+ "Neld",
2861
+ "Nelm",
2862
+ "Neln",
2863
+ "Nelv",
2864
+ "Nem",
1970
2865
  "Nen",
2866
+ "Nend",
1971
2867
  "Ner",
2868
+ "Nerm",
2869
+ "Nern",
1972
2870
  "Nes",
1973
- "Net",
2871
+ "Nev",
1974
2872
  "Nex",
1975
- "Nia",
1976
- "Nic",
2873
+ "Ni",
1977
2874
  "Nil",
2875
+ "Nild",
2876
+ "Nilk",
2877
+ "Nilm",
2878
+ "Nim",
1978
2879
  "Nin",
2880
+ "Nind",
1979
2881
  "Nir",
1980
- "Noe",
2882
+ "Nirn",
2883
+ "Nis",
2884
+ "Niv",
2885
+ "No",
1981
2886
  "Nol",
2887
+ "Nolk",
2888
+ "Noln",
2889
+ "Nom",
2890
+ "Non",
2891
+ "Nond",
1982
2892
  "Nor",
2893
+ "Nord",
2894
+ "Norn",
2895
+ "Nos",
1983
2896
  "Nov",
2897
+ "Nu",
1984
2898
  "Nul",
1985
- "Nyn",
1986
- "Obe",
1987
- "Oca",
1988
- "Ode",
2899
+ "Nulk",
2900
+ "Nulm",
2901
+ "Num",
2902
+ "Nun",
2903
+ "Nur",
2904
+ "Nurn",
2905
+ "Nyx",
2906
+ "O",
2907
+ "Ob",
2908
+ "Obl",
2909
+ "Obr",
2910
+ "Och",
2911
+ "Ocr",
2912
+ "Od",
2913
+ "Odr",
1989
2914
  "Oel",
1990
- "Oen",
2915
+ "Oeln",
2916
+ "Oem",
2917
+ "Oer",
2918
+ "Oev",
2919
+ "Og",
2920
+ "Ogr",
2921
+ "Oi",
2922
+ "Oim",
2923
+ "Oin",
2924
+ "Oir",
1991
2925
  "Ois",
1992
- "Oki",
1993
- "Ola",
1994
- "Ole",
1995
- "Oli",
1996
- "Oly",
1997
- "Oma",
1998
- "Ome",
1999
- "Omn",
2000
- "Ony",
2001
- "Oph",
2002
- "Ora",
2003
- "Ori",
2926
+ "Ok",
2927
+ "Ol",
2928
+ "Olb",
2929
+ "Olk",
2930
+ "Olm",
2931
+ "Olt",
2932
+ "Olv",
2933
+ "Om",
2934
+ "Omb",
2935
+ "Omp",
2936
+ "On",
2937
+ "Onc",
2938
+ "Ond",
2939
+ "Ong",
2940
+ "Onk",
2941
+ "Onl",
2942
+ "Op",
2943
+ "Opl",
2944
+ "Opr",
2945
+ "Or",
2946
+ "Orb",
2947
+ "Orc",
2948
+ "Ord",
2949
+ "Org",
2950
+ "Ork",
2951
+ "Orl",
2952
+ "Orm",
2004
2953
  "Orn",
2005
- "Osa",
2006
- "Ota",
2954
+ "Ors",
2955
+ "Orv",
2956
+ "Os",
2957
+ "Osh",
2958
+ "Osk",
2959
+ "Ost",
2960
+ "Ostr",
2961
+ "Ot",
2007
2962
  "Oth",
2008
- "Ova",
2009
- "Ove",
2010
- "Oxa",
2011
- "Oxe",
2012
- "Oxo",
2013
- "Oxy",
2014
- "Pai",
2963
+ "Othr",
2964
+ "Ou",
2965
+ "Oul",
2966
+ "Oun",
2967
+ "Ous",
2968
+ "Ov",
2969
+ "Ox",
2970
+ "Oyn",
2971
+ "Oz",
2972
+ "Pa",
2973
+ "Pael",
2015
2974
  "Pal",
2975
+ "Pald",
2976
+ "Palm",
2977
+ "Palv",
2016
2978
  "Pan",
2979
+ "Pand",
2017
2980
  "Par",
2981
+ "Parn",
2018
2982
  "Pas",
2019
- "Pat",
2020
- "Pax",
2021
- "Pec",
2022
- "Ped",
2023
- "Peg",
2983
+ "Pask",
2984
+ "Pav",
2985
+ "Pe",
2024
2986
  "Pel",
2987
+ "Peld",
2988
+ "Pelm",
2989
+ "Peln",
2990
+ "Pelv",
2025
2991
  "Pen",
2992
+ "Pend",
2026
2993
  "Per",
2027
- "Pes",
2028
- "Pet",
2994
+ "Perm",
2995
+ "Pern",
2996
+ "Pex",
2029
2997
  "Pha",
2030
2998
  "Phal",
2031
2999
  "Phan",
2032
3000
  "Phar",
3001
+ "Phe",
3002
+ "Phen",
2033
3003
  "Phi",
3004
+ "Phir",
2034
3005
  "Pho",
2035
- "Phu",
2036
- "Pia",
2037
- "Pib",
2038
- "Pic",
2039
- "Pim",
3006
+ "Phol",
3007
+ "Phor",
3008
+ "Phr",
3009
+ "Phra",
3010
+ "Phre",
3011
+ "Phri",
3012
+ "Phro",
3013
+ "Phru",
3014
+ "Phul",
3015
+ "Phyn",
3016
+ "Pi",
3017
+ "Pil",
3018
+ "Pild",
3019
+ "Pilk",
3020
+ "Pilm",
2040
3021
  "Pin",
2041
- "Pio",
2042
- "Pip",
3022
+ "Pind",
2043
3023
  "Pir",
2044
- "Pis",
2045
- "Pit",
2046
- "Pix",
2047
- "Piz",
3024
+ "Pirn",
2048
3025
  "Pla",
3026
+ "Plan",
2049
3027
  "Ple",
3028
+ "Plen",
2050
3029
  "Pli",
3030
+ "Plin",
2051
3031
  "Plo",
3032
+ "Plon",
3033
+ "Plu",
2052
3034
  "Ply",
2053
- "Pod",
3035
+ "Po",
2054
3036
  "Pol",
3037
+ "Polk",
3038
+ "Poln",
2055
3039
  "Pon",
2056
- "Pop",
2057
3040
  "Por",
3041
+ "Pord",
3042
+ "Porn",
2058
3043
  "Pos",
2059
- "Pot",
2060
- "Pow",
2061
3044
  "Pra",
3045
+ "Pral",
3046
+ "Pran",
2062
3047
  "Pre",
3048
+ "Pren",
2063
3049
  "Pri",
3050
+ "Pril",
3051
+ "Prin",
2064
3052
  "Pro",
3053
+ "Pron",
3054
+ "Pru",
3055
+ "Prul",
2065
3056
  "Pry",
2066
- "Pse",
2067
- "Psy",
2068
- "Pto",
2069
- "Pum",
3057
+ "Pryn",
3058
+ "Pu",
3059
+ "Pul",
3060
+ "Pulk",
3061
+ "Pulm",
2070
3062
  "Pun",
2071
- "Pup",
2072
3063
  "Pur",
2073
- "Put",
2074
- "Puz",
2075
- "Py",
3064
+ "Purn",
3065
+ "Pyn",
3066
+ "Pyr",
3067
+ "Pyx",
3068
+ "Qa",
3069
+ "Qael",
2076
3070
  "Qal",
3071
+ "Qald",
3072
+ "Qalm",
3073
+ "Qan",
3074
+ "Qar",
3075
+ "Qarn",
3076
+ "Qe",
3077
+ "Qeld",
3078
+ "Qelm",
3079
+ "Qeln",
3080
+ "Qern",
3081
+ "Qha",
3082
+ "Qhe",
3083
+ "Qhi",
3084
+ "Qho",
3085
+ "Qhu",
3086
+ "Qi",
3087
+ "Qil",
3088
+ "Qild",
3089
+ "Qilk",
3090
+ "Qin",
2077
3091
  "Qir",
3092
+ "Qirn",
3093
+ "Qo",
3094
+ "Qolk",
3095
+ "Qoln",
2078
3096
  "Qor",
2079
- "Qua",
2080
- "Que",
2081
- "Qui",
2082
- "Quil",
2083
- "Quo",
2084
- "Rab",
2085
- "Rad",
2086
- "Rae",
2087
- "Rag",
3097
+ "Qorn",
3098
+ "Qu",
3099
+ "Qul",
3100
+ "Qulk",
3101
+ "Qulm",
3102
+ "Qun",
3103
+ "Qur",
3104
+ "Qurn",
3105
+ "Ra",
3106
+ "Rael",
2088
3107
  "Ral",
3108
+ "Rald",
3109
+ "Ralm",
3110
+ "Ralv",
2089
3111
  "Ram",
2090
- "Ran",
2091
- "Rap",
2092
- "Rat",
2093
- "Rau",
3112
+ "Rand",
3113
+ "Rar",
3114
+ "Rarn",
3115
+ "Ras",
3116
+ "Rask",
3117
+ "Rast",
2094
3118
  "Rav",
2095
- "Raw",
2096
- "Ray",
2097
- "Raz",
2098
- "Rea",
2099
- "Reb",
2100
- "Rec",
2101
- "Red",
2102
- "Ref",
2103
- "Reg",
2104
- "Rei",
3119
+ "Re",
2105
3120
  "Rel",
3121
+ "Reld",
3122
+ "Relm",
3123
+ "Reln",
3124
+ "Relv",
2106
3125
  "Rem",
2107
3126
  "Ren",
2108
- "Rep",
3127
+ "Rer",
3128
+ "Rerm",
3129
+ "Rern",
2109
3130
  "Res",
2110
- "Ret",
2111
3131
  "Rev",
2112
3132
  "Rex",
3133
+ "Rha",
3134
+ "Rhal",
3135
+ "Rhan",
3136
+ "Rhar",
3137
+ "Rhe",
3138
+ "Rhen",
3139
+ "Rhi",
3140
+ "Rhir",
2113
3141
  "Rho",
2114
- "Ria",
2115
- "Rib",
2116
- "Ric",
2117
- "Rid",
2118
- "Rig",
3142
+ "Rhol",
3143
+ "Rhor",
3144
+ "Rhul",
3145
+ "Rhyn",
3146
+ "Ri",
3147
+ "Ril",
3148
+ "Rild",
3149
+ "Rilk",
3150
+ "Rilm",
2119
3151
  "Rim",
2120
3152
  "Rin",
2121
- "Rip",
3153
+ "Rir",
3154
+ "Rirn",
2122
3155
  "Ris",
2123
- "Rit",
2124
3156
  "Riv",
2125
- "Rix",
2126
- "Roa",
2127
- "Rob",
2128
- "Roc",
2129
- "Rod",
2130
- "Rog",
2131
- "Roi",
3157
+ "Ro",
2132
3158
  "Rol",
3159
+ "Rolk",
3160
+ "Roln",
2133
3161
  "Rom",
2134
3162
  "Ron",
2135
- "Roo",
3163
+ "Rond",
2136
3164
  "Ror",
3165
+ "Rord",
3166
+ "Rorn",
2137
3167
  "Ros",
2138
- "Rot",
2139
3168
  "Rov",
2140
- "Row",
2141
- "Roy",
2142
- "Rub",
2143
- "Rud",
2144
- "Rue",
2145
- "Ruf",
2146
- "Rug",
3169
+ "Ru",
2147
3170
  "Rul",
3171
+ "Rulk",
3172
+ "Rulm",
2148
3173
  "Rum",
2149
- "Run",
3174
+ "Rur",
3175
+ "Rurn",
2150
3176
  "Rus",
2151
- "Rut",
2152
- "Rux",
2153
- "Ruz",
2154
3177
  "Ryn",
2155
- "Sab",
2156
- "Sac",
2157
- "Sad",
2158
- "Saf",
2159
- "Sag",
2160
- "Sak",
3178
+ "Rys",
3179
+ "Ryx",
3180
+ "Sa",
3181
+ "Sae",
3182
+ "Sael",
2161
3183
  "Sal",
3184
+ "Sald",
3185
+ "Salm",
3186
+ "Salv",
2162
3187
  "Sam",
2163
3188
  "San",
2164
- "Sap",
2165
3189
  "Sar",
3190
+ "Sarn",
2166
3191
  "Sas",
2167
- "Sat",
2168
- "Sau",
3192
+ "Sask",
2169
3193
  "Sav",
2170
- "Saw",
2171
- "Say",
2172
- "Saz",
2173
- "Sea",
2174
- "Seb",
2175
- "Sec",
2176
- "Sed",
2177
- "See",
2178
- "Seg",
2179
- "Sei",
3194
+ "Scra",
3195
+ "Scre",
3196
+ "Scri",
3197
+ "Scro",
3198
+ "Se",
2180
3199
  "Sel",
2181
- "Sem",
3200
+ "Seld",
3201
+ "Selm",
3202
+ "Seln",
3203
+ "Selv",
2182
3204
  "Sen",
2183
- "Sep",
2184
3205
  "Ser",
3206
+ "Serm",
3207
+ "Sern",
2185
3208
  "Ses",
2186
- "Set",
2187
3209
  "Sev",
2188
- "Sew",
2189
3210
  "Sha",
2190
- "She",
3211
+ "Shal",
3212
+ "Shan",
3213
+ "Shar",
3214
+ "Shen",
2191
3215
  "Shi",
3216
+ "Shir",
2192
3217
  "Sho",
3218
+ "Shol",
3219
+ "Shor",
3220
+ "Shr",
3221
+ "Shra",
3222
+ "Shre",
3223
+ "Shri",
3224
+ "Shro",
3225
+ "Shru",
2193
3226
  "Shu",
2194
- "Sia",
2195
- "Sib",
2196
- "Sic",
2197
- "Sid",
2198
- "Sif",
2199
- "Sig",
3227
+ "Shul",
3228
+ "Shyn",
3229
+ "Si",
2200
3230
  "Sil",
2201
- "Sim",
3231
+ "Sild",
3232
+ "Silm",
2202
3233
  "Sin",
2203
- "Sip",
2204
- "Sir",
3234
+ "Sind",
3235
+ "Sirn",
2205
3236
  "Sis",
2206
- "Sit",
2207
- "Siv",
2208
- "Six",
2209
3237
  "Ska",
3238
+ "Skal",
3239
+ "Skan",
3240
+ "Skar",
2210
3241
  "Ske",
3242
+ "Skel",
3243
+ "Sken",
3244
+ "Sker",
2211
3245
  "Ski",
2212
3246
  "Sko",
2213
- "Sku",
2214
- "Sky",
3247
+ "Skol",
3248
+ "Skon",
3249
+ "Skor",
3250
+ "Skul",
2215
3251
  "Sla",
3252
+ "Slak",
3253
+ "Slan",
3254
+ "Slar",
2216
3255
  "Sle",
3256
+ "Slen",
2217
3257
  "Sli",
3258
+ "Slin",
2218
3259
  "Slo",
2219
- "Slu",
3260
+ "Slor",
2220
3261
  "Sly",
3262
+ "Slyn",
2221
3263
  "Sma",
2222
- "Sme",
2223
- "Smi",
2224
3264
  "Smo",
2225
- "Smu",
3265
+ "Smol",
2226
3266
  "Sna",
2227
3267
  "Sne",
2228
3268
  "Sni",
3269
+ "Snir",
2229
3270
  "Sno",
2230
- "Snu",
2231
- "Sny",
2232
- "Soa",
2233
- "Sob",
2234
- "Soc",
2235
- "Sod",
2236
- "Soe",
2237
- "Sof",
2238
- "Sog",
2239
- "Soi",
3271
+ "So",
2240
3272
  "Sol",
2241
- "Som",
2242
- "Son",
2243
- "Sop",
3273
+ "Solk",
3274
+ "Soln",
2244
3275
  "Sor",
3276
+ "Sord",
3277
+ "Sorn",
2245
3278
  "Sos",
2246
- "Sot",
2247
- "Sou",
2248
- "Sow",
2249
- "Soy",
2250
- "Soz",
3279
+ "Sov",
2251
3280
  "Spa",
3281
+ "Span",
3282
+ "Spar",
2252
3283
  "Spe",
3284
+ "Spen",
3285
+ "Sper",
2253
3286
  "Spi",
3287
+ "Spil",
3288
+ "Spin",
2254
3289
  "Spo",
3290
+ "Spor",
2255
3291
  "Spr",
2256
- "Spu",
2257
- "Spy",
2258
- "Squ",
3292
+ "Spri",
2259
3293
  "Sta",
3294
+ "Stal",
3295
+ "Stan",
3296
+ "Star",
2260
3297
  "Ste",
3298
+ "Stel",
3299
+ "Sten",
3300
+ "Ster",
2261
3301
  "Sti",
3302
+ "Stil",
3303
+ "Stin",
2262
3304
  "Sto",
3305
+ "Stol",
3306
+ "Ston",
3307
+ "Stor",
3308
+ "Str",
3309
+ "Stri",
3310
+ "Stro",
3311
+ "Stru",
2263
3312
  "Stu",
2264
3313
  "Sty",
3314
+ "Styl",
2265
3315
  "Su",
2266
- "Sub",
2267
- "Suc",
2268
- "Sud",
2269
- "Sue",
2270
- "Suf",
2271
- "Sug",
2272
- "Sui",
2273
3316
  "Sul",
3317
+ "Sulm",
2274
3318
  "Sum",
2275
- "Sun",
2276
- "Sup",
2277
3319
  "Sur",
2278
- "Sus",
2279
- "Sut",
2280
- "Swa",
2281
- "Swe",
2282
- "Swi",
2283
- "Swo",
2284
- "Swy",
3320
+ "Surn",
2285
3321
  "Syl",
2286
3322
  "Syn",
2287
- "Syp",
2288
3323
  "Syr",
2289
- "Tab",
2290
- "Tac",
2291
- "Tad",
2292
- "Tag",
2293
- "Tah",
2294
- "Tai",
2295
- "Tak",
3324
+ "Sys",
3325
+ "Syx",
3326
+ "Ta",
3327
+ "Tae",
3328
+ "Tael",
2296
3329
  "Tal",
3330
+ "Tald",
3331
+ "Talm",
3332
+ "Talv",
2297
3333
  "Tam",
2298
- "Tan",
2299
- "Tap",
3334
+ "Tand",
2300
3335
  "Tar",
3336
+ "Tarn",
2301
3337
  "Tas",
2302
- "Tat",
2303
- "Tau",
3338
+ "Task",
3339
+ "Tast",
2304
3340
  "Tav",
2305
- "Taw",
2306
- "Tay",
2307
- "Taz",
2308
3341
  "Te",
2309
- "Teb",
2310
- "Tec",
2311
- "Ted",
2312
- "Tef",
2313
- "Teg",
2314
- "Tei",
2315
3342
  "Tel",
3343
+ "Teld",
3344
+ "Telm",
3345
+ "Teln",
3346
+ "Telv",
2316
3347
  "Tem",
2317
- "Ten",
2318
3348
  "Ter",
3349
+ "Term",
3350
+ "Tern",
2319
3351
  "Tes",
2320
- "Tet",
2321
3352
  "Tev",
2322
- "Tew",
2323
3353
  "Tex",
2324
3354
  "Tha",
2325
3355
  "Thal",
2326
- "The",
3356
+ "Than",
3357
+ "Thar",
3358
+ "Then",
3359
+ "Ther",
2327
3360
  "Thi",
3361
+ "Thir",
2328
3362
  "Tho",
3363
+ "Thol",
3364
+ "Thor",
3365
+ "Thr",
3366
+ "Thra",
3367
+ "Thre",
3368
+ "Thri",
3369
+ "Thro",
3370
+ "Thru",
2329
3371
  "Thu",
3372
+ "Thul",
2330
3373
  "Thy",
2331
- "Tia",
2332
- "Tib",
2333
- "Tic",
2334
- "Tid",
2335
- "Tig",
3374
+ "Thyn",
3375
+ "Ti",
2336
3376
  "Til",
2337
- "Tim",
2338
- "Tin",
2339
- "Tip",
3377
+ "Tild",
3378
+ "Tilk",
3379
+ "Tilm",
3380
+ "Tind",
2340
3381
  "Tir",
3382
+ "Tirn",
2341
3383
  "Tis",
2342
- "Tit",
2343
- "Tiv",
2344
- "Tix",
2345
- "Tiz",
2346
- "Toa",
2347
- "Tob",
2348
- "Tod",
2349
- "Tof",
2350
- "Tog",
2351
- "Toi",
3384
+ "To",
2352
3385
  "Tol",
2353
- "Tom",
3386
+ "Tolk",
3387
+ "Toln",
2354
3388
  "Ton",
2355
- "Too",
2356
- "Top",
3389
+ "Tond",
2357
3390
  "Tor",
2358
- "Tot",
2359
- "Tou",
2360
- "Tow",
2361
- "Toy",
2362
- "Toz",
3391
+ "Tord",
3392
+ "Tos",
3393
+ "Tov",
2363
3394
  "Tra",
3395
+ "Tral",
3396
+ "Tran",
2364
3397
  "Tre",
3398
+ "Tren",
2365
3399
  "Tri",
3400
+ "Tril",
3401
+ "Trin",
2366
3402
  "Tro",
3403
+ "Tron",
2367
3404
  "Tru",
2368
- "Try",
2369
- "Ts",
2370
- "Tua",
2371
- "Tub",
2372
- "Tuc",
2373
- "Tue",
2374
- "Tuf",
2375
- "Tug",
2376
- "Tui",
3405
+ "Trul",
3406
+ "Tryn",
3407
+ "Tu",
2377
3408
  "Tul",
2378
- "Tum",
3409
+ "Tulk",
3410
+ "Tulm",
2379
3411
  "Tun",
2380
- "Tup",
2381
3412
  "Tur",
2382
- "Tus",
2383
- "Tut",
2384
- "Tw",
2385
- "Twa",
2386
- "Twe",
2387
- "Twi",
2388
- "Two",
2389
- "Tya",
2390
- "Tyb",
2391
- "Tyc",
2392
- "Tyd",
2393
- "Tyf",
2394
- "Tyg",
2395
- "Tyl",
2396
- "Tym",
3413
+ "Turn",
2397
3414
  "Tyn",
2398
- "Typ",
2399
3415
  "Tyr",
2400
- "Tys",
2401
- "Tyt",
2402
- "Tyv",
2403
- "Tyz",
3416
+ "Tyx",
2404
3417
  "U",
2405
- "Ubb",
2406
- "Ube",
2407
- "Ubi",
2408
- "Ubo",
2409
- "Ubu",
2410
- "Uca",
2411
- "Uce",
2412
- "Uci",
2413
- "Uco",
2414
- "Ucu",
2415
- "Uda",
2416
- "Ude",
2417
- "Udi",
2418
- "Udo",
2419
- "Udu",
2420
- "Uea",
2421
- "Ueb",
2422
- "Uec",
2423
- "Ued",
2424
- "Uef",
2425
- "Ueg",
2426
- "Uei",
3418
+ "Ub",
3419
+ "Ubl",
3420
+ "Ubr",
3421
+ "Uch",
3422
+ "Ucr",
3423
+ "Ud",
3424
+ "Udr",
2427
3425
  "Uel",
2428
- "Uem",
2429
3426
  "Uen",
2430
- "Uep",
2431
3427
  "Uer",
2432
- "Ues",
2433
- "Uet",
2434
- "Uev",
2435
- "Uew",
2436
- "Uex",
2437
- "Ufa",
2438
- "Ufe",
2439
- "Ufi",
2440
- "Ufo",
2441
- "Ufu",
2442
- "Uga",
2443
- "Uge",
2444
- "Ugi",
2445
- "Ugo",
2446
- "Ugu",
2447
- "Uha",
2448
- "Uhe",
2449
- "Uhi",
2450
- "Uho",
2451
- "Uhu",
2452
- "Uia",
2453
- "Uib",
2454
- "Uic",
2455
- "Uid",
2456
- "Uif",
2457
- "Uig",
2458
- "Uil",
2459
- "Uim",
2460
- "Uin",
2461
- "Uip",
2462
- "Uir",
2463
- "Uis",
2464
- "Uit",
2465
- "Uiv",
2466
- "Uiw",
2467
- "Uix",
2468
- "Uka",
2469
- "Uke",
2470
- "Uki",
2471
- "Uko",
2472
- "Uku",
3428
+ "Uf",
3429
+ "Ug",
3430
+ "Ugr",
3431
+ "Uk",
2473
3432
  "Ul",
2474
- "Ula",
2475
- "Ule",
2476
- "Uli",
2477
- "Ulo",
2478
- "Ulu",
2479
- "Uma",
2480
- "Ume",
2481
- "Umi",
2482
- "Umo",
2483
- "Umr",
2484
- "Umu",
2485
- "Una",
2486
- "Une",
2487
- "Uni",
2488
- "Uno",
2489
- "Unu",
2490
- "Uoa",
2491
- "Uob",
2492
- "Uoc",
2493
- "Uod",
2494
- "Uof",
2495
- "Uog",
2496
- "Uoi",
2497
- "Uol",
2498
- "Uom",
2499
- "Uon",
2500
- "Uop",
2501
- "Uor",
2502
- "Uos",
2503
- "Uot",
2504
- "Uov",
2505
- "Uow",
2506
- "Uoz",
2507
- "Upa",
2508
- "Upe",
2509
- "Upi",
2510
- "Upo",
2511
- "Upu",
2512
- "Ura",
2513
- "Ure",
2514
- "Uri",
2515
- "Uro",
2516
- "Uru",
2517
- "Usa",
2518
- "Use",
3433
+ "Ulb",
3434
+ "Uld",
3435
+ "Ulk",
3436
+ "Ulm",
3437
+ "Ult",
3438
+ "Ulv",
3439
+ "Um",
3440
+ "Umb",
3441
+ "Ump",
3442
+ "Un",
3443
+ "Unc",
3444
+ "Und",
3445
+ "Ung",
3446
+ "Unk",
3447
+ "Unl",
3448
+ "Upl",
3449
+ "Upr",
3450
+ "Ur",
3451
+ "Urb",
3452
+ "Urd",
3453
+ "Urg",
3454
+ "Urk",
3455
+ "Url",
3456
+ "Urm",
3457
+ "Urn",
3458
+ "Urs",
3459
+ "Urv",
3460
+ "Us",
2519
3461
  "Ush",
2520
- "Usi",
2521
- "Uso",
2522
- "Usu",
2523
- "Uta",
2524
- "Ute",
3462
+ "Usk",
3463
+ "Ust",
3464
+ "Ustr",
3465
+ "Ut",
2525
3466
  "Uth",
2526
- "Uti",
2527
- "Uto",
2528
- "Utu",
2529
- "Uva",
2530
- "Uve",
2531
- "Uvi",
2532
- "Uvo",
2533
- "Uvu",
2534
- "Uwa",
2535
- "Uwe",
2536
- "Uwi",
2537
- "Uwo",
2538
- "Uwu",
2539
- "Uxa",
2540
- "Uxe",
2541
- "Uxi",
2542
- "Uxo",
2543
- "Uxu",
2544
- "Uya",
2545
- "Uye",
2546
- "Uyi",
2547
- "Uyo",
2548
- "Uyu",
2549
- "Uza",
2550
- "Uze",
2551
- "Uzi",
2552
- "Uzo",
2553
- "Uzu",
3467
+ "Uv",
3468
+ "Ux",
3469
+ "Uz",
2554
3470
  "Va",
2555
- "Vab",
2556
- "Vac",
2557
- "Vad",
2558
- "Vaf",
2559
- "Vag",
2560
- "Vah",
2561
- "Vai",
2562
- "Vak",
3471
+ "Vael",
2563
3472
  "Val",
3473
+ "Vald",
3474
+ "Valm",
3475
+ "Valv",
2564
3476
  "Van",
2565
- "Vap",
3477
+ "Vand",
2566
3478
  "Var",
3479
+ "Varn",
2567
3480
  "Vas",
2568
- "Vat",
2569
- "Vau",
2570
- "Vav",
2571
- "Vaw",
3481
+ "Vask",
2572
3482
  "Vay",
2573
- "Vaz",
2574
3483
  "Ve",
2575
- "Veb",
2576
- "Vec",
2577
- "Ved",
2578
- "Vef",
2579
- "Veg",
2580
- "Vei",
2581
3484
  "Vel",
3485
+ "Veld",
3486
+ "Velm",
3487
+ "Veln",
3488
+ "Velv",
2582
3489
  "Ven",
2583
3490
  "Ver",
3491
+ "Verm",
3492
+ "Vern",
2584
3493
  "Ves",
2585
- "Vet",
2586
- "Vev",
2587
3494
  "Vex",
2588
3495
  "Vi",
2589
- "Via",
2590
- "Vic",
2591
- "Vid",
2592
- "Vig",
2593
3496
  "Vil",
3497
+ "Vild",
3498
+ "Vilk",
3499
+ "Vilm",
2594
3500
  "Vin",
2595
- "Vip",
3501
+ "Vind",
2596
3502
  "Vir",
3503
+ "Virn",
2597
3504
  "Vis",
2598
- "Vit",
2599
3505
  "Vix",
2600
3506
  "Vo",
2601
- "Vob",
2602
- "Voc",
2603
- "Vod",
2604
- "Vof",
2605
- "Vog",
2606
3507
  "Vol",
3508
+ "Volk",
3509
+ "Voln",
2607
3510
  "Von",
2608
- "Vop",
3511
+ "Vond",
2609
3512
  "Vor",
2610
- "Vot",
2611
- "Vox",
3513
+ "Vord",
3514
+ "Vorn",
3515
+ "Vos",
3516
+ "Vra",
3517
+ "Vral",
3518
+ "Vran",
3519
+ "Vre",
3520
+ "Vren",
3521
+ "Vri",
3522
+ "Vril",
3523
+ "Vrin",
3524
+ "Vro",
3525
+ "Vron",
3526
+ "Vrul",
3527
+ "Vryn",
2612
3528
  "Vu",
2613
- "Vub",
2614
- "Vud",
2615
- "Vuf",
2616
- "Vug",
2617
3529
  "Vul",
3530
+ "Vulk",
3531
+ "Vulm",
2618
3532
  "Vun",
2619
- "Vup",
2620
3533
  "Vur",
2621
- "Vut",
2622
- "Vux",
3534
+ "Vurn",
3535
+ "Vyn",
3536
+ "Vyx",
2623
3537
  "Wa",
2624
- "Wab",
2625
- "Wac",
2626
- "Wad",
2627
- "Waf",
2628
- "Wag",
2629
- "Wah",
2630
- "Wai",
2631
- "Wak",
3538
+ "Wael",
2632
3539
  "Wal",
3540
+ "Wald",
3541
+ "Walm",
3542
+ "Walv",
2633
3543
  "Wan",
2634
- "Wap",
2635
3544
  "War",
2636
- "Was",
2637
- "Wat",
2638
- "Wau",
2639
- "Wav",
2640
- "Waw",
2641
- "Way",
2642
- "Waz",
3545
+ "Wask",
3546
+ "Wast",
2643
3547
  "We",
2644
- "Web",
2645
- "Wec",
2646
- "Wed",
2647
- "Wef",
2648
- "Weg",
2649
- "Wei",
2650
3548
  "Wel",
3549
+ "Welm",
3550
+ "Weln",
3551
+ "Welv",
2651
3552
  "Wen",
2652
3553
  "Wer",
3554
+ "Werm",
3555
+ "Wern",
2653
3556
  "Wes",
2654
- "Wet",
2655
3557
  "Wex",
3558
+ "Whi",
3559
+ "Whra",
3560
+ "Whre",
3561
+ "Whro",
2656
3562
  "Wi",
2657
- "Wib",
2658
- "Wic",
2659
- "Wid",
2660
- "Wig",
2661
3563
  "Wil",
2662
- "Win",
2663
- "Wip",
3564
+ "Wild",
3565
+ "Wilk",
3566
+ "Wilm",
2664
3567
  "Wir",
3568
+ "Wirn",
2665
3569
  "Wis",
2666
- "Wit",
2667
- "Wiv",
2668
- "Wix",
2669
3570
  "Wo",
2670
- "Wob",
2671
- "Woc",
2672
- "Wod",
2673
- "Wof",
2674
- "Wog",
2675
3571
  "Wol",
2676
- "Won",
2677
- "Wop",
3572
+ "Wolk",
3573
+ "Woln",
3574
+ "Wond",
2678
3575
  "Wor",
2679
- "Wot",
2680
- "Wox",
3576
+ "Wra",
3577
+ "Wral",
3578
+ "Wran",
3579
+ "Wre",
3580
+ "Wren",
3581
+ "Wri",
3582
+ "Wrin",
2681
3583
  "Wu",
2682
- "Wub",
2683
- "Wuc",
2684
- "Wud",
2685
- "Wuf",
2686
- "Wug",
2687
3584
  "Wul",
3585
+ "Wulk",
3586
+ "Wulm",
2688
3587
  "Wun",
2689
- "Wup",
2690
3588
  "Wur",
2691
- "Wut",
2692
- "Wux",
3589
+ "Wurn",
2693
3590
  "Wyn",
3591
+ "Wyx",
3592
+ "Xa",
3593
+ "Xael",
3594
+ "Xal",
3595
+ "Xald",
3596
+ "Xalm",
2694
3597
  "Xan",
3598
+ "Xar",
3599
+ "Xarn",
3600
+ "Xe",
3601
+ "Xel",
3602
+ "Xeld",
3603
+ "Xelm",
3604
+ "Xeln",
3605
+ "Xen",
2695
3606
  "Xer",
2696
- "Xia",
3607
+ "Xerm",
3608
+ "Xern",
3609
+ "Xes",
3610
+ "Xex",
3611
+ "Xha",
3612
+ "Xhe",
3613
+ "Xhi",
3614
+ "Xho",
3615
+ "Xhu",
3616
+ "Xi",
3617
+ "Xil",
3618
+ "Xild",
3619
+ "Xilk",
3620
+ "Xilm",
3621
+ "Xin",
3622
+ "Xir",
3623
+ "Xirn",
3624
+ "Xis",
2697
3625
  "Xo",
2698
- "Xoa",
2699
- "Xob",
2700
- "Xoc",
2701
- "Xod",
2702
- "Xoe",
2703
- "Xof",
2704
- "Xog",
2705
- "Xoi",
2706
3626
  "Xol",
2707
- "Xom",
3627
+ "Xolk",
3628
+ "Xoln",
2708
3629
  "Xon",
2709
- "Xop",
2710
3630
  "Xor",
2711
- "Xos",
2712
- "Xot",
2713
- "Xou",
2714
- "Xov",
2715
- "Xow",
2716
- "Xoz",
3631
+ "Xord",
3632
+ "Xorn",
3633
+ "Xu",
3634
+ "Xul",
3635
+ "Xulk",
3636
+ "Xulm",
3637
+ "Xun",
3638
+ "Xur",
3639
+ "Xurn",
2717
3640
  "Xyl",
2718
- "Yb",
2719
- "Yca",
2720
- "Yce",
2721
- "Yci",
2722
- "Yco",
2723
- "Ycu",
2724
- "Yda",
2725
- "Yde",
2726
- "Ydi",
2727
- "Ydo",
2728
- "Ydu",
2729
- "Yea",
2730
- "Yeb",
2731
- "Yec",
2732
- "Yed",
2733
- "Yef",
2734
- "Yeg",
2735
- "Yei",
3641
+ "Xyn",
3642
+ "Ya",
3643
+ "Yael",
3644
+ "Yal",
3645
+ "Yald",
3646
+ "Yalm",
3647
+ "Yan",
3648
+ "Yar",
3649
+ "Yarn",
3650
+ "Yas",
3651
+ "Ye",
2736
3652
  "Yel",
2737
- "Yem",
3653
+ "Yeld",
3654
+ "Yelm",
3655
+ "Yeln",
2738
3656
  "Yen",
2739
- "Yep",
2740
3657
  "Yer",
2741
- "Yes",
2742
- "Yet",
2743
- "Yev",
2744
- "Yew",
3658
+ "Yerm",
3659
+ "Yern",
2745
3660
  "Yex",
2746
- "Yfa",
2747
- "Yfe",
2748
- "Yfi",
2749
- "Yfo",
2750
- "Yfu",
2751
- "Yga",
2752
- "Yge",
2753
- "Ygi",
2754
- "Ygo",
2755
- "Ygu",
2756
- "Yha",
2757
- "Yhe",
2758
- "Yhi",
2759
- "Yho",
2760
- "Yhu",
2761
- "Yia",
2762
- "Yib",
2763
- "Yic",
2764
- "Yid",
2765
- "Yif",
2766
- "Yig",
2767
- "Yil",
2768
- "Yim",
3661
+ "Yi",
3662
+ "Yild",
3663
+ "Yilk",
3664
+ "Yilm",
2769
3665
  "Yin",
2770
- "Yip",
2771
3666
  "Yir",
2772
- "Yis",
2773
- "Yit",
2774
- "Yiv",
2775
- "Yiw",
2776
- "Yix",
2777
- "Yka",
2778
- "Yke",
2779
- "Yki",
2780
- "Yko",
2781
- "Yku",
2782
- "Yla",
2783
- "Yle",
2784
- "Yli",
2785
- "Ylo",
2786
- "Ylu",
2787
- "Yma",
2788
- "Yme",
2789
- "Ymi",
2790
- "Ymo",
2791
- "Ymu",
2792
- "Yna",
2793
- "Yne",
2794
- "Yni",
2795
- "Yno",
2796
- "Ynu",
2797
- "Yoa",
2798
- "Yob",
2799
- "Yoc",
2800
- "Yod",
2801
- "Yof",
2802
- "Yog",
2803
- "Yoi",
3667
+ "Yirn",
3668
+ "Yo",
2804
3669
  "Yol",
2805
- "Yom",
3670
+ "Yoln",
2806
3671
  "Yon",
2807
- "Yop",
2808
3672
  "Yor",
3673
+ "York",
3674
+ "Yorn",
2809
3675
  "Yos",
2810
- "Yot",
2811
- "You",
2812
- "Yov",
2813
- "Yow",
2814
- "Yoz",
2815
- "Ypa",
2816
- "Ype",
2817
- "Ypi",
2818
- "Ypo",
2819
- "Ypu",
2820
- "Yra",
2821
- "Yre",
2822
- "Yri",
2823
- "Yro",
2824
- "Yru",
2825
- "Ysa",
2826
- "Yse",
2827
- "Ysi",
2828
- "Yso",
2829
- "Ysu",
2830
- "Yta",
2831
- "Yte",
2832
- "Yth",
2833
- "Yti",
2834
- "Yto",
2835
- "Ytu",
3676
+ "Yu",
3677
+ "Yul",
3678
+ "Yulk",
3679
+ "Yulm",
3680
+ "Yun",
2836
3681
  "Yur",
2837
- "Yva",
3682
+ "Yurn",
2838
3683
  "Yve",
2839
- "Yvi",
2840
- "Yvo",
2841
- "Yvu",
2842
- "Ywa",
2843
- "Ywe",
2844
- "Ywi",
2845
- "Ywo",
2846
- "Ywu",
2847
- "Yxa",
2848
- "Yxe",
2849
- "Yxi",
2850
- "Yxo",
2851
- "Yxu",
2852
- "Yya",
2853
- "Yye",
2854
- "Yyi",
2855
- "Yyo",
2856
- "Yyu",
2857
3684
  "Za",
2858
- "Zab",
2859
- "Zac",
2860
- "Zad",
2861
3685
  "Zae",
2862
- "Zaf",
2863
- "Zag",
2864
- "Zah",
2865
- "Zai",
2866
- "Zak",
3686
+ "Zael",
2867
3687
  "Zal",
2868
- "Zam",
3688
+ "Zald",
3689
+ "Zalm",
2869
3690
  "Zan",
2870
- "Zap",
2871
3691
  "Zar",
3692
+ "Zarn",
2872
3693
  "Zas",
2873
- "Zat",
2874
- "Zau",
2875
- "Zav",
2876
- "Zaw",
2877
- "Zay",
2878
- "Zaz",
3694
+ "Zask",
2879
3695
  "Ze",
2880
- "Zeb",
2881
- "Zec",
2882
- "Zed",
2883
- "Zef",
2884
- "Zeg",
2885
- "Zei",
2886
3696
  "Zel",
3697
+ "Zeld",
3698
+ "Zelm",
3699
+ "Zeln",
2887
3700
  "Zen",
3701
+ "Zend",
2888
3702
  "Zer",
3703
+ "Zerm",
3704
+ "Zern",
2889
3705
  "Zes",
2890
- "Zet",
2891
- "Zev",
2892
- "Zew",
2893
3706
  "Zex",
3707
+ "Zha",
3708
+ "Zhal",
3709
+ "Zhan",
3710
+ "Zhar",
3711
+ "Zhe",
3712
+ "Zhen",
3713
+ "Zhi",
3714
+ "Zhir",
3715
+ "Zho",
3716
+ "Zhol",
3717
+ "Zhor",
3718
+ "Zhu",
3719
+ "Zhul",
3720
+ "Zhyn",
2894
3721
  "Zi",
2895
- "Zia",
2896
- "Zic",
2897
- "Zid",
2898
- "Zig",
2899
3722
  "Zil",
2900
- "Zim",
3723
+ "Zild",
3724
+ "Zilk",
3725
+ "Zilm",
2901
3726
  "Zin",
2902
- "Zip",
3727
+ "Zind",
2903
3728
  "Zir",
3729
+ "Zirn",
2904
3730
  "Zis",
2905
- "Zit",
2906
- "Ziv",
2907
- "Zix",
2908
3731
  "Zo",
2909
- "Zob",
2910
- "Zoc",
2911
- "Zod",
2912
- "Zof",
2913
- "Zog",
2914
3732
  "Zol",
2915
- "Zom",
3733
+ "Zolk",
3734
+ "Zoln",
2916
3735
  "Zon",
2917
- "Zop",
3736
+ "Zond",
2918
3737
  "Zor",
3738
+ "Zord",
3739
+ "Zorn",
2919
3740
  "Zos",
2920
- "Zot",
2921
- "Zov",
2922
- "Zow",
2923
- "Zox",
2924
3741
  "Zu",
2925
- "Zub",
2926
- "Zuc",
2927
- "Zud",
2928
- "Zuf",
2929
- "Zug",
2930
3742
  "Zul",
2931
- "Zum",
3743
+ "Zulk",
3744
+ "Zulm",
2932
3745
  "Zun",
2933
- "Zup",
2934
3746
  "Zur",
2935
- "Zus",
2936
- "Zut",
2937
- "Zuv",
2938
- "Zuw",
2939
- "Zux",
2940
- "Zuz",
3747
+ "Zurn",
2941
3748
  "Zyl",
2942
- "Zyn"
3749
+ "Zyn",
3750
+ "Zyr",
3751
+ "Zyx"
3752
+ ];
3753
+
3754
+ var nebulaAdjectives = [
3755
+ "Abyssal",
3756
+ "Alabaster",
3757
+ "Amber",
3758
+ "Ancient",
3759
+ "Argent",
3760
+ "Ashen",
3761
+ "Astral",
3762
+ "Aurora",
3763
+ "Azure",
3764
+ "Barren",
3765
+ "Blazing",
3766
+ "Bleak",
3767
+ "Boreal",
3768
+ "Brazen",
3769
+ "Bright",
3770
+ "Brilliant",
3771
+ "Bronze",
3772
+ "Burning",
3773
+ "Cadmium",
3774
+ "Calcified",
3775
+ "Cardinal",
3776
+ "Celestial",
3777
+ "Cerulean",
3778
+ "Chartreuse",
3779
+ "Chromatic",
3780
+ "Cindered",
3781
+ "Cobalt",
3782
+ "Coiled",
3783
+ "Copper",
3784
+ "Corroded",
3785
+ "Crimson",
3786
+ "Crumbling",
3787
+ "Crystal",
3788
+ "Crystalline",
3789
+ "Cursed",
3790
+ "Cyan",
3791
+ "Dark",
3792
+ "Dawn",
3793
+ "Deep",
3794
+ "Desolate",
3795
+ "Dim",
3796
+ "Distant",
3797
+ "Drifting",
3798
+ "Dulled",
3799
+ "Dusk",
3800
+ "Dusted",
3801
+ "Ebony",
3802
+ "Elder",
3803
+ "Ember",
3804
+ "Emerald",
3805
+ "Ephemeral",
3806
+ "Eroded",
3807
+ "Eternal",
3808
+ "Ethereal",
3809
+ "Fading",
3810
+ "Ferrous",
3811
+ "Fibrous",
3812
+ "Flickering",
3813
+ "Floating",
3814
+ "Forlorn",
3815
+ "Forgotten",
3816
+ "Forsaken",
3817
+ "Fossil",
3818
+ "Fractal",
3819
+ "Fractured",
3820
+ "Frigid",
3821
+ "Frozen",
3822
+ "Fulgurite",
3823
+ "Fused",
3824
+ "Garnet",
3825
+ "Ghostly",
3826
+ "Glacial",
3827
+ "Gleaming",
3828
+ "Glinting",
3829
+ "Glowing",
3830
+ "Golden",
3831
+ "Granite",
3832
+ "Grazing",
3833
+ "Grim",
3834
+ "Hallowed",
3835
+ "Haze",
3836
+ "Hidden",
3837
+ "Hollow",
3838
+ "Hushed",
3839
+ "Igneous",
3840
+ "Incandescent",
3841
+ "Indigo",
3842
+ "Infinite",
3843
+ "Iridescent",
3844
+ "Iron",
3845
+ "Ivory",
3846
+ "Jade",
3847
+ "Kindled",
3848
+ "Lapis",
3849
+ "Latticed",
3850
+ "Leaden",
3851
+ "Lingering",
3852
+ "Lost",
3853
+ "Luminous",
3854
+ "Lunar",
3855
+ "Lustrous",
3856
+ "Magenta",
3857
+ "Malachite",
3858
+ "Marbled",
3859
+ "Mercurial",
3860
+ "Midnight",
3861
+ "Mineral",
3862
+ "Mirrored",
3863
+ "Molten",
3864
+ "Monolithic",
3865
+ "Muted",
3866
+ "Nebular",
3867
+ "Nocturnal",
3868
+ "Obsidian",
3869
+ "Ochre",
3870
+ "Onyx",
3871
+ "Opal",
3872
+ "Orbiting",
3873
+ "Oxidized",
3874
+ "Pale",
3875
+ "Pallid",
3876
+ "Pearlescent",
3877
+ "Petrified",
3878
+ "Phantom",
3879
+ "Phosphor",
3880
+ "Pitted",
3881
+ "Polar",
3882
+ "Primeval",
3883
+ "Primordial",
3884
+ "Prismatic",
3885
+ "Pulsing",
3886
+ "Quartz",
3887
+ "Quiet",
3888
+ "Radiant",
3889
+ "Refracting",
3890
+ "Remnant",
3891
+ "Riven",
3892
+ "Roaming",
3893
+ "Roiling",
3894
+ "Ruby",
3895
+ "Ruined",
3896
+ "Rust",
3897
+ "Sapphire",
3898
+ "Scarlet",
3899
+ "Scattered",
3900
+ "Scorched",
3901
+ "Seething",
3902
+ "Shadowed",
3903
+ "Shattered",
3904
+ "Shimmering",
3905
+ "Silent",
3906
+ "Silver",
3907
+ "Sintered",
3908
+ "Slate",
3909
+ "Smoldering",
3910
+ "Solar",
3911
+ "Solemn",
3912
+ "Somber",
3913
+ "Sorrow",
3914
+ "Spectral",
3915
+ "Spired",
3916
+ "Spiraling",
3917
+ "Stark",
3918
+ "Steel",
3919
+ "Stellar",
3920
+ "Stilled",
3921
+ "Storm",
3922
+ "Stranded",
3923
+ "Striated",
3924
+ "Stygian",
3925
+ "Sullen",
3926
+ "Sunken",
3927
+ "Sunlit",
3928
+ "Swirling",
3929
+ "Tarnished",
3930
+ "Tempest",
3931
+ "Thorned",
3932
+ "Tidal",
3933
+ "Timeless",
3934
+ "Titanium",
3935
+ "Topaz",
3936
+ "Torrential",
3937
+ "Turquoise",
3938
+ "Twilight",
3939
+ "Umbral",
3940
+ "Unbound",
3941
+ "Unfathomed",
3942
+ "Vagrant",
3943
+ "Vanishing",
3944
+ "Vaulted",
3945
+ "Veiled",
3946
+ "Verdant",
3947
+ "Vermillion",
3948
+ "Violet",
3949
+ "Viridian",
3950
+ "Void",
3951
+ "Volatile",
3952
+ "Wandering",
3953
+ "Waning",
3954
+ "Wasted",
3955
+ "Weathered",
3956
+ "Whispered",
3957
+ "Woven",
3958
+ "Wraith",
3959
+ "Wretched",
3960
+ "Yawning",
3961
+ "Yielding",
3962
+ "Zenith",
3963
+ "Zinc"
3964
+ ];
3965
+
3966
+ var nebulaNouns = [
3967
+ "Abyss",
3968
+ "Anchor",
3969
+ "Anvil",
3970
+ "Apex",
3971
+ "Arch",
3972
+ "Aurora",
3973
+ "Basin",
3974
+ "Beacon",
3975
+ "Bloom",
3976
+ "Bough",
3977
+ "Briar",
3978
+ "Brine",
3979
+ "Bulwark",
3980
+ "Cairn",
3981
+ "Caldera",
3982
+ "Canopy",
3983
+ "Cascade",
3984
+ "Chalice",
3985
+ "Chasm",
3986
+ "Chorus",
3987
+ "Cistern",
3988
+ "Citadel",
3989
+ "Cloak",
3990
+ "Cloud",
3991
+ "Coil",
3992
+ "Column",
3993
+ "Core",
3994
+ "Corona",
3995
+ "Cradle",
3996
+ "Crest",
3997
+ "Crown",
3998
+ "Crucible",
3999
+ "Current",
4000
+ "Curtain",
4001
+ "Drift",
4002
+ "Dusk",
4003
+ "Echo",
4004
+ "Eddy",
4005
+ "Ember",
4006
+ "Expanse",
4007
+ "Eye",
4008
+ "Fathom",
4009
+ "Fissure",
4010
+ "Fjord",
4011
+ "Flare",
4012
+ "Fold",
4013
+ "Forge",
4014
+ "Frontier",
4015
+ "Furrow",
4016
+ "Gate",
4017
+ "Glade",
4018
+ "Gorge",
4019
+ "Grip",
4020
+ "Grotto",
4021
+ "Gulf",
4022
+ "Gyre",
4023
+ "Halo",
4024
+ "Haven",
4025
+ "Heart",
4026
+ "Hearth",
4027
+ "Helix",
4028
+ "Hollow",
4029
+ "Horn",
4030
+ "Husk",
4031
+ "Inlet",
4032
+ "Iris",
4033
+ "Jaw",
4034
+ "Keel",
4035
+ "Knot",
4036
+ "Lantern",
4037
+ "Lattice",
4038
+ "Loom",
4039
+ "Mantle",
4040
+ "Marrow",
4041
+ "Maw",
4042
+ "Meridian",
4043
+ "Mirage",
4044
+ "Monolith",
4045
+ "Mote",
4046
+ "Nave",
4047
+ "Nebula",
4048
+ "Nexus",
4049
+ "Obelisk",
4050
+ "Orbit",
4051
+ "Pall",
4052
+ "Passage",
4053
+ "Petal",
4054
+ "Pillar",
4055
+ "Pinnacle",
4056
+ "Plume",
4057
+ "Prism",
4058
+ "Prow",
4059
+ "Pulse",
4060
+ "Pyre",
4061
+ "Reach",
4062
+ "Remnant",
4063
+ "Rib",
4064
+ "Ridge",
4065
+ "Rift",
4066
+ "Root",
4067
+ "Sanctum",
4068
+ "Seal",
4069
+ "Seam",
4070
+ "Shard",
4071
+ "Shoal",
4072
+ "Shroud",
4073
+ "Sigil",
4074
+ "Sink",
4075
+ "Skull",
4076
+ "Span",
4077
+ "Spar",
4078
+ "Spine",
4079
+ "Spire",
4080
+ "Spoke",
4081
+ "Spur",
4082
+ "Steeple",
4083
+ "Storm",
4084
+ "Strand",
4085
+ "Surge",
4086
+ "Talon",
4087
+ "Tendril",
4088
+ "Thicket",
4089
+ "Thorn",
4090
+ "Thread",
4091
+ "Threshold",
4092
+ "Throat",
4093
+ "Tide",
4094
+ "Tomb",
4095
+ "Torrent",
4096
+ "Trench",
4097
+ "Trough",
4098
+ "Vault",
4099
+ "Veil",
4100
+ "Vestige",
4101
+ "Vigil",
4102
+ "Void",
4103
+ "Vortex",
4104
+ "Wake",
4105
+ "Ward",
4106
+ "Warden",
4107
+ "Weave",
4108
+ "Web",
4109
+ "Well",
4110
+ "Wellspring",
4111
+ "Whisper",
4112
+ "Wisp",
4113
+ "Wraith",
4114
+ "Wreath",
4115
+ "Zenith"
2943
4116
  ];
2944
4117
 
2945
4118
  const LOCATION_EXISTS_THRESHOLD = 0x10;
@@ -2960,24 +4133,52 @@ function getLocationType(gameSeed, coordinates) {
2960
4133
  return LocationType.NEBULA;
2961
4134
  }
2962
4135
  function isExtractableLocation(locationType) {
2963
- return locationType === LocationType.ASTEROID || locationType === LocationType.NEBULA;
4136
+ return locationType !== LocationType.EMPTY;
2964
4137
  }
2965
- function getSystemName(gameSeed, location) {
2966
- const seed = Checksum256.from(gameSeed);
2967
- if (!hasSystem(seed, location)) {
2968
- throw new Error("System doesn't exist at location");
2969
- }
2970
- const seedStr = `${location.x}${location.y}systemName`;
2971
- const hashResult = hash512(seed, seedStr);
2972
- const syllableCount = 1 + (hashResult.array[0] % 3);
4138
+ function uint16(hash, offset) {
4139
+ return (hash.array[offset] << 8) | hash.array[offset + 1];
4140
+ }
4141
+ function generatePlanetName(hashResult) {
4142
+ const syllableCount = 2 + (hashResult.array[0] % 2);
2973
4143
  const name = [];
2974
4144
  for (let i = 0; i < syllableCount; i++) {
2975
- const index = hashResult.array[i] % syllables.length;
4145
+ const index = uint16(hashResult, 1 + i * 2) % syllables.length;
2976
4146
  const syllable = syllables[index];
2977
4147
  name.push(i > 0 ? syllable.toLowerCase() : syllable);
2978
4148
  }
2979
4149
  return name.join('');
2980
4150
  }
4151
+ function generateAsteroidName(hashResult) {
4152
+ const A = 65;
4153
+ const letter1 = String.fromCharCode(A + (hashResult.array[0] % 26));
4154
+ const letter2 = String.fromCharCode(A + (hashResult.array[1] % 26));
4155
+ const num = (uint16(hashResult, 2) % 9000) + 1000;
4156
+ return `${letter1}${letter2}-${num}`;
4157
+ }
4158
+ function generateNebulaName(hashResult) {
4159
+ const adjIdx = uint16(hashResult, 0) % nebulaAdjectives.length;
4160
+ const nounIdx = uint16(hashResult, 2) % nebulaNouns.length;
4161
+ return `${nebulaAdjectives[adjIdx]} ${nebulaNouns[nounIdx]}`;
4162
+ }
4163
+ function getSystemName(gameSeed, location) {
4164
+ const seed = Checksum256.from(gameSeed);
4165
+ const locationType = getLocationType(seed, location);
4166
+ if (locationType === LocationType.EMPTY) {
4167
+ throw new Error("System doesn't exist at location");
4168
+ }
4169
+ const seedStr = `${location.x}-${location.y}-${locationType}-name`;
4170
+ const hashResult = hash512(seed, seedStr);
4171
+ switch (locationType) {
4172
+ case LocationType.PLANET:
4173
+ return generatePlanetName(hashResult);
4174
+ case LocationType.ASTEROID:
4175
+ return generateAsteroidName(hashResult);
4176
+ case LocationType.NEBULA:
4177
+ return generateNebulaName(hashResult);
4178
+ default:
4179
+ return generatePlanetName(hashResult);
4180
+ }
4181
+ }
2981
4182
  function hasSystem(gameSeed, coordinates) {
2982
4183
  return getLocationType(gameSeed, coordinates) !== LocationType.EMPTY;
2983
4184
  }
@@ -3005,7 +4206,9 @@ function deriveLocationStatic(gameSeed, coordinates) {
3005
4206
  else {
3006
4207
  loc.type = UInt8.from(LocationType.NEBULA);
3007
4208
  }
3008
- loc.subtype = UInt8.from(hashResult.array[2]);
4209
+ loc.subtype = UInt8.from(Number(loc.type) === LocationType.PLANET
4210
+ ? hashResult.array[2] % 6
4211
+ : hashResult.array[2]);
3009
4212
  loc.seed0 = UInt8.from(hashResult.array[3]);
3010
4213
  loc.seed1 = UInt8.from(hashResult.array[4]);
3011
4214
  return loc;
@@ -3027,35 +4230,6 @@ function deriveLocation(gameSeed, epochSeed, coordinates) {
3027
4230
  epoch_props: deriveLocationEpoch(epochSeed, coordinates),
3028
4231
  });
3029
4232
  }
3030
- function deriveLocationMixture(location, epochSeed) {
3031
- const locationType = location.static_props.type.toNumber();
3032
- if (locationType === LocationType.NEBULA) {
3033
- return Types.mixture_info.from({
3034
- components: [{ good_id: 1, purity: PRECISION }],
3035
- });
3036
- }
3037
- if (locationType === LocationType.ASTEROID) {
3038
- const seed = Checksum256.from(epochSeed);
3039
- const coords = location.static_props.coords;
3040
- const str = `mixture-${coords.x}-${coords.y}`;
3041
- const hashResult = hash512(seed, str);
3042
- const ironPrimary = location.static_props.subtype.toNumber() % 2 === 0;
3043
- const purityRange = 0.3;
3044
- const purityRoll = hashResult.array[0] / 255;
3045
- const primaryPurity = 0.5 + purityRoll * purityRange;
3046
- const primaryId = ironPrimary ? 26 : 29;
3047
- const secondaryId = ironPrimary ? 29 : 26;
3048
- const primaryAmt = Math.floor(primaryPurity * PRECISION);
3049
- const secondaryAmt = PRECISION - primaryAmt;
3050
- return Types.mixture_info.from({
3051
- components: [
3052
- { good_id: primaryId, purity: primaryAmt },
3053
- { good_id: secondaryId, purity: secondaryAmt },
3054
- ],
3055
- });
3056
- }
3057
- return Types.mixture_info.from({ components: [] });
3058
- }
3059
4233
 
3060
4234
  class GameState extends Types.state_row {
3061
4235
  static from(state, game) {
@@ -3150,47 +4324,170 @@ class BaseManager {
3150
4324
  }
3151
4325
  }
3152
4326
 
3153
- var goodsData = [
4327
+ var itemsData = [
3154
4328
  {
3155
4329
  id: 1,
3156
4330
  name: "Hydrogen",
3157
- description: "A lightweight fuel source essential for interstellar travel.",
4331
+ description: "A lightweight gas used for fuel cells and propulsion.",
3158
4332
  base_price: 50,
3159
- mass: 15000
4333
+ mass: 15000,
4334
+ category: "gas",
4335
+ rarity: "common",
4336
+ color: "#7EC8E3"
4337
+ },
4338
+ {
4339
+ id: 2,
4340
+ name: "Helium",
4341
+ description: "An inert noble gas used in energy systems.",
4342
+ base_price: 75,
4343
+ mass: 2000,
4344
+ category: "gas",
4345
+ rarity: "uncommon",
4346
+ color: "#F5E6CC"
4347
+ },
4348
+ {
4349
+ id: 6,
4350
+ name: "Carbon",
4351
+ description: "A versatile element for life support and coatings.",
4352
+ base_price: 100,
4353
+ mass: 12000,
4354
+ category: "organic",
4355
+ rarity: "common",
4356
+ color: "#4A4A4A"
4357
+ },
4358
+ {
4359
+ id: 14,
4360
+ name: "Silicon",
4361
+ description: "A semiconductor used in sensors and computing.",
4362
+ base_price: 150,
4363
+ mass: 28000,
4364
+ category: "mineral",
4365
+ rarity: "common",
4366
+ color: "#B8A9C9"
4367
+ },
4368
+ {
4369
+ id: 18,
4370
+ name: "Argon",
4371
+ description: "A noble gas used in industrial and energy applications.",
4372
+ base_price: 60,
4373
+ mass: 8000,
4374
+ category: "gas",
4375
+ rarity: "rare",
4376
+ color: "#9B59B6"
4377
+ },
4378
+ {
4379
+ id: 22,
4380
+ name: "Titanium",
4381
+ description: "A strong, lightweight metal for ship construction.",
4382
+ base_price: 300,
4383
+ mass: 48000,
4384
+ category: "metal",
4385
+ rarity: "rare",
4386
+ color: "#C0C0C0"
3160
4387
  },
3161
4388
  {
3162
4389
  id: 26,
3163
4390
  name: "Iron",
3164
- description: "A versatile metal used in construction and manufacturing.",
4391
+ description: "A versatile metal used in hulls and structures.",
3165
4392
  base_price: 125,
3166
- mass: 40000
4393
+ mass: 40000,
4394
+ category: "metal",
4395
+ rarity: "common",
4396
+ color: "#B7410E"
3167
4397
  },
3168
4398
  {
3169
4399
  id: 29,
3170
4400
  name: "Copper",
3171
- description: "A conductive metal vital for electronics and wiring.",
4401
+ description: "A conductive metal for electronics and wiring.",
3172
4402
  base_price: 200,
3173
- mass: 60000
4403
+ mass: 60000,
4404
+ category: "metal",
4405
+ rarity: "uncommon",
4406
+ color: "#B87333"
4407
+ },
4408
+ {
4409
+ id: 54,
4410
+ name: "Xenon",
4411
+ description: "A rare noble gas for advanced propulsion systems.",
4412
+ base_price: 175,
4413
+ mass: 20000,
4414
+ category: "gas",
4415
+ rarity: "epic",
4416
+ color: "#5B2C6F"
4417
+ },
4418
+ {
4419
+ id: 74,
4420
+ name: "Tungsten",
4421
+ description: "An extremely dense metal for heavy-duty applications.",
4422
+ base_price: 500,
4423
+ mass: 80000,
4424
+ category: "metal",
4425
+ rarity: "epic",
4426
+ color: "#708090"
4427
+ },
4428
+ {
4429
+ id: 1000,
4430
+ name: "Quartz",
4431
+ description: "A crystalline mineral for sensors and optics.",
4432
+ base_price: 200,
4433
+ mass: 35000,
4434
+ category: "mineral",
4435
+ rarity: "uncommon",
4436
+ color: "#E8D5B7"
4437
+ },
4438
+ {
4439
+ id: 1001,
4440
+ name: "Sapphire",
4441
+ description: "A precious crystal for precision instruments.",
4442
+ base_price: 400,
4443
+ mass: 45000,
4444
+ category: "mineral",
4445
+ rarity: "rare",
4446
+ color: "#0F52BA"
4447
+ },
4448
+ {
4449
+ id: 1002,
4450
+ name: "Polymers",
4451
+ description: "Synthetic materials for coatings and consumables.",
4452
+ base_price: 150,
4453
+ mass: 25000,
4454
+ category: "organic",
4455
+ rarity: "rare",
4456
+ color: "#2ECC71"
4457
+ },
4458
+ {
4459
+ id: 1003,
4460
+ name: "Biomass",
4461
+ description: "Organic matter for life support systems.",
4462
+ base_price: 100,
4463
+ mass: 30000,
4464
+ category: "organic",
4465
+ rarity: "uncommon",
4466
+ color: "#8B4513"
3174
4467
  }
3175
4468
  ];
3176
4469
 
3177
- const goods = goodsData;
3178
- const goodIds = goods.map((g) => g.id);
3179
- function getGood(goodId) {
3180
- const good = goods.find((g) => UInt16.from(goodId).equals(g.id));
3181
- if (!good) {
3182
- throw new Error('Good does not exist');
3183
- }
3184
- return Good.from({
3185
- id: UInt16.from(good.id),
3186
- name: good.name,
3187
- description: good.description,
3188
- base_price: UInt32.from(good.base_price),
3189
- mass: UInt32.from(good.mass),
3190
- });
3191
- }
3192
- function getGoods() {
3193
- return goods.map((g) => getGood(g.id));
4470
+ const items = itemsData.map((g) => Item.from({
4471
+ id: g.id,
4472
+ name: g.name,
4473
+ description: g.description,
4474
+ base_price: g.base_price,
4475
+ mass: g.mass,
4476
+ category: g.category,
4477
+ rarity: g.rarity,
4478
+ color: g.color,
4479
+ }));
4480
+ const itemIds = items.map((i) => i.id);
4481
+ function getItem(itemId) {
4482
+ const id = UInt16.from(itemId);
4483
+ const item = items.find((i) => i.id.equals(id));
4484
+ if (!item) {
4485
+ throw new Error(`Item with id ${id} not found`);
4486
+ }
4487
+ return item;
4488
+ }
4489
+ function getItems() {
4490
+ return items;
3194
4491
  }
3195
4492
 
3196
4493
  function calc_orbital_altitude(mass) {
@@ -3280,7 +4577,7 @@ function calc_ship_mass(ship, cargos) {
3280
4577
  mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
3281
4578
  }
3282
4579
  for (const cargo of cargos) {
3283
- mass.add(getGood(cargo.good_id).mass.multiplying(cargo.quantity));
4580
+ mass.add(getItem(cargo.item_id).mass.multiplying(cargo.quantity));
3284
4581
  }
3285
4582
  return mass;
3286
4583
  }
@@ -3290,9 +4587,9 @@ function calc_energyusage(distance, drain) {
3290
4587
  function calculateTransferTime(ship, cargos, quantities) {
3291
4588
  let mass = UInt64.from(0);
3292
4589
  for (const cargo of cargos) {
3293
- const qty = quantities?.get(Number(cargo.good_id)) ?? 0;
4590
+ const qty = quantities?.get(Number(cargo.item_id)) ?? 0;
3294
4591
  if (qty > 0) {
3295
- const good_mass = getGood(cargo.good_id).mass;
4592
+ const good_mass = getItem(cargo.item_id).mass;
3296
4593
  const cargo_mass = good_mass.multiplying(qty);
3297
4594
  mass = UInt64.from(mass).adding(cargo_mass);
3298
4595
  }
@@ -3315,11 +4612,11 @@ function calculateLoadTimeBreakdown(ship, cargos, loadQuantities, unloadQuantiti
3315
4612
  let mass_unload = UInt64.from(0);
3316
4613
  let mass_load = UInt64.from(0);
3317
4614
  for (const cargo of cargos) {
3318
- const goodId = Number(cargo.good_id);
4615
+ const goodId = Number(cargo.item_id);
3319
4616
  const loadQty = loadQuantities?.get(goodId) ?? 0;
3320
4617
  const unloadQty = unloadQuantities?.get(goodId) ?? 0;
3321
4618
  if (loadQty > 0 || unloadQty > 0) {
3322
- const good = getGood(cargo.good_id);
4619
+ const good = getItem(cargo.item_id);
3323
4620
  if (loadQty > 0) {
3324
4621
  const cargo_mass = good.mass.multiplying(loadQty);
3325
4622
  mass_load = UInt64.from(mass_load).adding(cargo_mass);
@@ -3498,7 +4795,7 @@ function capsHasMass(caps) {
3498
4795
  function calcCargoMass(entity) {
3499
4796
  let mass = UInt64.from(0);
3500
4797
  for (const item of entity.cargo) {
3501
- const good = getGood(item.good_id);
4798
+ const good = getItem(item.item_id);
3502
4799
  mass = mass.adding(good.mass.multiplying(item.quantity));
3503
4800
  }
3504
4801
  return mass;
@@ -3797,19 +5094,19 @@ function applyFlightTask(projected, task, options) {
3797
5094
  : UInt16.from(0);
3798
5095
  }
3799
5096
  }
3800
- function getGoodMass(good_id) {
3801
- const good = getGood(good_id);
3802
- return good.mass;
5097
+ function getItemMass(item_id) {
5098
+ const item = getItem(item_id);
5099
+ return item.mass;
3803
5100
  }
3804
5101
  function applyLoadTask(projected, task) {
3805
5102
  for (const item of task.cargo) {
3806
- const good_mass = getGoodMass(item.good_id);
5103
+ const good_mass = getItemMass(item.item_id);
3807
5104
  projected.cargoMass = projected.cargoMass.adding(good_mass.multiplying(item.quantity));
3808
5105
  }
3809
5106
  }
3810
5107
  function applyUnloadTask(projected, task) {
3811
5108
  for (const item of task.cargo) {
3812
- const good_mass = getGoodMass(item.good_id);
5109
+ const good_mass = getItemMass(item.item_id);
3813
5110
  const cargoMass = good_mass.multiplying(item.quantity);
3814
5111
  projected.cargoMass = projected.cargoMass.gt(cargoMass)
3815
5112
  ? projected.cargoMass.subtracting(cargoMass)
@@ -3826,7 +5123,7 @@ function applyExtractTask(projected, task, options) {
3826
5123
  : UInt16.from(0);
3827
5124
  }
3828
5125
  for (const item of task.cargo) {
3829
- const good_mass = getGoodMass(item.good_id);
5126
+ const good_mass = getItemMass(item.item_id);
3830
5127
  projected.cargoMass = projected.cargoMass.adding(good_mass.multiplying(item.quantity));
3831
5128
  }
3832
5129
  }
@@ -3947,7 +5244,7 @@ class Location {
3947
5244
  getSupply(goodId) {
3948
5245
  if (!this._locationRows)
3949
5246
  return undefined;
3950
- const row = this._locationRows.find((r) => r.good_id.equals(goodId) && this._epoch && r.epoch.equals(this._epoch));
5247
+ const row = this._locationRows.find((r) => r.item_id.equals(goodId) && this._epoch && r.epoch.equals(this._epoch));
3951
5248
  return row ? row.supply : undefined;
3952
5249
  }
3953
5250
  get availableGoods() {
@@ -3985,9 +5282,9 @@ class Location {
3985
5282
  ? currentSupply.subtracting(delta)
3986
5283
  : UInt16.from(0)
3987
5284
  : currentSupply.adding(quantityDelta);
3988
- return GoodPrice.from({
5285
+ return ItemPrice.from({
3989
5286
  id: price.id,
3990
- good: price.good,
5287
+ item: price.item,
3991
5288
  price: price.price,
3992
5289
  supply: newSupply,
3993
5290
  });
@@ -3997,7 +5294,7 @@ class Location {
3997
5294
  }
3998
5295
  if (this._locationRows && this._epoch) {
3999
5296
  newLocation._locationRows = this._locationRows.map((row) => {
4000
- if (row.good_id.equals(goodId) && row.epoch.equals(this._epoch)) {
5297
+ if (row.item_id.equals(goodId) && row.epoch.equals(this._epoch)) {
4001
5298
  const currentSupply = UInt16.from(row.supply);
4002
5299
  const delta = UInt16.from(Math.abs(quantityDelta));
4003
5300
  const newSupply = quantityDelta < 0
@@ -4009,7 +5306,7 @@ class Location {
4009
5306
  id: row.id,
4010
5307
  coordinates: row.coordinates,
4011
5308
  epoch: row.epoch,
4012
- good_id: row.good_id,
5309
+ item_id: row.item_id,
4013
5310
  supply: newSupply,
4014
5311
  });
4015
5312
  }
@@ -4090,17 +5387,20 @@ function createScheduleAccessor(entity) {
4090
5387
  }
4091
5388
 
4092
5389
  class EntityInventory extends Types.cargo_item {
4093
- get good() {
4094
- if (!this._good) {
4095
- this._good = getGood(this.good_id);
5390
+ get item() {
5391
+ if (!this._item) {
5392
+ this._item = getItem(this.item_id);
4096
5393
  }
4097
- return this._good;
5394
+ return this._item;
5395
+ }
5396
+ get good() {
5397
+ return this.item;
4098
5398
  }
4099
5399
  get name() {
4100
- return this.good.name;
5400
+ return this.item.name;
4101
5401
  }
4102
5402
  get unitMass() {
4103
- return this.good.mass;
5403
+ return this.item.mass;
4104
5404
  }
4105
5405
  get totalMass() {
4106
5406
  return UInt64.from(this.unitMass).multiplying(this.quantity);
@@ -4132,8 +5432,8 @@ class InventoryAccessor {
4132
5432
  get totalValue() {
4133
5433
  return this.items.reduce((sum, c) => sum.adding(c.totalCost), UInt64.from(0));
4134
5434
  }
4135
- forGood(goodId) {
4136
- return this.items.find((c) => c.good_id.equals(goodId));
5435
+ forItem(goodId) {
5436
+ return this.items.find((c) => c.item_id.equals(goodId));
4137
5437
  }
4138
5438
  get sellable() {
4139
5439
  return this.items.filter((c) => c.hasCargo);
@@ -4178,8 +5478,8 @@ function cargoValue(cargo) {
4178
5478
  return sum.adding(c.totalCost);
4179
5479
  }, UInt64.from(0));
4180
5480
  }
4181
- function getCargoForGood(cargo, goodId) {
4182
- return cargo.find((c) => c.good_id.equals(goodId));
5481
+ function getCargoForItem(cargo, goodId) {
5482
+ return cargo.find((c) => c.item_id.equals(goodId));
4183
5483
  }
4184
5484
  function hasSpace(currentMass, maxCapacity, goodMass, quantity) {
4185
5485
  const additionalMass = goodMass.multiplying(quantity);
@@ -4204,7 +5504,7 @@ function calculateSaleValue(cargo, prices) {
4204
5504
  for (const item of cargo) {
4205
5505
  if (UInt32.from(item.quantity).equals(UInt32.from(0)))
4206
5506
  continue;
4207
- const goodId = Number(item.good_id);
5507
+ const goodId = Number(item.item_id);
4208
5508
  const salePrice = prices.get(goodId);
4209
5509
  if (salePrice) {
4210
5510
  revenue = revenue.adding(salePrice.multiplying(item.quantity));
@@ -4225,30 +5525,30 @@ function calculateSaleValueFromArray(cargo, prices) {
4225
5525
  });
4226
5526
  return calculateSaleValue(cargo, priceMap);
4227
5527
  }
4228
- function afterSellGoods(cargo, goodsToSell) {
5528
+ function afterSellItems(cargo, goodsToSell) {
4229
5529
  if (cargo.length === 0) {
4230
5530
  return [];
4231
5531
  }
4232
5532
  return cargo.map((item) => {
4233
- const saleItem = goodsToSell.find((s) => Number(item.good_id) === s.goodId);
5533
+ const saleItem = goodsToSell.find((s) => Number(item.item_id) === s.goodId);
4234
5534
  if (!saleItem) {
4235
5535
  return new EntityInventory(item);
4236
5536
  }
4237
5537
  const currentQty = Number(item.quantity);
4238
5538
  const newQty = Math.max(0, currentQty - saleItem.quantity);
4239
5539
  return new EntityInventory(Types.cargo_item.from({
4240
- good_id: item.good_id,
5540
+ item_id: item.item_id,
4241
5541
  quantity: UInt32.from(newQty),
4242
5542
  unit_cost: item.unit_cost,
4243
5543
  }));
4244
5544
  });
4245
5545
  }
4246
- function afterSellAllGoods(cargo) {
5546
+ function afterSellAllItems(cargo) {
4247
5547
  if (cargo.length === 0) {
4248
5548
  return [];
4249
5549
  }
4250
5550
  return cargo.map((item) => new EntityInventory(Types.cargo_item.from({
4251
- good_id: item.good_id,
5551
+ item_id: item.item_id,
4252
5552
  quantity: UInt32.from(0),
4253
5553
  unit_cost: item.unit_cost,
4254
5554
  })));
@@ -4258,14 +5558,14 @@ var cargoUtils = /*#__PURE__*/Object.freeze({
4258
5558
  __proto__: null,
4259
5559
  totalCargoMass: totalCargoMass,
4260
5560
  cargoValue: cargoValue,
4261
- getCargoForGood: getCargoForGood,
5561
+ getCargoForItem: getCargoForItem,
4262
5562
  hasSpace: hasSpace,
4263
5563
  availableCapacity: availableCapacity,
4264
5564
  isFull: isFull,
4265
5565
  calculateSaleValue: calculateSaleValue,
4266
5566
  calculateSaleValueFromArray: calculateSaleValueFromArray,
4267
- afterSellGoods: afterSellGoods,
4268
- afterSellAllGoods: afterSellAllGoods
5567
+ afterSellItems: afterSellItems,
5568
+ afterSellAllItems: afterSellAllItems
4269
5569
  });
4270
5570
 
4271
5571
  class Ship extends Types.entity_info {
@@ -4319,6 +5619,9 @@ class Ship extends Types.entity_info {
4319
5619
  get hasExtractor() {
4320
5620
  return this.extractor !== undefined;
4321
5621
  }
5622
+ get hasWarp() {
5623
+ return this.warp !== undefined;
5624
+ }
4322
5625
  project() {
4323
5626
  return projectEntity(this);
4324
5627
  }
@@ -4352,8 +5655,8 @@ class Ship extends Types.entity_info {
4352
5655
  ? UInt64.from(0)
4353
5656
  : this.maxCapacity.subtracting(this.totalMass);
4354
5657
  }
4355
- getCargoForGood(goodId) {
4356
- return this.inv.forGood(goodId);
5658
+ getCargoForItem(goodId) {
5659
+ return this.inv.forItem(goodId);
4357
5660
  }
4358
5661
  get sellableCargo() {
4359
5662
  return this.inv.sellable;
@@ -4388,11 +5691,11 @@ class Ship extends Types.entity_info {
4388
5691
  calculateSaleValueFromArray(prices) {
4389
5692
  return calculateSaleValueFromArray(this.cargo, prices);
4390
5693
  }
4391
- afterSellGoods(goodsToSell) {
4392
- return afterSellGoods(this.cargo, goodsToSell);
5694
+ afterSellItems(goodsToSell) {
5695
+ return afterSellItems(this.cargo, goodsToSell);
4393
5696
  }
4394
- afterSellAllGoods() {
4395
- return afterSellAllGoods(this.cargo);
5697
+ afterSellAllItems() {
5698
+ return afterSellAllItems(this.cargo);
4396
5699
  }
4397
5700
  }
4398
5701
 
@@ -4440,8 +5743,8 @@ class Warehouse extends Types.entity_info {
4440
5743
  get isFull() {
4441
5744
  return this.totalCargoMass.gte(this.maxCapacity);
4442
5745
  }
4443
- getCargoForGood(goodId) {
4444
- return this.inv.forGood(goodId);
5746
+ getCargoForItem(goodId) {
5747
+ return this.inv.forItem(goodId);
4445
5748
  }
4446
5749
  get orbitalAltitude() {
4447
5750
  return this.coordinates.z?.toNumber() || 0;
@@ -4853,22 +6156,22 @@ function getSupply(gameSeed, state, location, goodId) {
4853
6156
  return Math.floor(base * percent * ship * epoch);
4854
6157
  }
4855
6158
  function marketPrice(location, goodId, gameSeed, state) {
4856
- const good = getGood(goodId);
4857
- let price = Number(good.base_price);
6159
+ const item = getItem(goodId);
6160
+ let price = Number(item.base_price);
4858
6161
  const rarityMultiplier = getRarityMultiplier(gameSeed, state.seed, location, goodId);
4859
6162
  price *= rarityMultiplier;
4860
6163
  const locationMultiplier = getLocationMultiplier(gameSeed, location, goodId);
4861
6164
  price *= locationMultiplier;
4862
6165
  const supply = getSupply(gameSeed, state, location, goodId);
4863
- return GoodPrice.from({
6166
+ return ItemPrice.from({
4864
6167
  id: goodId,
4865
- good,
6168
+ item,
4866
6169
  price: UInt32.from(price),
4867
6170
  supply: UInt16.from(supply),
4868
6171
  });
4869
6172
  }
4870
6173
  function marketPrices(location, gameSeed, state) {
4871
- return getGoods().map((good) => marketPrice(location, good.id, gameSeed, state));
6174
+ return getItems().map((item) => marketPrice(location, item.id, gameSeed, state));
4872
6175
  }
4873
6176
 
4874
6177
  class LocationsManager extends BaseManager {
@@ -4892,15 +6195,15 @@ class LocationsManager extends BaseManager {
4892
6195
  const supplyMap = new Map();
4893
6196
  for (const row of supplyRows) {
4894
6197
  if (UInt64.from(row.epoch).equals(state.epoch)) {
4895
- supplyMap.set(Number(row.good_id), Number(row.supply));
6198
+ supplyMap.set(Number(row.item_id), Number(row.supply));
4896
6199
  }
4897
6200
  }
4898
6201
  return prices.map((price) => {
4899
6202
  const actualSupply = supplyMap.get(Number(price.id));
4900
6203
  if (actualSupply !== undefined) {
4901
- return GoodPrice.from({
6204
+ return ItemPrice.from({
4902
6205
  id: price.id,
4903
- good: price.good,
6206
+ item: price.item,
4904
6207
  price: price.price,
4905
6208
  supply: UInt64.from(actualSupply),
4906
6209
  });
@@ -4970,7 +6273,7 @@ function calculateUpdatedCargoCost(currentPaid, currentOwned, purchaseCost, purc
4970
6273
  }
4971
6274
  function calculateMaxTradeQuantity(ship, player, goodPrice) {
4972
6275
  const pricePerUnit = UInt32.from(goodPrice.price);
4973
- const massPerUnit = UInt32.from(goodPrice.good.mass);
6276
+ const massPerUnit = UInt32.from(goodPrice.item.mass);
4974
6277
  const spaceForQuantity = ship.availableCapacity.dividing(massPerUnit);
4975
6278
  const affordableQuantity = player.balance.dividing(pricePerUnit);
4976
6279
  const maxQuantity = spaceForQuantity.lt(affordableQuantity)
@@ -5003,7 +6306,7 @@ function calculateProfitPerSecond(profit, travelTimeSeconds) {
5003
6306
  const t = UInt32.from(travelTimeSeconds);
5004
6307
  return t.gt(UInt32.zero) ? Number(profit) / Number(t) : 0;
5005
6308
  }
5006
- function findBestGoodToTrade(ship, player, originPrices, destPrices, travelTimeSeconds) {
6309
+ function findBestItemToTrade(ship, player, originPrices, destPrices, travelTimeSeconds) {
5007
6310
  let bestTrade = null;
5008
6311
  let bestProfitPerSecond = 0;
5009
6312
  for (const originPrice of originPrices) {
@@ -5020,7 +6323,7 @@ function findBestGoodToTrade(ship, player, originPrices, destPrices, travelTimeS
5020
6323
  if (profitPerSecond > bestProfitPerSecond) {
5021
6324
  bestProfitPerSecond = profitPerSecond;
5022
6325
  bestTrade = {
5023
- good: originPrice,
6326
+ item: originPrice,
5024
6327
  quantity: calc.maxQuantity,
5025
6328
  profit: Number(tradeResult.profit),
5026
6329
  profitPerSecond,
@@ -5070,7 +6373,7 @@ async function findDealsForShip(ship, originLocation, getNearbyLocations, getMar
5070
6373
  const canAfford = balance !== undefined
5071
6374
  ? balance.dividing(originGood.price)
5072
6375
  : UInt64.from(Number.MAX_SAFE_INTEGER);
5073
- const canHaul = effectiveAvailableMass.dividing(originGood.good.mass);
6376
+ const canHaul = effectiveAvailableMass.dividing(originGood.item.mass);
5074
6377
  const supplyLimit = UInt64.from(originGood.supply);
5075
6378
  let maxQuantity = canAfford;
5076
6379
  if (canHaul.lt(maxQuantity))
@@ -5079,7 +6382,7 @@ async function findDealsForShip(ship, originLocation, getNearbyLocations, getMar
5079
6382
  maxQuantity = supplyLimit;
5080
6383
  if (maxQuantity.equals(UInt64.zero))
5081
6384
  continue;
5082
- const cargoMass = originGood.good.mass.multiplying(maxQuantity);
6385
+ const cargoMass = originGood.item.mass.multiplying(maxQuantity);
5083
6386
  const availableSpaceUInt = UInt64.from(availableSpace);
5084
6387
  const baseMass = availableSpace !== undefined
5085
6388
  ? shipCapacity.gte(availableSpaceUInt)
@@ -5102,7 +6405,7 @@ async function findDealsForShip(ship, originLocation, getNearbyLocations, getMar
5102
6405
  deals.push({
5103
6406
  origin,
5104
6407
  destination: destLocation,
5105
- good: originGood,
6408
+ item: originGood,
5106
6409
  distance,
5107
6410
  supply: originGood.supply,
5108
6411
  buyPrice: originGood.price,
@@ -5132,7 +6435,7 @@ function calculateCargoMass(cargo) {
5132
6435
  let mass = UInt32.from(0);
5133
6436
  for (const c of cargo) {
5134
6437
  if (UInt64.from(c.quantity).gt(UInt64.zero)) {
5135
- const goodMass = getGood(c.good_id).mass;
6438
+ const goodMass = getItem(c.item_id).mass;
5136
6439
  mass = mass.adding(goodMass.multiplying(c.quantity));
5137
6440
  }
5138
6441
  }
@@ -5154,7 +6457,7 @@ function analyzeCargoSale(cargo, prices) {
5154
6457
  for (const c of cargo) {
5155
6458
  if (UInt64.from(c.quantity).equals(UInt64.zero))
5156
6459
  continue;
5157
- const goodId = Number(c.good_id);
6460
+ const goodId = Number(c.item_id);
5158
6461
  const salePrice = prices.get(goodId);
5159
6462
  if (salePrice) {
5160
6463
  revenue = revenue.adding(UInt64.from(salePrice).multiplying(c.quantity));
@@ -5172,15 +6475,15 @@ function buildCargoSaleItems(cargo, prices) {
5172
6475
  for (const c of cargo) {
5173
6476
  if (UInt64.from(c.quantity).equals(UInt64.zero))
5174
6477
  continue;
5175
- const goodId = Number(c.good_id);
6478
+ const goodId = Number(c.item_id);
5176
6479
  const salePrice = prices.get(goodId);
5177
6480
  const pricePerUnit = salePrice ? UInt32.from(salePrice) : UInt32.zero;
5178
6481
  const revenue = UInt64.from(pricePerUnit).multiplying(c.quantity);
5179
6482
  const cost = c.unit_cost.multiplying(c.quantity);
5180
6483
  const profit = Int64.from(revenue).subtracting(cost);
5181
6484
  items.push({
5182
- goodId: c.good_id,
5183
- goodName: c.good?.name ?? `Good #${goodId}`,
6485
+ goodId: c.item_id,
6486
+ goodName: c.item?.name ?? `Item #${goodId}`,
5184
6487
  quantity: UInt32.from(c.quantity),
5185
6488
  pricePerUnit,
5186
6489
  revenue,
@@ -5210,10 +6513,10 @@ function createSellAndTradeOption(saleRevenue, saleCost, deal, cargoSale, unload
5210
6513
  }
5211
6514
  : undefined;
5212
6515
  return {
5213
- id: `sell-trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.good.id}`,
6516
+ id: `sell-trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.item.id}`,
5214
6517
  type: 'sell-and-trade',
5215
- title: `Trade ${deal.good.good.name}`,
5216
- description: `Sell cargo, buy ${deal.maxQuantity} ${deal.good.good.name}, deliver to (${deal.destination.coordinates.x}, ${deal.destination.coordinates.y})`,
6518
+ title: `Trade ${deal.item.item.name}`,
6519
+ description: `Sell cargo, buy ${deal.maxQuantity} ${deal.item.item.name}, deliver to (${deal.destination.coordinates.x}, ${deal.destination.coordinates.y})`,
5217
6520
  reason: `${deal.marginPercent.toFixed(0)}% margin, ${deal.profitPerSecond.toFixed(1)}/s profit rate`,
5218
6521
  recommended: false,
5219
6522
  highestProfit: false,
@@ -5275,7 +6578,7 @@ function createSellAndRepositionOption(saleRevenue, saleCost, reposition, cargoS
5275
6578
  id: `sell-reposition-${reposition.location.coordinates.x}-${reposition.location.coordinates.y}`,
5276
6579
  type: 'sell-and-reposition',
5277
6580
  title: 'Sell & Move',
5278
- description: `Sell cargo here, travel empty to buy ${deal.good.good.name}`,
6581
+ description: `Sell cargo here, travel empty to buy ${deal.item.item.name}`,
5279
6582
  reason: `No good trades here — ${deal.marginPercent.toFixed(0)}% margin trade available at destination`,
5280
6583
  recommended: false,
5281
6584
  highestProfit: false,
@@ -5394,9 +6697,9 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
5394
6697
  availableSpace: Number(ship.maxCapacity),
5395
6698
  });
5396
6699
  if (hasCargo && dealsAtOrigin.length > 0) {
5397
- const cargoGoodIds = new Set(cargo.map((c) => Number(c.good_id)));
6700
+ const cargoGoodIds = new Set(cargo.map((c) => Number(c.item_id)));
5398
6701
  for (const deal of dealsAtOrigin.slice(0, 3)) {
5399
- const dealGoodId = Number(deal.good.id);
6702
+ const dealGoodId = Number(deal.item.id);
5400
6703
  if (cargoGoodIds.has(dealGoodId)) {
5401
6704
  continue;
5402
6705
  }
@@ -5493,10 +6796,10 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
5493
6796
  if (!hasCargo && dealsAtOrigin.length > 0) {
5494
6797
  for (const deal of dealsAtOrigin.slice(0, 3)) {
5495
6798
  const option = {
5496
- id: `trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.good.id}`,
6799
+ id: `trade-${deal.destination.coordinates.x}-${deal.destination.coordinates.y}-${deal.item.id}`,
5497
6800
  type: 'sell-and-trade',
5498
- title: `Trade ${deal.good.good.name}`,
5499
- description: `Buy ${deal.maxQuantity} ${deal.good.good.name}, deliver to (${deal.destination.coordinates.x}, ${deal.destination.coordinates.y})`,
6801
+ title: `Trade ${deal.item.item.name}`,
6802
+ description: `Buy ${deal.maxQuantity} ${deal.item.item.name}, deliver to (${deal.destination.coordinates.x}, ${deal.destination.coordinates.y})`,
5500
6803
  reason: `${deal.marginPercent.toFixed(0)}% margin, ${deal.profitPerSecond.toFixed(1)}/s profit rate`,
5501
6804
  recommended: false,
5502
6805
  highestProfit: false,
@@ -5534,7 +6837,7 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
5534
6837
  let discountedGood;
5535
6838
  let bestDiscount = 0;
5536
6839
  if (gameSeed && state) {
5537
- const allGoods = getGoods();
6840
+ const allGoods = getItems();
5538
6841
  for (const good of allGoods) {
5539
6842
  const rarity = getRarity(gameSeed, state.seed, dest.coordinates, good.id);
5540
6843
  if (rarity.minMultiplier < 1.0) {
@@ -5562,8 +6865,8 @@ async function analyzeCollectOptions(ship, arrivedAt, callbacks, options = {}) {
5562
6865
  }
5563
6866
  const destDeals = await findDealsForShip(ship, dest.coordinates, callbacks.getNearbyLocations, callbacks.getMarketPrices, { maxDeals: 2 });
5564
6867
  const potentialDeals = destDeals.map((d) => ({
5565
- goodId: Number(d.good.id),
5566
- goodName: d.good.good.name,
6868
+ goodId: Number(d.item.id),
6869
+ goodName: d.item.item.name,
5567
6870
  destinationCoords: d.destination.coordinates,
5568
6871
  marginPercent: d.marginPercent,
5569
6872
  profitPerSecond: d.profitPerSecond,
@@ -5649,9 +6952,9 @@ class TradesManager extends BaseManager {
5649
6952
  const result = prices.map((price) => {
5650
6953
  const actualSupply = locationWithSupply.getSupply(price.id);
5651
6954
  if (actualSupply !== undefined) {
5652
- return GoodPrice.from({
6955
+ return ItemPrice.from({
5653
6956
  id: price.id,
5654
- good: price.good,
6957
+ item: price.item,
5655
6958
  price: price.price,
5656
6959
  supply: actualSupply,
5657
6960
  });
@@ -5776,23 +7079,23 @@ class ActionsManager extends BaseManager {
5776
7079
  source_id: UInt64.from(sourceId),
5777
7080
  dest_type: destType,
5778
7081
  dest_id: UInt64.from(destId),
5779
- good_id: UInt16.from(goodId),
7082
+ item_id: UInt16.from(goodId),
5780
7083
  quantity: UInt32.from(quantity),
5781
7084
  });
5782
7085
  }
5783
- buyGoods(entityId, goodId, quantity, entityType = EntityType.SHIP) {
5784
- return this.server.action('buygoods', {
7086
+ buyItems(entityId, goodId, quantity, entityType = EntityType.SHIP) {
7087
+ return this.server.action('buyitems', {
5785
7088
  entity_type: entityType,
5786
7089
  id: UInt64.from(entityId),
5787
- good_id: UInt16.from(goodId),
7090
+ item_id: UInt16.from(goodId),
5788
7091
  quantity: UInt32.from(quantity),
5789
7092
  });
5790
7093
  }
5791
- sellGoods(entityId, goodId, quantity, entityType = EntityType.SHIP) {
5792
- return this.server.action('sellgoods', {
7094
+ sellItems(entityId, goodId, quantity, entityType = EntityType.SHIP) {
7095
+ return this.server.action('sellitems', {
5793
7096
  entity_type: entityType,
5794
7097
  id: UInt64.from(entityId),
5795
- good_id: UInt16.from(goodId),
7098
+ item_id: UInt16.from(goodId),
5796
7099
  quantity: UInt32.from(quantity),
5797
7100
  });
5798
7101
  }
@@ -5844,6 +7147,16 @@ class ActionsManager extends BaseManager {
5844
7147
  ship_id: UInt64.from(shipId),
5845
7148
  });
5846
7149
  }
7150
+ warp(shipId, destination) {
7151
+ const x = Int64.from(destination.x);
7152
+ const y = Int64.from(destination.y);
7153
+ return this.server.action('warp', {
7154
+ entity_type: EntityType.SHIP,
7155
+ id: UInt64.from(shipId),
7156
+ x,
7157
+ y,
7158
+ });
7159
+ }
5847
7160
  joinGame(account, companyName) {
5848
7161
  return [this.foundCompany(account, companyName), this.join(account)];
5849
7162
  }
@@ -5861,7 +7174,7 @@ class ActionsManager extends BaseManager {
5861
7174
  const shipId = ship instanceof Ship ? ship.id : UInt64.from(ship);
5862
7175
  return shipCargo
5863
7176
  .filter((c) => c.hasCargo)
5864
- .map((c) => this.sellGoods(shipId, c.good_id, c.quantity, EntityType.SHIP));
7177
+ .map((c) => this.sellItems(shipId, c.item_id, c.quantity, EntityType.SHIP));
5865
7178
  }
5866
7179
  }
5867
7180
 
@@ -6070,6 +7383,222 @@ function makeContainer(state) {
6070
7383
  return new Container(entityInfo);
6071
7384
  }
6072
7385
 
7386
+ const DEPTH_THRESHOLD_COMMON = 0;
7387
+ const DEPTH_THRESHOLD_UNCOMMON = 2000;
7388
+ const DEPTH_THRESHOLD_RARE = 10000;
7389
+ const DEPTH_THRESHOLD_EPIC = 30000;
7390
+ const DEPTH_THRESHOLD_LEGENDARY = 55000;
7391
+ const LOCATION_MIN_DEPTH = 500;
7392
+ const LOCATION_MAX_DEPTH = 65535;
7393
+ const YIELD_THRESHOLD = Math.floor(0.003 * 0xffffffff);
7394
+ const PLANET_SUBTYPE_GAS_GIANT = 0;
7395
+ const PLANET_SUBTYPE_ROCKY = 1;
7396
+ const PLANET_SUBTYPE_TERRESTRIAL = 2;
7397
+ const PLANET_SUBTYPE_ICY = 3;
7398
+ const PLANET_SUBTYPE_OCEAN = 4;
7399
+ const PLANET_SUBTYPE_INDUSTRIAL = 5;
7400
+ const RESOURCE_CATALOG = [
7401
+ { id: 26, rarity: 'common' },
7402
+ { id: 1, rarity: 'common' },
7403
+ { id: 14, rarity: 'common' },
7404
+ { id: 6, rarity: 'common' },
7405
+ { id: 29, rarity: 'uncommon' },
7406
+ { id: 2, rarity: 'uncommon' },
7407
+ { id: 1000, rarity: 'uncommon' },
7408
+ { id: 1003, rarity: 'uncommon' },
7409
+ { id: 22, rarity: 'rare' },
7410
+ { id: 18, rarity: 'rare' },
7411
+ { id: 1001, rarity: 'rare' },
7412
+ { id: 1002, rarity: 'rare' },
7413
+ { id: 74, rarity: 'epic' },
7414
+ { id: 54, rarity: 'epic' },
7415
+ ];
7416
+ function getDepthThreshold(rarity) {
7417
+ switch (rarity) {
7418
+ case 'common':
7419
+ return DEPTH_THRESHOLD_COMMON;
7420
+ case 'uncommon':
7421
+ return DEPTH_THRESHOLD_UNCOMMON;
7422
+ case 'rare':
7423
+ return DEPTH_THRESHOLD_RARE;
7424
+ case 'epic':
7425
+ return DEPTH_THRESHOLD_EPIC;
7426
+ case 'legendary':
7427
+ return DEPTH_THRESHOLD_LEGENDARY;
7428
+ }
7429
+ }
7430
+ function getResourceRarity(itemId) {
7431
+ const entry = RESOURCE_CATALOG.find((r) => r.id === itemId);
7432
+ return entry ? entry.rarity : 'legendary';
7433
+ }
7434
+ function getResourceWeight(itemId, stratum) {
7435
+ const rarity = getResourceRarity(itemId);
7436
+ const threshold = getDepthThreshold(rarity);
7437
+ if (stratum < threshold)
7438
+ return 0;
7439
+ const depthAbove = stratum - threshold;
7440
+ switch (rarity) {
7441
+ case 'common':
7442
+ if (stratum < 2000)
7443
+ return 100;
7444
+ if (stratum < 10000)
7445
+ return 80;
7446
+ if (stratum < 30000)
7447
+ return 50;
7448
+ return 30;
7449
+ case 'uncommon':
7450
+ if (depthAbove < 3000)
7451
+ return 40;
7452
+ if (depthAbove < 8000)
7453
+ return 60;
7454
+ return 50;
7455
+ case 'rare':
7456
+ if (depthAbove < 5000)
7457
+ return 20;
7458
+ if (depthAbove < 15000)
7459
+ return 35;
7460
+ return 40;
7461
+ case 'epic':
7462
+ if (depthAbove < 10000)
7463
+ return 10;
7464
+ if (depthAbove < 25000)
7465
+ return 20;
7466
+ return 30;
7467
+ case 'legendary':
7468
+ return 10;
7469
+ }
7470
+ }
7471
+ const ASTEROID_RESOURCES = [26, 29, 22, 74, 14, 1000, 1001];
7472
+ const NEBULA_RESOURCES = [1, 2, 18, 54];
7473
+ const GAS_GIANT_RESOURCES = [1, 2, 18, 54];
7474
+ const ROCKY_RESOURCES = [26, 29, 22, 74, 6, 1003, 1002];
7475
+ const TERRESTRIAL_RESOURCES = [6, 1003, 1002, 1001];
7476
+ const ICY_RESOURCES = [6, 14, 1000, 1001, 18];
7477
+ const OCEAN_RESOURCES = [1, 2, 1003, 1002];
7478
+ const INDUSTRIAL_RESOURCES = [26, 29, 22, 74, 14, 1000, 54];
7479
+ function getLocationCandidates(locationType, subtype) {
7480
+ if (locationType === 2)
7481
+ return ASTEROID_RESOURCES;
7482
+ if (locationType === 3)
7483
+ return NEBULA_RESOURCES;
7484
+ if (locationType === 1) {
7485
+ switch (subtype) {
7486
+ case PLANET_SUBTYPE_GAS_GIANT:
7487
+ return GAS_GIANT_RESOURCES;
7488
+ case PLANET_SUBTYPE_ROCKY:
7489
+ return ROCKY_RESOURCES;
7490
+ case PLANET_SUBTYPE_TERRESTRIAL:
7491
+ return TERRESTRIAL_RESOURCES;
7492
+ case PLANET_SUBTYPE_ICY:
7493
+ return ICY_RESOURCES;
7494
+ case PLANET_SUBTYPE_OCEAN:
7495
+ return OCEAN_RESOURCES;
7496
+ case PLANET_SUBTYPE_INDUSTRIAL:
7497
+ return INDUSTRIAL_RESOURCES;
7498
+ }
7499
+ }
7500
+ return [];
7501
+ }
7502
+ function getEligibleResources(locationType, subtype, stratum) {
7503
+ const candidates = getLocationCandidates(locationType, subtype);
7504
+ return candidates.filter((itemId) => {
7505
+ const rarity = getResourceRarity(itemId);
7506
+ const threshold = getDepthThreshold(rarity);
7507
+ return stratum >= threshold;
7508
+ });
7509
+ }
7510
+ function depthScaleFactor(stratum) {
7511
+ if (stratum <= 1)
7512
+ return 1.0;
7513
+ const logScale = Math.log(stratum) / Math.log(65535);
7514
+ return 1.0 + logScale * 2.0;
7515
+ }
7516
+
7517
+ function deriveStratum(epochSeed, coords, stratum, locationType, subtype, _maxDepth) {
7518
+ const seed = Checksum256.from(epochSeed);
7519
+ const c = Coordinates.from(coords);
7520
+ const input = `stratum-${c.x}-${c.y}-${stratum}`;
7521
+ const hashResult = hash512(seed, input);
7522
+ const bytes = hashResult.array;
7523
+ const rawReserve = ((bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3]) >>> 0;
7524
+ let reserve = 0;
7525
+ if (rawReserve <= YIELD_THRESHOLD) {
7526
+ const baseReserve = (rawReserve % 333) + 1;
7527
+ const scale = depthScaleFactor(stratum);
7528
+ reserve = Math.floor(baseReserve * scale);
7529
+ }
7530
+ if (reserve === 0)
7531
+ return { itemId: 0, seed: 0n, richness: 0, reserve: 0 };
7532
+ const eligible = getEligibleResources(locationType, subtype, stratum);
7533
+ if (eligible.length === 0)
7534
+ return { itemId: 0, seed: 0n, richness: 0, reserve: 0 };
7535
+ const resourceRoll = ((bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7]) >>> 0;
7536
+ let totalWeight = 0;
7537
+ for (const id of eligible) {
7538
+ totalWeight += getResourceWeight(id, stratum);
7539
+ }
7540
+ let selectedItemId = eligible[0];
7541
+ if (totalWeight > 0) {
7542
+ const roll = resourceRoll % totalWeight;
7543
+ let cumulative = 0;
7544
+ for (const id of eligible) {
7545
+ cumulative += getResourceWeight(id, stratum);
7546
+ if (roll < cumulative) {
7547
+ selectedItemId = id;
7548
+ break;
7549
+ }
7550
+ }
7551
+ }
7552
+ const seedBigInt = (BigInt(bytes[8]) << 56n) |
7553
+ (BigInt(bytes[9]) << 48n) |
7554
+ (BigInt(bytes[10]) << 40n) |
7555
+ (BigInt(bytes[11]) << 32n) |
7556
+ (BigInt(bytes[12]) << 24n) |
7557
+ (BigInt(bytes[13]) << 16n) |
7558
+ (BigInt(bytes[14]) << 8n) |
7559
+ BigInt(bytes[15]);
7560
+ const rawRichness = (bytes[16] << 8) | bytes[17];
7561
+ const normalized = rawRichness / 65535;
7562
+ const baseRichness = Math.floor(normalized * normalized * 999) + 1;
7563
+ let depthBonus = 0;
7564
+ if (stratum > 1) {
7565
+ depthBonus = 50 * Math.log(stratum) / Math.log(65535);
7566
+ }
7567
+ const richness = Math.min(Math.floor(baseRichness + depthBonus), 1000);
7568
+ return { itemId: selectedItemId, seed: seedBigInt, richness, reserve };
7569
+ }
7570
+ function deriveResourceStats(seed) {
7571
+ const seedStr = seed.toString();
7572
+ const encoder = new TextEncoder();
7573
+ const data = encoder.encode(seedStr);
7574
+ const hashResult = Checksum256.hash(Bytes.from(data));
7575
+ const hashBytes = hashResult.array;
7576
+ const extractU16 = (offset) => (hashBytes[offset] << 8) | hashBytes[offset + 1];
7577
+ const weibullStat = (raw) => {
7578
+ const u = raw / 65536;
7579
+ let x = 0.27 * Math.sqrt(-Math.log(1 - u));
7580
+ if (x > 1)
7581
+ x = 1;
7582
+ return Math.floor(x * 999) + 1;
7583
+ };
7584
+ return {
7585
+ purity: weibullStat(extractU16(0)),
7586
+ density: weibullStat(extractU16(2)),
7587
+ reactivity: weibullStat(extractU16(4)),
7588
+ resonance: weibullStat(extractU16(6)),
7589
+ };
7590
+ }
7591
+
7592
+ function deriveLocationSize(loc) {
7593
+ if (loc.type.toNumber() === LocationType.EMPTY)
7594
+ return 0;
7595
+ const raw = (loc.seed0.toNumber() << 8) | loc.seed1.toNumber();
7596
+ const normalized = raw / 65535;
7597
+ const curved = Math.pow(normalized, 3.0);
7598
+ const range = LOCATION_MAX_DEPTH - LOCATION_MIN_DEPTH;
7599
+ return Math.floor(LOCATION_MIN_DEPTH + curved * range);
7600
+ }
7601
+
6073
7602
  function canMove(e) {
6074
7603
  return 'engines' in e && 'generator' in e && 'energy' in e;
6075
7604
  }
@@ -6102,24 +7631,21 @@ function calcLoadDuration(entity, cargoMass) {
6102
7631
  return UInt32.from(Math.ceil(Number(cargoMass) / totalThrust));
6103
7632
  }
6104
7633
 
6105
- function calc_load_time_internal(loaders, shipZ, cargoMass) {
6106
- if (cargoMass === 0 || loaders.quantity.toNumber() === 0 || loaders.thrust.toNumber() === 0) {
6107
- return 0;
6108
- }
6109
- const totalMass = cargoMass + loaders.mass.toNumber();
6110
- const acceleration = (loaders.thrust.toNumber() / totalMass) * PRECISION;
6111
- const flightTime = Math.floor(2 * Math.sqrt(shipZ / acceleration));
6112
- return Math.floor(flightTime / loaders.quantity.toNumber());
6113
- }
6114
- function calc_extraction_duration(extractor, loaders, shipZ, batchMass) {
6115
- const extractionTime = Math.floor(batchMass / extractor.rate.toNumber());
6116
- const loadingTime = calc_load_time_internal(loaders, shipZ, batchMass);
6117
- return UInt32.from(Math.max(extractionTime, loadingTime));
7634
+ function calc_extraction_duration(extractor, cargoMass, stratum, richness) {
7635
+ const rate = extractor.rate.toNumber();
7636
+ const efficiency = extractor.efficiency.toNumber();
7637
+ const drill = extractor.drill.toNumber();
7638
+ const rateProduct = Math.floor((rate * richness * efficiency) / PRECISION);
7639
+ if (rateProduct === 0)
7640
+ return UInt32.from(0);
7641
+ const extractionTime = Math.floor((cargoMass * PRECISION) / rateProduct);
7642
+ const drillTime = Math.floor(stratum / drill);
7643
+ return UInt32.from(extractionTime + drillTime);
6118
7644
  }
6119
7645
  function calc_extraction_energy(extractor, duration) {
6120
7646
  const energy = Math.floor((duration * extractor.drain.toNumber()) / PRECISION);
6121
7647
  return UInt16.from(energy);
6122
7648
  }
6123
7649
 
6124
- export { ActionsManager, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, Container, Coordinates, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GOOD_DOES_NOT_EXIST, GOOD_NOT_AVAILABLE_AT_LOCATION, GameState, Good, GoodPrice, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_EXTRACTOR_DRAIN, INITIAL_EXTRACTOR_EFFICIENCY, INITIAL_EXTRACTOR_RATE, INITIAL_LOADER_MASS, INITIAL_LOADER_QUANTITY, INITIAL_LOADER_THRUST, INITIAL_SHIP_CAPACITY, INITIAL_SHIP_DRAIN, INITIAL_SHIP_ENERGY, INITIAL_SHIP_GENERATOR_CAPACITY, INITIAL_SHIP_HULLMASS, INITIAL_SHIP_MASS, INITIAL_SHIP_RECHARGE, INITIAL_SHIP_THRUST, INITIAL_SHIP_Z, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_GOOD_QUANTITY, INSUFFICIENT_GOOD_SUPPLY, INVALID_AMOUNT, InventoryAccessor, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, NO_SCHEDULE, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PRECISION, platform as PlatformContract, Player, PlayersManager, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, Rarities, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, ScheduleAccessor, server as ServerContract, Ship, Shipload, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, TradesManager, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, analyzeCargoSale, analyzeCollectOptions, availableCapacity$1 as availableCapacity, availableCapacityFromMass, calcCargoMass, calcCargoValue, calcEnergyUsage, calcLoadDuration, calc_acceleration, calc_energyusage, calc_extraction_duration, calc_extraction_energy, calc_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateBreakEvenPrice, calculateFlightTime, calculateLoadTimeBreakdown, calculateMaxTradeQuantity, calculateProfitPerMass, calculateProfitPerSecond, calculateROI, calculateRefuelingTime, calculateTradeProfit, calculateTransferTime, calculateUpdatedCargoCost, canMove, capsHasExtractor, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, capsHasTrade, cargoUtils, coordsToLocationId, createExploreOption, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, createSellAndRepositionOption, createSellAndStayOption, createSellAndTradeOption, createTravelToSellOption, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationMixture, deriveLocationStatic, distanceBetweenCoordinates, distanceBetweenPoints, energyPercent, estimateDealTravelTime, estimateTravelTime, findBestDeal, findBestGoodToTrade, findDealsForShip, findNearbyPlanets, getCurrentEpoch, getDestinationLocation, getEpochInfo, getFlightOrigin, getGood, getGoods, getLocationType, getPositionAt, getRarity, getSystemName, goodIds, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasExtractor, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hasTrade, hash, hash512, isExtractableLocation, isFull$1 as isFull, isFullFromMass, isProfitable, lerp, makeContainer, makeShip, makeWarehouse, marketPrice, marketPrices, maxTravelDistance, needsRecharge, projectEntity, projectEntityAt, rotation, schedule, toLocation };
7650
+ export { ActionsManager, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, Container, Coordinates, DEPTH_THRESHOLD_COMMON, DEPTH_THRESHOLD_EPIC, DEPTH_THRESHOLD_LEGENDARY, DEPTH_THRESHOLD_RARE, DEPTH_THRESHOLD_UNCOMMON, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GameState, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_EXTRACTOR_DRAIN, INITIAL_EXTRACTOR_EFFICIENCY, INITIAL_EXTRACTOR_RATE, INITIAL_LOADER_MASS, INITIAL_LOADER_QUANTITY, INITIAL_LOADER_THRUST, INITIAL_SHIP_CAPACITY, INITIAL_SHIP_DRAIN, INITIAL_SHIP_ENERGY, INITIAL_SHIP_GENERATOR_CAPACITY, INITIAL_SHIP_HULLMASS, INITIAL_SHIP_MASS, INITIAL_SHIP_RECHARGE, INITIAL_SHIP_THRUST, INITIAL_SHIP_Z, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_DOES_NOT_EXIST, ITEM_NOT_AVAILABLE_AT_LOCATION, InventoryAccessor, Item, ItemPrice, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PRECISION, platform as PlatformContract, Player, PlayersManager, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, Rarities, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, ScheduleAccessor, server as ServerContract, Ship, Shipload, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, TradesManager, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, analyzeCargoSale, analyzeCollectOptions, availableCapacity$1 as availableCapacity, availableCapacityFromMass, calcCargoMass, calcCargoValue, calcEnergyUsage, calcLoadDuration, calc_acceleration, calc_energyusage, calc_extraction_duration, calc_extraction_energy, calc_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateBreakEvenPrice, calculateFlightTime, calculateLoadTimeBreakdown, calculateMaxTradeQuantity, calculateProfitPerMass, calculateProfitPerSecond, calculateROI, calculateRefuelingTime, calculateTradeProfit, calculateTransferTime, calculateUpdatedCargoCost, canMove, capsHasExtractor, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, capsHasTrade, cargoUtils, coordsToLocationId, createExploreOption, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, createSellAndRepositionOption, createSellAndStayOption, createSellAndTradeOption, createTravelToSellOption, Shipload as default, depthScaleFactor, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStratum, distanceBetweenCoordinates, distanceBetweenPoints, energyPercent, estimateDealTravelTime, estimateTravelTime, findBestDeal, findBestItemToTrade, findDealsForShip, findNearbyPlanets, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getPositionAt, getRarity, getResourceRarity, getResourceWeight, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasExtractor, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hasTrade, hash, hash512, isExtractableLocation, isFull$1 as isFull, isFullFromMass, isProfitable, itemIds, lerp, makeContainer, makeShip, makeWarehouse, marketPrice, marketPrices, maxTravelDistance, needsRecharge, projectEntity, projectEntityAt, rotation, schedule, toLocation };
6125
7651
  //# sourceMappingURL=shipload.m.js.map