@shipload/sdk 2.0.0-rc7 → 2.0.0-rc9

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.
package/lib/shipload.js CHANGED
@@ -213,7 +213,7 @@ var platform = /*#__PURE__*/Object.freeze({
213
213
  Contract: Contract$1
214
214
  });
215
215
 
216
- const abiBlob = antelope.Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhWCWFkZG1vZHVsZQAFC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgPbW9kdWxlX2NhcmdvX2lkBnVpbnQ2NA90YXJnZXRfY2FyZ29faWQGdWludDY0B2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgVibGVuZAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BmlucHV0cwxjYXJnb19pdGVtW10GY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIEc2VlZAd1aW50NjQ/B21vZHVsZXMObW9kdWxlX2VudHJ5W10JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BHNlZWQGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10KY2FyZ29fc2VlZAACB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAIAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8LY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/BWNyYWZ0AAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQ1jcmFmdGVyX3N0YXRzAAIFc3BlZWQGdWludDE2BWRyYWluBnVpbnQxNgxjcmVhdGVlbnRpdHkABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWULZW50aXR5X25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAZkZXBsb3kABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NA5wYWNrZWRfaXRlbV9pZAZ1aW50MTYEc2VlZAZ1aW50NjQLZW50aXR5X25hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAxlbmVyZ3lfc3RhdHMAAghjYXBhY2l0eQZ1aW50MTYIcmVjaGFyZ2UGdWludDE2FGVudGl0eV9jdXJyZW50X3N0YXRlAAILY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5BnVpbnQxNg9lbnRpdHlfZGVmYXVsdHMABhJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhF3YXJlaG91c2VfbG9hZGVycwxsb2FkZXJfc3RhdHMSY29udGFpbmVyX2h1bGxtYXNzBnVpbnQzMhJjb250YWluZXJfY2FwYWNpdHkGdWludDMyC2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAXBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/CGh1bGxtYXNzB3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8IY2FwYWNpdHkHdWludDMyPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8HaXNfaWRsZQRib29sDGN1cnJlbnRfdGFzawV0YXNrPxRjdXJyZW50X3Rhc2tfZWxhcHNlZAZ1aW50MzIWY3VycmVudF90YXNrX3JlbWFpbmluZwZ1aW50MzINcGVuZGluZ190YXNrcwZ0YXNrW10HaWRsZV9hdAt0aW1lX3BvaW50PwhzY2hlZHVsZQlzY2hlZHVsZT8KZW50aXR5X3JlZgACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NA5lbnRpdHlfc3VtbWFyeQAIBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXNfaWRsZQRib29sDnJlc29sdmVkX2NvdW50BnVpbnQzMg1wZW5kaW5nX2NvdW50BnVpbnQzMhBlbnRpdHlfdGFza19pbmZvAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lCnRhc2tfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAp0aW1lX3BvaW50D2VudGl0eWdyb3VwX3JvdwACAmlkBnVpbnQ2NAxwYXJ0aWNpcGFudHMMZW50aXR5X3JlZltdB2V4dHJhY3QABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNghxdWFudGl0eQZ1aW50MzIPZXh0cmFjdG9yX3N0YXRzAAQEcmF0ZQZ1aW50MTYFZHJhaW4GdWludDE2BWRlcHRoBnVpbnQxNgVkcmlsbAZ1aW50MTYLZ2FtZV9jb25maWcAAwd2ZXJzaW9uBnVpbnQzMghkZWZhdWx0cw9lbnRpdHlfZGVmYXVsdHMFaXRlbXMKaXRlbV9kZWZbXQlnZXRjb25maWcAAAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CGdldGl0ZW1zAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQKZ2V0bG9jZGF0YQACAXgFaW50NjQBeQVpbnQ2NAlnZXRuZWFyYnkAAwtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIcmVjaGFyZ2UEYm9vbAlnZXRwbGF5ZXIAAQdhY2NvdW50BG5hbWUKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghpdGVtX2RlZgACAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgppdGVtc19pbmZvAAEFaXRlbXMKaXRlbV9kZWZbXQRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgQbG9jYXRpb25fZGVyaXZlZAADDHN0YXRpY19wcm9wcw9sb2NhdGlvbl9zdGF0aWMLZXBvY2hfcHJvcHMObG9jYXRpb25fZXBvY2gEc2l6ZQZ1aW50MTYObG9jYXRpb25fZXBvY2gAAwZhY3RpdmUEYm9vbAVzZWVkMAV1aW50OAVzZWVkMQV1aW50OA1sb2NhdGlvbl9pbmZvAAIGY29vcmRzC2Nvb3JkaW5hdGVzCWlzX3N5c3RlbQRib29sDGxvY2F0aW9uX3JvdwAGAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29faXRlbVtdCHNjaGVkdWxlCXNjaGVkdWxlPw9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgMbW9kdWxlX2VudHJ5AAIEdHlwZQV1aW50OAlpbnN0YWxsZWQLY2FyZ29fc2VlZD8ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50FGVudGl0eV9jdXJyZW50X3N0YXRlCXByb2plY3RlZBRlbnRpdHlfY3VycmVudF9zdGF0ZQptYXhfZW5lcmd5BnVpbnQxNgdzeXN0ZW1zD25lYXJieV9zeXN0ZW1bXQ1uZWFyYnlfc3lzdGVtAAQIZGlzdGFuY2UGdWludDY0C2VuZXJneV9jb3N0BnVpbnQ2NAtmbGlnaHRfdGltZQZ1aW50MzIIbG9jYXRpb24NbG9jYXRpb25faW5mbwZub3RpZnkAAQVldmVudAp0YXNrX2V2ZW50C3BsYXllcl9pbmZvAAYFb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nCnNoaXBfY291bnQGdWludDY0D3dhcmVob3VzZV9jb3VudAZ1aW50NjQPY29udGFpbmVyX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAEFb3duZXIEbmFtZQhyZWNoYXJnZQACC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0C3Jlc2VydmVfcm93AAICaWQGdWludDY0CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/DnJlc291cmNlX3N0YXRzAAMFc3RhdDEGdWludDE2BXN0YXQyBnVpbnQxNgVzdGF0MwZ1aW50MTYIcm1tb2R1bGUABAtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4D3RhcmdldF9jYXJnb19pZAZ1aW50NjQEc2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQIc2hpcF9yb3cAEAJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8GZW5lcmd5B3VpbnQxNj8JY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwdsb2FkZXJzDWxvYWRlcl9zdGF0cz8JZXh0cmFjdG9yEGV4dHJhY3Rvcl9zdGF0cz8Ed2FycAt3YXJwX3N0YXRzPwdjcmFmdGVyDmNyYWZ0ZXJfc3RhdHM/B21vZHVsZXMObW9kdWxlX2VudHJ5W10Ic2NoZWR1bGUJc2NoZWR1bGU/CnNwYXduY2FyZ28AAwllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAtzcGF3bnNlZWRlZAAECWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BHNlZWQGdWludDY0CXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50MzIEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAEB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgR0YXNrAAgEdHlwZQV1aW50OAhkdXJhdGlvbgZ1aW50MzIKY2FuY2VsYWJsZQV1aW50OAtjb29yZGluYXRlcwxjb29yZGluYXRlcz8FY2FyZ28MY2FyZ29faXRlbVtdDGVudGl0eXRhcmdldAtlbnRpdHlfcmVmPwtlbnRpdHlncm91cAd1aW50NjQ/C2VuZXJneV9jb3N0B3VpbnQxNj8KdGFza19ldmVudAAJCmV2ZW50X3R5cGUFdWludDgFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DHRhc2tfcmVzdWx0cwABCGVudGl0aWVzEmVudGl0eV90YXNrX2luZm9bXQh0cmFuc2ZlcgAGC3NvdXJjZV90eXBlBG5hbWUJc291cmNlX2lkBnVpbnQ2NAlkZXN0X3R5cGUEbmFtZQdkZXN0X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGdHJhdmVsAAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93AAMCaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkQZ2FtZV9jb25maWdfdHlwZQtnYW1lX2NvbmZpZw13YXJlaG91c2Vfcm93AAgCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIY2FwYWNpdHkGdWludDMyCWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdhcnAABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQKd2FycF9zdGF0cwABBXJhbmdlBnVpbnQzMgR3aXBlAAAMd2lwZXNlcXVlbmNlAAAoAABQUScqUzIJYWRkbW9kdWxlAAAAAEChaXYyB2FkdmFuY2XTAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZHZhbmNlCnN1bW1hcnk6ICdBZHZhbmNlIHR1cm4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkdmFuY2UgdGhlIGdhbWUgdG8gdGhlIG5leHQgdHVybi4AAAAAgDRVPAVibGVuZAAAAAAARIWmQQZjYW5jZWzHAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjYW5jZWwKc3VtbWFyeTogJ0NhbmNlbCBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbmNlbCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0YXNrcyBmcm9tIHRoZSBlbmQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUuIFRhc2tzIHRoYXQgYXJlIGltbXV0YWJsZSBhbmQgaW4gcHJvZ3Jlc3MgY2Fubm90IGJlIGNhbmNlbGxlZC4KCi0tLQAAqBvfaVRECWNsZWFucnN2cAAAgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl08QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgoKLS0tAABgNDK3JkUJY29uZmlnbG9nAAAAAACAvMxFBWNyYWZ0AOCzy1OpbNRFDGNyZWF0ZWVudGl0eQAAAAAAeBqrSgZkZXBsb3kAAAAAAKh4zFQGZW5hYmxl4gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdTZXQgZW5hYmxlZCBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBnYW1lIG9mIFNoaXBsb2FkLgoKLS0tAAAAICNzc1cHZXh0cmFjdKEDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGV4dHJhY3QKc3VtbWFyeTogJ0V4dHJhY3QgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFeHRyYWN0IHJlc291cmNlcyBhdCB0aGUgc2hpcCdzIGN1cnJlbnQgbG9jYXRpb24uIE9ubHkgd29ya3MgYXQgZXh0cmFjdGFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhbiBleHRyYWN0aW9uIHRhc2sgdGhhdCBjb25zdW1lcyBlbmVyZ3kgYW5kIHlpZWxkcyBjYXJnbyBiYXNlZCBvbiB0aGUgc2hpcCdzIGV4dHJhY3RvciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAABgbk2KsmIJZ2V0Y29uZmlnAACwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLgAAAFiq7LJiCGdldGl0ZW1zmgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgaXRlbXMgaW4gdGhlIGdhbWUgaW5jbHVkaW5nIHRoZWlyIGlkLCBiYXNlIHByaWNlLCBhbmQgbWFzcy4AJnXZIBqzYgtnZXRsb2NhdGlvbuICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2F0aW9uCnN1bW1hcnk6ICdHZXQgbG9jYXRpb24gaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgYSBsb2NhdGlvbiBpbmNsdWRpbmcgd2hldGhlciBhIHN5c3RlbSBleGlzdHMsIGFuZCBmb3IgZWFjaCBpdGVtOiBwcmljZSwgc3VwcGx5LCByYXJpdHkgbXVsdGlwbGllciwgYW5kIGxvY2F0aW9uIG11bHRpcGxpZXIuAIDJJiEas2IKZ2V0bG9jZGF0Yf4CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGxvY2RhdGEKc3VtbWFyeTogJ0dldCBkZXJpdmVkIGxvY2F0aW9uIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgZGVyaXZlZCBsb2NhdGlvbiBkYXRhIGluY2x1ZGluZyBzdGF0aWMgcHJvcGVydGllcyAodHlwZSwgZGlmZmljdWx0eSwgc2VlZHMpIGZyb20gdGhlIGdhbWUgc2VlZCBhbmQgZXBvY2gtc3BlY2lmaWMgcHJvcGVydGllcyAoYWN0aXZlLCBzZWVkcykgZnJvbSB0aGUgY3VycmVudCBlcG9jaCBzZWVkLgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUuAIDU2dyMs2IKZ2V0c3RyYXR1bQCAlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgCi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaP0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4KCi0tLQAAAECE0rBpB2hhc2g1MTL7AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoNTEyCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhNTEyIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTUxMiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuAAAAAACQ3XQEaW5pdPoBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGluaXQKc3VtbWFyeTogJ0luaXRpYWxpemUgZ2FtZSBzZWVkJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWFsaXplIGEgdGhlIGdhbWVzIHNlZWQgYW5kIHNlZWQgdmFsdWVzIHRvIGJvb3RzdHJhcCBnYW1lIHN0YXRlLgAAAAAAMB19BGpvaW7JAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBqb2luCnN1bW1hcnk6ICdKb2luIGEgZ2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSm9pbiBhIGdhbWUgb2YgU2hpcGxvYWQKCi0tLQAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXVAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuCgotLS0AAAAq6kSlvAhybW1vZHVsZQAAAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAZdegyU3FCnNwYXduY2FyZ28AAJJKSuHJTcULc3Bhd25zZWVkZWQAAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbMsCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBpdGVtcyBhdCBhIGdpdmVuIGxvY2F0aW9uLgAAAAAAUK/hBHdhcnAAAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0LAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAC4ajqTJ0UDaTY0AAANY29udGFpbmVyX3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAAJO6bBCNA2k2NAAADGxvY2F0aW9uX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAABA7auwugNpNjQAAAtyZXNlcnZlX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAWAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAAgLzMRQx0YXNrX3Jlc3VsdHMAAAAAeBqrSgx0YXNrX3Jlc3VsdHMAAAAgI3NzVwx0YXNrX3Jlc3VsdHMAAGBuTYqyYgtnYW1lX2NvbmZpZwCwctnlqbJiDWVudGl0eV9pbmZvW10AAPDZ5amyYgtlbnRpdHlfaW5mbwAAAFiq7LJiCml0ZW1zX2luZm8AJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZAAA8OcaNbNiC25lYXJieV9pbmZvAAC4yptYs2ILcGxheWVyX2luZm8AgNTZ3IyzYgxzdHJhdHVtX2RhdGGAlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAKLa5uaq6WUMdGFza19yZXN1bHRzAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cwAAAAAAUK/hDHRhc2tfcmVzdWx0cw==');
216
+ const abiBlob = antelope.Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDhxCWFkZG1vZHVsZQAFC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgPbW9kdWxlX2NhcmdvX2lkBnVpbnQ2NA90YXJnZXRfY2FyZ29faWQGdWludDY0CGFkZG5leHVzAAMKbmV4dXNfbmFtZQZzdHJpbmcBeAVpbnQ2NAF5BWludDY0B2FkdmFuY2UAAgZyZXZlYWwGc3RyaW5nBmNvbW1pdAtjaGVja3N1bTI1NgVibGVuZAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BmlucHV0cwxjYXJnb19pdGVtW10GY2FuY2VsAAMLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIEc2VlZAd1aW50NjQ/B21vZHVsZXMObW9kdWxlX2VudHJ5W10JY2FyZ29fcm93AAYCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BHNlZWQGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10KY2FyZ29fc2VlZAACB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAIAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8LY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/BWNyYWZ0AAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQ1jcmFmdGVyX3N0YXRzAAIFc3BlZWQGdWludDE2BWRyYWluBnVpbnQxNgxjcmVhdGVlbnRpdHkABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWULZW50aXR5X25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAZkZXBsb3kABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NA5wYWNrZWRfaXRlbV9pZAZ1aW50MTYEc2VlZAZ1aW50NjQLZW50aXR5X25hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAxlbmVyZ3lfc3RhdHMAAghjYXBhY2l0eQZ1aW50MTYIcmVjaGFyZ2UGdWludDE2FGVudGl0eV9jdXJyZW50X3N0YXRlAAILY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5BnVpbnQxNg9lbnRpdHlfZGVmYXVsdHMABRJ3YXJlaG91c2VfY2FwYWNpdHkGdWludDMyC3dhcmVob3VzZV96BnVpbnQxNhJjb250YWluZXJfaHVsbG1hc3MGdWludDMyEmNvbnRhaW5lcl9jYXBhY2l0eQZ1aW50MzILY29udGFpbmVyX3oGdWludDE2C2VudGl0eV9pbmZvABcEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQdsb2FkZXJzDWxvYWRlcl9zdGF0cz8GZW5lcmd5B3VpbnQxNj8IaHVsbG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/CWV4dHJhY3RvchBleHRyYWN0b3Jfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwdpc19pZGxlBGJvb2wMY3VycmVudF90YXNrBXRhc2s/FGN1cnJlbnRfdGFza19lbGFwc2VkBnVpbnQzMhZjdXJyZW50X3Rhc2tfcmVtYWluaW5nBnVpbnQzMg1wZW5kaW5nX3Rhc2tzBnRhc2tbXQdpZGxlX2F0C3RpbWVfcG9pbnQ/CHNjaGVkdWxlCXNjaGVkdWxlPwplbnRpdHlfcmVmAAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkCnRpbWVfcG9pbnQPZW50aXR5Z3JvdXBfcm93AAICaWQGdWludDY0DHBhcnRpY2lwYW50cwxlbnRpdHlfcmVmW10HZXh0cmFjdAAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0B3N0cmF0dW0GdWludDE2CHF1YW50aXR5BnVpbnQzMg9leHRyYWN0b3Jfc3RhdHMABARyYXRlBnVpbnQxNgVkcmFpbgZ1aW50MTYFZGVwdGgGdWludDE2BWRyaWxsBnVpbnQxNgtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdCWdldGNvbmZpZwAAC2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQLZ2V0aXRlbWRhdGEAAAhnZXRpdGVtcwAAC2dldGxvY2F0aW9uAAIBeAVpbnQ2NAF5BWludDY0CmdldGxvY2RhdGEAAgF4BWludDY0AXkFaW50NjQKZ2V0bW9kdWxlcwAACWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCmdldG5mdGluZm8AAAlnZXRwbGF5ZXIAAQdhY2NvdW50BG5hbWUJZ2V0cmVjaXBlAAEOb3V0cHV0X2l0ZW1faWQGdWludDE2CmdldHJlY2lwZXMAAgtsb3dlcl9ib3VuZAZ1aW50MTYFbGltaXQFdWludDgMZ2V0cmVzb3VyY2VzAAAKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghpdGVtX2RlZgAFAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgR0eXBlBXVpbnQ4B3N1YnR5cGUFdWludDgEdGllcgV1aW50OA9pdGVtZGF0YV9yZXN1bHQAAgVpdGVtcwppdGVtX2RlZltdB3JlY2lwZXMOcmVjaXBlc19yZXN1bHQKaXRlbXNfaW5mbwABBWl0ZW1zCml0ZW1fZGVmW10Eam9pbgABB2FjY291bnQEbmFtZQxsb2FkZXJfc3RhdHMAAwRtYXNzBnVpbnQzMgZ0aHJ1c3QGdWludDE2CHF1YW50aXR5BXVpbnQ4EGxvY2F0aW9uX2Rlcml2ZWQAAwxzdGF0aWNfcHJvcHMPbG9jYXRpb25fc3RhdGljC2Vwb2NoX3Byb3BzDmxvY2F0aW9uX2Vwb2NoBHNpemUGdWludDE2DmxvY2F0aW9uX2Vwb2NoAAMGYWN0aXZlBGJvb2wFc2VlZDAFdWludDgFc2VlZDEFdWludDgNbG9jYXRpb25faW5mbwACBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAxsb2NhdGlvbl9yb3cABgJpZAZ1aW50NjQFb3duZXIEbmFtZQtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQhzY2hlZHVsZQlzY2hlZHVsZT8PbG9jYXRpb25fc3RhdGljAAUGY29vcmRzC2Nvb3JkaW5hdGVzBHR5cGUNbG9jYXRpb25fdHlwZQdzdWJ0eXBlBXVpbnQ4BXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DG1vZHVsZV9lbnRyeQACBHR5cGUFdWludDgJaW5zdGFsbGVkC2NhcmdvX3NlZWQ/C21vZHVsZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyC21vZHVsZV90eXBlBXVpbnQ4BHRpZXIFdWludDgObW9kdWxlc19yZXN1bHQAAQdtb2R1bGVzDW1vZHVsZV9pbmZvW10ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50FGVudGl0eV9jdXJyZW50X3N0YXRlCXByb2plY3RlZBRlbnRpdHlfY3VycmVudF9zdGF0ZQptYXhfZW5lcmd5BnVpbnQxNgdzeXN0ZW1zD25lYXJieV9zeXN0ZW1bXQ1uZWFyYnlfc3lzdGVtAAQIZGlzdGFuY2UGdWludDY0C2VuZXJneV9jb3N0BnVpbnQ2NAtmbGlnaHRfdGltZQZ1aW50MzIIbG9jYXRpb24NbG9jYXRpb25faW5mbwluZXh1c19yb3cABAJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcw5uZnRfc2NoZW1hX2RlZgACC3NjaGVtYV9uYW1lBG5hbWUGZmllbGRzDnNjaGVtYV9maWVsZFtdEG5mdF90ZW1wbGF0ZV9kZWYAAgdpdGVtX2lkBnVpbnQxNgtzY2hlbWFfbmFtZQRuYW1lDW5mdGNvbmZpZ19yb3cAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lDm5mdGluZm9fcmVzdWx0AAIHc2NoZW1hcxBuZnRfc2NoZW1hX2RlZltdCXRlbXBsYXRlcxJuZnRfdGVtcGxhdGVfZGVmW10Gbm90aWZ5AAEFZXZlbnQKdGFza19ldmVudAtwbGF5ZXJfaW5mbwAGBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwpzaGlwX2NvdW50BnVpbnQ2NA93YXJlaG91c2VfY291bnQGdWludDY0D2NvbnRhaW5lcl9jb3VudAZ1aW50NjQKcGxheWVyX3JvdwABBW93bmVyBG5hbWUIcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAxyZWNpcGVfaW5wdXQAAwdpdGVtX2lkBnVpbnQxNghjYXRlZ29yeQV1aW50OAhxdWFudGl0eQZ1aW50MzIQcmVjaXBlX2l0ZW1faW5mbwACAmlkBnVpbnQxNgRtYXNzBnVpbnQzMg9yZWNpcGVfcmVzcG9uc2UABw5vdXRwdXRfaXRlbV9pZAZ1aW50MTYLb3V0cHV0X21hc3MGdWludDMyBmlucHV0cw5yZWNpcGVfaW5wdXRbXQpzdGF0X3Nsb3RzFHN0YXRfc2xvdF9yZXNwb25zZVtdDWJsZW5kX3dlaWdodHMFYnl0ZXMLb3V0cHV0X2l0ZW0QcmVjaXBlX2l0ZW1faW5mbwtpbnB1dF9pdGVtcxJyZWNpcGVfaXRlbV9pbmZvW10OcmVjaXBlc19yZXN1bHQAAQdyZWNpcGVzEXJlY2lwZV9yZXNwb25zZVtdC3Jlc2VydmVfcm93AAICaWQGdWludDY0CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/DXJlc291cmNlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzIIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OA5yZXNvdXJjZV9zdGF0cwADBXN0YXQxBnVpbnQxNgVzdGF0MgZ1aW50MTYFc3RhdDMGdWludDE2EHJlc291cmNlc19yZXN1bHQAAQlyZXNvdXJjZXMPcmVzb3VyY2VfaW5mb1tdCHJtbW9kdWxlAAQLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OA90YXJnZXRfY2FyZ29faWQGdWludDY0CHJtbmZ0Y2ZnAAEHaXRlbV9pZAZ1aW50MTYEc2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzY2hlbWFfZmllbGQAAgRuYW1lBnN0cmluZwpmaWVsZF90eXBlBnN0cmluZwxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQJc2V0bmZ0Y2ZnAAMHaXRlbV9pZAZ1aW50MTYLdGVtcGxhdGVfaWQFaW50MzILc2NoZW1hX25hbWUEbmFtZQhzaGlwX3JvdwARAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBHNlZWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzB3VpbnQzMj8IY2FwYWNpdHkHdWludDMyPwZlbmVyZ3kHdWludDE2PwljYXJnb21hc3MGdWludDMyB2VuZ2luZXMPbW92ZW1lbnRfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/B2xvYWRlcnMNbG9hZGVyX3N0YXRzPwlleHRyYWN0b3IQZXh0cmFjdG9yX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8Kc3Bhd25jYXJnbwADCWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0C3NwYXduc2VlZGVkAAQJZW50aXR5X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQEc2VlZAZ1aW50NjQSc3RhdF9zbG90X3Jlc3BvbnNlAAEHc291cmNlcw1zdGF0X3NvdXJjZVtdC3N0YXRfc291cmNlAAILaW5wdXRfaW5kZXgFdWludDgQaW5wdXRfc3RhdF9pbmRleAV1aW50OAlzdGF0ZV9yb3cABgdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNhbHQGdWludDY0BXNoaXBzBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2BmNvbW1pdAtjaGVja3N1bTI1NgxzdHJhdHVtX2RhdGEAAgdzdHJhdHVtDHN0cmF0dW1faW5mbwVzdGF0cw5yZXNvdXJjZV9zdGF0cwxzdHJhdHVtX2luZm8ABAdpdGVtX2lkBnVpbnQxNgRzZWVkBnVpbnQ2NAhyaWNobmVzcwZ1aW50MTYHcmVzZXJ2ZQZ1aW50MzIEdGFzawAIBHR5cGUFdWludDgIZHVyYXRpb24GdWludDMyCmNhbmNlbGFibGUFdWludDgLY29vcmRpbmF0ZXMMY29vcmRpbmF0ZXM/BWNhcmdvDGNhcmdvX2l0ZW1bXQxlbnRpdHl0YXJnZXQLZW50aXR5X3JlZj8LZW50aXR5Z3JvdXAHdWludDY0PwtlbmVyZ3lfY29zdAd1aW50MTY/CnRhc2tfZXZlbnQACQpldmVudF90eXBlBXVpbnQ4BW93bmVyBG5hbWULZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CnRhc2tfaW5kZXgFdWludDgEdGFzawR0YXNrCXN0YXJ0c19hdAp0aW1lX3BvaW50DGNvbXBsZXRlc19hdAp0aW1lX3BvaW50Cm5ld19lbmVyZ3kHdWludDE2Pwx0YXNrX3Jlc3VsdHMAAQhlbnRpdGllcxJlbnRpdHlfdGFza19pbmZvW10IdHJhbnNmZXIABgtzb3VyY2VfdHlwZQRuYW1lCXNvdXJjZV9pZAZ1aW50NjQJZGVzdF90eXBlBG5hbWUHZGVzdF9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBnRyYXZlbAAFC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sCXR5cGVzX3JvdwADAmlkBnVpbnQ2NBNlbnRpdHlfc3VtbWFyeV90eXBlDmVudGl0eV9zdW1tYXJ5EGdhbWVfY29uZmlnX3R5cGULZ2FtZV9jb25maWcNd2FyZWhvdXNlX3JvdwALAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBHNlZWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzB3VpbnQzMj8IY2FwYWNpdHkHdWludDMyPwljYXJnb21hc3MGdWludDMyB2xvYWRlcnMNbG9hZGVyX3N0YXRzPwdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHNjaGVkdWxlCXNjaGVkdWxlPwR3YXJwAAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CndhcnBfc3RhdHMAAQVyYW5nZQZ1aW50MzIEd2lwZQAADHdpcGVzZXF1ZW5jZQAABHdyYXAABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhjYXJnb19pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0MgAAUFEnKlMyCWFkZG1vZHVsZccDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkZG1vZHVsZQpzdW1tYXJ5OiAnSW5zdGFsbCBhIG1vZHVsZSBpbnRvIGEgc2xvdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5zdGFsbCBhIG1vZHVsZSBmcm9tIGNhcmdvIGludG8gYSBtb2R1bGUgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgdHlwZSBtdXN0IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgdGFyZ2V0IHNsb3QgdHlwZS4gVGhlIG1vZHVsZSBpdGVtIGlzIHJlbW92ZWQgZnJvbSBjYXJnbyB1cG9uIGluc3RhbGxhdGlvbi4AAABYdzVTMghhZGRuZXh1cwAAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAAIA0VTwFYmxlbmT9Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBibGVuZApzdW1tYXJ5OiAnQmxlbmQgY2FyZ28gc3RhY2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDb21iaW5lIG11bHRpcGxlIGNhcmdvIHN0YWNrcyBvZiB0aGUgc2FtZSBpdGVtIHR5cGUgaW50byBhIHNpbmdsZSBzdGFjayB3aXRoIGEgbmV3IGJsZW5kZWQgc2VlZC4gQWxsIGlucHV0IHN0YWNrcyBtdXN0IHNoYXJlIHRoZSBzYW1lIGl0ZW0gaWQuIFRoZSBvdXRwdXQgc3RhY2sgaGFzIHRoZSBjb21iaW5lZCBxdWFudGl0eSBvZiBhbGwgaW5wdXRzLgAAAABEhaZBBmNhbmNlbMICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNhbmNlbApzdW1tYXJ5OiAnQ2FuY2VsIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FuY2VsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGZyb20gdGhlIGVuZCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZS4gVGFza3MgdGhhdCBhcmUgaW1tdXRhYmxlIGFuZCBpbiBwcm9ncmVzcyBjYW5ub3QgYmUgY2FuY2VsbGVkLgAAqBvfaVRECWNsZWFucnN2cOwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFucnN2cApzdW1tYXJ5OiAnQ2xlYW4gdXAgcGFzdCBlcG9jaCByZXNlcnZlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXJhc2UgcmVzZXJ2ZSB0YWJsZSByb3dzIGZyb20gYSBwYXN0IGVwb2NoLiBDYW5ub3QgY2xlYW4gdGhlIGN1cnJlbnQgb3IgZnV0dXJlIGVwb2Nocy4gVGhlIG1heF9yb3dzIHBhcmFtZXRlciBjYXBzIHRoZSBudW1iZXIgb2Ygcm93cyBlcmFzZWQgcGVyIGNhbGwgdG8gbGltaXQgQ1BVIHVzYWdlLgCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAZCclRQZjb21taXTsAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb21taXQKc3VtbWFyeTogJ1NldCBjb21taXQgdmFsdWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNldCB0aGUgaW5pdGlhbCBjb21taXQgdmFsdWUgZHVyaW5nIGdhbWUgaW5pdGlhbGl6YXRpb24uAABgNDK3JkUJY29uZmlnbG9n3QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29uZmlnbG9nCnN1bW1hcnk6ICdMb2cgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBsb2dzIHRoZSBjdXJyZW50IGdhbWUgY29uZmlndXJhdGlvbi4gQ2FsbGVkIGlubGluZSBhZnRlciBpbml0aWFsaXphdGlvbiB0byBicm9hZGNhc3QgY29uZmlnIHZpYSBhY3Rpb24gdHJhY2VzLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAIC8zEUFY3JhZnTIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmFmdApzdW1tYXJ5OiAnQ3JhZnQgaXRlbXMgZnJvbSBhIHJlY2lwZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmb3JtIGNhcmdvIGl0ZW1zIGludG8gYSBuZXcgaXRlbSB1c2luZyBhIHJlY2lwZS4gVGhlIGVudGl0eSBtdXN0IGhhdmUgYSBjcmFmdGVyIG1vZHVsZSBpbnN0YWxsZWQuIENvbnN1bWVzIGVuZXJneSBhbmQgc2NoZWR1bGVzIGEgY3JhZnRpbmcgdGFzayB3aXRoIGR1cmF0aW9uIGJhc2VkIG9uIHRvdGFsIGlucHV0IG1hc3MgYW5kIGNyYWZ0ZXIgc3BlZWQuIElucHV0IHF1YW50aXRpZXMgbXVzdCBleGFjdGx5IG1hdGNoIHRoZSByZWNpcGUgcmVxdWlyZW1lbnRzLuCzy1OpbNRFDGNyZWF0ZWVudGl0eb8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNyZWF0ZWVudGl0eQpzdW1tYXJ5OiAnREVCVUc6IGNyZWF0ZSBhbiBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAeBqrSgZkZXBsb3nsAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXBsb3kKc3VtbWFyeTogJ0RlcGxveSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClVucGFjayBhIHBhY2tlZCBlbnRpdHkgaXRlbSAocGFja2VkIHNoaXAgb3IgcGFja2VkIGNvbnRhaW5lcikgZnJvbSBjYXJnbywgc2NoZWR1bGluZyBhIGRlcGxveSB0YXNrIHRoYXQgY3JlYXRlcyB0aGUgbmV3IGVudGl0eSBhdCB0aGUgZGVwbG95aW5nIGVudGl0eSdzIGxvY2F0aW9uIHVwb24gcmVzb2x1dGlvbi4AAAAAqHjMVAZlbmFibGXdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQuAAAAICNzc1cHZXh0cmFjdKEDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGV4dHJhY3QKc3VtbWFyeTogJ0V4dHJhY3QgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFeHRyYWN0IHJlc291cmNlcyBhdCB0aGUgc2hpcCdzIGN1cnJlbnQgbG9jYXRpb24uIE9ubHkgd29ya3MgYXQgZXh0cmFjdGFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhbiBleHRyYWN0aW9uIHRhc2sgdGhhdCBjb25zdW1lcyBlbmVyZ3kgYW5kIHlpZWxkcyBjYXJnbyBiYXNlZCBvbiB0aGUgc2hpcCdzIGV4dHJhY3RvciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAABgbk2KsmIJZ2V0Y29uZmlnygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Y29uZmlnCnN1bW1hcnk6ICdHZXQgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBnYW1lIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGRlZmF1bHQgZW50aXR5IHN0YXRzIGZvciB3YXJlaG91c2VzIGFuZCBjb250YWluZXJzLCBhbmQgdGhlIGZ1bGwgaXRlbSBkZWZpbml0aW9ucyB0YWJsZS4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4ATDZJquyyYgtnZXRpdGVtZGF0YQAAAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggaXRlbTogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgCAySYhGrNiCmdldGxvY2RhdGH+Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NkYXRhCnN1bW1hcnk6ICdHZXQgZGVyaXZlZCBsb2NhdGlvbiBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGRlcml2ZWQgbG9jYXRpb24gZGF0YSBpbmNsdWRpbmcgc3RhdGljIHByb3BlcnRpZXMgKHR5cGUsIGRpZmZpY3VsdHksIHNlZWRzKSBmcm9tIHRoZSBnYW1lIHNlZWQgYW5kIGVwb2NoLXNwZWNpZmljIHByb3BlcnRpZXMgKGFjdGl2ZSwgc2VlZHMpIGZyb20gdGhlIGN1cnJlbnQgZXBvY2ggc2VlZC4AAFZRJyqzYgpnZXRtb2R1bGVzAAAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAXdPlNbNiCmdldG5mdGluZm8AAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AAFDVIXWzYglnZXRyZWNpcGUAAABW1SF1s2IKZ2V0cmVjaXBlcwCAFbqaYnWzYgxnZXRyZXNvdXJjZXMAAIDU2dyMs2IKZ2V0c3RyYXR1bdICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN0cmF0dW0Kc3VtbWFyeTogJ0dldCByZXNvdXJjZSBzdHJhdHVtIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhIGZvciBhIHNwZWNpZmljIGRlcHRoIGxheWVyIGF0IGEgY29vcmRpbmF0ZSwgaW5jbHVkaW5nIHRoZSBzdHJhdHVtIHNlZWQgaW5mbyBhbmQgZGVyaXZlZCByZXNvdXJjZSBzdGF0cy6AlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgCi2ubmqullC2dyb3VwdHJhdmVsmgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ3JvdXB0cmF2ZWwKc3VtbWFyeTogJ01vdmUgbXVsdGlwbGUgZW50aXRpZXMgdG9nZXRoZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIGdyb3VwIHRyYXZlbCBmb3IgbXVsdGlwbGUgZW50aXRpZXMgdG8gYSBkZXN0aW5hdGlvbi4gQWxsIGVudGl0aWVzIG11c3QgYmUgYXQgdGhlIHNhbWUgbG9jYXRpb24gYW5kIG93bmVkIGJ5IHRoZSBjYWxsZXIuIEF0IGxlYXN0IG9uZSBlbnRpdHkgd2l0aCBlbmdpbmVzIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgdGhydXN0LiBGbGlnaHQgZHVyYXRpb24gaXMgY2FsY3VsYXRlZCBmcm9tIGNvbWJpbmVkIHRocnVzdCBhbmQgdG90YWwgbWFzcyBvZiBhbGwgZW50aXRpZXMuIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgZm9yIGF0b21pYyByZXNvbHV0aW9uIGFuZCBjYW5jZWxsYXRpb24uAAAAAADQsGkEaGFzaPgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2gKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGEyNTYgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhMjU2IGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAABAhNKwaQdoYXNoNTEy+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaDUxMgpzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTUxMiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGE1MTIgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAAAAkN10BGluaXT6AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0CnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAAAAil3TkLoIcmVjaGFyZ2XNAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZWNoYXJnZQpzdW1tYXJ5OiAnUmVjaGFyZ2Ugc2hpcCBlbmVyZ3knCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClNjaGVkdWxlIGEgcmVjaGFyZ2UgdGFzayBmb3IgYW4gZW50aXR5IHRvIHJlc3RvcmUgZW5lcmd5IHRvIGZ1bGwgY2FwYWNpdHkuIFRoZSByZWNoYXJnZSBkdXJhdGlvbiBkZXBlbmRzIG9uIGN1cnJlbnQgZW5lcmd5IGxldmVsIGFuZCByZWNoYXJnZSByYXRlLgAAAEDtSLG6B3Jlc29sdmXQAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgY29tcGxldGVkIHRhc2tzIGluIGFuIGVudGl0eSdzIHNjaGVkdWxlLCBhcHBseWluZyB0aGVpciBlZmZlY3RzIChyZWNoYXJnZSBlbmVyZ3ksIHVwZGF0ZSBsb2NhdGlvbiwgbG9hZC91bmxvYWQgY2FyZ28pLiBJZiBjb3VudCBpcyBzcGVjaWZpZWQsIHJlc29sdmUgZXhhY3RseSB0aGF0IG1hbnkgdGFza3M7IG90aGVyd2lzZSByZXNvbHZlIGFsbCBjb21wbGV0ZWQgdGFza3MuIEZhaWxzIGlmIGNvdW50IGV4Y2VlZHMgdGhlIG51bWJlciBvZiBjb21wbGV0ZWQgdGFza3MuAAAAKupEpbwIcm1tb2R1bGW8Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW1vZHVsZQpzdW1tYXJ5OiAnUmVtb3ZlIGEgbW9kdWxlIGZyb20gYSBzbG90JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgYW4gaW5zdGFsbGVkIG1vZHVsZSBmcm9tIGEgc2xvdCBvbiBhIGxpdmUgZW50aXR5IG9yIGEgcGFja2VkIGVudGl0eSBpbiBjYXJnby4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFRoZSBtb2R1bGUgaXMgcmV0dXJuZWQgdG8gY2FyZ28uIEZhaWxzIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgaGF2ZSBlbm91Z2ggY2FyZ28gY2FwYWNpdHkgdG8gaG9sZCB0aGUgcmV0dXJuZWQgbW9kdWxlLgAAAGyhvKa8CHJtbmZ0Y2ZnAAAAAAAAkKPBBHNhbHTYAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgAAYAvlNbPCCXNldG5mdGNmZwAAAGXXoMlNxQpzcGF3bmNhcmdvxQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Bhd25jYXJnbwpzdW1tYXJ5OiAnREVCVUc6IHNwYXduIGNhcmdvIG9uIGFuIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQCSSkrhyU3FC3NwYXduc2VlZGVkzQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Bhd25zZWVkZWQKc3VtbWFyeTogJ0RFQlVHOiBzcGF3biBzZWVkZWQgY2FyZ28gb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbPsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4AAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAFDN5QR3cmFwAA0AAAAAAMquQQNpNjQAAAljYXJnb19yb3cAALhqOpMnRQNpNjQAAA1jb250YWluZXJfcm93AKqml/ns8lQDaTY0AAAPZW50aXR5Z3JvdXBfcm93AAAAk7psEI0DaTY0AAAMbG9jYXRpb25fcm93AAAAAACsu5oDaTY0AAAJbmV4dXNfcm93AABgbk2K8poDaTY0AAANbmZ0Y29uZmlnX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAABA7auwugNpNjQAAAtyZXNlcnZlX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAdAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAAgLzMRQx0YXNrX3Jlc3VsdHMAAAAAeBqrSgx0YXNrX3Jlc3VsdHMAAAAgI3NzVwx0YXNrX3Jlc3VsdHMAAGBuTYqyYgtnYW1lX2NvbmZpZwCwctnlqbJiDWVudGl0eV9pbmZvW10AAPDZ5amyYgtlbnRpdHlfaW5mbwBMNkmq7LJiD2l0ZW1kYXRhX3Jlc3VsdAAAAFiq7LJiCml0ZW1zX2luZm8AJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZAAAVlEnKrNiDm1vZHVsZXNfcmVzdWx0AADw5xo1s2ILbmVhcmJ5X2luZm8AAF3T5TWzYg5uZnRpbmZvX3Jlc3VsdAAAuMqbWLNiC3BsYXllcl9pbmZvAABQ1SF1s2IOcmVjaXBlc19yZXN1bHQAAFbVIXWzYg5yZWNpcGVzX3Jlc3VsdIAVuppidbNiEHJlc291cmNlc19yZXN1bHQAgNTZ3IyzYgxzdHJhdHVtX2RhdGGAlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAKLa5uaq6WUMdGFza19yZXN1bHRzAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cwAAAAAAUK/hDHRhc2tfcmVzdWx0cwAAAAAAUM3lDHRhc2tfcmVzdWx0cw==');
217
217
  const abi = antelope.ABI.from(abiBlob);
218
218
  var Types;
219
219
  (function (Types) {
@@ -238,6 +238,21 @@ var Types;
238
238
  antelope.Struct.type('addmodule')
239
239
  ], addmodule);
240
240
  Types.addmodule = addmodule;
241
+ let addnexus = class addnexus extends antelope.Struct {
242
+ };
243
+ tslib.__decorate([
244
+ antelope.Struct.field('string')
245
+ ], addnexus.prototype, "nexus_name", void 0);
246
+ tslib.__decorate([
247
+ antelope.Struct.field(antelope.Int64)
248
+ ], addnexus.prototype, "x", void 0);
249
+ tslib.__decorate([
250
+ antelope.Struct.field(antelope.Int64)
251
+ ], addnexus.prototype, "y", void 0);
252
+ addnexus = tslib.__decorate([
253
+ antelope.Struct.type('addnexus')
254
+ ], addnexus);
255
+ Types.addnexus = addnexus;
241
256
  let advance = class advance extends antelope.Struct {
242
257
  };
243
258
  tslib.__decorate([
@@ -418,21 +433,6 @@ var Types;
418
433
  antelope.Struct.type('commit')
419
434
  ], commit);
420
435
  Types.commit = commit;
421
- let loader_stats = class loader_stats extends antelope.Struct {
422
- };
423
- tslib.__decorate([
424
- antelope.Struct.field(antelope.UInt32)
425
- ], loader_stats.prototype, "mass", void 0);
426
- tslib.__decorate([
427
- antelope.Struct.field(antelope.UInt16)
428
- ], loader_stats.prototype, "thrust", void 0);
429
- tslib.__decorate([
430
- antelope.Struct.field(antelope.UInt8)
431
- ], loader_stats.prototype, "quantity", void 0);
432
- loader_stats = tslib.__decorate([
433
- antelope.Struct.type('loader_stats')
434
- ], loader_stats);
435
- Types.loader_stats = loader_stats;
436
436
  let entity_defaults = class entity_defaults extends antelope.Struct {
437
437
  };
438
438
  tslib.__decorate([
@@ -441,9 +441,6 @@ var Types;
441
441
  tslib.__decorate([
442
442
  antelope.Struct.field(antelope.UInt16)
443
443
  ], entity_defaults.prototype, "warehouse_z", void 0);
444
- tslib.__decorate([
445
- antelope.Struct.field(loader_stats)
446
- ], entity_defaults.prototype, "warehouse_loaders", void 0);
447
444
  tslib.__decorate([
448
445
  antelope.Struct.field(antelope.UInt32)
449
446
  ], entity_defaults.prototype, "container_hullmass", void 0);
@@ -465,6 +462,15 @@ var Types;
465
462
  tslib.__decorate([
466
463
  antelope.Struct.field(antelope.UInt32)
467
464
  ], item_def.prototype, "mass", void 0);
465
+ tslib.__decorate([
466
+ antelope.Struct.field(antelope.UInt8)
467
+ ], item_def.prototype, "type", void 0);
468
+ tslib.__decorate([
469
+ antelope.Struct.field(antelope.UInt8)
470
+ ], item_def.prototype, "subtype", void 0);
471
+ tslib.__decorate([
472
+ antelope.Struct.field(antelope.UInt8)
473
+ ], item_def.prototype, "tier", void 0);
468
474
  item_def = tslib.__decorate([
469
475
  antelope.Struct.type('item_def')
470
476
  ], item_def);
@@ -688,6 +694,21 @@ var Types;
688
694
  antelope.Struct.type('entity_current_state')
689
695
  ], entity_current_state);
690
696
  Types.entity_current_state = entity_current_state;
697
+ let loader_stats = class loader_stats extends antelope.Struct {
698
+ };
699
+ tslib.__decorate([
700
+ antelope.Struct.field(antelope.UInt32)
701
+ ], loader_stats.prototype, "mass", void 0);
702
+ tslib.__decorate([
703
+ antelope.Struct.field(antelope.UInt16)
704
+ ], loader_stats.prototype, "thrust", void 0);
705
+ tslib.__decorate([
706
+ antelope.Struct.field(antelope.UInt8)
707
+ ], loader_stats.prototype, "quantity", void 0);
708
+ loader_stats = tslib.__decorate([
709
+ antelope.Struct.type('loader_stats')
710
+ ], loader_stats);
711
+ Types.loader_stats = loader_stats;
691
712
  let movement_stats = class movement_stats extends antelope.Struct {
692
713
  };
693
714
  tslib.__decorate([
@@ -910,6 +931,12 @@ var Types;
910
931
  antelope.Struct.type('getentity')
911
932
  ], getentity);
912
933
  Types.getentity = getentity;
934
+ let getitemdata = class getitemdata extends antelope.Struct {
935
+ };
936
+ getitemdata = tslib.__decorate([
937
+ antelope.Struct.type('getitemdata')
938
+ ], getitemdata);
939
+ Types.getitemdata = getitemdata;
913
940
  let getitems = class getitems extends antelope.Struct {
914
941
  };
915
942
  getitems = tslib.__decorate([
@@ -940,6 +967,12 @@ var Types;
940
967
  antelope.Struct.type('getlocdata')
941
968
  ], getlocdata);
942
969
  Types.getlocdata = getlocdata;
970
+ let getmodules = class getmodules extends antelope.Struct {
971
+ };
972
+ getmodules = tslib.__decorate([
973
+ antelope.Struct.type('getmodules')
974
+ ], getmodules);
975
+ Types.getmodules = getmodules;
943
976
  let getnearby = class getnearby extends antelope.Struct {
944
977
  };
945
978
  tslib.__decorate([
@@ -955,6 +988,12 @@ var Types;
955
988
  antelope.Struct.type('getnearby')
956
989
  ], getnearby);
957
990
  Types.getnearby = getnearby;
991
+ let getnftinfo = class getnftinfo extends antelope.Struct {
992
+ };
993
+ getnftinfo = tslib.__decorate([
994
+ antelope.Struct.type('getnftinfo')
995
+ ], getnftinfo);
996
+ Types.getnftinfo = getnftinfo;
958
997
  let getplayer = class getplayer extends antelope.Struct {
959
998
  };
960
999
  tslib.__decorate([
@@ -964,6 +1003,33 @@ var Types;
964
1003
  antelope.Struct.type('getplayer')
965
1004
  ], getplayer);
966
1005
  Types.getplayer = getplayer;
1006
+ let getrecipe = class getrecipe extends antelope.Struct {
1007
+ };
1008
+ tslib.__decorate([
1009
+ antelope.Struct.field(antelope.UInt16)
1010
+ ], getrecipe.prototype, "output_item_id", void 0);
1011
+ getrecipe = tslib.__decorate([
1012
+ antelope.Struct.type('getrecipe')
1013
+ ], getrecipe);
1014
+ Types.getrecipe = getrecipe;
1015
+ let getrecipes = class getrecipes extends antelope.Struct {
1016
+ };
1017
+ tslib.__decorate([
1018
+ antelope.Struct.field(antelope.UInt16)
1019
+ ], getrecipes.prototype, "lower_bound", void 0);
1020
+ tslib.__decorate([
1021
+ antelope.Struct.field(antelope.UInt8)
1022
+ ], getrecipes.prototype, "limit", void 0);
1023
+ getrecipes = tslib.__decorate([
1024
+ antelope.Struct.type('getrecipes')
1025
+ ], getrecipes);
1026
+ Types.getrecipes = getrecipes;
1027
+ let getresources = class getresources extends antelope.Struct {
1028
+ };
1029
+ getresources = tslib.__decorate([
1030
+ antelope.Struct.type('getresources')
1031
+ ], getresources);
1032
+ Types.getresources = getresources;
967
1033
  let getstratum = class getstratum extends antelope.Struct {
968
1034
  };
969
1035
  tslib.__decorate([
@@ -1036,6 +1102,102 @@ var Types;
1036
1102
  antelope.Struct.type('init')
1037
1103
  ], init);
1038
1104
  Types.init = init;
1105
+ let recipe_input = class recipe_input extends antelope.Struct {
1106
+ };
1107
+ tslib.__decorate([
1108
+ antelope.Struct.field(antelope.UInt16)
1109
+ ], recipe_input.prototype, "item_id", void 0);
1110
+ tslib.__decorate([
1111
+ antelope.Struct.field(antelope.UInt8)
1112
+ ], recipe_input.prototype, "category", void 0);
1113
+ tslib.__decorate([
1114
+ antelope.Struct.field(antelope.UInt32)
1115
+ ], recipe_input.prototype, "quantity", void 0);
1116
+ recipe_input = tslib.__decorate([
1117
+ antelope.Struct.type('recipe_input')
1118
+ ], recipe_input);
1119
+ Types.recipe_input = recipe_input;
1120
+ let stat_source = class stat_source extends antelope.Struct {
1121
+ };
1122
+ tslib.__decorate([
1123
+ antelope.Struct.field(antelope.UInt8)
1124
+ ], stat_source.prototype, "input_index", void 0);
1125
+ tslib.__decorate([
1126
+ antelope.Struct.field(antelope.UInt8)
1127
+ ], stat_source.prototype, "input_stat_index", void 0);
1128
+ stat_source = tslib.__decorate([
1129
+ antelope.Struct.type('stat_source')
1130
+ ], stat_source);
1131
+ Types.stat_source = stat_source;
1132
+ let stat_slot_response = class stat_slot_response extends antelope.Struct {
1133
+ };
1134
+ tslib.__decorate([
1135
+ antelope.Struct.field(stat_source, { array: true })
1136
+ ], stat_slot_response.prototype, "sources", void 0);
1137
+ stat_slot_response = tslib.__decorate([
1138
+ antelope.Struct.type('stat_slot_response')
1139
+ ], stat_slot_response);
1140
+ Types.stat_slot_response = stat_slot_response;
1141
+ let recipe_item_info = class recipe_item_info extends antelope.Struct {
1142
+ };
1143
+ tslib.__decorate([
1144
+ antelope.Struct.field(antelope.UInt16)
1145
+ ], recipe_item_info.prototype, "id", void 0);
1146
+ tslib.__decorate([
1147
+ antelope.Struct.field(antelope.UInt32)
1148
+ ], recipe_item_info.prototype, "mass", void 0);
1149
+ recipe_item_info = tslib.__decorate([
1150
+ antelope.Struct.type('recipe_item_info')
1151
+ ], recipe_item_info);
1152
+ Types.recipe_item_info = recipe_item_info;
1153
+ let recipe_response = class recipe_response extends antelope.Struct {
1154
+ };
1155
+ tslib.__decorate([
1156
+ antelope.Struct.field(antelope.UInt16)
1157
+ ], recipe_response.prototype, "output_item_id", void 0);
1158
+ tslib.__decorate([
1159
+ antelope.Struct.field(antelope.UInt32)
1160
+ ], recipe_response.prototype, "output_mass", void 0);
1161
+ tslib.__decorate([
1162
+ antelope.Struct.field(recipe_input, { array: true })
1163
+ ], recipe_response.prototype, "inputs", void 0);
1164
+ tslib.__decorate([
1165
+ antelope.Struct.field(stat_slot_response, { array: true })
1166
+ ], recipe_response.prototype, "stat_slots", void 0);
1167
+ tslib.__decorate([
1168
+ antelope.Struct.field(antelope.Bytes)
1169
+ ], recipe_response.prototype, "blend_weights", void 0);
1170
+ tslib.__decorate([
1171
+ antelope.Struct.field(recipe_item_info)
1172
+ ], recipe_response.prototype, "output_item", void 0);
1173
+ tslib.__decorate([
1174
+ antelope.Struct.field(recipe_item_info, { array: true })
1175
+ ], recipe_response.prototype, "input_items", void 0);
1176
+ recipe_response = tslib.__decorate([
1177
+ antelope.Struct.type('recipe_response')
1178
+ ], recipe_response);
1179
+ Types.recipe_response = recipe_response;
1180
+ let recipes_result = class recipes_result extends antelope.Struct {
1181
+ };
1182
+ tslib.__decorate([
1183
+ antelope.Struct.field(recipe_response, { array: true })
1184
+ ], recipes_result.prototype, "recipes", void 0);
1185
+ recipes_result = tslib.__decorate([
1186
+ antelope.Struct.type('recipes_result')
1187
+ ], recipes_result);
1188
+ Types.recipes_result = recipes_result;
1189
+ let itemdata_result = class itemdata_result extends antelope.Struct {
1190
+ };
1191
+ tslib.__decorate([
1192
+ antelope.Struct.field(item_def, { array: true })
1193
+ ], itemdata_result.prototype, "items", void 0);
1194
+ tslib.__decorate([
1195
+ antelope.Struct.field(recipes_result)
1196
+ ], itemdata_result.prototype, "recipes", void 0);
1197
+ itemdata_result = tslib.__decorate([
1198
+ antelope.Struct.type('itemdata_result')
1199
+ ], itemdata_result);
1200
+ Types.itemdata_result = itemdata_result;
1039
1201
  let items_info = class items_info extends antelope.Struct {
1040
1202
  };
1041
1203
  tslib.__decorate([
@@ -1141,6 +1303,33 @@ var Types;
1141
1303
  antelope.Struct.type('location_row')
1142
1304
  ], location_row);
1143
1305
  Types.location_row = location_row;
1306
+ let module_info = class module_info extends antelope.Struct {
1307
+ };
1308
+ tslib.__decorate([
1309
+ antelope.Struct.field(antelope.UInt16)
1310
+ ], module_info.prototype, "id", void 0);
1311
+ tslib.__decorate([
1312
+ antelope.Struct.field(antelope.UInt32)
1313
+ ], module_info.prototype, "mass", void 0);
1314
+ tslib.__decorate([
1315
+ antelope.Struct.field(antelope.UInt8)
1316
+ ], module_info.prototype, "module_type", void 0);
1317
+ tslib.__decorate([
1318
+ antelope.Struct.field(antelope.UInt8)
1319
+ ], module_info.prototype, "tier", void 0);
1320
+ module_info = tslib.__decorate([
1321
+ antelope.Struct.type('module_info')
1322
+ ], module_info);
1323
+ Types.module_info = module_info;
1324
+ let modules_result = class modules_result extends antelope.Struct {
1325
+ };
1326
+ tslib.__decorate([
1327
+ antelope.Struct.field(module_info, { array: true })
1328
+ ], modules_result.prototype, "modules", void 0);
1329
+ modules_result = tslib.__decorate([
1330
+ antelope.Struct.type('modules_result')
1331
+ ], modules_result);
1332
+ Types.modules_result = modules_result;
1144
1333
  let nearby_system = class nearby_system extends antelope.Struct {
1145
1334
  };
1146
1335
  tslib.__decorate([
@@ -1180,6 +1369,87 @@ var Types;
1180
1369
  antelope.Struct.type('nearby_info')
1181
1370
  ], nearby_info);
1182
1371
  Types.nearby_info = nearby_info;
1372
+ let nexus_row = class nexus_row extends antelope.Struct {
1373
+ };
1374
+ tslib.__decorate([
1375
+ antelope.Struct.field(antelope.UInt64)
1376
+ ], nexus_row.prototype, "id", void 0);
1377
+ tslib.__decorate([
1378
+ antelope.Struct.field(antelope.Name)
1379
+ ], nexus_row.prototype, "owner", void 0);
1380
+ tslib.__decorate([
1381
+ antelope.Struct.field('string')
1382
+ ], nexus_row.prototype, "name", void 0);
1383
+ tslib.__decorate([
1384
+ antelope.Struct.field(coordinates)
1385
+ ], nexus_row.prototype, "coordinates", void 0);
1386
+ nexus_row = tslib.__decorate([
1387
+ antelope.Struct.type('nexus_row')
1388
+ ], nexus_row);
1389
+ Types.nexus_row = nexus_row;
1390
+ let schema_field = class schema_field extends antelope.Struct {
1391
+ };
1392
+ tslib.__decorate([
1393
+ antelope.Struct.field('string')
1394
+ ], schema_field.prototype, "name", void 0);
1395
+ tslib.__decorate([
1396
+ antelope.Struct.field('string')
1397
+ ], schema_field.prototype, "field_type", void 0);
1398
+ schema_field = tslib.__decorate([
1399
+ antelope.Struct.type('schema_field')
1400
+ ], schema_field);
1401
+ Types.schema_field = schema_field;
1402
+ let nft_schema_def = class nft_schema_def extends antelope.Struct {
1403
+ };
1404
+ tslib.__decorate([
1405
+ antelope.Struct.field(antelope.Name)
1406
+ ], nft_schema_def.prototype, "schema_name", void 0);
1407
+ tslib.__decorate([
1408
+ antelope.Struct.field(schema_field, { array: true })
1409
+ ], nft_schema_def.prototype, "fields", void 0);
1410
+ nft_schema_def = tslib.__decorate([
1411
+ antelope.Struct.type('nft_schema_def')
1412
+ ], nft_schema_def);
1413
+ Types.nft_schema_def = nft_schema_def;
1414
+ let nft_template_def = class nft_template_def extends antelope.Struct {
1415
+ };
1416
+ tslib.__decorate([
1417
+ antelope.Struct.field(antelope.UInt16)
1418
+ ], nft_template_def.prototype, "item_id", void 0);
1419
+ tslib.__decorate([
1420
+ antelope.Struct.field(antelope.Name)
1421
+ ], nft_template_def.prototype, "schema_name", void 0);
1422
+ nft_template_def = tslib.__decorate([
1423
+ antelope.Struct.type('nft_template_def')
1424
+ ], nft_template_def);
1425
+ Types.nft_template_def = nft_template_def;
1426
+ let nftconfig_row = class nftconfig_row extends antelope.Struct {
1427
+ };
1428
+ tslib.__decorate([
1429
+ antelope.Struct.field(antelope.UInt16)
1430
+ ], nftconfig_row.prototype, "item_id", void 0);
1431
+ tslib.__decorate([
1432
+ antelope.Struct.field(antelope.Int32)
1433
+ ], nftconfig_row.prototype, "template_id", void 0);
1434
+ tslib.__decorate([
1435
+ antelope.Struct.field(antelope.Name)
1436
+ ], nftconfig_row.prototype, "schema_name", void 0);
1437
+ nftconfig_row = tslib.__decorate([
1438
+ antelope.Struct.type('nftconfig_row')
1439
+ ], nftconfig_row);
1440
+ Types.nftconfig_row = nftconfig_row;
1441
+ let nftinfo_result = class nftinfo_result extends antelope.Struct {
1442
+ };
1443
+ tslib.__decorate([
1444
+ antelope.Struct.field(nft_schema_def, { array: true })
1445
+ ], nftinfo_result.prototype, "schemas", void 0);
1446
+ tslib.__decorate([
1447
+ antelope.Struct.field(nft_template_def, { array: true })
1448
+ ], nftinfo_result.prototype, "templates", void 0);
1449
+ nftinfo_result = tslib.__decorate([
1450
+ antelope.Struct.type('nftinfo_result')
1451
+ ], nftinfo_result);
1452
+ Types.nftinfo_result = nftinfo_result;
1183
1453
  let task_event = class task_event extends antelope.Struct {
1184
1454
  };
1185
1455
  tslib.__decorate([
@@ -1318,6 +1588,24 @@ var Types;
1318
1588
  antelope.Struct.type('resolve_results')
1319
1589
  ], resolve_results);
1320
1590
  Types.resolve_results = resolve_results;
1591
+ let resource_info = class resource_info extends antelope.Struct {
1592
+ };
1593
+ tslib.__decorate([
1594
+ antelope.Struct.field(antelope.UInt16)
1595
+ ], resource_info.prototype, "id", void 0);
1596
+ tslib.__decorate([
1597
+ antelope.Struct.field(antelope.UInt32)
1598
+ ], resource_info.prototype, "mass", void 0);
1599
+ tslib.__decorate([
1600
+ antelope.Struct.field(antelope.UInt8)
1601
+ ], resource_info.prototype, "category", void 0);
1602
+ tslib.__decorate([
1603
+ antelope.Struct.field(antelope.UInt8)
1604
+ ], resource_info.prototype, "tier", void 0);
1605
+ resource_info = tslib.__decorate([
1606
+ antelope.Struct.type('resource_info')
1607
+ ], resource_info);
1608
+ Types.resource_info = resource_info;
1321
1609
  let resource_stats = class resource_stats extends antelope.Struct {
1322
1610
  };
1323
1611
  tslib.__decorate([
@@ -1333,6 +1621,15 @@ var Types;
1333
1621
  antelope.Struct.type('resource_stats')
1334
1622
  ], resource_stats);
1335
1623
  Types.resource_stats = resource_stats;
1624
+ let resources_result = class resources_result extends antelope.Struct {
1625
+ };
1626
+ tslib.__decorate([
1627
+ antelope.Struct.field(resource_info, { array: true })
1628
+ ], resources_result.prototype, "resources", void 0);
1629
+ resources_result = tslib.__decorate([
1630
+ antelope.Struct.type('resources_result')
1631
+ ], resources_result);
1632
+ Types.resources_result = resources_result;
1336
1633
  let rmmodule = class rmmodule extends antelope.Struct {
1337
1634
  };
1338
1635
  tslib.__decorate([
@@ -1351,6 +1648,15 @@ var Types;
1351
1648
  antelope.Struct.type('rmmodule')
1352
1649
  ], rmmodule);
1353
1650
  Types.rmmodule = rmmodule;
1651
+ let rmnftcfg = class rmnftcfg extends antelope.Struct {
1652
+ };
1653
+ tslib.__decorate([
1654
+ antelope.Struct.field(antelope.UInt16)
1655
+ ], rmnftcfg.prototype, "item_id", void 0);
1656
+ rmnftcfg = tslib.__decorate([
1657
+ antelope.Struct.type('rmnftcfg')
1658
+ ], rmnftcfg);
1659
+ Types.rmnftcfg = rmnftcfg;
1354
1660
  let salt = class salt extends antelope.Struct {
1355
1661
  };
1356
1662
  tslib.__decorate([
@@ -1372,6 +1678,21 @@ var Types;
1372
1678
  antelope.Struct.type('sequence_row')
1373
1679
  ], sequence_row);
1374
1680
  Types.sequence_row = sequence_row;
1681
+ let setnftcfg = class setnftcfg extends antelope.Struct {
1682
+ };
1683
+ tslib.__decorate([
1684
+ antelope.Struct.field(antelope.UInt16)
1685
+ ], setnftcfg.prototype, "item_id", void 0);
1686
+ tslib.__decorate([
1687
+ antelope.Struct.field(antelope.Int32)
1688
+ ], setnftcfg.prototype, "template_id", void 0);
1689
+ tslib.__decorate([
1690
+ antelope.Struct.field(antelope.Name)
1691
+ ], setnftcfg.prototype, "schema_name", void 0);
1692
+ setnftcfg = tslib.__decorate([
1693
+ antelope.Struct.type('setnftcfg')
1694
+ ], setnftcfg);
1695
+ Types.setnftcfg = setnftcfg;
1375
1696
  let ship_row = class ship_row extends antelope.Struct {
1376
1697
  };
1377
1698
  tslib.__decorate([
@@ -1383,6 +1704,9 @@ var Types;
1383
1704
  tslib.__decorate([
1384
1705
  antelope.Struct.field('string')
1385
1706
  ], ship_row.prototype, "name", void 0);
1707
+ tslib.__decorate([
1708
+ antelope.Struct.field(antelope.UInt64)
1709
+ ], ship_row.prototype, "seed", void 0);
1386
1710
  tslib.__decorate([
1387
1711
  antelope.Struct.field(coordinates)
1388
1712
  ], ship_row.prototype, "coordinates", void 0);
@@ -1593,18 +1917,27 @@ var Types;
1593
1917
  tslib.__decorate([
1594
1918
  antelope.Struct.field('string')
1595
1919
  ], warehouse_row.prototype, "name", void 0);
1920
+ tslib.__decorate([
1921
+ antelope.Struct.field(antelope.UInt64)
1922
+ ], warehouse_row.prototype, "seed", void 0);
1596
1923
  tslib.__decorate([
1597
1924
  antelope.Struct.field(coordinates)
1598
1925
  ], warehouse_row.prototype, "coordinates", void 0);
1599
1926
  tslib.__decorate([
1600
- antelope.Struct.field(antelope.UInt32)
1927
+ antelope.Struct.field(antelope.UInt32, { optional: true })
1928
+ ], warehouse_row.prototype, "hullmass", void 0);
1929
+ tslib.__decorate([
1930
+ antelope.Struct.field(antelope.UInt32, { optional: true })
1601
1931
  ], warehouse_row.prototype, "capacity", void 0);
1602
1932
  tslib.__decorate([
1603
1933
  antelope.Struct.field(antelope.UInt32)
1604
1934
  ], warehouse_row.prototype, "cargomass", void 0);
1605
1935
  tslib.__decorate([
1606
- antelope.Struct.field(loader_stats)
1936
+ antelope.Struct.field(loader_stats, { optional: true })
1607
1937
  ], warehouse_row.prototype, "loaders", void 0);
1938
+ tslib.__decorate([
1939
+ antelope.Struct.field(module_entry, { array: true })
1940
+ ], warehouse_row.prototype, "modules", void 0);
1608
1941
  tslib.__decorate([
1609
1942
  antelope.Struct.field(schedule, { optional: true })
1610
1943
  ], warehouse_row.prototype, "schedule", void 0);
@@ -1642,12 +1975,35 @@ var Types;
1642
1975
  antelope.Struct.type('wipesequence')
1643
1976
  ], wipesequence);
1644
1977
  Types.wipesequence = wipesequence;
1978
+ let wrap = class wrap extends antelope.Struct {
1979
+ };
1980
+ tslib.__decorate([
1981
+ antelope.Struct.field(antelope.Name)
1982
+ ], wrap.prototype, "owner", void 0);
1983
+ tslib.__decorate([
1984
+ antelope.Struct.field(antelope.Name)
1985
+ ], wrap.prototype, "entity_type", void 0);
1986
+ tslib.__decorate([
1987
+ antelope.Struct.field(antelope.UInt64)
1988
+ ], wrap.prototype, "entity_id", void 0);
1989
+ tslib.__decorate([
1990
+ antelope.Struct.field(antelope.UInt64)
1991
+ ], wrap.prototype, "cargo_id", void 0);
1992
+ tslib.__decorate([
1993
+ antelope.Struct.field(antelope.UInt64)
1994
+ ], wrap.prototype, "quantity", void 0);
1995
+ wrap = tslib.__decorate([
1996
+ antelope.Struct.type('wrap')
1997
+ ], wrap);
1998
+ Types.wrap = wrap;
1645
1999
  })(Types || (Types = {}));
1646
2000
  const TableMap = {
1647
2001
  cargo: Types.cargo_row,
1648
2002
  container: Types.container_row,
1649
2003
  entitygroup: Types.entitygroup_row,
1650
2004
  location: Types.location_row,
2005
+ nexus: Types.nexus_row,
2006
+ nftconfig: Types.nftconfig_row,
1651
2007
  player: Types.player_row,
1652
2008
  reserve: Types.reserve_row,
1653
2009
  sequence: Types.sequence_row,
@@ -4566,7 +4922,9 @@ function calc_rechargetime(capacity, energy, recharge) {
4566
4922
  return cap.subtracting(eng).dividing(recharge);
4567
4923
  }
4568
4924
  function calc_ship_rechargetime(ship) {
4569
- return calc_rechargetime(ship.generator.capacity, ship.energy, ship.generator.recharge);
4925
+ if (!ship.generator)
4926
+ return antelope.UInt32.from(0);
4927
+ return calc_rechargetime(ship.generator.capacity, ship.energy ?? antelope.UInt16.from(0), ship.generator.recharge);
4570
4928
  }
4571
4929
  function calc_flighttime(distance, acceleration) {
4572
4930
  return antelope.UInt32.from(2 * Math.sqrt(Number(distance) / acceleration));
@@ -4576,14 +4934,17 @@ function calc_loader_flighttime(ship, mass, altitude) {
4576
4934
  return calc_flighttime(z, calc_loader_acceleration(ship, mass));
4577
4935
  }
4578
4936
  function calc_loader_acceleration(ship, mass) {
4579
- return calc_acceleration(Number(ship.loaders.thrust), Number(mass) + Number(ship.loaders.mass));
4937
+ const thrust = ship.loaders ? Number(ship.loaders.thrust) : 0;
4938
+ const loaderMass = ship.loaders ? Number(ship.loaders.mass) : 0;
4939
+ return calc_acceleration(thrust, Number(mass) + loaderMass);
4580
4940
  }
4581
4941
  function calc_ship_flighttime(ship, mass, distance) {
4582
4942
  const acceleration = calc_ship_acceleration(ship, mass);
4583
4943
  return calc_flighttime(distance, acceleration);
4584
4944
  }
4585
4945
  function calc_ship_acceleration(ship, mass) {
4586
- return calc_acceleration(Number(ship.engines.thrust), Number(mass));
4946
+ const thrust = ship.engines ? Number(ship.engines.thrust) : 0;
4947
+ return calc_acceleration(thrust, Number(mass));
4587
4948
  }
4588
4949
  function calc_acceleration(thrust, mass) {
4589
4950
  return (thrust / mass) * PRECISION;
@@ -4591,7 +4952,7 @@ function calc_acceleration(thrust, mass) {
4591
4952
  function calc_ship_mass(ship, cargos) {
4592
4953
  const mass = antelope.UInt64.from(0);
4593
4954
  mass.add(ship.hullmass);
4594
- if (ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4955
+ if (ship.loaders && ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4595
4956
  mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
4596
4957
  }
4597
4958
  for (const cargo of cargos) {
@@ -4615,6 +4976,8 @@ function calculateTransferTime(ship, cargos, quantities) {
4615
4976
  if (mass.equals(antelope.UInt64.zero)) {
4616
4977
  return antelope.UInt32.from(0);
4617
4978
  }
4979
+ if (!ship.loaders)
4980
+ return antelope.UInt32.from(0);
4618
4981
  mass = antelope.UInt64.from(mass).adding(ship.loaders.mass);
4619
4982
  const transfer_time = calc_loader_flighttime(ship, mass);
4620
4983
  return transfer_time.dividing(ship.loaders.quantity);
@@ -4647,15 +5010,15 @@ function calculateLoadTimeBreakdown(ship, cargos, loadQuantities, unloadQuantiti
4647
5010
  }
4648
5011
  let unloadTime = 0;
4649
5012
  let loadTime = 0;
4650
- if (mass_unload.gt(antelope.UInt64.zero)) {
5013
+ if (mass_unload.gt(antelope.UInt64.zero) && ship.loaders) {
4651
5014
  const totalMass = antelope.UInt64.from(mass_unload).adding(ship.loaders.mass);
4652
5015
  unloadTime = Number(calc_loader_flighttime(ship, totalMass));
4653
5016
  }
4654
- if (mass_load.gt(antelope.UInt64.zero)) {
5017
+ if (mass_load.gt(antelope.UInt64.zero) && ship.loaders) {
4655
5018
  const totalMass = antelope.UInt64.from(mass_load).adding(ship.loaders.mass);
4656
5019
  loadTime = Number(calc_loader_flighttime(ship, totalMass));
4657
5020
  }
4658
- const numLoaders = Number(ship.loaders.quantity);
5021
+ const numLoaders = ship.loaders ? Number(ship.loaders.quantity) : 0;
4659
5022
  const totalTime = numLoaders > 0 ? (unloadTime + loadTime) / numLoaders : 0;
4660
5023
  const unloadTimePerLoader = numLoaders > 0 ? unloadTime / numLoaders : 0;
4661
5024
  const loadTimePerLoader = numLoaders > 0 ? loadTime / numLoaders : 0;
@@ -4675,12 +5038,14 @@ function estimateTravelTime(ship, travelMass, distance, options = {}) {
4675
5038
  let unloadTime = antelope.UInt32.zero;
4676
5039
  if (loadMass &&
4677
5040
  antelope.UInt32.from(loadMass).gt(antelope.UInt32.zero) &&
5041
+ ship.loaders &&
4678
5042
  ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4679
5043
  const totalMass = antelope.UInt64.from(loadMass).adding(ship.loaders.mass);
4680
5044
  loadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
4681
5045
  }
4682
5046
  if (unloadMass &&
4683
5047
  antelope.UInt32.from(unloadMass).gt(antelope.UInt32.zero) &&
5048
+ ship.loaders &&
4684
5049
  ship.loaders.quantity.gt(antelope.UInt32.zero)) {
4685
5050
  const totalMass = antelope.UInt64.from(unloadMass).adding(ship.loaders.mass);
4686
5051
  unloadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
@@ -4702,8 +5067,10 @@ function estimateDealTravelTime(ship, shipMass, distance, loadMass) {
4702
5067
  return estimate.total;
4703
5068
  }
4704
5069
  function hasEnergyForDistance$1(ship, distance) {
5070
+ if (!ship.engines)
5071
+ return false;
4705
5072
  const energyNeeded = antelope.UInt64.from(distance).dividing(PRECISION).multiplying(ship.engines.drain);
4706
- return antelope.UInt64.from(ship.energy).gte(energyNeeded);
5073
+ return antelope.UInt64.from(ship.energy ?? 0).gte(energyNeeded);
4707
5074
  }
4708
5075
  function getFlightOrigin(entity, flightTaskIndex) {
4709
5076
  if (!entity.schedule)
@@ -5544,6 +5911,10 @@ class Warehouse extends Types.entity_info {
5544
5911
  get orbitalAltitude() {
5545
5912
  return this.coordinates.z?.toNumber() || 0;
5546
5913
  }
5914
+ get totalMass() {
5915
+ const hull = this.hullmass ? antelope.UInt64.from(this.hullmass) : antelope.UInt64.from(0);
5916
+ return hull.adding(this.totalCargoMass);
5917
+ }
5547
5918
  }
5548
5919
 
5549
5920
  class Container extends Types.entity_info {
@@ -5596,6 +5967,17 @@ function computeContainerCapabilities(stats) {
5596
5967
  const capacity = Math.floor(1000000 * Math.pow(10, exponent));
5597
5968
  return { hullmass, capacity };
5598
5969
  }
5970
+ function computeContainerT2Capabilities(stats) {
5971
+ const strength = stats['strength'] ?? 0;
5972
+ const density = stats['density'] ?? 0;
5973
+ const ductility = stats['ductility'] ?? 0;
5974
+ const purity = stats['purity'] ?? 0;
5975
+ const hullmass = 20000 + 50 * density;
5976
+ const statSum = strength + ductility + purity;
5977
+ const exponent = statSum / 2500;
5978
+ const capacity = Math.floor(1500000 * Math.pow(10, exponent));
5979
+ return { hullmass, capacity };
5980
+ }
5599
5981
 
5600
5982
  class EntitiesManager extends BaseManager {
5601
5983
  async getEntity(type, id) {
@@ -6045,7 +6427,7 @@ function makeShip(state) {
6045
6427
  return new Ship(entityInfo);
6046
6428
  }
6047
6429
  function makeWarehouse(state) {
6048
- const entityInfo = Types.entity_info.from({
6430
+ const info = {
6049
6431
  type: antelope.Name.from('warehouse'),
6050
6432
  id: antelope.UInt64.from(state.id),
6051
6433
  owner: antelope.Name.from(state.owner),
@@ -6054,13 +6436,18 @@ function makeWarehouse(state) {
6054
6436
  capacity: antelope.UInt32.from(state.capacity),
6055
6437
  cargomass: antelope.UInt32.from(0),
6056
6438
  cargo: state.cargo || [],
6057
- loaders: state.loaders,
6058
6439
  is_idle: !state.schedule,
6059
6440
  current_task_elapsed: antelope.UInt32.from(0),
6060
6441
  current_task_remaining: antelope.UInt32.from(0),
6061
6442
  pending_tasks: [],
6062
- schedule: state.schedule,
6063
- });
6443
+ };
6444
+ if (state.hullmass !== undefined)
6445
+ info.hullmass = antelope.UInt32.from(state.hullmass);
6446
+ if (state.loaders)
6447
+ info.loaders = state.loaders;
6448
+ if (state.schedule)
6449
+ info.schedule = state.schedule;
6450
+ const entityInfo = Types.entity_info.from(info);
6064
6451
  return new Warehouse(entityInfo);
6065
6452
  }
6066
6453
  function makeContainer(state) {
@@ -6280,11 +6667,12 @@ function resolveStats(category, stats) {
6280
6667
  };
6281
6668
  }
6282
6669
 
6283
- const ITEM_ENGINE_T1 = 10006;
6284
- const ITEM_GENERATOR_T1 = 10007;
6285
- const ITEM_EXTRACTOR_T1 = 10014;
6286
- const ITEM_LOADER_T1 = 10015;
6287
- const ITEM_MANUFACTURING_T1 = 10016;
6670
+ const ITEM_ENGINE_T1 = 10100;
6671
+ const ITEM_GENERATOR_T1 = 10101;
6672
+ const ITEM_EXTRACTOR_T1 = 10102;
6673
+ const ITEM_LOADER_T1 = 10103;
6674
+ const ITEM_MANUFACTURING_T1 = 10104;
6675
+ const ITEM_STORAGE_T1 = 10105;
6288
6676
  const MODULE_ANY = 0;
6289
6677
  const MODULE_ENGINE = 1;
6290
6678
  const MODULE_GENERATOR = 2;
@@ -6293,6 +6681,7 @@ const MODULE_LOADER = 4;
6293
6681
  const MODULE_WARP = 5;
6294
6682
  const MODULE_CRAFTER = 6;
6295
6683
  const MODULE_LAUNCHER = 7;
6684
+ const MODULE_STORAGE = 8;
6296
6685
  function moduleAccepts(slotType, moduleType) {
6297
6686
  return slotType === MODULE_ANY || slotType === moduleType;
6298
6687
  }
@@ -6308,6 +6697,8 @@ function getModuleCapabilityType(itemId) {
6308
6697
  return MODULE_LOADER;
6309
6698
  case ITEM_MANUFACTURING_T1:
6310
6699
  return MODULE_CRAFTER;
6700
+ case ITEM_STORAGE_T1:
6701
+ return MODULE_STORAGE;
6311
6702
  default:
6312
6703
  return 0xff;
6313
6704
  }
@@ -6316,17 +6707,21 @@ function isModuleItem(itemId) {
6316
6707
  return getModuleCapabilityType(itemId) !== 0xff;
6317
6708
  }
6318
6709
 
6319
- const ITEM_DRILL_SHAFT = 10009;
6320
- const ITEM_EXTRACTION_PROBE = 10010;
6321
- const ITEM_CARGO_ARM = 10011;
6322
- const ITEM_TOOL_BIT = 10012;
6323
- const ITEM_REACTION_CHAMBER = 10013;
6710
+ const ITEM_DRILL_SHAFT = 10005;
6711
+ const ITEM_EXTRACTION_PROBE = 10006;
6712
+ const ITEM_CARGO_ARM = 10007;
6713
+ const ITEM_TOOL_BIT = 10008;
6714
+ const ITEM_REACTION_CHAMBER = 10009;
6324
6715
  const ITEM_HULL_PLATES = 10001;
6325
6716
  const ITEM_CARGO_LINING = 10002;
6326
- const ITEM_CONTAINER_PACKED = 10003;
6327
- const ITEM_THRUSTER_CORE = 10004;
6328
- const ITEM_POWER_CELL = 10005;
6329
- const ITEM_SHIP_T1_PACKED = 10008;
6717
+ const ITEM_CONTAINER_T1_PACKED = 10200;
6718
+ const ITEM_THRUSTER_CORE = 10003;
6719
+ const ITEM_POWER_CELL = 10004;
6720
+ const ITEM_SHIP_T1_PACKED = 10201;
6721
+ const ITEM_WAREHOUSE_T1_PACKED = 10202;
6722
+ const ITEM_HULL_PLATES_T2 = 20001;
6723
+ const ITEM_CARGO_LINING_T2 = 20002;
6724
+ const ITEM_CONTAINER_T2_PACKED = 20200;
6330
6725
  const components = [
6331
6726
  {
6332
6727
  id: ITEM_HULL_PLATES,
@@ -6339,7 +6734,7 @@ const components = [
6339
6734
  { key: 'density', source: 'metal' },
6340
6735
  ],
6341
6736
  recipe: [{ category: 'metal', quantity: 15 }],
6342
- usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
6737
+ usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
6343
6738
  },
6344
6739
  {
6345
6740
  id: ITEM_CARGO_LINING,
@@ -6355,7 +6750,7 @@ const components = [
6355
6750
  { category: 'precious', quantity: 6 },
6356
6751
  { category: 'organic', quantity: 14 },
6357
6752
  ],
6358
- usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
6753
+ usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
6359
6754
  },
6360
6755
  {
6361
6756
  id: ITEM_THRUSTER_CORE,
@@ -6368,7 +6763,7 @@ const components = [
6368
6763
  { key: 'thermal', source: 'gas' },
6369
6764
  ],
6370
6765
  recipe: [{ category: 'gas', quantity: 32 }],
6371
- usedIn: [{ type: 'module', name: 'Engine Module T1' }],
6766
+ usedIn: [{ type: 'module', name: 'Engine' }],
6372
6767
  },
6373
6768
  {
6374
6769
  id: ITEM_POWER_CELL,
@@ -6381,7 +6776,7 @@ const components = [
6381
6776
  { key: 'clarity', source: 'mineral' },
6382
6777
  ],
6383
6778
  recipe: [{ category: 'mineral', quantity: 20 }],
6384
- usedIn: [{ type: 'module', name: 'Generator Module T1' }],
6779
+ usedIn: [{ type: 'module', name: 'Generator' }],
6385
6780
  },
6386
6781
  {
6387
6782
  id: ITEM_DRILL_SHAFT,
@@ -6394,7 +6789,7 @@ const components = [
6394
6789
  { key: 'tolerance', source: 'metal' },
6395
6790
  ],
6396
6791
  recipe: [{ category: 'metal', quantity: 15 }],
6397
- usedIn: [{ type: 'module', name: 'Extractor Module T1' }],
6792
+ usedIn: [{ type: 'module', name: 'Extractor' }],
6398
6793
  },
6399
6794
  {
6400
6795
  id: ITEM_EXTRACTION_PROBE,
@@ -6407,7 +6802,7 @@ const components = [
6407
6802
  { key: 'reflectivity', source: 'precious' },
6408
6803
  ],
6409
6804
  recipe: [{ category: 'precious', quantity: 10 }],
6410
- usedIn: [{ type: 'module', name: 'Extractor Module T1' }],
6805
+ usedIn: [{ type: 'module', name: 'Extractor' }],
6411
6806
  },
6412
6807
  {
6413
6808
  id: ITEM_CARGO_ARM,
@@ -6420,7 +6815,7 @@ const components = [
6420
6815
  { key: 'insulation', source: 'organic' },
6421
6816
  ],
6422
6817
  recipe: [{ category: 'organic', quantity: 32 }],
6423
- usedIn: [{ type: 'module', name: 'Loader Module T1' }],
6818
+ usedIn: [{ type: 'module', name: 'Loader' }],
6424
6819
  },
6425
6820
  {
6426
6821
  id: ITEM_TOOL_BIT,
@@ -6433,7 +6828,7 @@ const components = [
6433
6828
  { key: 'clarity', source: 'mineral' },
6434
6829
  ],
6435
6830
  recipe: [{ category: 'mineral', quantity: 20 }],
6436
- usedIn: [{ type: 'module', name: 'Manufacturing Module T1' }],
6831
+ usedIn: [{ type: 'module', name: 'Manufacturing' }],
6437
6832
  },
6438
6833
  {
6439
6834
  id: ITEM_REACTION_CHAMBER,
@@ -6446,7 +6841,40 @@ const components = [
6446
6841
  { key: 'thermal', source: 'gas' },
6447
6842
  ],
6448
6843
  recipe: [{ category: 'gas', quantity: 32 }],
6449
- usedIn: [{ type: 'module', name: 'Manufacturing Module T1' }],
6844
+ usedIn: [{ type: 'module', name: 'Manufacturing' }],
6845
+ },
6846
+ {
6847
+ id: ITEM_HULL_PLATES_T2,
6848
+ name: 'Hull Plates T2',
6849
+ description: 'Advanced structural plating reinforced with tier 2 metals.',
6850
+ color: '#9BADB8',
6851
+ mass: 50000,
6852
+ stats: [
6853
+ { key: 'strength', source: 'metal' },
6854
+ { key: 'density', source: 'metal' },
6855
+ ],
6856
+ recipe: [
6857
+ { itemId: ITEM_HULL_PLATES, quantity: 2 },
6858
+ { category: 'metal', quantity: 15 },
6859
+ ],
6860
+ usedIn: [{ type: 'entity', name: 'Container T2' }],
6861
+ },
6862
+ {
6863
+ id: ITEM_CARGO_LINING_T2,
6864
+ name: 'Cargo Lining T2',
6865
+ description: 'Advanced composite lining with improved storage properties.',
6866
+ color: '#E0B84D',
6867
+ mass: 30000,
6868
+ stats: [
6869
+ { key: 'ductility', source: 'precious' },
6870
+ { key: 'purity', source: 'organic' },
6871
+ ],
6872
+ recipe: [
6873
+ { itemId: ITEM_CARGO_LINING, quantity: 2 },
6874
+ { category: 'precious', quantity: 6 },
6875
+ { category: 'organic', quantity: 14 },
6876
+ ],
6877
+ usedIn: [{ type: 'entity', name: 'Container T2' }],
6450
6878
  },
6451
6879
  ];
6452
6880
  const entityRecipes = [
@@ -6455,7 +6883,7 @@ const entityRecipes = [
6455
6883
  name: 'Container',
6456
6884
  description: 'Passive floating cargo storage in space. Towed by ships.',
6457
6885
  color: '#7B8D9E',
6458
- packedItemId: ITEM_CONTAINER_PACKED,
6886
+ packedItemId: ITEM_CONTAINER_T1_PACKED,
6459
6887
  recipe: [
6460
6888
  { itemId: ITEM_HULL_PLATES, quantity: 6 },
6461
6889
  { itemId: ITEM_CARGO_LINING, quantity: 2 },
@@ -6483,12 +6911,60 @@ const entityRecipes = [
6483
6911
  { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
6484
6912
  { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
6485
6913
  ],
6914
+ moduleSlots: [
6915
+ { type: MODULE_ANY },
6916
+ { type: MODULE_ANY },
6917
+ { type: MODULE_ANY },
6918
+ { type: MODULE_ANY },
6919
+ { type: MODULE_ANY },
6920
+ ],
6921
+ },
6922
+ {
6923
+ id: 'warehouse-t1',
6924
+ name: 'Warehouse T1',
6925
+ description: 'Massive stationary storage facility with a single loader module slot.',
6926
+ color: '#EAB308',
6927
+ packedItemId: ITEM_WAREHOUSE_T1_PACKED,
6928
+ recipe: [
6929
+ { itemId: ITEM_HULL_PLATES, quantity: 20 },
6930
+ { itemId: ITEM_CARGO_LINING, quantity: 10 },
6931
+ ],
6932
+ stats: [
6933
+ { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
6934
+ { key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
6935
+ { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
6936
+ { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
6937
+ ],
6938
+ moduleSlots: [
6939
+ { type: MODULE_LOADER, label: 'Loader' },
6940
+ { type: MODULE_STORAGE, label: 'Storage' },
6941
+ { type: MODULE_STORAGE, label: 'Storage' },
6942
+ { type: MODULE_STORAGE, label: 'Storage' },
6943
+ { type: MODULE_STORAGE, label: 'Storage' },
6944
+ ],
6945
+ },
6946
+ {
6947
+ id: 'container-t2',
6948
+ name: 'Container T2',
6949
+ description: 'Advanced cargo container with improved capacity formulas.',
6950
+ color: '#9BADB8',
6951
+ packedItemId: ITEM_CONTAINER_T2_PACKED,
6952
+ recipe: [
6953
+ { itemId: ITEM_HULL_PLATES_T2, quantity: 6 },
6954
+ { itemId: ITEM_CARGO_LINING_T2, quantity: 2 },
6955
+ ],
6956
+ stats: [
6957
+ { key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength' },
6958
+ { key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density' },
6959
+ { key: 'ductility', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'ductility' },
6960
+ { key: 'purity', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'purity' },
6961
+ ],
6486
6962
  },
6487
6963
  ];
6488
6964
  const moduleRecipes = [
6489
6965
  {
6490
6966
  id: 'engine-t1',
6491
- name: 'Engine Module T1',
6967
+ name: 'Engine',
6492
6968
  description: 'Basic propulsion system. Converts volatile gases into thrust.',
6493
6969
  color: '#E86344',
6494
6970
  itemId: ITEM_ENGINE_T1,
@@ -6501,7 +6977,7 @@ const moduleRecipes = [
6501
6977
  },
6502
6978
  {
6503
6979
  id: 'generator-t1',
6504
- name: 'Generator Module T1',
6980
+ name: 'Generator',
6505
6981
  description: 'Basic energy system. Stores and recharges energy from resonant minerals.',
6506
6982
  color: '#7B5AE8',
6507
6983
  itemId: ITEM_GENERATOR_T1,
@@ -6514,7 +6990,7 @@ const moduleRecipes = [
6514
6990
  },
6515
6991
  {
6516
6992
  id: 'extractor-t1',
6517
- name: 'Extractor Module T1',
6993
+ name: 'Extractor',
6518
6994
  description: 'Basic extraction system. Drills and probes for raw resources.',
6519
6995
  color: '#7B8D9E',
6520
6996
  itemId: ITEM_EXTRACTOR_T1,
@@ -6533,7 +7009,7 @@ const moduleRecipes = [
6533
7009
  },
6534
7010
  {
6535
7011
  id: 'loader-t1',
6536
- name: 'Loader Module T1',
7012
+ name: 'Loader',
6537
7013
  description: 'Basic cargo handling system. Loads and unloads cargo with articulated arms.',
6538
7014
  color: '#6B8E5A',
6539
7015
  itemId: ITEM_LOADER_T1,
@@ -6549,7 +7025,7 @@ const moduleRecipes = [
6549
7025
  },
6550
7026
  {
6551
7027
  id: 'manufacturing-t1',
6552
- name: 'Manufacturing Module T1',
7028
+ name: 'Manufacturing',
6553
7029
  description: 'Basic crafting system. Processes materials using reaction chambers and cutting tools.',
6554
7030
  color: '#7EC8E3',
6555
7031
  itemId: ITEM_MANUFACTURING_T1,
@@ -6563,6 +7039,24 @@ const moduleRecipes = [
6563
7039
  { key: 'clarity', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'clarity' },
6564
7040
  ],
6565
7041
  },
7042
+ {
7043
+ id: 'storage-t1',
7044
+ name: 'Storage',
7045
+ description: 'Expands cargo capacity based on hull material quality',
7046
+ color: '#8B7355',
7047
+ itemId: ITEM_STORAGE_T1,
7048
+ moduleType: MODULE_STORAGE,
7049
+ recipe: [
7050
+ { itemId: ITEM_HULL_PLATES, quantity: 8 },
7051
+ { itemId: ITEM_CARGO_LINING, quantity: 4 },
7052
+ ],
7053
+ stats: [
7054
+ { key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
7055
+ { key: 'ductility', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'ductility' },
7056
+ { key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
7057
+ { key: 'density', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'density' },
7058
+ ],
7059
+ },
6566
7060
  ];
6567
7061
  function getModuleRecipe(id) {
6568
7062
  return moduleRecipes.find((r) => r.id === id);
@@ -6579,6 +7073,10 @@ function getEntityRecipe(id) {
6579
7073
  function getEntityRecipeByItemId(itemId) {
6580
7074
  return entityRecipes.find((r) => r.packedItemId === itemId);
6581
7075
  }
7076
+ function getEntitySlotLayout(packedItemId) {
7077
+ const recipe = getEntityRecipeByItemId(packedItemId);
7078
+ return recipe?.moduleSlots ?? [];
7079
+ }
6582
7080
  function getAllCraftableItems() {
6583
7081
  const items = [];
6584
7082
  for (const comp of components) {
@@ -6606,10 +7104,13 @@ function encodeStats(values) {
6606
7104
  }
6607
7105
  return seed;
6608
7106
  }
7107
+ function decodeStat(seed, index) {
7108
+ return Number((seed >> BigInt(index * 10)) & 0x3ffn);
7109
+ }
6609
7110
  function decodeStats(seed, count) {
6610
7111
  const stats = [];
6611
7112
  for (let i = 0; i < count; i++) {
6612
- stats.push(Number((seed >> BigInt(i * 10)) & 0x3ffn));
7113
+ stats.push(decodeStat(seed, i));
6613
7114
  }
6614
7115
  return stats;
6615
7116
  }
@@ -6690,6 +7191,55 @@ function decodeStackStats(itemId, seed) {
6690
7191
  const raw = deriveResourceStats(BigInt(seed.toString()));
6691
7192
  return { stat1: raw.stat1, stat2: raw.stat2, stat3: raw.stat3 };
6692
7193
  }
7194
+ const categoryItemMass = {
7195
+ metal: 30000,
7196
+ precious: 40000,
7197
+ gas: 15000,
7198
+ mineral: 22000,
7199
+ organic: 15000,
7200
+ };
7201
+ function computeInputMass(itemId, itemType) {
7202
+ if (itemType === 'component') {
7203
+ const comp = getComponentById(itemId);
7204
+ if (!comp)
7205
+ return 0;
7206
+ return comp.recipe.reduce((sum, input) => {
7207
+ const mass = input.category ? (categoryItemMass[input.category] ?? 0) : 0;
7208
+ return sum + mass * input.quantity;
7209
+ }, 0);
7210
+ }
7211
+ if (itemType === 'module') {
7212
+ const mod = getModuleRecipe(itemId);
7213
+ if (!mod)
7214
+ return 0;
7215
+ return mod.recipe.reduce((sum, input) => {
7216
+ const comp = input.itemId ? getComponentById(input.itemId) : undefined;
7217
+ return sum + (comp?.mass ?? 0) * input.quantity;
7218
+ }, 0);
7219
+ }
7220
+ if (itemType === 'entity') {
7221
+ const ent = getEntityRecipe(itemId);
7222
+ if (!ent)
7223
+ return 0;
7224
+ return ent.recipe.reduce((sum, input) => {
7225
+ const comp = input.itemId ? getComponentById(input.itemId) : undefined;
7226
+ return sum + (comp?.mass ?? 0) * input.quantity;
7227
+ }, 0);
7228
+ }
7229
+ return 0;
7230
+ }
7231
+ function blendCrossGroup(sources) {
7232
+ let weightedSum = 0;
7233
+ let totalWeight = 0;
7234
+ for (const src of sources) {
7235
+ weightedSum += src.value * src.weight;
7236
+ totalWeight += src.weight;
7237
+ }
7238
+ if (totalWeight === 0)
7239
+ return 1;
7240
+ const result = Math.floor(weightedSum / totalWeight);
7241
+ return Math.max(1, Math.min(999, result));
7242
+ }
6693
7243
  function blendCargoStacks(itemId, stacks) {
6694
7244
  const decoded = stacks.map((s) => ({
6695
7245
  quantity: s.quantity,
@@ -6822,7 +7372,7 @@ function calc_craft_energy(drain, duration) {
6822
7372
  }
6823
7373
 
6824
7374
  const categoryColors = {
6825
- metal: '#7B8D9E',
7375
+ metal: '#5B9BD5',
6826
7376
  precious: '#D4A843',
6827
7377
  gas: '#7EC8E3',
6828
7378
  mineral: '#B8A9C9',
@@ -6844,6 +7394,508 @@ const categoryIcons = {
6844
7394
  };
6845
7395
  const componentIcon = '▣';
6846
7396
  const moduleIcon = '⬢';
7397
+ const itemIcons = {
7398
+ 10001: 'HP',
7399
+ 10002: 'CL',
7400
+ 10003: 'TC',
7401
+ 10004: 'PC',
7402
+ 10005: 'DS',
7403
+ 10006: 'EP',
7404
+ 10007: 'CA',
7405
+ 10008: 'TB',
7406
+ 10009: 'RC',
7407
+ 10100: 'EN',
7408
+ 10101: 'GN',
7409
+ 10102: 'EX',
7410
+ 10103: 'LD',
7411
+ 10104: 'MF',
7412
+ 10105: 'ST',
7413
+ 10200: 'CT',
7414
+ 10201: 'SH',
7415
+ 10202: 'WH',
7416
+ 20001: 'HP',
7417
+ 20002: 'CL',
7418
+ 20200: 'CT',
7419
+ };
7420
+
7421
+ const ITEM_TYPE_RESOURCE = 0;
7422
+ const ITEM_TYPE_COMPONENT = 1;
7423
+ const ITEM_TYPE_MODULE = 2;
7424
+ const ITEM_TYPE_ENTITY = 3;
7425
+ function itemTypeCode(id) {
7426
+ switch (itemCategory(id)) {
7427
+ case 'resource': return ITEM_TYPE_RESOURCE;
7428
+ case 'component': return ITEM_TYPE_COMPONENT;
7429
+ case 'module': return ITEM_TYPE_MODULE;
7430
+ case 'entity': return ITEM_TYPE_ENTITY;
7431
+ }
7432
+ }
7433
+ function itemTier(id) {
7434
+ if (id < 10000)
7435
+ return 0;
7436
+ return Math.floor(id / 10000);
7437
+ }
7438
+ function itemOffset(id) {
7439
+ return id % 10000;
7440
+ }
7441
+ function itemCategory(id) {
7442
+ if (id < 10000)
7443
+ return 'resource';
7444
+ const offset = itemOffset(id);
7445
+ if (offset >= 200)
7446
+ return 'entity';
7447
+ if (offset >= 100)
7448
+ return 'module';
7449
+ return 'component';
7450
+ }
7451
+ function isRelatedItem(a, b) {
7452
+ if (a < 10000 || b < 10000)
7453
+ return false;
7454
+ return itemOffset(a) === itemOffset(b);
7455
+ }
7456
+ function isCraftedItem(id) {
7457
+ return id >= 10000;
7458
+ }
7459
+
7460
+ const categories = [
7461
+ {
7462
+ id: 'metal',
7463
+ name: 'Metals',
7464
+ label: 'Metal',
7465
+ description: 'Structural, strong, heavy — hulls, frames, load-bearing components',
7466
+ color: categoryColors.metal,
7467
+ },
7468
+ {
7469
+ id: 'precious',
7470
+ name: 'Precious Metals',
7471
+ label: 'Precious',
7472
+ description: 'Conductive, corrosion-resistant — electronics, energy systems, precision components',
7473
+ color: categoryColors.precious,
7474
+ },
7475
+ {
7476
+ id: 'gas',
7477
+ name: 'Gases',
7478
+ label: 'Gas',
7479
+ description: 'Energy, fuel, volatile/reactive — propulsion, thermal processing, chemical reactions',
7480
+ color: categoryColors.gas,
7481
+ },
7482
+ {
7483
+ id: 'mineral',
7484
+ name: 'Minerals',
7485
+ label: 'Mineral',
7486
+ description: 'Crystalline, hard, precise — sensors, optics, energy storage, cutting surfaces',
7487
+ color: categoryColors.mineral,
7488
+ },
7489
+ {
7490
+ id: 'organic',
7491
+ name: 'Organics',
7492
+ label: 'Organic',
7493
+ description: 'Adaptive, biological, polymer — insulation, composites, bio-processes',
7494
+ color: categoryColors.organic,
7495
+ },
7496
+ ];
7497
+ function getCategoryInfo(id) {
7498
+ if (id === undefined)
7499
+ return categories;
7500
+ return categories.find((c) => c.id === id);
7501
+ }
7502
+
7503
+ const planetSubtypes = [
7504
+ {
7505
+ id: 0,
7506
+ label: 'Gas Giant',
7507
+ description: 'Massive planets with thick atmospheres rich in gases',
7508
+ paletteType: 'gasGiant',
7509
+ },
7510
+ {
7511
+ id: 1,
7512
+ label: 'Rocky',
7513
+ description: 'Dense, mineral-rich worlds with metallic cores',
7514
+ paletteType: 'rocky',
7515
+ },
7516
+ {
7517
+ id: 2,
7518
+ label: 'Terrestrial',
7519
+ description: 'Earth-like planets with varied terrain and life potential',
7520
+ paletteType: 'terrestrial',
7521
+ },
7522
+ {
7523
+ id: 3,
7524
+ label: 'Icy',
7525
+ description: 'Frozen worlds with subsurface resources',
7526
+ paletteType: 'ice',
7527
+ },
7528
+ {
7529
+ id: 4,
7530
+ label: 'Ocean',
7531
+ description: 'Water worlds with dissolved minerals and organics',
7532
+ paletteType: 'ocean',
7533
+ },
7534
+ {
7535
+ id: 5,
7536
+ label: 'Industrial',
7537
+ description: 'Heavily processed worlds rich in refined materials',
7538
+ paletteType: 'industrial',
7539
+ },
7540
+ ];
7541
+ function getPlanetSubtypes() {
7542
+ return planetSubtypes;
7543
+ }
7544
+ function getPlanetSubtype(id) {
7545
+ return planetSubtypes.find((s) => s.id === id);
7546
+ }
7547
+
7548
+ const capabilityNames = [
7549
+ 'Hull',
7550
+ 'Storage',
7551
+ 'Movement',
7552
+ 'Energy',
7553
+ 'Loader',
7554
+ 'Extraction',
7555
+ 'Warp',
7556
+ 'Manufacturing',
7557
+ 'Launch',
7558
+ ];
7559
+ const capabilityAttributes = [
7560
+ { capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
7561
+ { capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
7562
+ { capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
7563
+ { capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
7564
+ { capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
7565
+ { capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate' },
7566
+ { capability: 'Loader', attribute: 'mass', description: 'Weight of the loader unit itself' },
7567
+ { capability: 'Loader', attribute: 'thrust', description: 'Loading speed/force' },
7568
+ { capability: 'Extraction', attribute: 'rate', description: 'Mass extracted per second' },
7569
+ { capability: 'Extraction', attribute: 'drain', description: 'Energy consumed per extraction' },
7570
+ { capability: 'Extraction', attribute: 'depth', description: 'Maximum extraction depth' },
7571
+ { capability: 'Extraction', attribute: 'drill', description: 'Drilling speed/penetration' },
7572
+ { capability: 'Warp', attribute: 'range', description: 'Maximum warp distance' },
7573
+ { capability: 'Manufacturing', attribute: 'speed', description: 'Crafting time per item' },
7574
+ {
7575
+ capability: 'Manufacturing',
7576
+ attribute: 'drain',
7577
+ description: 'Energy consumed per second while crafting',
7578
+ },
7579
+ { capability: 'Manufacturing', attribute: 'quality', description: 'Modifier on output quality' },
7580
+ { capability: 'Launch', attribute: 'range', description: 'Maximum launch distance' },
7581
+ { capability: 'Launch', attribute: 'capacity', description: 'Maximum mass per launch' },
7582
+ { capability: 'Launch', attribute: 'drain', description: 'Energy consumed per launch' },
7583
+ ];
7584
+ const statMappings = [
7585
+ {
7586
+ stat: 'Strength',
7587
+ capability: 'Extraction',
7588
+ attribute: 'rate',
7589
+ rationale: 'Raw mechanical force drives faster extraction',
7590
+ },
7591
+ {
7592
+ stat: 'Strength',
7593
+ capability: 'Storage',
7594
+ attribute: 'capacity',
7595
+ rationale: 'Stronger walls hold more capacity per mass',
7596
+ },
7597
+ {
7598
+ stat: 'Strength',
7599
+ capability: 'Launch',
7600
+ attribute: 'capacity',
7601
+ rationale: 'Stronger housing handles larger launch loads',
7602
+ },
7603
+ {
7604
+ stat: 'Tolerance',
7605
+ capability: 'Movement',
7606
+ attribute: 'thrust',
7607
+ rationale: 'Engine components that tolerate more can push harder',
7608
+ },
7609
+ {
7610
+ stat: 'Tolerance',
7611
+ capability: 'Energy',
7612
+ attribute: 'recharge',
7613
+ rationale: 'Generator housing withstands stress for faster recharge',
7614
+ },
7615
+ {
7616
+ stat: 'Tolerance',
7617
+ capability: 'Extraction',
7618
+ attribute: 'depth',
7619
+ rationale: 'Housing withstands pressure/heat at extreme depths',
7620
+ },
7621
+ {
7622
+ stat: 'Tolerance',
7623
+ capability: 'Warp',
7624
+ attribute: 'range',
7625
+ rationale: 'Warp drive housing withstands extreme forces',
7626
+ },
7627
+ {
7628
+ stat: 'Density',
7629
+ capability: 'Hull',
7630
+ attribute: 'mass',
7631
+ rationale: 'Lighter metal = lighter hull',
7632
+ },
7633
+ {
7634
+ stat: 'Density',
7635
+ capability: 'Loader',
7636
+ attribute: 'mass',
7637
+ rationale: 'Lighter metal = lighter loader units',
7638
+ },
7639
+ {
7640
+ stat: 'Density',
7641
+ capability: 'Movement',
7642
+ attribute: 'drain',
7643
+ rationale: 'Lighter components require less energy to move',
7644
+ },
7645
+ {
7646
+ stat: 'Conductivity',
7647
+ capability: 'Movement',
7648
+ attribute: 'drain',
7649
+ rationale: 'Efficient energy transfer reduces movement energy cost',
7650
+ },
7651
+ {
7652
+ stat: 'Conductivity',
7653
+ capability: 'Extraction',
7654
+ attribute: 'drain',
7655
+ rationale: 'Efficient energy transfer reduces extraction energy cost',
7656
+ },
7657
+ {
7658
+ stat: 'Conductivity',
7659
+ capability: 'Manufacturing',
7660
+ attribute: 'drain',
7661
+ rationale: 'Efficient energy transfer reduces manufacturing energy cost',
7662
+ },
7663
+ {
7664
+ stat: 'Conductivity',
7665
+ capability: 'Energy',
7666
+ attribute: 'recharge',
7667
+ rationale: 'Better conductivity speeds energy flow during recharge',
7668
+ },
7669
+ {
7670
+ stat: 'Ductility',
7671
+ capability: 'Manufacturing',
7672
+ attribute: 'quality',
7673
+ rationale: 'Precise shaping enables tighter manufacturing tolerances',
7674
+ },
7675
+ {
7676
+ stat: 'Ductility',
7677
+ capability: 'Extraction',
7678
+ attribute: 'rate',
7679
+ rationale: 'Precisely shaped drill components extract faster',
7680
+ },
7681
+ {
7682
+ stat: 'Ductility',
7683
+ capability: 'Storage',
7684
+ attribute: 'capacity',
7685
+ rationale: 'Precision-formed container walls maximize volume',
7686
+ },
7687
+ {
7688
+ stat: 'Ductility',
7689
+ capability: 'Loader',
7690
+ attribute: 'mass',
7691
+ rationale: 'Precision-formed precious metal reduces loader unit mass',
7692
+ },
7693
+ {
7694
+ stat: 'Reflectivity',
7695
+ capability: 'Extraction',
7696
+ attribute: 'depth',
7697
+ rationale: 'Reflective heat shielding protects equipment at depth',
7698
+ },
7699
+ {
7700
+ stat: 'Reflectivity',
7701
+ capability: 'Launch',
7702
+ attribute: 'range',
7703
+ rationale: 'Reflective surfaces focus electromagnetic launch energy',
7704
+ },
7705
+ {
7706
+ stat: 'Volatility',
7707
+ capability: 'Extraction',
7708
+ attribute: 'rate',
7709
+ rationale: 'Energy release powers faster extraction',
7710
+ },
7711
+ {
7712
+ stat: 'Volatility',
7713
+ capability: 'Movement',
7714
+ attribute: 'thrust',
7715
+ rationale: 'Energy release drives propulsion force',
7716
+ },
7717
+ {
7718
+ stat: 'Volatility',
7719
+ capability: 'Loader',
7720
+ attribute: 'thrust',
7721
+ rationale: 'Energy release powers loader motors',
7722
+ },
7723
+ {
7724
+ stat: 'Volatility',
7725
+ capability: 'Launch',
7726
+ attribute: 'capacity',
7727
+ rationale: 'Energy release enables launching heavier payloads',
7728
+ },
7729
+ {
7730
+ stat: 'Reactivity',
7731
+ capability: 'Manufacturing',
7732
+ attribute: 'speed',
7733
+ rationale: 'Reactive gases accelerate chemical/thermal processing',
7734
+ },
7735
+ {
7736
+ stat: 'Reactivity',
7737
+ capability: 'Extraction',
7738
+ attribute: 'drill',
7739
+ rationale: 'Reactive gases manage heat/friction during drilling',
7740
+ },
7741
+ {
7742
+ stat: 'Reactivity',
7743
+ capability: 'Launch',
7744
+ attribute: 'drain',
7745
+ rationale: 'Reactive gas medium reduces electromagnetic resistance',
7746
+ },
7747
+ {
7748
+ stat: 'Thermal',
7749
+ capability: 'Manufacturing',
7750
+ attribute: 'quality',
7751
+ rationale: 'Precise thermal control during fabrication',
7752
+ },
7753
+ {
7754
+ stat: 'Thermal',
7755
+ capability: 'Extraction',
7756
+ attribute: 'drain',
7757
+ rationale: 'Thermal management reduces energy waste during extraction',
7758
+ },
7759
+ {
7760
+ stat: 'Thermal',
7761
+ capability: 'Energy',
7762
+ attribute: 'capacity',
7763
+ rationale: 'Thermal management enables denser energy storage',
7764
+ },
7765
+ {
7766
+ stat: 'Resonance',
7767
+ capability: 'Energy',
7768
+ attribute: 'capacity',
7769
+ rationale: 'Resonating crystals store energy in fields',
7770
+ },
7771
+ {
7772
+ stat: 'Resonance',
7773
+ capability: 'Warp',
7774
+ attribute: 'range',
7775
+ rationale: 'Resonant crystals amplify warp field projection',
7776
+ },
7777
+ {
7778
+ stat: 'Resonance',
7779
+ capability: 'Launch',
7780
+ attribute: 'range',
7781
+ rationale: 'Resonant crystals focus electromagnetic launch field',
7782
+ },
7783
+ {
7784
+ stat: 'Resonance',
7785
+ capability: 'Launch',
7786
+ attribute: 'capacity',
7787
+ rationale: 'Stronger resonant field launches heavier payloads',
7788
+ },
7789
+ {
7790
+ stat: 'Hardness',
7791
+ capability: 'Manufacturing',
7792
+ attribute: 'speed',
7793
+ rationale: 'Hard tooling surfaces cut and shape materials faster',
7794
+ },
7795
+ {
7796
+ stat: 'Hardness',
7797
+ capability: 'Launch',
7798
+ attribute: 'drain',
7799
+ rationale: 'Hard rail surfaces reduce friction, less energy wasted',
7800
+ },
7801
+ {
7802
+ stat: 'Clarity',
7803
+ capability: 'Energy',
7804
+ attribute: 'recharge',
7805
+ rationale: 'Flawless crystals enable smoother energy flow during recharge',
7806
+ },
7807
+ {
7808
+ stat: 'Clarity',
7809
+ capability: 'Manufacturing',
7810
+ attribute: 'quality',
7811
+ rationale: 'Precision optics for calibration during fabrication',
7812
+ },
7813
+ {
7814
+ stat: 'Clarity',
7815
+ capability: 'Manufacturing',
7816
+ attribute: 'drain',
7817
+ rationale: 'Precision computing optimizes energy routing in factory',
7818
+ },
7819
+ {
7820
+ stat: 'Plasticity',
7821
+ capability: 'Manufacturing',
7822
+ attribute: 'speed',
7823
+ rationale: 'Easily reshaped materials speed up processing',
7824
+ },
7825
+ {
7826
+ stat: 'Plasticity',
7827
+ capability: 'Movement',
7828
+ attribute: 'thrust',
7829
+ rationale: 'Flexible polymer seals reduce friction in propulsion',
7830
+ },
7831
+ {
7832
+ stat: 'Plasticity',
7833
+ capability: 'Loader',
7834
+ attribute: 'thrust',
7835
+ rationale: 'Flexible joints improve loader force transfer',
7836
+ },
7837
+ {
7838
+ stat: 'Insulation',
7839
+ capability: 'Movement',
7840
+ attribute: 'drain',
7841
+ rationale: 'Better insulation reduces energy loss during movement',
7842
+ },
7843
+ {
7844
+ stat: 'Insulation',
7845
+ capability: 'Extraction',
7846
+ attribute: 'drain',
7847
+ rationale: 'Better insulation reduces energy loss during extraction',
7848
+ },
7849
+ {
7850
+ stat: 'Insulation',
7851
+ capability: 'Manufacturing',
7852
+ attribute: 'drain',
7853
+ rationale: 'Better insulation reduces energy loss during manufacturing',
7854
+ },
7855
+ {
7856
+ stat: 'Insulation',
7857
+ capability: 'Launch',
7858
+ attribute: 'drain',
7859
+ rationale: 'Better insulation reduces energy loss during launch',
7860
+ },
7861
+ {
7862
+ stat: 'Purity',
7863
+ capability: 'Storage',
7864
+ attribute: 'capacity',
7865
+ rationale: 'Purer composites make better containers',
7866
+ },
7867
+ {
7868
+ stat: 'Purity',
7869
+ capability: 'Extraction',
7870
+ attribute: 'drill',
7871
+ rationale: 'Purer bio-lubricants reduce friction during drilling',
7872
+ },
7873
+ {
7874
+ stat: 'Purity',
7875
+ capability: 'Energy',
7876
+ attribute: 'capacity',
7877
+ rationale: 'Purer organic electrolytes store more charge',
7878
+ },
7879
+ ];
7880
+ const invertedAttributes = new Set(['drain', 'mass']);
7881
+ function isInvertedAttribute(attribute) {
7882
+ return invertedAttributes.has(attribute);
7883
+ }
7884
+ function getCapabilityAttributes(capability) {
7885
+ if (capability) {
7886
+ return capabilityAttributes.filter((a) => a.capability === capability);
7887
+ }
7888
+ return capabilityAttributes;
7889
+ }
7890
+ function getStatMappings() {
7891
+ return statMappings;
7892
+ }
7893
+ function getStatMappingsForStat(stat) {
7894
+ return statMappings.filter((m) => m.stat === stat);
7895
+ }
7896
+ function getStatMappingsForCapability(capability) {
7897
+ return statMappings.filter((m) => m.capability === capability);
7898
+ }
6847
7899
 
6848
7900
  function computeShipHullCapabilities(stats) {
6849
7901
  const density = stats.density ?? 500;
@@ -6861,7 +7913,7 @@ function computeEngineCapabilities(stats) {
6861
7913
  const thm = stats.thermal ?? 500;
6862
7914
  return {
6863
7915
  thrust: 400 + Math.floor(vol * 3 / 4),
6864
- drain: Math.max(16, 30 - Math.floor(thm / 70)),
7916
+ drain: Math.max(30, 50 - Math.floor(thm / 70)),
6865
7917
  };
6866
7918
  }
6867
7919
  function computeGeneratorCapabilities(stats) {
@@ -6901,6 +7953,25 @@ function computeManufacturingCapabilities(stats) {
6901
7953
  drain: Math.max(5, 30 - Math.floor(clr / 33)),
6902
7954
  };
6903
7955
  }
7956
+ function computeStorageCapabilities(stats, baseCapacity) {
7957
+ const strength = stats.strength ?? 500;
7958
+ const ductility = stats.ductility ?? 500;
7959
+ const purity = stats.purity ?? 500;
7960
+ const statSum = strength + ductility + purity;
7961
+ const capacityBonus = Math.floor(baseCapacity * (10 + Math.floor(statSum * 10 / 2997)) / 100);
7962
+ return { capacityBonus };
7963
+ }
7964
+ function computeWarehouseHullCapabilities(stats) {
7965
+ const density = stats.density ?? 500;
7966
+ const strength = stats.strength ?? 500;
7967
+ const ductility = stats.ductility ?? 500;
7968
+ const purity = stats.purity ?? 500;
7969
+ const hullmass = 25000 + 75 * density;
7970
+ const statSum = strength + ductility + purity;
7971
+ const exponent = statSum / 2997.0;
7972
+ const capacity = Math.floor(20000000 * Math.pow(10, exponent));
7973
+ return { hullmass, capacity };
7974
+ }
6904
7975
 
6905
7976
  function toNum(v) {
6906
7977
  return Number(antelope.UInt16.from(v).value.toString());
@@ -6965,7 +8036,7 @@ function resolveComponent(id, seed) {
6965
8036
  return {
6966
8037
  itemId: id,
6967
8038
  name: comp.name,
6968
- icon: componentIcon,
8039
+ icon: itemIcons[id] ?? componentIcon,
6969
8040
  tier: 't1',
6970
8041
  mass: comp.mass,
6971
8042
  itemType: 'component',
@@ -7012,6 +8083,16 @@ function computeCapabilityGroup(moduleType, stats) {
7012
8083
  { label: 'Drain', value: caps.drain },
7013
8084
  ] };
7014
8085
  }
8086
+ case MODULE_STORAGE: {
8087
+ const str = stats.strength ?? 500;
8088
+ const duc = stats.ductility ?? 500;
8089
+ const pur = stats.purity ?? 500;
8090
+ const statSum = str + duc + pur;
8091
+ const pct = 10 + Math.floor(statSum * 10 / 2997);
8092
+ return { capability: 'Storage', attributes: [
8093
+ { label: 'Capacity Bonus', value: pct },
8094
+ ] };
8095
+ }
7015
8096
  default:
7016
8097
  return undefined;
7017
8098
  }
@@ -7029,7 +8110,7 @@ function resolveModule(id, seed) {
7029
8110
  return {
7030
8111
  itemId: id,
7031
8112
  name: recipe.name,
7032
- icon: moduleIcon,
8113
+ icon: itemIcons[id] ?? moduleIcon,
7033
8114
  tier: 't1',
7034
8115
  mass: 0,
7035
8116
  itemType: 'module',
@@ -7039,6 +8120,7 @@ function resolveModule(id, seed) {
7039
8120
  function resolveEntity(id, seed, modules) {
7040
8121
  const recipe = getEntityRecipeByItemId(id);
7041
8122
  let attributes;
8123
+ let moduleSlots;
7042
8124
  if (seed !== undefined) {
7043
8125
  const stats = decodeCraftedItemStats(id, toBigSeed(seed));
7044
8126
  attributes = [];
@@ -7057,28 +8139,35 @@ function resolveEntity(id, seed, modules) {
7057
8139
  { label: 'Capacity', value: containerCaps.capacity },
7058
8140
  ] });
7059
8141
  }
7060
- if (modules) {
7061
- for (const mod of modules) {
7062
- if (!mod.installed)
7063
- continue;
8142
+ }
8143
+ if (recipe.moduleSlots) {
8144
+ moduleSlots = recipe.moduleSlots.map((slot, i) => {
8145
+ const mod = modules?.[i];
8146
+ if (mod?.installed) {
7064
8147
  const modItemId = Number(mod.installed.item_id.value.toString());
7065
8148
  const modSeed = BigInt(mod.installed.seed.toString());
7066
8149
  const modStats = decodeCraftedItemStats(modItemId, modSeed);
7067
8150
  const modType = getModuleCapabilityType(modItemId);
7068
8151
  const group = computeCapabilityGroup(modType, modStats);
7069
- if (group)
7070
- attributes.push(group);
8152
+ const modRecipe = getModuleRecipeByItemId(modItemId);
8153
+ return {
8154
+ name: modRecipe?.name ?? 'Module',
8155
+ installed: true,
8156
+ attributes: group?.attributes,
8157
+ };
7071
8158
  }
7072
- }
8159
+ return { installed: false };
8160
+ });
7073
8161
  }
7074
8162
  return {
7075
8163
  itemId: id,
7076
8164
  name: recipe.name,
7077
- icon: componentIcon,
8165
+ icon: itemIcons[id] ?? componentIcon,
7078
8166
  tier: 't1',
7079
8167
  mass: 0,
7080
8168
  itemType: 'entity',
7081
8169
  attributes,
8170
+ moduleSlots,
7082
8171
  };
7083
8172
  }
7084
8173
  function resolveItem(itemId, seed, modules) {
@@ -7092,6 +8181,212 @@ function resolveItem(itemId, seed, modules) {
7092
8181
  return resolveResource(id, seed);
7093
8182
  }
7094
8183
 
8184
+ function readCommonBase(data) {
8185
+ return {
8186
+ quantity: Number(data.quantity),
8187
+ seed: String(data.seed),
8188
+ origin_x: String(data.origin_x),
8189
+ origin_y: String(data.origin_y),
8190
+ };
8191
+ }
8192
+ function deserializeScalar(data, itemId) {
8193
+ const base = readCommonBase(data);
8194
+ return { item_id: itemId, quantity: base.quantity, seed: base.seed };
8195
+ }
8196
+ const deserializeResource = deserializeScalar;
8197
+ const deserializeComponent = deserializeScalar;
8198
+ const deserializeModule = deserializeScalar;
8199
+ function deserializeEntity(data, itemId) {
8200
+ const base = readCommonBase(data);
8201
+ const moduleItems = (data.module_items ?? []).map((v) => Number(v));
8202
+ const moduleSeeds = (data.module_seeds ?? []).map((v) => String(v));
8203
+ const layout = getEntitySlotLayout(itemId);
8204
+ const modules = layout.map((slot, i) => ({
8205
+ type: slot.type,
8206
+ installed: moduleItems[i] && moduleItems[i] !== 0
8207
+ ? { item_id: moduleItems[i], seed: moduleSeeds[i] }
8208
+ : undefined,
8209
+ }));
8210
+ return { item_id: itemId, quantity: base.quantity, seed: base.seed, modules };
8211
+ }
8212
+ function deserializeAsset(data, itemId) {
8213
+ const type = itemTypeCode(itemId);
8214
+ switch (type) {
8215
+ case ITEM_TYPE_RESOURCE:
8216
+ case ITEM_TYPE_COMPONENT:
8217
+ case ITEM_TYPE_MODULE:
8218
+ return deserializeScalar(data, itemId);
8219
+ case ITEM_TYPE_ENTITY:
8220
+ return deserializeEntity(data, itemId);
8221
+ default:
8222
+ throw new Error(`unknown item type ${type} for item ${itemId}`);
8223
+ }
8224
+ }
8225
+
8226
+ function idiv(a, b) {
8227
+ return Math.floor(a / b);
8228
+ }
8229
+ function computeBaseHullmass(seed) {
8230
+ const density = decodeStat(seed, 1);
8231
+ return 25000 + 75 * density;
8232
+ }
8233
+ function computeBaseCapacityShip(seed) {
8234
+ const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
8235
+ return Math.floor(1000000 * Math.pow(10, s / 2997));
8236
+ }
8237
+ function computeBaseCapacityWarehouse(seed) {
8238
+ const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
8239
+ return Math.floor(20000000 * Math.pow(10, s / 2997));
8240
+ }
8241
+ const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
8242
+ const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
8243
+ const computeGeneratorCap = (res) => 300 + idiv(res, 6);
8244
+ const computeGeneratorRech = (clr) => 5 + idiv(clr * 15, 1000);
8245
+ const computeExtractorRate = (str) => 200 + str;
8246
+ const computeExtractorDrain = (con) => Math.max(10, 50 - idiv(con, 20));
8247
+ const computeExtractorDepth = (tol) => 200 + idiv(tol * 3, 2);
8248
+ const computeExtractorDrill = (ref) => 100 + idiv(ref * 4, 5);
8249
+ const computeLoaderMass = (duc) => Math.max(200, 2000 - duc * 2);
8250
+ const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
8251
+ const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
8252
+ const computeCrafterDrain = (clr) => Math.max(5, 30 - idiv(clr, 33));
8253
+ function entityDisplayName(itemId) {
8254
+ switch (itemId) {
8255
+ case ITEM_SHIP_T1_PACKED:
8256
+ return 'Ship T1';
8257
+ case ITEM_WAREHOUSE_T1_PACKED:
8258
+ return 'Warehouse T1';
8259
+ case ITEM_CONTAINER_T1_PACKED:
8260
+ return 'Container T1';
8261
+ case ITEM_CONTAINER_T2_PACKED:
8262
+ return 'Container T2';
8263
+ default:
8264
+ return 'Entity';
8265
+ }
8266
+ }
8267
+ function moduleDisplayName(itemId) {
8268
+ switch (itemId) {
8269
+ case ITEM_ENGINE_T1:
8270
+ return 'Engine T1';
8271
+ case ITEM_GENERATOR_T1:
8272
+ return 'Generator T1';
8273
+ case ITEM_EXTRACTOR_T1:
8274
+ return 'Extractor T1';
8275
+ case ITEM_LOADER_T1:
8276
+ return 'Loader T1';
8277
+ case ITEM_MANUFACTURING_T1:
8278
+ return 'Manufacturing T1';
8279
+ case ITEM_STORAGE_T1:
8280
+ return 'Storage T1';
8281
+ default:
8282
+ return 'Module';
8283
+ }
8284
+ }
8285
+ function formatModuleLine(slot, itemId, seed) {
8286
+ let out = `Slot ${slot} - `;
8287
+ if (itemId === 0) {
8288
+ out += '(empty)';
8289
+ return out;
8290
+ }
8291
+ out += moduleDisplayName(itemId);
8292
+ const subtype = getModuleCapabilityType(itemId);
8293
+ switch (subtype) {
8294
+ case MODULE_ENGINE: {
8295
+ const vol = decodeStat(seed, 0);
8296
+ const thm = decodeStat(seed, 1);
8297
+ out += ` Thrust ${computeEngineThrust(vol)} Drain ${computeEngineDrain(thm)}`;
8298
+ break;
8299
+ }
8300
+ case MODULE_GENERATOR: {
8301
+ const res = decodeStat(seed, 0);
8302
+ const clr = decodeStat(seed, 1);
8303
+ out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(clr)}`;
8304
+ break;
8305
+ }
8306
+ case MODULE_EXTRACTOR: {
8307
+ const str = decodeStat(seed, 0);
8308
+ const tol = decodeStat(seed, 1);
8309
+ const con = decodeStat(seed, 3);
8310
+ const ref = decodeStat(seed, 4);
8311
+ out += ` Rate ${computeExtractorRate(str)} Depth ${computeExtractorDepth(tol)} Drill ${computeExtractorDrill(ref)} Drain ${computeExtractorDrain(con)}`;
8312
+ break;
8313
+ }
8314
+ case MODULE_LOADER: {
8315
+ const duc = decodeStat(seed, 0);
8316
+ const pla = decodeStat(seed, 1);
8317
+ out += ` Mass ${computeLoaderMass(duc)} Thrust ${computeLoaderThrust(pla)}`;
8318
+ break;
8319
+ }
8320
+ case MODULE_CRAFTER: {
8321
+ const rea = decodeStat(seed, 0);
8322
+ const clr = decodeStat(seed, 1);
8323
+ out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(clr)}`;
8324
+ break;
8325
+ }
8326
+ case MODULE_STORAGE: {
8327
+ const str = decodeStat(seed, 0);
8328
+ const duc = decodeStat(seed, 1);
8329
+ const pur = decodeStat(seed, 2);
8330
+ const sum = str + duc + pur;
8331
+ const pct = 10 + idiv(sum * 10, 2997);
8332
+ out += ` +${pct}% capacity`;
8333
+ break;
8334
+ }
8335
+ }
8336
+ return out;
8337
+ }
8338
+ function buildEntityDescription(itemId, hullSeed, moduleItems, moduleSeeds) {
8339
+ const hullMass = computeBaseHullmass(hullSeed);
8340
+ let baseCapacity = 0;
8341
+ if (itemId === ITEM_SHIP_T1_PACKED) {
8342
+ baseCapacity = computeBaseCapacityShip(hullSeed);
8343
+ }
8344
+ else if (itemId === ITEM_WAREHOUSE_T1_PACKED) {
8345
+ baseCapacity = computeBaseCapacityWarehouse(hullSeed);
8346
+ }
8347
+ let out = entityDisplayName(itemId);
8348
+ out += ` - Hull ${hullMass} mass`;
8349
+ if (baseCapacity > 0) {
8350
+ out += ` * ${baseCapacity} capacity`;
8351
+ }
8352
+ out += '\n\n';
8353
+ for (let i = 0; i < moduleItems.length; i++) {
8354
+ out += formatModuleLine(i, moduleItems[i], moduleSeeds[i] ?? 0n);
8355
+ out += '\n';
8356
+ }
8357
+ return out;
8358
+ }
8359
+
8360
+ var index = /*#__PURE__*/Object.freeze({
8361
+ __proto__: null,
8362
+ readCommonBase: readCommonBase,
8363
+ deserializeScalar: deserializeScalar,
8364
+ deserializeResource: deserializeResource,
8365
+ deserializeComponent: deserializeComponent,
8366
+ deserializeModule: deserializeModule,
8367
+ deserializeEntity: deserializeEntity,
8368
+ deserializeAsset: deserializeAsset,
8369
+ computeBaseHullmass: computeBaseHullmass,
8370
+ computeBaseCapacityShip: computeBaseCapacityShip,
8371
+ computeBaseCapacityWarehouse: computeBaseCapacityWarehouse,
8372
+ computeEngineThrust: computeEngineThrust,
8373
+ computeEngineDrain: computeEngineDrain,
8374
+ computeGeneratorCap: computeGeneratorCap,
8375
+ computeGeneratorRech: computeGeneratorRech,
8376
+ computeExtractorRate: computeExtractorRate,
8377
+ computeExtractorDrain: computeExtractorDrain,
8378
+ computeExtractorDepth: computeExtractorDepth,
8379
+ computeExtractorDrill: computeExtractorDrill,
8380
+ computeLoaderMass: computeLoaderMass,
8381
+ computeLoaderThrust: computeLoaderThrust,
8382
+ computeCrafterSpeed: computeCrafterSpeed,
8383
+ computeCrafterDrain: computeCrafterDrain,
8384
+ entityDisplayName: entityDisplayName,
8385
+ moduleDisplayName: moduleDisplayName,
8386
+ formatModuleLine: formatModuleLine,
8387
+ buildEntityDescription: buildEntityDescription
8388
+ });
8389
+
7095
8390
  exports.ActionsManager = ActionsManager;
7096
8391
  exports.BASE_ORBITAL_MASS = BASE_ORBITAL_MASS;
7097
8392
  exports.COMMIT_ALREADY_SET = COMMIT_ALREADY_SET;
@@ -7127,7 +8422,9 @@ exports.INSUFFICIENT_ITEM_SUPPLY = INSUFFICIENT_ITEM_SUPPLY;
7127
8422
  exports.INVALID_AMOUNT = INVALID_AMOUNT;
7128
8423
  exports.ITEM_CARGO_ARM = ITEM_CARGO_ARM;
7129
8424
  exports.ITEM_CARGO_LINING = ITEM_CARGO_LINING;
7130
- exports.ITEM_CONTAINER_PACKED = ITEM_CONTAINER_PACKED;
8425
+ exports.ITEM_CARGO_LINING_T2 = ITEM_CARGO_LINING_T2;
8426
+ exports.ITEM_CONTAINER_T1_PACKED = ITEM_CONTAINER_T1_PACKED;
8427
+ exports.ITEM_CONTAINER_T2_PACKED = ITEM_CONTAINER_T2_PACKED;
7131
8428
  exports.ITEM_DOES_NOT_EXIST = ITEM_DOES_NOT_EXIST;
7132
8429
  exports.ITEM_DRILL_SHAFT = ITEM_DRILL_SHAFT;
7133
8430
  exports.ITEM_ENGINE_T1 = ITEM_ENGINE_T1;
@@ -7135,14 +8432,21 @@ exports.ITEM_EXTRACTION_PROBE = ITEM_EXTRACTION_PROBE;
7135
8432
  exports.ITEM_EXTRACTOR_T1 = ITEM_EXTRACTOR_T1;
7136
8433
  exports.ITEM_GENERATOR_T1 = ITEM_GENERATOR_T1;
7137
8434
  exports.ITEM_HULL_PLATES = ITEM_HULL_PLATES;
8435
+ exports.ITEM_HULL_PLATES_T2 = ITEM_HULL_PLATES_T2;
7138
8436
  exports.ITEM_LOADER_T1 = ITEM_LOADER_T1;
7139
8437
  exports.ITEM_MANUFACTURING_T1 = ITEM_MANUFACTURING_T1;
7140
8438
  exports.ITEM_NOT_AVAILABLE_AT_LOCATION = ITEM_NOT_AVAILABLE_AT_LOCATION;
7141
8439
  exports.ITEM_POWER_CELL = ITEM_POWER_CELL;
7142
8440
  exports.ITEM_REACTION_CHAMBER = ITEM_REACTION_CHAMBER;
7143
8441
  exports.ITEM_SHIP_T1_PACKED = ITEM_SHIP_T1_PACKED;
8442
+ exports.ITEM_STORAGE_T1 = ITEM_STORAGE_T1;
7144
8443
  exports.ITEM_THRUSTER_CORE = ITEM_THRUSTER_CORE;
7145
8444
  exports.ITEM_TOOL_BIT = ITEM_TOOL_BIT;
8445
+ exports.ITEM_TYPE_COMPONENT = ITEM_TYPE_COMPONENT;
8446
+ exports.ITEM_TYPE_ENTITY = ITEM_TYPE_ENTITY;
8447
+ exports.ITEM_TYPE_MODULE = ITEM_TYPE_MODULE;
8448
+ exports.ITEM_TYPE_RESOURCE = ITEM_TYPE_RESOURCE;
8449
+ exports.ITEM_WAREHOUSE_T1_PACKED = ITEM_WAREHOUSE_T1_PACKED;
7146
8450
  exports.InventoryAccessor = InventoryAccessor;
7147
8451
  exports.LOCATION_MAX_DEPTH = LOCATION_MAX_DEPTH;
7148
8452
  exports.LOCATION_MIN_DEPTH = LOCATION_MIN_DEPTH;
@@ -7157,7 +8461,9 @@ exports.MODULE_EXTRACTOR = MODULE_EXTRACTOR;
7157
8461
  exports.MODULE_GENERATOR = MODULE_GENERATOR;
7158
8462
  exports.MODULE_LAUNCHER = MODULE_LAUNCHER;
7159
8463
  exports.MODULE_LOADER = MODULE_LOADER;
8464
+ exports.MODULE_STORAGE = MODULE_STORAGE;
7160
8465
  exports.MODULE_WARP = MODULE_WARP;
8466
+ exports.NFT = index;
7161
8467
  exports.NO_SCHEDULE = NO_SCHEDULE;
7162
8468
  exports.PLANET_SUBTYPE_GAS_GIANT = PLANET_SUBTYPE_GAS_GIANT;
7163
8469
  exports.PLANET_SUBTYPE_ICY = PLANET_SUBTYPE_ICY;
@@ -7205,7 +8511,9 @@ exports.availableCapacity = availableCapacity$1;
7205
8511
  exports.availableCapacityFromMass = availableCapacityFromMass;
7206
8512
  exports.blendCargoStacks = blendCargoStacks;
7207
8513
  exports.blendComponentStacks = blendComponentStacks;
8514
+ exports.blendCrossGroup = blendCrossGroup;
7208
8515
  exports.blendStacks = blendStacks;
8516
+ exports.buildEntityDescription = buildEntityDescription;
7209
8517
  exports.calcCargoMass = calcCargoMass;
7210
8518
  exports.calcEnergyUsage = calcEnergyUsage;
7211
8519
  exports.calcLoadDuration = calcLoadDuration;
@@ -7230,6 +8538,8 @@ exports.calculateLoadTimeBreakdown = calculateLoadTimeBreakdown;
7230
8538
  exports.calculateRefuelingTime = calculateRefuelingTime;
7231
8539
  exports.calculateTransferTime = calculateTransferTime;
7232
8540
  exports.canMove = canMove;
8541
+ exports.capabilityAttributes = capabilityAttributes;
8542
+ exports.capabilityNames = capabilityNames;
7233
8543
  exports.capsHasCrafter = capsHasCrafter;
7234
8544
  exports.capsHasExtractor = capsHasExtractor;
7235
8545
  exports.capsHasLoaders = capsHasLoaders;
@@ -7239,22 +8549,43 @@ exports.capsHasStorage = capsHasStorage;
7239
8549
  exports.cargoUtils = cargoUtils;
7240
8550
  exports.categoryColors = categoryColors;
7241
8551
  exports.categoryIcons = categoryIcons;
8552
+ exports.categoryItemMass = categoryItemMass;
7242
8553
  exports.componentIcon = componentIcon;
7243
8554
  exports.components = components;
8555
+ exports.computeBaseCapacityShip = computeBaseCapacityShip;
8556
+ exports.computeBaseCapacityWarehouse = computeBaseCapacityWarehouse;
8557
+ exports.computeBaseHullmass = computeBaseHullmass;
7244
8558
  exports.computeComponentStats = computeComponentStats;
7245
8559
  exports.computeContainerCapabilities = computeContainerCapabilities;
8560
+ exports.computeContainerT2Capabilities = computeContainerT2Capabilities;
8561
+ exports.computeCrafterDrain = computeCrafterDrain;
8562
+ exports.computeCrafterSpeed = computeCrafterSpeed;
7246
8563
  exports.computeEngineCapabilities = computeEngineCapabilities;
8564
+ exports.computeEngineDrain = computeEngineDrain;
8565
+ exports.computeEngineThrust = computeEngineThrust;
7247
8566
  exports.computeEntityStats = computeEntityStats;
7248
8567
  exports.computeExtractorCapabilities = computeExtractorCapabilities;
8568
+ exports.computeExtractorDepth = computeExtractorDepth;
8569
+ exports.computeExtractorDrain = computeExtractorDrain;
8570
+ exports.computeExtractorDrill = computeExtractorDrill;
8571
+ exports.computeExtractorRate = computeExtractorRate;
8572
+ exports.computeGeneratorCap = computeGeneratorCap;
7249
8573
  exports.computeGeneratorCapabilities = computeGeneratorCapabilities;
8574
+ exports.computeGeneratorRech = computeGeneratorRech;
8575
+ exports.computeInputMass = computeInputMass;
7250
8576
  exports.computeLoaderCapabilities = computeLoaderCapabilities;
8577
+ exports.computeLoaderMass = computeLoaderMass;
8578
+ exports.computeLoaderThrust = computeLoaderThrust;
7251
8579
  exports.computeManufacturingCapabilities = computeManufacturingCapabilities;
7252
8580
  exports.computeShipHullCapabilities = computeShipHullCapabilities;
8581
+ exports.computeStorageCapabilities = computeStorageCapabilities;
8582
+ exports.computeWarehouseHullCapabilities = computeWarehouseHullCapabilities;
7253
8583
  exports.coordsToLocationId = coordsToLocationId;
7254
8584
  exports.createInventoryAccessor = createInventoryAccessor;
7255
8585
  exports.createProjectedEntity = createProjectedEntity;
7256
8586
  exports.createScheduleAccessor = createScheduleAccessor;
7257
8587
  exports.decodeCraftedItemStats = decodeCraftedItemStats;
8588
+ exports.decodeStat = decodeStat;
7258
8589
  exports.decodeStats = decodeStats;
7259
8590
  exports["default"] = Shipload;
7260
8591
  exports.depthScaleFactor = depthScaleFactor;
@@ -7264,15 +8595,24 @@ exports.deriveLocationSize = deriveLocationSize;
7264
8595
  exports.deriveLocationStatic = deriveLocationStatic;
7265
8596
  exports.deriveResourceStats = deriveResourceStats;
7266
8597
  exports.deriveStratum = deriveStratum;
8598
+ exports.deserializeAsset = deserializeAsset;
8599
+ exports.deserializeComponent = deserializeComponent;
8600
+ exports.deserializeEntity = deserializeEntity;
8601
+ exports.deserializeModule = deserializeModule;
8602
+ exports.deserializeResource = deserializeResource;
7267
8603
  exports.distanceBetweenCoordinates = distanceBetweenCoordinates;
7268
8604
  exports.distanceBetweenPoints = distanceBetweenPoints;
7269
8605
  exports.encodeStats = encodeStats;
7270
8606
  exports.energyPercent = energyPercent;
8607
+ exports.entityDisplayName = entityDisplayName;
7271
8608
  exports.entityRecipes = entityRecipes;
7272
8609
  exports.estimateDealTravelTime = estimateDealTravelTime;
7273
8610
  exports.estimateTravelTime = estimateTravelTime;
7274
8611
  exports.findNearbyPlanets = findNearbyPlanets;
8612
+ exports.formatModuleLine = formatModuleLine;
7275
8613
  exports.getAllCraftableItems = getAllCraftableItems;
8614
+ exports.getCapabilityAttributes = getCapabilityAttributes;
8615
+ exports.getCategoryInfo = getCategoryInfo;
7276
8616
  exports.getComponentById = getComponentById;
7277
8617
  exports.getComponentsForCategory = getComponentsForCategory;
7278
8618
  exports.getComponentsForStat = getComponentsForStat;
@@ -7282,6 +8622,7 @@ exports.getDestinationLocation = getDestinationLocation;
7282
8622
  exports.getEligibleResources = getEligibleResources;
7283
8623
  exports.getEntityRecipe = getEntityRecipe;
7284
8624
  exports.getEntityRecipeByItemId = getEntityRecipeByItemId;
8625
+ exports.getEntitySlotLayout = getEntitySlotLayout;
7285
8626
  exports.getEpochInfo = getEpochInfo;
7286
8627
  exports.getFlightOrigin = getFlightOrigin;
7287
8628
  exports.getItem = getItem;
@@ -7291,10 +8632,15 @@ exports.getLocationType = getLocationType;
7291
8632
  exports.getModuleCapabilityType = getModuleCapabilityType;
7292
8633
  exports.getModuleRecipe = getModuleRecipe;
7293
8634
  exports.getModuleRecipeByItemId = getModuleRecipeByItemId;
8635
+ exports.getPlanetSubtype = getPlanetSubtype;
8636
+ exports.getPlanetSubtypes = getPlanetSubtypes;
7294
8637
  exports.getPositionAt = getPositionAt;
7295
8638
  exports.getResourceTier = getResourceTier;
7296
8639
  exports.getResourceWeight = getResourceWeight;
7297
8640
  exports.getStatDefinitions = getStatDefinitions;
8641
+ exports.getStatMappings = getStatMappings;
8642
+ exports.getStatMappingsForCapability = getStatMappingsForCapability;
8643
+ exports.getStatMappingsForStat = getStatMappingsForStat;
7298
8644
  exports.getStatName = getStatName;
7299
8645
  exports.getSystemName = getSystemName;
7300
8646
  exports.hasEnergy = hasEnergy;
@@ -7309,26 +8655,37 @@ exports.hasStorage = hasStorage;
7309
8655
  exports.hasSystem = hasSystem;
7310
8656
  exports.hash = hash;
7311
8657
  exports.hash512 = hash512;
8658
+ exports.isCraftedItem = isCraftedItem;
7312
8659
  exports.isExtractableLocation = isExtractableLocation;
7313
8660
  exports.isFull = isFull$1;
7314
8661
  exports.isFullFromMass = isFullFromMass;
8662
+ exports.isInvertedAttribute = isInvertedAttribute;
7315
8663
  exports.isModuleItem = isModuleItem;
8664
+ exports.isRelatedItem = isRelatedItem;
8665
+ exports.itemCategory = itemCategory;
8666
+ exports.itemIcons = itemIcons;
7316
8667
  exports.itemIds = itemIds;
8668
+ exports.itemOffset = itemOffset;
8669
+ exports.itemTier = itemTier;
8670
+ exports.itemTypeCode = itemTypeCode;
7317
8671
  exports.lerp = lerp;
7318
8672
  exports.makeContainer = makeContainer;
7319
8673
  exports.makeShip = makeShip;
7320
8674
  exports.makeWarehouse = makeWarehouse;
7321
8675
  exports.maxTravelDistance = maxTravelDistance;
7322
8676
  exports.moduleAccepts = moduleAccepts;
8677
+ exports.moduleDisplayName = moduleDisplayName;
7323
8678
  exports.moduleIcon = moduleIcon;
7324
8679
  exports.moduleRecipes = moduleRecipes;
7325
8680
  exports.needsRecharge = needsRecharge;
7326
8681
  exports.projectEntity = projectEntity;
7327
8682
  exports.projectEntityAt = projectEntityAt;
8683
+ exports.readCommonBase = readCommonBase;
7328
8684
  exports.resolveItem = resolveItem;
7329
8685
  exports.resolveStats = resolveStats;
7330
8686
  exports.rotation = rotation;
7331
8687
  exports.schedule = schedule;
8688
+ exports.statMappings = statMappings;
7332
8689
  exports.tierColors = tierColors;
7333
8690
  exports.toLocation = toLocation;
7334
8691
  //# sourceMappingURL=shipload.js.map