@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.d.ts +415 -38
- package/lib/shipload.js +1433 -76
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +1372 -77
- package/lib/shipload.m.js.map +1 -1
- package/package.json +6 -5
- package/src/capabilities/modules.ts +9 -5
- package/src/contracts/server.ts +279 -22
- package/src/data/capabilities.ts +372 -0
- package/src/data/categories.ts +57 -0
- package/src/data/colors.ts +25 -1
- package/src/data/locations.ts +53 -0
- package/src/data/recipes.ts +141 -26
- package/src/data/tiers.ts +41 -0
- package/src/derivation/crafting.ts +58 -1
- package/src/entities/container.ts +18 -0
- package/src/entities/makers.ts +6 -4
- package/src/entities/ship-deploy.ts +34 -1
- package/src/entities/warehouse.ts +7 -1
- package/src/index-module.ts +73 -4
- package/src/nft/description.ts +173 -0
- package/src/nft/deserializers.ts +81 -0
- package/src/nft/index.ts +2 -0
- package/src/resolution/resolve-item.ts +39 -10
- package/src/travel/travel.ts +17 -8
- package/src/types/entity.ts +1 -1
- package/src/types.ts +6 -6
package/lib/shipload.m.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import { Blob, ABI, Struct, Name, UInt64, Checksum256, UInt32, TimePointSec, UInt8, UInt16, TimePoint,
|
|
2
|
+
import { Blob, ABI, Struct, Name, UInt64, Checksum256, UInt32, TimePointSec, UInt8, Int64, UInt16, TimePoint, Bytes, Int32, Checksum512, APIClient } from '@wharfkit/antelope';
|
|
3
3
|
import ContractKit, { Contract as Contract$2 } from '@wharfkit/contract';
|
|
4
4
|
|
|
5
5
|
const abiBlob$1 = Blob.from('DmVvc2lvOjphYmkvMS4yAA0KY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/C2NvbXBhbnlfcm93AAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nBmVuYWJsZQABB2VuYWJsZWQEYm9vbAplbmFibGVnYW1lAAIIY29udHJhY3QEbmFtZQdlbmFibGVkBGJvb2wMZm91bmRjb21wYW55AAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nC2dhbWVfY29uZmlnAAQEc2VlZAtjaGVja3N1bTI1NgllcG9jaHRpbWUGdWludDMyBXN0YXJ0DnRpbWVfcG9pbnRfc2VjA2VuZA50aW1lX3BvaW50X3NlYwlnYW1lX21ldGEABARuYW1lBnN0cmluZwtkZXNjcmlwdGlvbgZzdHJpbmcDdXJsBnN0cmluZwd2ZXJzaW9uBnN0cmluZwhnYW1lX3JvdwAECGNvbnRyYWN0BG5hbWUGY29uZmlnC2dhbWVfY29uZmlnBG1ldGEJZ2FtZV9tZXRhBXN0YXRlCmdhbWVfc3RhdGUKZ2FtZV9zdGF0ZQABB2VuYWJsZWQEYm9vbAlzdGFydGdhbWUABAhjb250cmFjdARuYW1lBmNvbmZpZwtnYW1lX2NvbmZpZwRtZXRhCWdhbWVfbWV0YQVzdGF0ZQpnYW1lX3N0YXRlCXN0YXRlX3JvdwABB2VuYWJsZWQEYm9vbAp1cGRhdGVnYW1lAAIIY29udHJhY3QEbmFtZQRtZXRhCWdhbWVfbWV0YQR3aXBlAAAHAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAACoeMxUBmVuYWJsZfMBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnRW5hYmxlL2Rpc2FibGUgcGxhdGZvcm0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGUgcGxhdGZvcm0gY29udHJhY3QuAICShql4zFQKZW5hYmxlZ2FtZfwBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZWdhbWUKc3VtbWFyeTogJ0VuYWJsZS9kaXNiYWJsZSBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGUgc3BlY2lmaWVkIGdhbWUgY29udHJhY3Qu4KepkqI0NV0MZm91bmRjb21wYW55gwItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZm91bmRjb21wYW55CnN1bW1hcnk6ICdGb3VuZCBhIG5ldyBjb21wYW55JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKRm91bmQgYSBuZXcgY29tcGFueSBpbiB0aGUgU2hpcGxvYWQgcGxhdGZvcm0gY29udHJhY3QuAABQ0rB8TcYJc3RhcnRnYW1l/wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3RhcnRnYW1lCnN1bW1hcnk6ICdTdGFydCBhIG5ldyBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKU3RhcnQgYSBuZXcgZ2FtZSBvZiBTaGlwbG9hZCBkZXBsb3llZCB0byBhIG5ldyBjb250cmFjdC4AgJKGqWxS1Qp1cGRhdGVnYW1ljQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlZ2FtZQpzdW1tYXJ5OiAnVXBkYXRlIGdhbWUgaW5mb3JtYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpVcGRhdGUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzcGVjaWZpZWQgZ2FtZSBjb250cmFjdC4KCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0DAAAAwE9TJUUDaTY0AAALY29tcGFueV9yb3cAAAAAAKykYQNpNjQAAAhnYW1lX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwETU2hpcGxvYWQgKFBsYXRmb3JtKRNTaGlwbG9hZCAoUGxhdGZvcm0pAAAAAA==');
|
|
@@ -205,7 +205,7 @@ var platform = /*#__PURE__*/Object.freeze({
|
|
|
205
205
|
Contract: Contract$1
|
|
206
206
|
});
|
|
207
207
|
|
|
208
|
-
const abiBlob = 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==');
|
|
208
|
+
const abiBlob = 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==');
|
|
209
209
|
const abi = ABI.from(abiBlob);
|
|
210
210
|
var Types;
|
|
211
211
|
(function (Types) {
|
|
@@ -230,6 +230,21 @@ var Types;
|
|
|
230
230
|
Struct.type('addmodule')
|
|
231
231
|
], addmodule);
|
|
232
232
|
Types.addmodule = addmodule;
|
|
233
|
+
let addnexus = class addnexus extends Struct {
|
|
234
|
+
};
|
|
235
|
+
__decorate([
|
|
236
|
+
Struct.field('string')
|
|
237
|
+
], addnexus.prototype, "nexus_name", void 0);
|
|
238
|
+
__decorate([
|
|
239
|
+
Struct.field(Int64)
|
|
240
|
+
], addnexus.prototype, "x", void 0);
|
|
241
|
+
__decorate([
|
|
242
|
+
Struct.field(Int64)
|
|
243
|
+
], addnexus.prototype, "y", void 0);
|
|
244
|
+
addnexus = __decorate([
|
|
245
|
+
Struct.type('addnexus')
|
|
246
|
+
], addnexus);
|
|
247
|
+
Types.addnexus = addnexus;
|
|
233
248
|
let advance = class advance extends Struct {
|
|
234
249
|
};
|
|
235
250
|
__decorate([
|
|
@@ -410,21 +425,6 @@ var Types;
|
|
|
410
425
|
Struct.type('commit')
|
|
411
426
|
], commit);
|
|
412
427
|
Types.commit = commit;
|
|
413
|
-
let loader_stats = class loader_stats extends Struct {
|
|
414
|
-
};
|
|
415
|
-
__decorate([
|
|
416
|
-
Struct.field(UInt32)
|
|
417
|
-
], loader_stats.prototype, "mass", void 0);
|
|
418
|
-
__decorate([
|
|
419
|
-
Struct.field(UInt16)
|
|
420
|
-
], loader_stats.prototype, "thrust", void 0);
|
|
421
|
-
__decorate([
|
|
422
|
-
Struct.field(UInt8)
|
|
423
|
-
], loader_stats.prototype, "quantity", void 0);
|
|
424
|
-
loader_stats = __decorate([
|
|
425
|
-
Struct.type('loader_stats')
|
|
426
|
-
], loader_stats);
|
|
427
|
-
Types.loader_stats = loader_stats;
|
|
428
428
|
let entity_defaults = class entity_defaults extends Struct {
|
|
429
429
|
};
|
|
430
430
|
__decorate([
|
|
@@ -433,9 +433,6 @@ var Types;
|
|
|
433
433
|
__decorate([
|
|
434
434
|
Struct.field(UInt16)
|
|
435
435
|
], entity_defaults.prototype, "warehouse_z", void 0);
|
|
436
|
-
__decorate([
|
|
437
|
-
Struct.field(loader_stats)
|
|
438
|
-
], entity_defaults.prototype, "warehouse_loaders", void 0);
|
|
439
436
|
__decorate([
|
|
440
437
|
Struct.field(UInt32)
|
|
441
438
|
], entity_defaults.prototype, "container_hullmass", void 0);
|
|
@@ -457,6 +454,15 @@ var Types;
|
|
|
457
454
|
__decorate([
|
|
458
455
|
Struct.field(UInt32)
|
|
459
456
|
], item_def.prototype, "mass", void 0);
|
|
457
|
+
__decorate([
|
|
458
|
+
Struct.field(UInt8)
|
|
459
|
+
], item_def.prototype, "type", void 0);
|
|
460
|
+
__decorate([
|
|
461
|
+
Struct.field(UInt8)
|
|
462
|
+
], item_def.prototype, "subtype", void 0);
|
|
463
|
+
__decorate([
|
|
464
|
+
Struct.field(UInt8)
|
|
465
|
+
], item_def.prototype, "tier", void 0);
|
|
460
466
|
item_def = __decorate([
|
|
461
467
|
Struct.type('item_def')
|
|
462
468
|
], item_def);
|
|
@@ -680,6 +686,21 @@ var Types;
|
|
|
680
686
|
Struct.type('entity_current_state')
|
|
681
687
|
], entity_current_state);
|
|
682
688
|
Types.entity_current_state = entity_current_state;
|
|
689
|
+
let loader_stats = class loader_stats extends Struct {
|
|
690
|
+
};
|
|
691
|
+
__decorate([
|
|
692
|
+
Struct.field(UInt32)
|
|
693
|
+
], loader_stats.prototype, "mass", void 0);
|
|
694
|
+
__decorate([
|
|
695
|
+
Struct.field(UInt16)
|
|
696
|
+
], loader_stats.prototype, "thrust", void 0);
|
|
697
|
+
__decorate([
|
|
698
|
+
Struct.field(UInt8)
|
|
699
|
+
], loader_stats.prototype, "quantity", void 0);
|
|
700
|
+
loader_stats = __decorate([
|
|
701
|
+
Struct.type('loader_stats')
|
|
702
|
+
], loader_stats);
|
|
703
|
+
Types.loader_stats = loader_stats;
|
|
683
704
|
let movement_stats = class movement_stats extends Struct {
|
|
684
705
|
};
|
|
685
706
|
__decorate([
|
|
@@ -902,6 +923,12 @@ var Types;
|
|
|
902
923
|
Struct.type('getentity')
|
|
903
924
|
], getentity);
|
|
904
925
|
Types.getentity = getentity;
|
|
926
|
+
let getitemdata = class getitemdata extends Struct {
|
|
927
|
+
};
|
|
928
|
+
getitemdata = __decorate([
|
|
929
|
+
Struct.type('getitemdata')
|
|
930
|
+
], getitemdata);
|
|
931
|
+
Types.getitemdata = getitemdata;
|
|
905
932
|
let getitems = class getitems extends Struct {
|
|
906
933
|
};
|
|
907
934
|
getitems = __decorate([
|
|
@@ -932,6 +959,12 @@ var Types;
|
|
|
932
959
|
Struct.type('getlocdata')
|
|
933
960
|
], getlocdata);
|
|
934
961
|
Types.getlocdata = getlocdata;
|
|
962
|
+
let getmodules = class getmodules extends Struct {
|
|
963
|
+
};
|
|
964
|
+
getmodules = __decorate([
|
|
965
|
+
Struct.type('getmodules')
|
|
966
|
+
], getmodules);
|
|
967
|
+
Types.getmodules = getmodules;
|
|
935
968
|
let getnearby = class getnearby extends Struct {
|
|
936
969
|
};
|
|
937
970
|
__decorate([
|
|
@@ -947,6 +980,12 @@ var Types;
|
|
|
947
980
|
Struct.type('getnearby')
|
|
948
981
|
], getnearby);
|
|
949
982
|
Types.getnearby = getnearby;
|
|
983
|
+
let getnftinfo = class getnftinfo extends Struct {
|
|
984
|
+
};
|
|
985
|
+
getnftinfo = __decorate([
|
|
986
|
+
Struct.type('getnftinfo')
|
|
987
|
+
], getnftinfo);
|
|
988
|
+
Types.getnftinfo = getnftinfo;
|
|
950
989
|
let getplayer = class getplayer extends Struct {
|
|
951
990
|
};
|
|
952
991
|
__decorate([
|
|
@@ -956,6 +995,33 @@ var Types;
|
|
|
956
995
|
Struct.type('getplayer')
|
|
957
996
|
], getplayer);
|
|
958
997
|
Types.getplayer = getplayer;
|
|
998
|
+
let getrecipe = class getrecipe extends Struct {
|
|
999
|
+
};
|
|
1000
|
+
__decorate([
|
|
1001
|
+
Struct.field(UInt16)
|
|
1002
|
+
], getrecipe.prototype, "output_item_id", void 0);
|
|
1003
|
+
getrecipe = __decorate([
|
|
1004
|
+
Struct.type('getrecipe')
|
|
1005
|
+
], getrecipe);
|
|
1006
|
+
Types.getrecipe = getrecipe;
|
|
1007
|
+
let getrecipes = class getrecipes extends Struct {
|
|
1008
|
+
};
|
|
1009
|
+
__decorate([
|
|
1010
|
+
Struct.field(UInt16)
|
|
1011
|
+
], getrecipes.prototype, "lower_bound", void 0);
|
|
1012
|
+
__decorate([
|
|
1013
|
+
Struct.field(UInt8)
|
|
1014
|
+
], getrecipes.prototype, "limit", void 0);
|
|
1015
|
+
getrecipes = __decorate([
|
|
1016
|
+
Struct.type('getrecipes')
|
|
1017
|
+
], getrecipes);
|
|
1018
|
+
Types.getrecipes = getrecipes;
|
|
1019
|
+
let getresources = class getresources extends Struct {
|
|
1020
|
+
};
|
|
1021
|
+
getresources = __decorate([
|
|
1022
|
+
Struct.type('getresources')
|
|
1023
|
+
], getresources);
|
|
1024
|
+
Types.getresources = getresources;
|
|
959
1025
|
let getstratum = class getstratum extends Struct {
|
|
960
1026
|
};
|
|
961
1027
|
__decorate([
|
|
@@ -1028,6 +1094,102 @@ var Types;
|
|
|
1028
1094
|
Struct.type('init')
|
|
1029
1095
|
], init);
|
|
1030
1096
|
Types.init = init;
|
|
1097
|
+
let recipe_input = class recipe_input extends Struct {
|
|
1098
|
+
};
|
|
1099
|
+
__decorate([
|
|
1100
|
+
Struct.field(UInt16)
|
|
1101
|
+
], recipe_input.prototype, "item_id", void 0);
|
|
1102
|
+
__decorate([
|
|
1103
|
+
Struct.field(UInt8)
|
|
1104
|
+
], recipe_input.prototype, "category", void 0);
|
|
1105
|
+
__decorate([
|
|
1106
|
+
Struct.field(UInt32)
|
|
1107
|
+
], recipe_input.prototype, "quantity", void 0);
|
|
1108
|
+
recipe_input = __decorate([
|
|
1109
|
+
Struct.type('recipe_input')
|
|
1110
|
+
], recipe_input);
|
|
1111
|
+
Types.recipe_input = recipe_input;
|
|
1112
|
+
let stat_source = class stat_source extends Struct {
|
|
1113
|
+
};
|
|
1114
|
+
__decorate([
|
|
1115
|
+
Struct.field(UInt8)
|
|
1116
|
+
], stat_source.prototype, "input_index", void 0);
|
|
1117
|
+
__decorate([
|
|
1118
|
+
Struct.field(UInt8)
|
|
1119
|
+
], stat_source.prototype, "input_stat_index", void 0);
|
|
1120
|
+
stat_source = __decorate([
|
|
1121
|
+
Struct.type('stat_source')
|
|
1122
|
+
], stat_source);
|
|
1123
|
+
Types.stat_source = stat_source;
|
|
1124
|
+
let stat_slot_response = class stat_slot_response extends Struct {
|
|
1125
|
+
};
|
|
1126
|
+
__decorate([
|
|
1127
|
+
Struct.field(stat_source, { array: true })
|
|
1128
|
+
], stat_slot_response.prototype, "sources", void 0);
|
|
1129
|
+
stat_slot_response = __decorate([
|
|
1130
|
+
Struct.type('stat_slot_response')
|
|
1131
|
+
], stat_slot_response);
|
|
1132
|
+
Types.stat_slot_response = stat_slot_response;
|
|
1133
|
+
let recipe_item_info = class recipe_item_info extends Struct {
|
|
1134
|
+
};
|
|
1135
|
+
__decorate([
|
|
1136
|
+
Struct.field(UInt16)
|
|
1137
|
+
], recipe_item_info.prototype, "id", void 0);
|
|
1138
|
+
__decorate([
|
|
1139
|
+
Struct.field(UInt32)
|
|
1140
|
+
], recipe_item_info.prototype, "mass", void 0);
|
|
1141
|
+
recipe_item_info = __decorate([
|
|
1142
|
+
Struct.type('recipe_item_info')
|
|
1143
|
+
], recipe_item_info);
|
|
1144
|
+
Types.recipe_item_info = recipe_item_info;
|
|
1145
|
+
let recipe_response = class recipe_response extends Struct {
|
|
1146
|
+
};
|
|
1147
|
+
__decorate([
|
|
1148
|
+
Struct.field(UInt16)
|
|
1149
|
+
], recipe_response.prototype, "output_item_id", void 0);
|
|
1150
|
+
__decorate([
|
|
1151
|
+
Struct.field(UInt32)
|
|
1152
|
+
], recipe_response.prototype, "output_mass", void 0);
|
|
1153
|
+
__decorate([
|
|
1154
|
+
Struct.field(recipe_input, { array: true })
|
|
1155
|
+
], recipe_response.prototype, "inputs", void 0);
|
|
1156
|
+
__decorate([
|
|
1157
|
+
Struct.field(stat_slot_response, { array: true })
|
|
1158
|
+
], recipe_response.prototype, "stat_slots", void 0);
|
|
1159
|
+
__decorate([
|
|
1160
|
+
Struct.field(Bytes)
|
|
1161
|
+
], recipe_response.prototype, "blend_weights", void 0);
|
|
1162
|
+
__decorate([
|
|
1163
|
+
Struct.field(recipe_item_info)
|
|
1164
|
+
], recipe_response.prototype, "output_item", void 0);
|
|
1165
|
+
__decorate([
|
|
1166
|
+
Struct.field(recipe_item_info, { array: true })
|
|
1167
|
+
], recipe_response.prototype, "input_items", void 0);
|
|
1168
|
+
recipe_response = __decorate([
|
|
1169
|
+
Struct.type('recipe_response')
|
|
1170
|
+
], recipe_response);
|
|
1171
|
+
Types.recipe_response = recipe_response;
|
|
1172
|
+
let recipes_result = class recipes_result extends Struct {
|
|
1173
|
+
};
|
|
1174
|
+
__decorate([
|
|
1175
|
+
Struct.field(recipe_response, { array: true })
|
|
1176
|
+
], recipes_result.prototype, "recipes", void 0);
|
|
1177
|
+
recipes_result = __decorate([
|
|
1178
|
+
Struct.type('recipes_result')
|
|
1179
|
+
], recipes_result);
|
|
1180
|
+
Types.recipes_result = recipes_result;
|
|
1181
|
+
let itemdata_result = class itemdata_result extends Struct {
|
|
1182
|
+
};
|
|
1183
|
+
__decorate([
|
|
1184
|
+
Struct.field(item_def, { array: true })
|
|
1185
|
+
], itemdata_result.prototype, "items", void 0);
|
|
1186
|
+
__decorate([
|
|
1187
|
+
Struct.field(recipes_result)
|
|
1188
|
+
], itemdata_result.prototype, "recipes", void 0);
|
|
1189
|
+
itemdata_result = __decorate([
|
|
1190
|
+
Struct.type('itemdata_result')
|
|
1191
|
+
], itemdata_result);
|
|
1192
|
+
Types.itemdata_result = itemdata_result;
|
|
1031
1193
|
let items_info = class items_info extends Struct {
|
|
1032
1194
|
};
|
|
1033
1195
|
__decorate([
|
|
@@ -1133,6 +1295,33 @@ var Types;
|
|
|
1133
1295
|
Struct.type('location_row')
|
|
1134
1296
|
], location_row);
|
|
1135
1297
|
Types.location_row = location_row;
|
|
1298
|
+
let module_info = class module_info extends Struct {
|
|
1299
|
+
};
|
|
1300
|
+
__decorate([
|
|
1301
|
+
Struct.field(UInt16)
|
|
1302
|
+
], module_info.prototype, "id", void 0);
|
|
1303
|
+
__decorate([
|
|
1304
|
+
Struct.field(UInt32)
|
|
1305
|
+
], module_info.prototype, "mass", void 0);
|
|
1306
|
+
__decorate([
|
|
1307
|
+
Struct.field(UInt8)
|
|
1308
|
+
], module_info.prototype, "module_type", void 0);
|
|
1309
|
+
__decorate([
|
|
1310
|
+
Struct.field(UInt8)
|
|
1311
|
+
], module_info.prototype, "tier", void 0);
|
|
1312
|
+
module_info = __decorate([
|
|
1313
|
+
Struct.type('module_info')
|
|
1314
|
+
], module_info);
|
|
1315
|
+
Types.module_info = module_info;
|
|
1316
|
+
let modules_result = class modules_result extends Struct {
|
|
1317
|
+
};
|
|
1318
|
+
__decorate([
|
|
1319
|
+
Struct.field(module_info, { array: true })
|
|
1320
|
+
], modules_result.prototype, "modules", void 0);
|
|
1321
|
+
modules_result = __decorate([
|
|
1322
|
+
Struct.type('modules_result')
|
|
1323
|
+
], modules_result);
|
|
1324
|
+
Types.modules_result = modules_result;
|
|
1136
1325
|
let nearby_system = class nearby_system extends Struct {
|
|
1137
1326
|
};
|
|
1138
1327
|
__decorate([
|
|
@@ -1172,6 +1361,87 @@ var Types;
|
|
|
1172
1361
|
Struct.type('nearby_info')
|
|
1173
1362
|
], nearby_info);
|
|
1174
1363
|
Types.nearby_info = nearby_info;
|
|
1364
|
+
let nexus_row = class nexus_row extends Struct {
|
|
1365
|
+
};
|
|
1366
|
+
__decorate([
|
|
1367
|
+
Struct.field(UInt64)
|
|
1368
|
+
], nexus_row.prototype, "id", void 0);
|
|
1369
|
+
__decorate([
|
|
1370
|
+
Struct.field(Name)
|
|
1371
|
+
], nexus_row.prototype, "owner", void 0);
|
|
1372
|
+
__decorate([
|
|
1373
|
+
Struct.field('string')
|
|
1374
|
+
], nexus_row.prototype, "name", void 0);
|
|
1375
|
+
__decorate([
|
|
1376
|
+
Struct.field(coordinates)
|
|
1377
|
+
], nexus_row.prototype, "coordinates", void 0);
|
|
1378
|
+
nexus_row = __decorate([
|
|
1379
|
+
Struct.type('nexus_row')
|
|
1380
|
+
], nexus_row);
|
|
1381
|
+
Types.nexus_row = nexus_row;
|
|
1382
|
+
let schema_field = class schema_field extends Struct {
|
|
1383
|
+
};
|
|
1384
|
+
__decorate([
|
|
1385
|
+
Struct.field('string')
|
|
1386
|
+
], schema_field.prototype, "name", void 0);
|
|
1387
|
+
__decorate([
|
|
1388
|
+
Struct.field('string')
|
|
1389
|
+
], schema_field.prototype, "field_type", void 0);
|
|
1390
|
+
schema_field = __decorate([
|
|
1391
|
+
Struct.type('schema_field')
|
|
1392
|
+
], schema_field);
|
|
1393
|
+
Types.schema_field = schema_field;
|
|
1394
|
+
let nft_schema_def = class nft_schema_def extends Struct {
|
|
1395
|
+
};
|
|
1396
|
+
__decorate([
|
|
1397
|
+
Struct.field(Name)
|
|
1398
|
+
], nft_schema_def.prototype, "schema_name", void 0);
|
|
1399
|
+
__decorate([
|
|
1400
|
+
Struct.field(schema_field, { array: true })
|
|
1401
|
+
], nft_schema_def.prototype, "fields", void 0);
|
|
1402
|
+
nft_schema_def = __decorate([
|
|
1403
|
+
Struct.type('nft_schema_def')
|
|
1404
|
+
], nft_schema_def);
|
|
1405
|
+
Types.nft_schema_def = nft_schema_def;
|
|
1406
|
+
let nft_template_def = class nft_template_def extends Struct {
|
|
1407
|
+
};
|
|
1408
|
+
__decorate([
|
|
1409
|
+
Struct.field(UInt16)
|
|
1410
|
+
], nft_template_def.prototype, "item_id", void 0);
|
|
1411
|
+
__decorate([
|
|
1412
|
+
Struct.field(Name)
|
|
1413
|
+
], nft_template_def.prototype, "schema_name", void 0);
|
|
1414
|
+
nft_template_def = __decorate([
|
|
1415
|
+
Struct.type('nft_template_def')
|
|
1416
|
+
], nft_template_def);
|
|
1417
|
+
Types.nft_template_def = nft_template_def;
|
|
1418
|
+
let nftconfig_row = class nftconfig_row extends Struct {
|
|
1419
|
+
};
|
|
1420
|
+
__decorate([
|
|
1421
|
+
Struct.field(UInt16)
|
|
1422
|
+
], nftconfig_row.prototype, "item_id", void 0);
|
|
1423
|
+
__decorate([
|
|
1424
|
+
Struct.field(Int32)
|
|
1425
|
+
], nftconfig_row.prototype, "template_id", void 0);
|
|
1426
|
+
__decorate([
|
|
1427
|
+
Struct.field(Name)
|
|
1428
|
+
], nftconfig_row.prototype, "schema_name", void 0);
|
|
1429
|
+
nftconfig_row = __decorate([
|
|
1430
|
+
Struct.type('nftconfig_row')
|
|
1431
|
+
], nftconfig_row);
|
|
1432
|
+
Types.nftconfig_row = nftconfig_row;
|
|
1433
|
+
let nftinfo_result = class nftinfo_result extends Struct {
|
|
1434
|
+
};
|
|
1435
|
+
__decorate([
|
|
1436
|
+
Struct.field(nft_schema_def, { array: true })
|
|
1437
|
+
], nftinfo_result.prototype, "schemas", void 0);
|
|
1438
|
+
__decorate([
|
|
1439
|
+
Struct.field(nft_template_def, { array: true })
|
|
1440
|
+
], nftinfo_result.prototype, "templates", void 0);
|
|
1441
|
+
nftinfo_result = __decorate([
|
|
1442
|
+
Struct.type('nftinfo_result')
|
|
1443
|
+
], nftinfo_result);
|
|
1444
|
+
Types.nftinfo_result = nftinfo_result;
|
|
1175
1445
|
let task_event = class task_event extends Struct {
|
|
1176
1446
|
};
|
|
1177
1447
|
__decorate([
|
|
@@ -1310,6 +1580,24 @@ var Types;
|
|
|
1310
1580
|
Struct.type('resolve_results')
|
|
1311
1581
|
], resolve_results);
|
|
1312
1582
|
Types.resolve_results = resolve_results;
|
|
1583
|
+
let resource_info = class resource_info extends Struct {
|
|
1584
|
+
};
|
|
1585
|
+
__decorate([
|
|
1586
|
+
Struct.field(UInt16)
|
|
1587
|
+
], resource_info.prototype, "id", void 0);
|
|
1588
|
+
__decorate([
|
|
1589
|
+
Struct.field(UInt32)
|
|
1590
|
+
], resource_info.prototype, "mass", void 0);
|
|
1591
|
+
__decorate([
|
|
1592
|
+
Struct.field(UInt8)
|
|
1593
|
+
], resource_info.prototype, "category", void 0);
|
|
1594
|
+
__decorate([
|
|
1595
|
+
Struct.field(UInt8)
|
|
1596
|
+
], resource_info.prototype, "tier", void 0);
|
|
1597
|
+
resource_info = __decorate([
|
|
1598
|
+
Struct.type('resource_info')
|
|
1599
|
+
], resource_info);
|
|
1600
|
+
Types.resource_info = resource_info;
|
|
1313
1601
|
let resource_stats = class resource_stats extends Struct {
|
|
1314
1602
|
};
|
|
1315
1603
|
__decorate([
|
|
@@ -1325,6 +1613,15 @@ var Types;
|
|
|
1325
1613
|
Struct.type('resource_stats')
|
|
1326
1614
|
], resource_stats);
|
|
1327
1615
|
Types.resource_stats = resource_stats;
|
|
1616
|
+
let resources_result = class resources_result extends Struct {
|
|
1617
|
+
};
|
|
1618
|
+
__decorate([
|
|
1619
|
+
Struct.field(resource_info, { array: true })
|
|
1620
|
+
], resources_result.prototype, "resources", void 0);
|
|
1621
|
+
resources_result = __decorate([
|
|
1622
|
+
Struct.type('resources_result')
|
|
1623
|
+
], resources_result);
|
|
1624
|
+
Types.resources_result = resources_result;
|
|
1328
1625
|
let rmmodule = class rmmodule extends Struct {
|
|
1329
1626
|
};
|
|
1330
1627
|
__decorate([
|
|
@@ -1343,6 +1640,15 @@ var Types;
|
|
|
1343
1640
|
Struct.type('rmmodule')
|
|
1344
1641
|
], rmmodule);
|
|
1345
1642
|
Types.rmmodule = rmmodule;
|
|
1643
|
+
let rmnftcfg = class rmnftcfg extends Struct {
|
|
1644
|
+
};
|
|
1645
|
+
__decorate([
|
|
1646
|
+
Struct.field(UInt16)
|
|
1647
|
+
], rmnftcfg.prototype, "item_id", void 0);
|
|
1648
|
+
rmnftcfg = __decorate([
|
|
1649
|
+
Struct.type('rmnftcfg')
|
|
1650
|
+
], rmnftcfg);
|
|
1651
|
+
Types.rmnftcfg = rmnftcfg;
|
|
1346
1652
|
let salt = class salt extends Struct {
|
|
1347
1653
|
};
|
|
1348
1654
|
__decorate([
|
|
@@ -1364,6 +1670,21 @@ var Types;
|
|
|
1364
1670
|
Struct.type('sequence_row')
|
|
1365
1671
|
], sequence_row);
|
|
1366
1672
|
Types.sequence_row = sequence_row;
|
|
1673
|
+
let setnftcfg = class setnftcfg extends Struct {
|
|
1674
|
+
};
|
|
1675
|
+
__decorate([
|
|
1676
|
+
Struct.field(UInt16)
|
|
1677
|
+
], setnftcfg.prototype, "item_id", void 0);
|
|
1678
|
+
__decorate([
|
|
1679
|
+
Struct.field(Int32)
|
|
1680
|
+
], setnftcfg.prototype, "template_id", void 0);
|
|
1681
|
+
__decorate([
|
|
1682
|
+
Struct.field(Name)
|
|
1683
|
+
], setnftcfg.prototype, "schema_name", void 0);
|
|
1684
|
+
setnftcfg = __decorate([
|
|
1685
|
+
Struct.type('setnftcfg')
|
|
1686
|
+
], setnftcfg);
|
|
1687
|
+
Types.setnftcfg = setnftcfg;
|
|
1367
1688
|
let ship_row = class ship_row extends Struct {
|
|
1368
1689
|
};
|
|
1369
1690
|
__decorate([
|
|
@@ -1375,6 +1696,9 @@ var Types;
|
|
|
1375
1696
|
__decorate([
|
|
1376
1697
|
Struct.field('string')
|
|
1377
1698
|
], ship_row.prototype, "name", void 0);
|
|
1699
|
+
__decorate([
|
|
1700
|
+
Struct.field(UInt64)
|
|
1701
|
+
], ship_row.prototype, "seed", void 0);
|
|
1378
1702
|
__decorate([
|
|
1379
1703
|
Struct.field(coordinates)
|
|
1380
1704
|
], ship_row.prototype, "coordinates", void 0);
|
|
@@ -1585,18 +1909,27 @@ var Types;
|
|
|
1585
1909
|
__decorate([
|
|
1586
1910
|
Struct.field('string')
|
|
1587
1911
|
], warehouse_row.prototype, "name", void 0);
|
|
1912
|
+
__decorate([
|
|
1913
|
+
Struct.field(UInt64)
|
|
1914
|
+
], warehouse_row.prototype, "seed", void 0);
|
|
1588
1915
|
__decorate([
|
|
1589
1916
|
Struct.field(coordinates)
|
|
1590
1917
|
], warehouse_row.prototype, "coordinates", void 0);
|
|
1591
1918
|
__decorate([
|
|
1592
|
-
Struct.field(UInt32)
|
|
1919
|
+
Struct.field(UInt32, { optional: true })
|
|
1920
|
+
], warehouse_row.prototype, "hullmass", void 0);
|
|
1921
|
+
__decorate([
|
|
1922
|
+
Struct.field(UInt32, { optional: true })
|
|
1593
1923
|
], warehouse_row.prototype, "capacity", void 0);
|
|
1594
1924
|
__decorate([
|
|
1595
1925
|
Struct.field(UInt32)
|
|
1596
1926
|
], warehouse_row.prototype, "cargomass", void 0);
|
|
1597
1927
|
__decorate([
|
|
1598
|
-
Struct.field(loader_stats)
|
|
1928
|
+
Struct.field(loader_stats, { optional: true })
|
|
1599
1929
|
], warehouse_row.prototype, "loaders", void 0);
|
|
1930
|
+
__decorate([
|
|
1931
|
+
Struct.field(module_entry, { array: true })
|
|
1932
|
+
], warehouse_row.prototype, "modules", void 0);
|
|
1600
1933
|
__decorate([
|
|
1601
1934
|
Struct.field(schedule, { optional: true })
|
|
1602
1935
|
], warehouse_row.prototype, "schedule", void 0);
|
|
@@ -1634,12 +1967,35 @@ var Types;
|
|
|
1634
1967
|
Struct.type('wipesequence')
|
|
1635
1968
|
], wipesequence);
|
|
1636
1969
|
Types.wipesequence = wipesequence;
|
|
1970
|
+
let wrap = class wrap extends Struct {
|
|
1971
|
+
};
|
|
1972
|
+
__decorate([
|
|
1973
|
+
Struct.field(Name)
|
|
1974
|
+
], wrap.prototype, "owner", void 0);
|
|
1975
|
+
__decorate([
|
|
1976
|
+
Struct.field(Name)
|
|
1977
|
+
], wrap.prototype, "entity_type", void 0);
|
|
1978
|
+
__decorate([
|
|
1979
|
+
Struct.field(UInt64)
|
|
1980
|
+
], wrap.prototype, "entity_id", void 0);
|
|
1981
|
+
__decorate([
|
|
1982
|
+
Struct.field(UInt64)
|
|
1983
|
+
], wrap.prototype, "cargo_id", void 0);
|
|
1984
|
+
__decorate([
|
|
1985
|
+
Struct.field(UInt64)
|
|
1986
|
+
], wrap.prototype, "quantity", void 0);
|
|
1987
|
+
wrap = __decorate([
|
|
1988
|
+
Struct.type('wrap')
|
|
1989
|
+
], wrap);
|
|
1990
|
+
Types.wrap = wrap;
|
|
1637
1991
|
})(Types || (Types = {}));
|
|
1638
1992
|
const TableMap = {
|
|
1639
1993
|
cargo: Types.cargo_row,
|
|
1640
1994
|
container: Types.container_row,
|
|
1641
1995
|
entitygroup: Types.entitygroup_row,
|
|
1642
1996
|
location: Types.location_row,
|
|
1997
|
+
nexus: Types.nexus_row,
|
|
1998
|
+
nftconfig: Types.nftconfig_row,
|
|
1643
1999
|
player: Types.player_row,
|
|
1644
2000
|
reserve: Types.reserve_row,
|
|
1645
2001
|
sequence: Types.sequence_row,
|
|
@@ -4558,7 +4914,9 @@ function calc_rechargetime(capacity, energy, recharge) {
|
|
|
4558
4914
|
return cap.subtracting(eng).dividing(recharge);
|
|
4559
4915
|
}
|
|
4560
4916
|
function calc_ship_rechargetime(ship) {
|
|
4561
|
-
|
|
4917
|
+
if (!ship.generator)
|
|
4918
|
+
return UInt32.from(0);
|
|
4919
|
+
return calc_rechargetime(ship.generator.capacity, ship.energy ?? UInt16.from(0), ship.generator.recharge);
|
|
4562
4920
|
}
|
|
4563
4921
|
function calc_flighttime(distance, acceleration) {
|
|
4564
4922
|
return UInt32.from(2 * Math.sqrt(Number(distance) / acceleration));
|
|
@@ -4568,14 +4926,17 @@ function calc_loader_flighttime(ship, mass, altitude) {
|
|
|
4568
4926
|
return calc_flighttime(z, calc_loader_acceleration(ship, mass));
|
|
4569
4927
|
}
|
|
4570
4928
|
function calc_loader_acceleration(ship, mass) {
|
|
4571
|
-
|
|
4929
|
+
const thrust = ship.loaders ? Number(ship.loaders.thrust) : 0;
|
|
4930
|
+
const loaderMass = ship.loaders ? Number(ship.loaders.mass) : 0;
|
|
4931
|
+
return calc_acceleration(thrust, Number(mass) + loaderMass);
|
|
4572
4932
|
}
|
|
4573
4933
|
function calc_ship_flighttime(ship, mass, distance) {
|
|
4574
4934
|
const acceleration = calc_ship_acceleration(ship, mass);
|
|
4575
4935
|
return calc_flighttime(distance, acceleration);
|
|
4576
4936
|
}
|
|
4577
4937
|
function calc_ship_acceleration(ship, mass) {
|
|
4578
|
-
|
|
4938
|
+
const thrust = ship.engines ? Number(ship.engines.thrust) : 0;
|
|
4939
|
+
return calc_acceleration(thrust, Number(mass));
|
|
4579
4940
|
}
|
|
4580
4941
|
function calc_acceleration(thrust, mass) {
|
|
4581
4942
|
return (thrust / mass) * PRECISION;
|
|
@@ -4583,7 +4944,7 @@ function calc_acceleration(thrust, mass) {
|
|
|
4583
4944
|
function calc_ship_mass(ship, cargos) {
|
|
4584
4945
|
const mass = UInt64.from(0);
|
|
4585
4946
|
mass.add(ship.hullmass);
|
|
4586
|
-
if (ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4947
|
+
if (ship.loaders && ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4587
4948
|
mass.add(ship.loaders.mass.multiplying(ship.loaders.quantity));
|
|
4588
4949
|
}
|
|
4589
4950
|
for (const cargo of cargos) {
|
|
@@ -4607,6 +4968,8 @@ function calculateTransferTime(ship, cargos, quantities) {
|
|
|
4607
4968
|
if (mass.equals(UInt64.zero)) {
|
|
4608
4969
|
return UInt32.from(0);
|
|
4609
4970
|
}
|
|
4971
|
+
if (!ship.loaders)
|
|
4972
|
+
return UInt32.from(0);
|
|
4610
4973
|
mass = UInt64.from(mass).adding(ship.loaders.mass);
|
|
4611
4974
|
const transfer_time = calc_loader_flighttime(ship, mass);
|
|
4612
4975
|
return transfer_time.dividing(ship.loaders.quantity);
|
|
@@ -4639,15 +5002,15 @@ function calculateLoadTimeBreakdown(ship, cargos, loadQuantities, unloadQuantiti
|
|
|
4639
5002
|
}
|
|
4640
5003
|
let unloadTime = 0;
|
|
4641
5004
|
let loadTime = 0;
|
|
4642
|
-
if (mass_unload.gt(UInt64.zero)) {
|
|
5005
|
+
if (mass_unload.gt(UInt64.zero) && ship.loaders) {
|
|
4643
5006
|
const totalMass = UInt64.from(mass_unload).adding(ship.loaders.mass);
|
|
4644
5007
|
unloadTime = Number(calc_loader_flighttime(ship, totalMass));
|
|
4645
5008
|
}
|
|
4646
|
-
if (mass_load.gt(UInt64.zero)) {
|
|
5009
|
+
if (mass_load.gt(UInt64.zero) && ship.loaders) {
|
|
4647
5010
|
const totalMass = UInt64.from(mass_load).adding(ship.loaders.mass);
|
|
4648
5011
|
loadTime = Number(calc_loader_flighttime(ship, totalMass));
|
|
4649
5012
|
}
|
|
4650
|
-
const numLoaders = Number(ship.loaders.quantity);
|
|
5013
|
+
const numLoaders = ship.loaders ? Number(ship.loaders.quantity) : 0;
|
|
4651
5014
|
const totalTime = numLoaders > 0 ? (unloadTime + loadTime) / numLoaders : 0;
|
|
4652
5015
|
const unloadTimePerLoader = numLoaders > 0 ? unloadTime / numLoaders : 0;
|
|
4653
5016
|
const loadTimePerLoader = numLoaders > 0 ? loadTime / numLoaders : 0;
|
|
@@ -4667,12 +5030,14 @@ function estimateTravelTime(ship, travelMass, distance, options = {}) {
|
|
|
4667
5030
|
let unloadTime = UInt32.zero;
|
|
4668
5031
|
if (loadMass &&
|
|
4669
5032
|
UInt32.from(loadMass).gt(UInt32.zero) &&
|
|
5033
|
+
ship.loaders &&
|
|
4670
5034
|
ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4671
5035
|
const totalMass = UInt64.from(loadMass).adding(ship.loaders.mass);
|
|
4672
5036
|
loadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
|
|
4673
5037
|
}
|
|
4674
5038
|
if (unloadMass &&
|
|
4675
5039
|
UInt32.from(unloadMass).gt(UInt32.zero) &&
|
|
5040
|
+
ship.loaders &&
|
|
4676
5041
|
ship.loaders.quantity.gt(UInt32.zero)) {
|
|
4677
5042
|
const totalMass = UInt64.from(unloadMass).adding(ship.loaders.mass);
|
|
4678
5043
|
unloadTime = calc_loader_flighttime(ship, totalMass).dividing(ship.loaders.quantity);
|
|
@@ -4694,8 +5059,10 @@ function estimateDealTravelTime(ship, shipMass, distance, loadMass) {
|
|
|
4694
5059
|
return estimate.total;
|
|
4695
5060
|
}
|
|
4696
5061
|
function hasEnergyForDistance$1(ship, distance) {
|
|
5062
|
+
if (!ship.engines)
|
|
5063
|
+
return false;
|
|
4697
5064
|
const energyNeeded = UInt64.from(distance).dividing(PRECISION).multiplying(ship.engines.drain);
|
|
4698
|
-
return UInt64.from(ship.energy).gte(energyNeeded);
|
|
5065
|
+
return UInt64.from(ship.energy ?? 0).gte(energyNeeded);
|
|
4699
5066
|
}
|
|
4700
5067
|
function getFlightOrigin(entity, flightTaskIndex) {
|
|
4701
5068
|
if (!entity.schedule)
|
|
@@ -5536,6 +5903,10 @@ class Warehouse extends Types.entity_info {
|
|
|
5536
5903
|
get orbitalAltitude() {
|
|
5537
5904
|
return this.coordinates.z?.toNumber() || 0;
|
|
5538
5905
|
}
|
|
5906
|
+
get totalMass() {
|
|
5907
|
+
const hull = this.hullmass ? UInt64.from(this.hullmass) : UInt64.from(0);
|
|
5908
|
+
return hull.adding(this.totalCargoMass);
|
|
5909
|
+
}
|
|
5539
5910
|
}
|
|
5540
5911
|
|
|
5541
5912
|
class Container extends Types.entity_info {
|
|
@@ -5588,6 +5959,17 @@ function computeContainerCapabilities(stats) {
|
|
|
5588
5959
|
const capacity = Math.floor(1000000 * Math.pow(10, exponent));
|
|
5589
5960
|
return { hullmass, capacity };
|
|
5590
5961
|
}
|
|
5962
|
+
function computeContainerT2Capabilities(stats) {
|
|
5963
|
+
const strength = stats['strength'] ?? 0;
|
|
5964
|
+
const density = stats['density'] ?? 0;
|
|
5965
|
+
const ductility = stats['ductility'] ?? 0;
|
|
5966
|
+
const purity = stats['purity'] ?? 0;
|
|
5967
|
+
const hullmass = 20000 + 50 * density;
|
|
5968
|
+
const statSum = strength + ductility + purity;
|
|
5969
|
+
const exponent = statSum / 2500;
|
|
5970
|
+
const capacity = Math.floor(1500000 * Math.pow(10, exponent));
|
|
5971
|
+
return { hullmass, capacity };
|
|
5972
|
+
}
|
|
5591
5973
|
|
|
5592
5974
|
class EntitiesManager extends BaseManager {
|
|
5593
5975
|
async getEntity(type, id) {
|
|
@@ -6037,7 +6419,7 @@ function makeShip(state) {
|
|
|
6037
6419
|
return new Ship(entityInfo);
|
|
6038
6420
|
}
|
|
6039
6421
|
function makeWarehouse(state) {
|
|
6040
|
-
const
|
|
6422
|
+
const info = {
|
|
6041
6423
|
type: Name.from('warehouse'),
|
|
6042
6424
|
id: UInt64.from(state.id),
|
|
6043
6425
|
owner: Name.from(state.owner),
|
|
@@ -6046,13 +6428,18 @@ function makeWarehouse(state) {
|
|
|
6046
6428
|
capacity: UInt32.from(state.capacity),
|
|
6047
6429
|
cargomass: UInt32.from(0),
|
|
6048
6430
|
cargo: state.cargo || [],
|
|
6049
|
-
loaders: state.loaders,
|
|
6050
6431
|
is_idle: !state.schedule,
|
|
6051
6432
|
current_task_elapsed: UInt32.from(0),
|
|
6052
6433
|
current_task_remaining: UInt32.from(0),
|
|
6053
6434
|
pending_tasks: [],
|
|
6054
|
-
|
|
6055
|
-
|
|
6435
|
+
};
|
|
6436
|
+
if (state.hullmass !== undefined)
|
|
6437
|
+
info.hullmass = UInt32.from(state.hullmass);
|
|
6438
|
+
if (state.loaders)
|
|
6439
|
+
info.loaders = state.loaders;
|
|
6440
|
+
if (state.schedule)
|
|
6441
|
+
info.schedule = state.schedule;
|
|
6442
|
+
const entityInfo = Types.entity_info.from(info);
|
|
6056
6443
|
return new Warehouse(entityInfo);
|
|
6057
6444
|
}
|
|
6058
6445
|
function makeContainer(state) {
|
|
@@ -6272,11 +6659,12 @@ function resolveStats(category, stats) {
|
|
|
6272
6659
|
};
|
|
6273
6660
|
}
|
|
6274
6661
|
|
|
6275
|
-
const ITEM_ENGINE_T1 =
|
|
6276
|
-
const ITEM_GENERATOR_T1 =
|
|
6277
|
-
const ITEM_EXTRACTOR_T1 =
|
|
6278
|
-
const ITEM_LOADER_T1 =
|
|
6279
|
-
const ITEM_MANUFACTURING_T1 =
|
|
6662
|
+
const ITEM_ENGINE_T1 = 10100;
|
|
6663
|
+
const ITEM_GENERATOR_T1 = 10101;
|
|
6664
|
+
const ITEM_EXTRACTOR_T1 = 10102;
|
|
6665
|
+
const ITEM_LOADER_T1 = 10103;
|
|
6666
|
+
const ITEM_MANUFACTURING_T1 = 10104;
|
|
6667
|
+
const ITEM_STORAGE_T1 = 10105;
|
|
6280
6668
|
const MODULE_ANY = 0;
|
|
6281
6669
|
const MODULE_ENGINE = 1;
|
|
6282
6670
|
const MODULE_GENERATOR = 2;
|
|
@@ -6285,6 +6673,7 @@ const MODULE_LOADER = 4;
|
|
|
6285
6673
|
const MODULE_WARP = 5;
|
|
6286
6674
|
const MODULE_CRAFTER = 6;
|
|
6287
6675
|
const MODULE_LAUNCHER = 7;
|
|
6676
|
+
const MODULE_STORAGE = 8;
|
|
6288
6677
|
function moduleAccepts(slotType, moduleType) {
|
|
6289
6678
|
return slotType === MODULE_ANY || slotType === moduleType;
|
|
6290
6679
|
}
|
|
@@ -6300,6 +6689,8 @@ function getModuleCapabilityType(itemId) {
|
|
|
6300
6689
|
return MODULE_LOADER;
|
|
6301
6690
|
case ITEM_MANUFACTURING_T1:
|
|
6302
6691
|
return MODULE_CRAFTER;
|
|
6692
|
+
case ITEM_STORAGE_T1:
|
|
6693
|
+
return MODULE_STORAGE;
|
|
6303
6694
|
default:
|
|
6304
6695
|
return 0xff;
|
|
6305
6696
|
}
|
|
@@ -6308,17 +6699,21 @@ function isModuleItem(itemId) {
|
|
|
6308
6699
|
return getModuleCapabilityType(itemId) !== 0xff;
|
|
6309
6700
|
}
|
|
6310
6701
|
|
|
6311
|
-
const ITEM_DRILL_SHAFT =
|
|
6312
|
-
const ITEM_EXTRACTION_PROBE =
|
|
6313
|
-
const ITEM_CARGO_ARM =
|
|
6314
|
-
const ITEM_TOOL_BIT =
|
|
6315
|
-
const ITEM_REACTION_CHAMBER =
|
|
6702
|
+
const ITEM_DRILL_SHAFT = 10005;
|
|
6703
|
+
const ITEM_EXTRACTION_PROBE = 10006;
|
|
6704
|
+
const ITEM_CARGO_ARM = 10007;
|
|
6705
|
+
const ITEM_TOOL_BIT = 10008;
|
|
6706
|
+
const ITEM_REACTION_CHAMBER = 10009;
|
|
6316
6707
|
const ITEM_HULL_PLATES = 10001;
|
|
6317
6708
|
const ITEM_CARGO_LINING = 10002;
|
|
6318
|
-
const
|
|
6319
|
-
const ITEM_THRUSTER_CORE =
|
|
6320
|
-
const ITEM_POWER_CELL =
|
|
6321
|
-
const ITEM_SHIP_T1_PACKED =
|
|
6709
|
+
const ITEM_CONTAINER_T1_PACKED = 10200;
|
|
6710
|
+
const ITEM_THRUSTER_CORE = 10003;
|
|
6711
|
+
const ITEM_POWER_CELL = 10004;
|
|
6712
|
+
const ITEM_SHIP_T1_PACKED = 10201;
|
|
6713
|
+
const ITEM_WAREHOUSE_T1_PACKED = 10202;
|
|
6714
|
+
const ITEM_HULL_PLATES_T2 = 20001;
|
|
6715
|
+
const ITEM_CARGO_LINING_T2 = 20002;
|
|
6716
|
+
const ITEM_CONTAINER_T2_PACKED = 20200;
|
|
6322
6717
|
const components = [
|
|
6323
6718
|
{
|
|
6324
6719
|
id: ITEM_HULL_PLATES,
|
|
@@ -6331,7 +6726,7 @@ const components = [
|
|
|
6331
6726
|
{ key: 'density', source: 'metal' },
|
|
6332
6727
|
],
|
|
6333
6728
|
recipe: [{ category: 'metal', quantity: 15 }],
|
|
6334
|
-
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
|
|
6729
|
+
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
|
|
6335
6730
|
},
|
|
6336
6731
|
{
|
|
6337
6732
|
id: ITEM_CARGO_LINING,
|
|
@@ -6347,7 +6742,7 @@ const components = [
|
|
|
6347
6742
|
{ category: 'precious', quantity: 6 },
|
|
6348
6743
|
{ category: 'organic', quantity: 14 },
|
|
6349
6744
|
],
|
|
6350
|
-
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Ship T1' }],
|
|
6745
|
+
usedIn: [{ type: 'entity', name: 'Container' }, { type: 'entity', name: 'Warehouse T1' }, { type: 'entity', name: 'Ship T1' }],
|
|
6351
6746
|
},
|
|
6352
6747
|
{
|
|
6353
6748
|
id: ITEM_THRUSTER_CORE,
|
|
@@ -6360,7 +6755,7 @@ const components = [
|
|
|
6360
6755
|
{ key: 'thermal', source: 'gas' },
|
|
6361
6756
|
],
|
|
6362
6757
|
recipe: [{ category: 'gas', quantity: 32 }],
|
|
6363
|
-
usedIn: [{ type: 'module', name: 'Engine
|
|
6758
|
+
usedIn: [{ type: 'module', name: 'Engine' }],
|
|
6364
6759
|
},
|
|
6365
6760
|
{
|
|
6366
6761
|
id: ITEM_POWER_CELL,
|
|
@@ -6373,7 +6768,7 @@ const components = [
|
|
|
6373
6768
|
{ key: 'clarity', source: 'mineral' },
|
|
6374
6769
|
],
|
|
6375
6770
|
recipe: [{ category: 'mineral', quantity: 20 }],
|
|
6376
|
-
usedIn: [{ type: 'module', name: 'Generator
|
|
6771
|
+
usedIn: [{ type: 'module', name: 'Generator' }],
|
|
6377
6772
|
},
|
|
6378
6773
|
{
|
|
6379
6774
|
id: ITEM_DRILL_SHAFT,
|
|
@@ -6386,7 +6781,7 @@ const components = [
|
|
|
6386
6781
|
{ key: 'tolerance', source: 'metal' },
|
|
6387
6782
|
],
|
|
6388
6783
|
recipe: [{ category: 'metal', quantity: 15 }],
|
|
6389
|
-
usedIn: [{ type: 'module', name: 'Extractor
|
|
6784
|
+
usedIn: [{ type: 'module', name: 'Extractor' }],
|
|
6390
6785
|
},
|
|
6391
6786
|
{
|
|
6392
6787
|
id: ITEM_EXTRACTION_PROBE,
|
|
@@ -6399,7 +6794,7 @@ const components = [
|
|
|
6399
6794
|
{ key: 'reflectivity', source: 'precious' },
|
|
6400
6795
|
],
|
|
6401
6796
|
recipe: [{ category: 'precious', quantity: 10 }],
|
|
6402
|
-
usedIn: [{ type: 'module', name: 'Extractor
|
|
6797
|
+
usedIn: [{ type: 'module', name: 'Extractor' }],
|
|
6403
6798
|
},
|
|
6404
6799
|
{
|
|
6405
6800
|
id: ITEM_CARGO_ARM,
|
|
@@ -6412,7 +6807,7 @@ const components = [
|
|
|
6412
6807
|
{ key: 'insulation', source: 'organic' },
|
|
6413
6808
|
],
|
|
6414
6809
|
recipe: [{ category: 'organic', quantity: 32 }],
|
|
6415
|
-
usedIn: [{ type: 'module', name: 'Loader
|
|
6810
|
+
usedIn: [{ type: 'module', name: 'Loader' }],
|
|
6416
6811
|
},
|
|
6417
6812
|
{
|
|
6418
6813
|
id: ITEM_TOOL_BIT,
|
|
@@ -6425,7 +6820,7 @@ const components = [
|
|
|
6425
6820
|
{ key: 'clarity', source: 'mineral' },
|
|
6426
6821
|
],
|
|
6427
6822
|
recipe: [{ category: 'mineral', quantity: 20 }],
|
|
6428
|
-
usedIn: [{ type: 'module', name: 'Manufacturing
|
|
6823
|
+
usedIn: [{ type: 'module', name: 'Manufacturing' }],
|
|
6429
6824
|
},
|
|
6430
6825
|
{
|
|
6431
6826
|
id: ITEM_REACTION_CHAMBER,
|
|
@@ -6438,7 +6833,40 @@ const components = [
|
|
|
6438
6833
|
{ key: 'thermal', source: 'gas' },
|
|
6439
6834
|
],
|
|
6440
6835
|
recipe: [{ category: 'gas', quantity: 32 }],
|
|
6441
|
-
usedIn: [{ type: 'module', name: 'Manufacturing
|
|
6836
|
+
usedIn: [{ type: 'module', name: 'Manufacturing' }],
|
|
6837
|
+
},
|
|
6838
|
+
{
|
|
6839
|
+
id: ITEM_HULL_PLATES_T2,
|
|
6840
|
+
name: 'Hull Plates T2',
|
|
6841
|
+
description: 'Advanced structural plating reinforced with tier 2 metals.',
|
|
6842
|
+
color: '#9BADB8',
|
|
6843
|
+
mass: 50000,
|
|
6844
|
+
stats: [
|
|
6845
|
+
{ key: 'strength', source: 'metal' },
|
|
6846
|
+
{ key: 'density', source: 'metal' },
|
|
6847
|
+
],
|
|
6848
|
+
recipe: [
|
|
6849
|
+
{ itemId: ITEM_HULL_PLATES, quantity: 2 },
|
|
6850
|
+
{ category: 'metal', quantity: 15 },
|
|
6851
|
+
],
|
|
6852
|
+
usedIn: [{ type: 'entity', name: 'Container T2' }],
|
|
6853
|
+
},
|
|
6854
|
+
{
|
|
6855
|
+
id: ITEM_CARGO_LINING_T2,
|
|
6856
|
+
name: 'Cargo Lining T2',
|
|
6857
|
+
description: 'Advanced composite lining with improved storage properties.',
|
|
6858
|
+
color: '#E0B84D',
|
|
6859
|
+
mass: 30000,
|
|
6860
|
+
stats: [
|
|
6861
|
+
{ key: 'ductility', source: 'precious' },
|
|
6862
|
+
{ key: 'purity', source: 'organic' },
|
|
6863
|
+
],
|
|
6864
|
+
recipe: [
|
|
6865
|
+
{ itemId: ITEM_CARGO_LINING, quantity: 2 },
|
|
6866
|
+
{ category: 'precious', quantity: 6 },
|
|
6867
|
+
{ category: 'organic', quantity: 14 },
|
|
6868
|
+
],
|
|
6869
|
+
usedIn: [{ type: 'entity', name: 'Container T2' }],
|
|
6442
6870
|
},
|
|
6443
6871
|
];
|
|
6444
6872
|
const entityRecipes = [
|
|
@@ -6447,7 +6875,7 @@ const entityRecipes = [
|
|
|
6447
6875
|
name: 'Container',
|
|
6448
6876
|
description: 'Passive floating cargo storage in space. Towed by ships.',
|
|
6449
6877
|
color: '#7B8D9E',
|
|
6450
|
-
packedItemId:
|
|
6878
|
+
packedItemId: ITEM_CONTAINER_T1_PACKED,
|
|
6451
6879
|
recipe: [
|
|
6452
6880
|
{ itemId: ITEM_HULL_PLATES, quantity: 6 },
|
|
6453
6881
|
{ itemId: ITEM_CARGO_LINING, quantity: 2 },
|
|
@@ -6475,12 +6903,60 @@ const entityRecipes = [
|
|
|
6475
6903
|
{ key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
|
|
6476
6904
|
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
|
|
6477
6905
|
],
|
|
6906
|
+
moduleSlots: [
|
|
6907
|
+
{ type: MODULE_ANY },
|
|
6908
|
+
{ type: MODULE_ANY },
|
|
6909
|
+
{ type: MODULE_ANY },
|
|
6910
|
+
{ type: MODULE_ANY },
|
|
6911
|
+
{ type: MODULE_ANY },
|
|
6912
|
+
],
|
|
6913
|
+
},
|
|
6914
|
+
{
|
|
6915
|
+
id: 'warehouse-t1',
|
|
6916
|
+
name: 'Warehouse T1',
|
|
6917
|
+
description: 'Massive stationary storage facility with a single loader module slot.',
|
|
6918
|
+
color: '#EAB308',
|
|
6919
|
+
packedItemId: ITEM_WAREHOUSE_T1_PACKED,
|
|
6920
|
+
recipe: [
|
|
6921
|
+
{ itemId: ITEM_HULL_PLATES, quantity: 20 },
|
|
6922
|
+
{ itemId: ITEM_CARGO_LINING, quantity: 10 },
|
|
6923
|
+
],
|
|
6924
|
+
stats: [
|
|
6925
|
+
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
6926
|
+
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'density' },
|
|
6927
|
+
{ key: 'ductility', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'ductility' },
|
|
6928
|
+
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
|
|
6929
|
+
],
|
|
6930
|
+
moduleSlots: [
|
|
6931
|
+
{ type: MODULE_LOADER, label: 'Loader' },
|
|
6932
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6933
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6934
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6935
|
+
{ type: MODULE_STORAGE, label: 'Storage' },
|
|
6936
|
+
],
|
|
6937
|
+
},
|
|
6938
|
+
{
|
|
6939
|
+
id: 'container-t2',
|
|
6940
|
+
name: 'Container T2',
|
|
6941
|
+
description: 'Advanced cargo container with improved capacity formulas.',
|
|
6942
|
+
color: '#9BADB8',
|
|
6943
|
+
packedItemId: ITEM_CONTAINER_T2_PACKED,
|
|
6944
|
+
recipe: [
|
|
6945
|
+
{ itemId: ITEM_HULL_PLATES_T2, quantity: 6 },
|
|
6946
|
+
{ itemId: ITEM_CARGO_LINING_T2, quantity: 2 },
|
|
6947
|
+
],
|
|
6948
|
+
stats: [
|
|
6949
|
+
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'strength' },
|
|
6950
|
+
{ key: 'density', sourceComponentId: ITEM_HULL_PLATES_T2, sourceStatKey: 'density' },
|
|
6951
|
+
{ key: 'ductility', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'ductility' },
|
|
6952
|
+
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING_T2, sourceStatKey: 'purity' },
|
|
6953
|
+
],
|
|
6478
6954
|
},
|
|
6479
6955
|
];
|
|
6480
6956
|
const moduleRecipes = [
|
|
6481
6957
|
{
|
|
6482
6958
|
id: 'engine-t1',
|
|
6483
|
-
name: 'Engine
|
|
6959
|
+
name: 'Engine',
|
|
6484
6960
|
description: 'Basic propulsion system. Converts volatile gases into thrust.',
|
|
6485
6961
|
color: '#E86344',
|
|
6486
6962
|
itemId: ITEM_ENGINE_T1,
|
|
@@ -6493,7 +6969,7 @@ const moduleRecipes = [
|
|
|
6493
6969
|
},
|
|
6494
6970
|
{
|
|
6495
6971
|
id: 'generator-t1',
|
|
6496
|
-
name: 'Generator
|
|
6972
|
+
name: 'Generator',
|
|
6497
6973
|
description: 'Basic energy system. Stores and recharges energy from resonant minerals.',
|
|
6498
6974
|
color: '#7B5AE8',
|
|
6499
6975
|
itemId: ITEM_GENERATOR_T1,
|
|
@@ -6506,7 +6982,7 @@ const moduleRecipes = [
|
|
|
6506
6982
|
},
|
|
6507
6983
|
{
|
|
6508
6984
|
id: 'extractor-t1',
|
|
6509
|
-
name: 'Extractor
|
|
6985
|
+
name: 'Extractor',
|
|
6510
6986
|
description: 'Basic extraction system. Drills and probes for raw resources.',
|
|
6511
6987
|
color: '#7B8D9E',
|
|
6512
6988
|
itemId: ITEM_EXTRACTOR_T1,
|
|
@@ -6525,7 +7001,7 @@ const moduleRecipes = [
|
|
|
6525
7001
|
},
|
|
6526
7002
|
{
|
|
6527
7003
|
id: 'loader-t1',
|
|
6528
|
-
name: 'Loader
|
|
7004
|
+
name: 'Loader',
|
|
6529
7005
|
description: 'Basic cargo handling system. Loads and unloads cargo with articulated arms.',
|
|
6530
7006
|
color: '#6B8E5A',
|
|
6531
7007
|
itemId: ITEM_LOADER_T1,
|
|
@@ -6541,7 +7017,7 @@ const moduleRecipes = [
|
|
|
6541
7017
|
},
|
|
6542
7018
|
{
|
|
6543
7019
|
id: 'manufacturing-t1',
|
|
6544
|
-
name: 'Manufacturing
|
|
7020
|
+
name: 'Manufacturing',
|
|
6545
7021
|
description: 'Basic crafting system. Processes materials using reaction chambers and cutting tools.',
|
|
6546
7022
|
color: '#7EC8E3',
|
|
6547
7023
|
itemId: ITEM_MANUFACTURING_T1,
|
|
@@ -6555,6 +7031,24 @@ const moduleRecipes = [
|
|
|
6555
7031
|
{ key: 'clarity', sourceComponentId: ITEM_TOOL_BIT, sourceStatKey: 'clarity' },
|
|
6556
7032
|
],
|
|
6557
7033
|
},
|
|
7034
|
+
{
|
|
7035
|
+
id: 'storage-t1',
|
|
7036
|
+
name: 'Storage',
|
|
7037
|
+
description: 'Expands cargo capacity based on hull material quality',
|
|
7038
|
+
color: '#8B7355',
|
|
7039
|
+
itemId: ITEM_STORAGE_T1,
|
|
7040
|
+
moduleType: MODULE_STORAGE,
|
|
7041
|
+
recipe: [
|
|
7042
|
+
{ itemId: ITEM_HULL_PLATES, quantity: 8 },
|
|
7043
|
+
{ itemId: ITEM_CARGO_LINING, quantity: 4 },
|
|
7044
|
+
],
|
|
7045
|
+
stats: [
|
|
7046
|
+
{ key: 'strength', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'strength' },
|
|
7047
|
+
{ key: 'ductility', sourceComponentId: ITEM_HULL_PLATES, sourceStatKey: 'ductility' },
|
|
7048
|
+
{ key: 'purity', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'purity' },
|
|
7049
|
+
{ key: 'density', sourceComponentId: ITEM_CARGO_LINING, sourceStatKey: 'density' },
|
|
7050
|
+
],
|
|
7051
|
+
},
|
|
6558
7052
|
];
|
|
6559
7053
|
function getModuleRecipe(id) {
|
|
6560
7054
|
return moduleRecipes.find((r) => r.id === id);
|
|
@@ -6571,6 +7065,10 @@ function getEntityRecipe(id) {
|
|
|
6571
7065
|
function getEntityRecipeByItemId(itemId) {
|
|
6572
7066
|
return entityRecipes.find((r) => r.packedItemId === itemId);
|
|
6573
7067
|
}
|
|
7068
|
+
function getEntitySlotLayout(packedItemId) {
|
|
7069
|
+
const recipe = getEntityRecipeByItemId(packedItemId);
|
|
7070
|
+
return recipe?.moduleSlots ?? [];
|
|
7071
|
+
}
|
|
6574
7072
|
function getAllCraftableItems() {
|
|
6575
7073
|
const items = [];
|
|
6576
7074
|
for (const comp of components) {
|
|
@@ -6598,10 +7096,13 @@ function encodeStats(values) {
|
|
|
6598
7096
|
}
|
|
6599
7097
|
return seed;
|
|
6600
7098
|
}
|
|
7099
|
+
function decodeStat(seed, index) {
|
|
7100
|
+
return Number((seed >> BigInt(index * 10)) & 0x3ffn);
|
|
7101
|
+
}
|
|
6601
7102
|
function decodeStats(seed, count) {
|
|
6602
7103
|
const stats = [];
|
|
6603
7104
|
for (let i = 0; i < count; i++) {
|
|
6604
|
-
stats.push(
|
|
7105
|
+
stats.push(decodeStat(seed, i));
|
|
6605
7106
|
}
|
|
6606
7107
|
return stats;
|
|
6607
7108
|
}
|
|
@@ -6682,6 +7183,55 @@ function decodeStackStats(itemId, seed) {
|
|
|
6682
7183
|
const raw = deriveResourceStats(BigInt(seed.toString()));
|
|
6683
7184
|
return { stat1: raw.stat1, stat2: raw.stat2, stat3: raw.stat3 };
|
|
6684
7185
|
}
|
|
7186
|
+
const categoryItemMass = {
|
|
7187
|
+
metal: 30000,
|
|
7188
|
+
precious: 40000,
|
|
7189
|
+
gas: 15000,
|
|
7190
|
+
mineral: 22000,
|
|
7191
|
+
organic: 15000,
|
|
7192
|
+
};
|
|
7193
|
+
function computeInputMass(itemId, itemType) {
|
|
7194
|
+
if (itemType === 'component') {
|
|
7195
|
+
const comp = getComponentById(itemId);
|
|
7196
|
+
if (!comp)
|
|
7197
|
+
return 0;
|
|
7198
|
+
return comp.recipe.reduce((sum, input) => {
|
|
7199
|
+
const mass = input.category ? (categoryItemMass[input.category] ?? 0) : 0;
|
|
7200
|
+
return sum + mass * input.quantity;
|
|
7201
|
+
}, 0);
|
|
7202
|
+
}
|
|
7203
|
+
if (itemType === 'module') {
|
|
7204
|
+
const mod = getModuleRecipe(itemId);
|
|
7205
|
+
if (!mod)
|
|
7206
|
+
return 0;
|
|
7207
|
+
return mod.recipe.reduce((sum, input) => {
|
|
7208
|
+
const comp = input.itemId ? getComponentById(input.itemId) : undefined;
|
|
7209
|
+
return sum + (comp?.mass ?? 0) * input.quantity;
|
|
7210
|
+
}, 0);
|
|
7211
|
+
}
|
|
7212
|
+
if (itemType === 'entity') {
|
|
7213
|
+
const ent = getEntityRecipe(itemId);
|
|
7214
|
+
if (!ent)
|
|
7215
|
+
return 0;
|
|
7216
|
+
return ent.recipe.reduce((sum, input) => {
|
|
7217
|
+
const comp = input.itemId ? getComponentById(input.itemId) : undefined;
|
|
7218
|
+
return sum + (comp?.mass ?? 0) * input.quantity;
|
|
7219
|
+
}, 0);
|
|
7220
|
+
}
|
|
7221
|
+
return 0;
|
|
7222
|
+
}
|
|
7223
|
+
function blendCrossGroup(sources) {
|
|
7224
|
+
let weightedSum = 0;
|
|
7225
|
+
let totalWeight = 0;
|
|
7226
|
+
for (const src of sources) {
|
|
7227
|
+
weightedSum += src.value * src.weight;
|
|
7228
|
+
totalWeight += src.weight;
|
|
7229
|
+
}
|
|
7230
|
+
if (totalWeight === 0)
|
|
7231
|
+
return 1;
|
|
7232
|
+
const result = Math.floor(weightedSum / totalWeight);
|
|
7233
|
+
return Math.max(1, Math.min(999, result));
|
|
7234
|
+
}
|
|
6685
7235
|
function blendCargoStacks(itemId, stacks) {
|
|
6686
7236
|
const decoded = stacks.map((s) => ({
|
|
6687
7237
|
quantity: s.quantity,
|
|
@@ -6814,7 +7364,7 @@ function calc_craft_energy(drain, duration) {
|
|
|
6814
7364
|
}
|
|
6815
7365
|
|
|
6816
7366
|
const categoryColors = {
|
|
6817
|
-
metal: '#
|
|
7367
|
+
metal: '#5B9BD5',
|
|
6818
7368
|
precious: '#D4A843',
|
|
6819
7369
|
gas: '#7EC8E3',
|
|
6820
7370
|
mineral: '#B8A9C9',
|
|
@@ -6836,6 +7386,508 @@ const categoryIcons = {
|
|
|
6836
7386
|
};
|
|
6837
7387
|
const componentIcon = '▣';
|
|
6838
7388
|
const moduleIcon = '⬢';
|
|
7389
|
+
const itemIcons = {
|
|
7390
|
+
10001: 'HP',
|
|
7391
|
+
10002: 'CL',
|
|
7392
|
+
10003: 'TC',
|
|
7393
|
+
10004: 'PC',
|
|
7394
|
+
10005: 'DS',
|
|
7395
|
+
10006: 'EP',
|
|
7396
|
+
10007: 'CA',
|
|
7397
|
+
10008: 'TB',
|
|
7398
|
+
10009: 'RC',
|
|
7399
|
+
10100: 'EN',
|
|
7400
|
+
10101: 'GN',
|
|
7401
|
+
10102: 'EX',
|
|
7402
|
+
10103: 'LD',
|
|
7403
|
+
10104: 'MF',
|
|
7404
|
+
10105: 'ST',
|
|
7405
|
+
10200: 'CT',
|
|
7406
|
+
10201: 'SH',
|
|
7407
|
+
10202: 'WH',
|
|
7408
|
+
20001: 'HP',
|
|
7409
|
+
20002: 'CL',
|
|
7410
|
+
20200: 'CT',
|
|
7411
|
+
};
|
|
7412
|
+
|
|
7413
|
+
const ITEM_TYPE_RESOURCE = 0;
|
|
7414
|
+
const ITEM_TYPE_COMPONENT = 1;
|
|
7415
|
+
const ITEM_TYPE_MODULE = 2;
|
|
7416
|
+
const ITEM_TYPE_ENTITY = 3;
|
|
7417
|
+
function itemTypeCode(id) {
|
|
7418
|
+
switch (itemCategory(id)) {
|
|
7419
|
+
case 'resource': return ITEM_TYPE_RESOURCE;
|
|
7420
|
+
case 'component': return ITEM_TYPE_COMPONENT;
|
|
7421
|
+
case 'module': return ITEM_TYPE_MODULE;
|
|
7422
|
+
case 'entity': return ITEM_TYPE_ENTITY;
|
|
7423
|
+
}
|
|
7424
|
+
}
|
|
7425
|
+
function itemTier(id) {
|
|
7426
|
+
if (id < 10000)
|
|
7427
|
+
return 0;
|
|
7428
|
+
return Math.floor(id / 10000);
|
|
7429
|
+
}
|
|
7430
|
+
function itemOffset(id) {
|
|
7431
|
+
return id % 10000;
|
|
7432
|
+
}
|
|
7433
|
+
function itemCategory(id) {
|
|
7434
|
+
if (id < 10000)
|
|
7435
|
+
return 'resource';
|
|
7436
|
+
const offset = itemOffset(id);
|
|
7437
|
+
if (offset >= 200)
|
|
7438
|
+
return 'entity';
|
|
7439
|
+
if (offset >= 100)
|
|
7440
|
+
return 'module';
|
|
7441
|
+
return 'component';
|
|
7442
|
+
}
|
|
7443
|
+
function isRelatedItem(a, b) {
|
|
7444
|
+
if (a < 10000 || b < 10000)
|
|
7445
|
+
return false;
|
|
7446
|
+
return itemOffset(a) === itemOffset(b);
|
|
7447
|
+
}
|
|
7448
|
+
function isCraftedItem(id) {
|
|
7449
|
+
return id >= 10000;
|
|
7450
|
+
}
|
|
7451
|
+
|
|
7452
|
+
const categories = [
|
|
7453
|
+
{
|
|
7454
|
+
id: 'metal',
|
|
7455
|
+
name: 'Metals',
|
|
7456
|
+
label: 'Metal',
|
|
7457
|
+
description: 'Structural, strong, heavy — hulls, frames, load-bearing components',
|
|
7458
|
+
color: categoryColors.metal,
|
|
7459
|
+
},
|
|
7460
|
+
{
|
|
7461
|
+
id: 'precious',
|
|
7462
|
+
name: 'Precious Metals',
|
|
7463
|
+
label: 'Precious',
|
|
7464
|
+
description: 'Conductive, corrosion-resistant — electronics, energy systems, precision components',
|
|
7465
|
+
color: categoryColors.precious,
|
|
7466
|
+
},
|
|
7467
|
+
{
|
|
7468
|
+
id: 'gas',
|
|
7469
|
+
name: 'Gases',
|
|
7470
|
+
label: 'Gas',
|
|
7471
|
+
description: 'Energy, fuel, volatile/reactive — propulsion, thermal processing, chemical reactions',
|
|
7472
|
+
color: categoryColors.gas,
|
|
7473
|
+
},
|
|
7474
|
+
{
|
|
7475
|
+
id: 'mineral',
|
|
7476
|
+
name: 'Minerals',
|
|
7477
|
+
label: 'Mineral',
|
|
7478
|
+
description: 'Crystalline, hard, precise — sensors, optics, energy storage, cutting surfaces',
|
|
7479
|
+
color: categoryColors.mineral,
|
|
7480
|
+
},
|
|
7481
|
+
{
|
|
7482
|
+
id: 'organic',
|
|
7483
|
+
name: 'Organics',
|
|
7484
|
+
label: 'Organic',
|
|
7485
|
+
description: 'Adaptive, biological, polymer — insulation, composites, bio-processes',
|
|
7486
|
+
color: categoryColors.organic,
|
|
7487
|
+
},
|
|
7488
|
+
];
|
|
7489
|
+
function getCategoryInfo(id) {
|
|
7490
|
+
if (id === undefined)
|
|
7491
|
+
return categories;
|
|
7492
|
+
return categories.find((c) => c.id === id);
|
|
7493
|
+
}
|
|
7494
|
+
|
|
7495
|
+
const planetSubtypes = [
|
|
7496
|
+
{
|
|
7497
|
+
id: 0,
|
|
7498
|
+
label: 'Gas Giant',
|
|
7499
|
+
description: 'Massive planets with thick atmospheres rich in gases',
|
|
7500
|
+
paletteType: 'gasGiant',
|
|
7501
|
+
},
|
|
7502
|
+
{
|
|
7503
|
+
id: 1,
|
|
7504
|
+
label: 'Rocky',
|
|
7505
|
+
description: 'Dense, mineral-rich worlds with metallic cores',
|
|
7506
|
+
paletteType: 'rocky',
|
|
7507
|
+
},
|
|
7508
|
+
{
|
|
7509
|
+
id: 2,
|
|
7510
|
+
label: 'Terrestrial',
|
|
7511
|
+
description: 'Earth-like planets with varied terrain and life potential',
|
|
7512
|
+
paletteType: 'terrestrial',
|
|
7513
|
+
},
|
|
7514
|
+
{
|
|
7515
|
+
id: 3,
|
|
7516
|
+
label: 'Icy',
|
|
7517
|
+
description: 'Frozen worlds with subsurface resources',
|
|
7518
|
+
paletteType: 'ice',
|
|
7519
|
+
},
|
|
7520
|
+
{
|
|
7521
|
+
id: 4,
|
|
7522
|
+
label: 'Ocean',
|
|
7523
|
+
description: 'Water worlds with dissolved minerals and organics',
|
|
7524
|
+
paletteType: 'ocean',
|
|
7525
|
+
},
|
|
7526
|
+
{
|
|
7527
|
+
id: 5,
|
|
7528
|
+
label: 'Industrial',
|
|
7529
|
+
description: 'Heavily processed worlds rich in refined materials',
|
|
7530
|
+
paletteType: 'industrial',
|
|
7531
|
+
},
|
|
7532
|
+
];
|
|
7533
|
+
function getPlanetSubtypes() {
|
|
7534
|
+
return planetSubtypes;
|
|
7535
|
+
}
|
|
7536
|
+
function getPlanetSubtype(id) {
|
|
7537
|
+
return planetSubtypes.find((s) => s.id === id);
|
|
7538
|
+
}
|
|
7539
|
+
|
|
7540
|
+
const capabilityNames = [
|
|
7541
|
+
'Hull',
|
|
7542
|
+
'Storage',
|
|
7543
|
+
'Movement',
|
|
7544
|
+
'Energy',
|
|
7545
|
+
'Loader',
|
|
7546
|
+
'Extraction',
|
|
7547
|
+
'Warp',
|
|
7548
|
+
'Manufacturing',
|
|
7549
|
+
'Launch',
|
|
7550
|
+
];
|
|
7551
|
+
const capabilityAttributes = [
|
|
7552
|
+
{ capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
|
|
7553
|
+
{ capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
|
|
7554
|
+
{ capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
|
|
7555
|
+
{ capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
|
|
7556
|
+
{ capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
|
|
7557
|
+
{ capability: 'Energy', attribute: 'recharge', description: 'Energy regeneration rate' },
|
|
7558
|
+
{ capability: 'Loader', attribute: 'mass', description: 'Weight of the loader unit itself' },
|
|
7559
|
+
{ capability: 'Loader', attribute: 'thrust', description: 'Loading speed/force' },
|
|
7560
|
+
{ capability: 'Extraction', attribute: 'rate', description: 'Mass extracted per second' },
|
|
7561
|
+
{ capability: 'Extraction', attribute: 'drain', description: 'Energy consumed per extraction' },
|
|
7562
|
+
{ capability: 'Extraction', attribute: 'depth', description: 'Maximum extraction depth' },
|
|
7563
|
+
{ capability: 'Extraction', attribute: 'drill', description: 'Drilling speed/penetration' },
|
|
7564
|
+
{ capability: 'Warp', attribute: 'range', description: 'Maximum warp distance' },
|
|
7565
|
+
{ capability: 'Manufacturing', attribute: 'speed', description: 'Crafting time per item' },
|
|
7566
|
+
{
|
|
7567
|
+
capability: 'Manufacturing',
|
|
7568
|
+
attribute: 'drain',
|
|
7569
|
+
description: 'Energy consumed per second while crafting',
|
|
7570
|
+
},
|
|
7571
|
+
{ capability: 'Manufacturing', attribute: 'quality', description: 'Modifier on output quality' },
|
|
7572
|
+
{ capability: 'Launch', attribute: 'range', description: 'Maximum launch distance' },
|
|
7573
|
+
{ capability: 'Launch', attribute: 'capacity', description: 'Maximum mass per launch' },
|
|
7574
|
+
{ capability: 'Launch', attribute: 'drain', description: 'Energy consumed per launch' },
|
|
7575
|
+
];
|
|
7576
|
+
const statMappings = [
|
|
7577
|
+
{
|
|
7578
|
+
stat: 'Strength',
|
|
7579
|
+
capability: 'Extraction',
|
|
7580
|
+
attribute: 'rate',
|
|
7581
|
+
rationale: 'Raw mechanical force drives faster extraction',
|
|
7582
|
+
},
|
|
7583
|
+
{
|
|
7584
|
+
stat: 'Strength',
|
|
7585
|
+
capability: 'Storage',
|
|
7586
|
+
attribute: 'capacity',
|
|
7587
|
+
rationale: 'Stronger walls hold more capacity per mass',
|
|
7588
|
+
},
|
|
7589
|
+
{
|
|
7590
|
+
stat: 'Strength',
|
|
7591
|
+
capability: 'Launch',
|
|
7592
|
+
attribute: 'capacity',
|
|
7593
|
+
rationale: 'Stronger housing handles larger launch loads',
|
|
7594
|
+
},
|
|
7595
|
+
{
|
|
7596
|
+
stat: 'Tolerance',
|
|
7597
|
+
capability: 'Movement',
|
|
7598
|
+
attribute: 'thrust',
|
|
7599
|
+
rationale: 'Engine components that tolerate more can push harder',
|
|
7600
|
+
},
|
|
7601
|
+
{
|
|
7602
|
+
stat: 'Tolerance',
|
|
7603
|
+
capability: 'Energy',
|
|
7604
|
+
attribute: 'recharge',
|
|
7605
|
+
rationale: 'Generator housing withstands stress for faster recharge',
|
|
7606
|
+
},
|
|
7607
|
+
{
|
|
7608
|
+
stat: 'Tolerance',
|
|
7609
|
+
capability: 'Extraction',
|
|
7610
|
+
attribute: 'depth',
|
|
7611
|
+
rationale: 'Housing withstands pressure/heat at extreme depths',
|
|
7612
|
+
},
|
|
7613
|
+
{
|
|
7614
|
+
stat: 'Tolerance',
|
|
7615
|
+
capability: 'Warp',
|
|
7616
|
+
attribute: 'range',
|
|
7617
|
+
rationale: 'Warp drive housing withstands extreme forces',
|
|
7618
|
+
},
|
|
7619
|
+
{
|
|
7620
|
+
stat: 'Density',
|
|
7621
|
+
capability: 'Hull',
|
|
7622
|
+
attribute: 'mass',
|
|
7623
|
+
rationale: 'Lighter metal = lighter hull',
|
|
7624
|
+
},
|
|
7625
|
+
{
|
|
7626
|
+
stat: 'Density',
|
|
7627
|
+
capability: 'Loader',
|
|
7628
|
+
attribute: 'mass',
|
|
7629
|
+
rationale: 'Lighter metal = lighter loader units',
|
|
7630
|
+
},
|
|
7631
|
+
{
|
|
7632
|
+
stat: 'Density',
|
|
7633
|
+
capability: 'Movement',
|
|
7634
|
+
attribute: 'drain',
|
|
7635
|
+
rationale: 'Lighter components require less energy to move',
|
|
7636
|
+
},
|
|
7637
|
+
{
|
|
7638
|
+
stat: 'Conductivity',
|
|
7639
|
+
capability: 'Movement',
|
|
7640
|
+
attribute: 'drain',
|
|
7641
|
+
rationale: 'Efficient energy transfer reduces movement energy cost',
|
|
7642
|
+
},
|
|
7643
|
+
{
|
|
7644
|
+
stat: 'Conductivity',
|
|
7645
|
+
capability: 'Extraction',
|
|
7646
|
+
attribute: 'drain',
|
|
7647
|
+
rationale: 'Efficient energy transfer reduces extraction energy cost',
|
|
7648
|
+
},
|
|
7649
|
+
{
|
|
7650
|
+
stat: 'Conductivity',
|
|
7651
|
+
capability: 'Manufacturing',
|
|
7652
|
+
attribute: 'drain',
|
|
7653
|
+
rationale: 'Efficient energy transfer reduces manufacturing energy cost',
|
|
7654
|
+
},
|
|
7655
|
+
{
|
|
7656
|
+
stat: 'Conductivity',
|
|
7657
|
+
capability: 'Energy',
|
|
7658
|
+
attribute: 'recharge',
|
|
7659
|
+
rationale: 'Better conductivity speeds energy flow during recharge',
|
|
7660
|
+
},
|
|
7661
|
+
{
|
|
7662
|
+
stat: 'Ductility',
|
|
7663
|
+
capability: 'Manufacturing',
|
|
7664
|
+
attribute: 'quality',
|
|
7665
|
+
rationale: 'Precise shaping enables tighter manufacturing tolerances',
|
|
7666
|
+
},
|
|
7667
|
+
{
|
|
7668
|
+
stat: 'Ductility',
|
|
7669
|
+
capability: 'Extraction',
|
|
7670
|
+
attribute: 'rate',
|
|
7671
|
+
rationale: 'Precisely shaped drill components extract faster',
|
|
7672
|
+
},
|
|
7673
|
+
{
|
|
7674
|
+
stat: 'Ductility',
|
|
7675
|
+
capability: 'Storage',
|
|
7676
|
+
attribute: 'capacity',
|
|
7677
|
+
rationale: 'Precision-formed container walls maximize volume',
|
|
7678
|
+
},
|
|
7679
|
+
{
|
|
7680
|
+
stat: 'Ductility',
|
|
7681
|
+
capability: 'Loader',
|
|
7682
|
+
attribute: 'mass',
|
|
7683
|
+
rationale: 'Precision-formed precious metal reduces loader unit mass',
|
|
7684
|
+
},
|
|
7685
|
+
{
|
|
7686
|
+
stat: 'Reflectivity',
|
|
7687
|
+
capability: 'Extraction',
|
|
7688
|
+
attribute: 'depth',
|
|
7689
|
+
rationale: 'Reflective heat shielding protects equipment at depth',
|
|
7690
|
+
},
|
|
7691
|
+
{
|
|
7692
|
+
stat: 'Reflectivity',
|
|
7693
|
+
capability: 'Launch',
|
|
7694
|
+
attribute: 'range',
|
|
7695
|
+
rationale: 'Reflective surfaces focus electromagnetic launch energy',
|
|
7696
|
+
},
|
|
7697
|
+
{
|
|
7698
|
+
stat: 'Volatility',
|
|
7699
|
+
capability: 'Extraction',
|
|
7700
|
+
attribute: 'rate',
|
|
7701
|
+
rationale: 'Energy release powers faster extraction',
|
|
7702
|
+
},
|
|
7703
|
+
{
|
|
7704
|
+
stat: 'Volatility',
|
|
7705
|
+
capability: 'Movement',
|
|
7706
|
+
attribute: 'thrust',
|
|
7707
|
+
rationale: 'Energy release drives propulsion force',
|
|
7708
|
+
},
|
|
7709
|
+
{
|
|
7710
|
+
stat: 'Volatility',
|
|
7711
|
+
capability: 'Loader',
|
|
7712
|
+
attribute: 'thrust',
|
|
7713
|
+
rationale: 'Energy release powers loader motors',
|
|
7714
|
+
},
|
|
7715
|
+
{
|
|
7716
|
+
stat: 'Volatility',
|
|
7717
|
+
capability: 'Launch',
|
|
7718
|
+
attribute: 'capacity',
|
|
7719
|
+
rationale: 'Energy release enables launching heavier payloads',
|
|
7720
|
+
},
|
|
7721
|
+
{
|
|
7722
|
+
stat: 'Reactivity',
|
|
7723
|
+
capability: 'Manufacturing',
|
|
7724
|
+
attribute: 'speed',
|
|
7725
|
+
rationale: 'Reactive gases accelerate chemical/thermal processing',
|
|
7726
|
+
},
|
|
7727
|
+
{
|
|
7728
|
+
stat: 'Reactivity',
|
|
7729
|
+
capability: 'Extraction',
|
|
7730
|
+
attribute: 'drill',
|
|
7731
|
+
rationale: 'Reactive gases manage heat/friction during drilling',
|
|
7732
|
+
},
|
|
7733
|
+
{
|
|
7734
|
+
stat: 'Reactivity',
|
|
7735
|
+
capability: 'Launch',
|
|
7736
|
+
attribute: 'drain',
|
|
7737
|
+
rationale: 'Reactive gas medium reduces electromagnetic resistance',
|
|
7738
|
+
},
|
|
7739
|
+
{
|
|
7740
|
+
stat: 'Thermal',
|
|
7741
|
+
capability: 'Manufacturing',
|
|
7742
|
+
attribute: 'quality',
|
|
7743
|
+
rationale: 'Precise thermal control during fabrication',
|
|
7744
|
+
},
|
|
7745
|
+
{
|
|
7746
|
+
stat: 'Thermal',
|
|
7747
|
+
capability: 'Extraction',
|
|
7748
|
+
attribute: 'drain',
|
|
7749
|
+
rationale: 'Thermal management reduces energy waste during extraction',
|
|
7750
|
+
},
|
|
7751
|
+
{
|
|
7752
|
+
stat: 'Thermal',
|
|
7753
|
+
capability: 'Energy',
|
|
7754
|
+
attribute: 'capacity',
|
|
7755
|
+
rationale: 'Thermal management enables denser energy storage',
|
|
7756
|
+
},
|
|
7757
|
+
{
|
|
7758
|
+
stat: 'Resonance',
|
|
7759
|
+
capability: 'Energy',
|
|
7760
|
+
attribute: 'capacity',
|
|
7761
|
+
rationale: 'Resonating crystals store energy in fields',
|
|
7762
|
+
},
|
|
7763
|
+
{
|
|
7764
|
+
stat: 'Resonance',
|
|
7765
|
+
capability: 'Warp',
|
|
7766
|
+
attribute: 'range',
|
|
7767
|
+
rationale: 'Resonant crystals amplify warp field projection',
|
|
7768
|
+
},
|
|
7769
|
+
{
|
|
7770
|
+
stat: 'Resonance',
|
|
7771
|
+
capability: 'Launch',
|
|
7772
|
+
attribute: 'range',
|
|
7773
|
+
rationale: 'Resonant crystals focus electromagnetic launch field',
|
|
7774
|
+
},
|
|
7775
|
+
{
|
|
7776
|
+
stat: 'Resonance',
|
|
7777
|
+
capability: 'Launch',
|
|
7778
|
+
attribute: 'capacity',
|
|
7779
|
+
rationale: 'Stronger resonant field launches heavier payloads',
|
|
7780
|
+
},
|
|
7781
|
+
{
|
|
7782
|
+
stat: 'Hardness',
|
|
7783
|
+
capability: 'Manufacturing',
|
|
7784
|
+
attribute: 'speed',
|
|
7785
|
+
rationale: 'Hard tooling surfaces cut and shape materials faster',
|
|
7786
|
+
},
|
|
7787
|
+
{
|
|
7788
|
+
stat: 'Hardness',
|
|
7789
|
+
capability: 'Launch',
|
|
7790
|
+
attribute: 'drain',
|
|
7791
|
+
rationale: 'Hard rail surfaces reduce friction, less energy wasted',
|
|
7792
|
+
},
|
|
7793
|
+
{
|
|
7794
|
+
stat: 'Clarity',
|
|
7795
|
+
capability: 'Energy',
|
|
7796
|
+
attribute: 'recharge',
|
|
7797
|
+
rationale: 'Flawless crystals enable smoother energy flow during recharge',
|
|
7798
|
+
},
|
|
7799
|
+
{
|
|
7800
|
+
stat: 'Clarity',
|
|
7801
|
+
capability: 'Manufacturing',
|
|
7802
|
+
attribute: 'quality',
|
|
7803
|
+
rationale: 'Precision optics for calibration during fabrication',
|
|
7804
|
+
},
|
|
7805
|
+
{
|
|
7806
|
+
stat: 'Clarity',
|
|
7807
|
+
capability: 'Manufacturing',
|
|
7808
|
+
attribute: 'drain',
|
|
7809
|
+
rationale: 'Precision computing optimizes energy routing in factory',
|
|
7810
|
+
},
|
|
7811
|
+
{
|
|
7812
|
+
stat: 'Plasticity',
|
|
7813
|
+
capability: 'Manufacturing',
|
|
7814
|
+
attribute: 'speed',
|
|
7815
|
+
rationale: 'Easily reshaped materials speed up processing',
|
|
7816
|
+
},
|
|
7817
|
+
{
|
|
7818
|
+
stat: 'Plasticity',
|
|
7819
|
+
capability: 'Movement',
|
|
7820
|
+
attribute: 'thrust',
|
|
7821
|
+
rationale: 'Flexible polymer seals reduce friction in propulsion',
|
|
7822
|
+
},
|
|
7823
|
+
{
|
|
7824
|
+
stat: 'Plasticity',
|
|
7825
|
+
capability: 'Loader',
|
|
7826
|
+
attribute: 'thrust',
|
|
7827
|
+
rationale: 'Flexible joints improve loader force transfer',
|
|
7828
|
+
},
|
|
7829
|
+
{
|
|
7830
|
+
stat: 'Insulation',
|
|
7831
|
+
capability: 'Movement',
|
|
7832
|
+
attribute: 'drain',
|
|
7833
|
+
rationale: 'Better insulation reduces energy loss during movement',
|
|
7834
|
+
},
|
|
7835
|
+
{
|
|
7836
|
+
stat: 'Insulation',
|
|
7837
|
+
capability: 'Extraction',
|
|
7838
|
+
attribute: 'drain',
|
|
7839
|
+
rationale: 'Better insulation reduces energy loss during extraction',
|
|
7840
|
+
},
|
|
7841
|
+
{
|
|
7842
|
+
stat: 'Insulation',
|
|
7843
|
+
capability: 'Manufacturing',
|
|
7844
|
+
attribute: 'drain',
|
|
7845
|
+
rationale: 'Better insulation reduces energy loss during manufacturing',
|
|
7846
|
+
},
|
|
7847
|
+
{
|
|
7848
|
+
stat: 'Insulation',
|
|
7849
|
+
capability: 'Launch',
|
|
7850
|
+
attribute: 'drain',
|
|
7851
|
+
rationale: 'Better insulation reduces energy loss during launch',
|
|
7852
|
+
},
|
|
7853
|
+
{
|
|
7854
|
+
stat: 'Purity',
|
|
7855
|
+
capability: 'Storage',
|
|
7856
|
+
attribute: 'capacity',
|
|
7857
|
+
rationale: 'Purer composites make better containers',
|
|
7858
|
+
},
|
|
7859
|
+
{
|
|
7860
|
+
stat: 'Purity',
|
|
7861
|
+
capability: 'Extraction',
|
|
7862
|
+
attribute: 'drill',
|
|
7863
|
+
rationale: 'Purer bio-lubricants reduce friction during drilling',
|
|
7864
|
+
},
|
|
7865
|
+
{
|
|
7866
|
+
stat: 'Purity',
|
|
7867
|
+
capability: 'Energy',
|
|
7868
|
+
attribute: 'capacity',
|
|
7869
|
+
rationale: 'Purer organic electrolytes store more charge',
|
|
7870
|
+
},
|
|
7871
|
+
];
|
|
7872
|
+
const invertedAttributes = new Set(['drain', 'mass']);
|
|
7873
|
+
function isInvertedAttribute(attribute) {
|
|
7874
|
+
return invertedAttributes.has(attribute);
|
|
7875
|
+
}
|
|
7876
|
+
function getCapabilityAttributes(capability) {
|
|
7877
|
+
if (capability) {
|
|
7878
|
+
return capabilityAttributes.filter((a) => a.capability === capability);
|
|
7879
|
+
}
|
|
7880
|
+
return capabilityAttributes;
|
|
7881
|
+
}
|
|
7882
|
+
function getStatMappings() {
|
|
7883
|
+
return statMappings;
|
|
7884
|
+
}
|
|
7885
|
+
function getStatMappingsForStat(stat) {
|
|
7886
|
+
return statMappings.filter((m) => m.stat === stat);
|
|
7887
|
+
}
|
|
7888
|
+
function getStatMappingsForCapability(capability) {
|
|
7889
|
+
return statMappings.filter((m) => m.capability === capability);
|
|
7890
|
+
}
|
|
6839
7891
|
|
|
6840
7892
|
function computeShipHullCapabilities(stats) {
|
|
6841
7893
|
const density = stats.density ?? 500;
|
|
@@ -6853,7 +7905,7 @@ function computeEngineCapabilities(stats) {
|
|
|
6853
7905
|
const thm = stats.thermal ?? 500;
|
|
6854
7906
|
return {
|
|
6855
7907
|
thrust: 400 + Math.floor(vol * 3 / 4),
|
|
6856
|
-
drain: Math.max(
|
|
7908
|
+
drain: Math.max(30, 50 - Math.floor(thm / 70)),
|
|
6857
7909
|
};
|
|
6858
7910
|
}
|
|
6859
7911
|
function computeGeneratorCapabilities(stats) {
|
|
@@ -6893,6 +7945,25 @@ function computeManufacturingCapabilities(stats) {
|
|
|
6893
7945
|
drain: Math.max(5, 30 - Math.floor(clr / 33)),
|
|
6894
7946
|
};
|
|
6895
7947
|
}
|
|
7948
|
+
function computeStorageCapabilities(stats, baseCapacity) {
|
|
7949
|
+
const strength = stats.strength ?? 500;
|
|
7950
|
+
const ductility = stats.ductility ?? 500;
|
|
7951
|
+
const purity = stats.purity ?? 500;
|
|
7952
|
+
const statSum = strength + ductility + purity;
|
|
7953
|
+
const capacityBonus = Math.floor(baseCapacity * (10 + Math.floor(statSum * 10 / 2997)) / 100);
|
|
7954
|
+
return { capacityBonus };
|
|
7955
|
+
}
|
|
7956
|
+
function computeWarehouseHullCapabilities(stats) {
|
|
7957
|
+
const density = stats.density ?? 500;
|
|
7958
|
+
const strength = stats.strength ?? 500;
|
|
7959
|
+
const ductility = stats.ductility ?? 500;
|
|
7960
|
+
const purity = stats.purity ?? 500;
|
|
7961
|
+
const hullmass = 25000 + 75 * density;
|
|
7962
|
+
const statSum = strength + ductility + purity;
|
|
7963
|
+
const exponent = statSum / 2997.0;
|
|
7964
|
+
const capacity = Math.floor(20000000 * Math.pow(10, exponent));
|
|
7965
|
+
return { hullmass, capacity };
|
|
7966
|
+
}
|
|
6896
7967
|
|
|
6897
7968
|
function toNum(v) {
|
|
6898
7969
|
return Number(UInt16.from(v).value.toString());
|
|
@@ -6957,7 +8028,7 @@ function resolveComponent(id, seed) {
|
|
|
6957
8028
|
return {
|
|
6958
8029
|
itemId: id,
|
|
6959
8030
|
name: comp.name,
|
|
6960
|
-
icon: componentIcon,
|
|
8031
|
+
icon: itemIcons[id] ?? componentIcon,
|
|
6961
8032
|
tier: 't1',
|
|
6962
8033
|
mass: comp.mass,
|
|
6963
8034
|
itemType: 'component',
|
|
@@ -7004,6 +8075,16 @@ function computeCapabilityGroup(moduleType, stats) {
|
|
|
7004
8075
|
{ label: 'Drain', value: caps.drain },
|
|
7005
8076
|
] };
|
|
7006
8077
|
}
|
|
8078
|
+
case MODULE_STORAGE: {
|
|
8079
|
+
const str = stats.strength ?? 500;
|
|
8080
|
+
const duc = stats.ductility ?? 500;
|
|
8081
|
+
const pur = stats.purity ?? 500;
|
|
8082
|
+
const statSum = str + duc + pur;
|
|
8083
|
+
const pct = 10 + Math.floor(statSum * 10 / 2997);
|
|
8084
|
+
return { capability: 'Storage', attributes: [
|
|
8085
|
+
{ label: 'Capacity Bonus', value: pct },
|
|
8086
|
+
] };
|
|
8087
|
+
}
|
|
7007
8088
|
default:
|
|
7008
8089
|
return undefined;
|
|
7009
8090
|
}
|
|
@@ -7021,7 +8102,7 @@ function resolveModule(id, seed) {
|
|
|
7021
8102
|
return {
|
|
7022
8103
|
itemId: id,
|
|
7023
8104
|
name: recipe.name,
|
|
7024
|
-
icon: moduleIcon,
|
|
8105
|
+
icon: itemIcons[id] ?? moduleIcon,
|
|
7025
8106
|
tier: 't1',
|
|
7026
8107
|
mass: 0,
|
|
7027
8108
|
itemType: 'module',
|
|
@@ -7031,6 +8112,7 @@ function resolveModule(id, seed) {
|
|
|
7031
8112
|
function resolveEntity(id, seed, modules) {
|
|
7032
8113
|
const recipe = getEntityRecipeByItemId(id);
|
|
7033
8114
|
let attributes;
|
|
8115
|
+
let moduleSlots;
|
|
7034
8116
|
if (seed !== undefined) {
|
|
7035
8117
|
const stats = decodeCraftedItemStats(id, toBigSeed(seed));
|
|
7036
8118
|
attributes = [];
|
|
@@ -7049,28 +8131,35 @@ function resolveEntity(id, seed, modules) {
|
|
|
7049
8131
|
{ label: 'Capacity', value: containerCaps.capacity },
|
|
7050
8132
|
] });
|
|
7051
8133
|
}
|
|
7052
|
-
|
|
7053
|
-
|
|
7054
|
-
|
|
7055
|
-
|
|
8134
|
+
}
|
|
8135
|
+
if (recipe.moduleSlots) {
|
|
8136
|
+
moduleSlots = recipe.moduleSlots.map((slot, i) => {
|
|
8137
|
+
const mod = modules?.[i];
|
|
8138
|
+
if (mod?.installed) {
|
|
7056
8139
|
const modItemId = Number(mod.installed.item_id.value.toString());
|
|
7057
8140
|
const modSeed = BigInt(mod.installed.seed.toString());
|
|
7058
8141
|
const modStats = decodeCraftedItemStats(modItemId, modSeed);
|
|
7059
8142
|
const modType = getModuleCapabilityType(modItemId);
|
|
7060
8143
|
const group = computeCapabilityGroup(modType, modStats);
|
|
7061
|
-
|
|
7062
|
-
|
|
8144
|
+
const modRecipe = getModuleRecipeByItemId(modItemId);
|
|
8145
|
+
return {
|
|
8146
|
+
name: modRecipe?.name ?? 'Module',
|
|
8147
|
+
installed: true,
|
|
8148
|
+
attributes: group?.attributes,
|
|
8149
|
+
};
|
|
7063
8150
|
}
|
|
7064
|
-
|
|
8151
|
+
return { installed: false };
|
|
8152
|
+
});
|
|
7065
8153
|
}
|
|
7066
8154
|
return {
|
|
7067
8155
|
itemId: id,
|
|
7068
8156
|
name: recipe.name,
|
|
7069
|
-
icon: componentIcon,
|
|
8157
|
+
icon: itemIcons[id] ?? componentIcon,
|
|
7070
8158
|
tier: 't1',
|
|
7071
8159
|
mass: 0,
|
|
7072
8160
|
itemType: 'entity',
|
|
7073
8161
|
attributes,
|
|
8162
|
+
moduleSlots,
|
|
7074
8163
|
};
|
|
7075
8164
|
}
|
|
7076
8165
|
function resolveItem(itemId, seed, modules) {
|
|
@@ -7084,5 +8173,211 @@ function resolveItem(itemId, seed, modules) {
|
|
|
7084
8173
|
return resolveResource(id, seed);
|
|
7085
8174
|
}
|
|
7086
8175
|
|
|
7087
|
-
|
|
8176
|
+
function readCommonBase(data) {
|
|
8177
|
+
return {
|
|
8178
|
+
quantity: Number(data.quantity),
|
|
8179
|
+
seed: String(data.seed),
|
|
8180
|
+
origin_x: String(data.origin_x),
|
|
8181
|
+
origin_y: String(data.origin_y),
|
|
8182
|
+
};
|
|
8183
|
+
}
|
|
8184
|
+
function deserializeScalar(data, itemId) {
|
|
8185
|
+
const base = readCommonBase(data);
|
|
8186
|
+
return { item_id: itemId, quantity: base.quantity, seed: base.seed };
|
|
8187
|
+
}
|
|
8188
|
+
const deserializeResource = deserializeScalar;
|
|
8189
|
+
const deserializeComponent = deserializeScalar;
|
|
8190
|
+
const deserializeModule = deserializeScalar;
|
|
8191
|
+
function deserializeEntity(data, itemId) {
|
|
8192
|
+
const base = readCommonBase(data);
|
|
8193
|
+
const moduleItems = (data.module_items ?? []).map((v) => Number(v));
|
|
8194
|
+
const moduleSeeds = (data.module_seeds ?? []).map((v) => String(v));
|
|
8195
|
+
const layout = getEntitySlotLayout(itemId);
|
|
8196
|
+
const modules = layout.map((slot, i) => ({
|
|
8197
|
+
type: slot.type,
|
|
8198
|
+
installed: moduleItems[i] && moduleItems[i] !== 0
|
|
8199
|
+
? { item_id: moduleItems[i], seed: moduleSeeds[i] }
|
|
8200
|
+
: undefined,
|
|
8201
|
+
}));
|
|
8202
|
+
return { item_id: itemId, quantity: base.quantity, seed: base.seed, modules };
|
|
8203
|
+
}
|
|
8204
|
+
function deserializeAsset(data, itemId) {
|
|
8205
|
+
const type = itemTypeCode(itemId);
|
|
8206
|
+
switch (type) {
|
|
8207
|
+
case ITEM_TYPE_RESOURCE:
|
|
8208
|
+
case ITEM_TYPE_COMPONENT:
|
|
8209
|
+
case ITEM_TYPE_MODULE:
|
|
8210
|
+
return deserializeScalar(data, itemId);
|
|
8211
|
+
case ITEM_TYPE_ENTITY:
|
|
8212
|
+
return deserializeEntity(data, itemId);
|
|
8213
|
+
default:
|
|
8214
|
+
throw new Error(`unknown item type ${type} for item ${itemId}`);
|
|
8215
|
+
}
|
|
8216
|
+
}
|
|
8217
|
+
|
|
8218
|
+
function idiv(a, b) {
|
|
8219
|
+
return Math.floor(a / b);
|
|
8220
|
+
}
|
|
8221
|
+
function computeBaseHullmass(seed) {
|
|
8222
|
+
const density = decodeStat(seed, 1);
|
|
8223
|
+
return 25000 + 75 * density;
|
|
8224
|
+
}
|
|
8225
|
+
function computeBaseCapacityShip(seed) {
|
|
8226
|
+
const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
|
|
8227
|
+
return Math.floor(1000000 * Math.pow(10, s / 2997));
|
|
8228
|
+
}
|
|
8229
|
+
function computeBaseCapacityWarehouse(seed) {
|
|
8230
|
+
const s = decodeStat(seed, 0) + decodeStat(seed, 2) + decodeStat(seed, 3);
|
|
8231
|
+
return Math.floor(20000000 * Math.pow(10, s / 2997));
|
|
8232
|
+
}
|
|
8233
|
+
const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
|
|
8234
|
+
const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
|
|
8235
|
+
const computeGeneratorCap = (res) => 300 + idiv(res, 6);
|
|
8236
|
+
const computeGeneratorRech = (clr) => 5 + idiv(clr * 15, 1000);
|
|
8237
|
+
const computeExtractorRate = (str) => 200 + str;
|
|
8238
|
+
const computeExtractorDrain = (con) => Math.max(10, 50 - idiv(con, 20));
|
|
8239
|
+
const computeExtractorDepth = (tol) => 200 + idiv(tol * 3, 2);
|
|
8240
|
+
const computeExtractorDrill = (ref) => 100 + idiv(ref * 4, 5);
|
|
8241
|
+
const computeLoaderMass = (duc) => Math.max(200, 2000 - duc * 2);
|
|
8242
|
+
const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
|
|
8243
|
+
const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
|
|
8244
|
+
const computeCrafterDrain = (clr) => Math.max(5, 30 - idiv(clr, 33));
|
|
8245
|
+
function entityDisplayName(itemId) {
|
|
8246
|
+
switch (itemId) {
|
|
8247
|
+
case ITEM_SHIP_T1_PACKED:
|
|
8248
|
+
return 'Ship T1';
|
|
8249
|
+
case ITEM_WAREHOUSE_T1_PACKED:
|
|
8250
|
+
return 'Warehouse T1';
|
|
8251
|
+
case ITEM_CONTAINER_T1_PACKED:
|
|
8252
|
+
return 'Container T1';
|
|
8253
|
+
case ITEM_CONTAINER_T2_PACKED:
|
|
8254
|
+
return 'Container T2';
|
|
8255
|
+
default:
|
|
8256
|
+
return 'Entity';
|
|
8257
|
+
}
|
|
8258
|
+
}
|
|
8259
|
+
function moduleDisplayName(itemId) {
|
|
8260
|
+
switch (itemId) {
|
|
8261
|
+
case ITEM_ENGINE_T1:
|
|
8262
|
+
return 'Engine T1';
|
|
8263
|
+
case ITEM_GENERATOR_T1:
|
|
8264
|
+
return 'Generator T1';
|
|
8265
|
+
case ITEM_EXTRACTOR_T1:
|
|
8266
|
+
return 'Extractor T1';
|
|
8267
|
+
case ITEM_LOADER_T1:
|
|
8268
|
+
return 'Loader T1';
|
|
8269
|
+
case ITEM_MANUFACTURING_T1:
|
|
8270
|
+
return 'Manufacturing T1';
|
|
8271
|
+
case ITEM_STORAGE_T1:
|
|
8272
|
+
return 'Storage T1';
|
|
8273
|
+
default:
|
|
8274
|
+
return 'Module';
|
|
8275
|
+
}
|
|
8276
|
+
}
|
|
8277
|
+
function formatModuleLine(slot, itemId, seed) {
|
|
8278
|
+
let out = `Slot ${slot} - `;
|
|
8279
|
+
if (itemId === 0) {
|
|
8280
|
+
out += '(empty)';
|
|
8281
|
+
return out;
|
|
8282
|
+
}
|
|
8283
|
+
out += moduleDisplayName(itemId);
|
|
8284
|
+
const subtype = getModuleCapabilityType(itemId);
|
|
8285
|
+
switch (subtype) {
|
|
8286
|
+
case MODULE_ENGINE: {
|
|
8287
|
+
const vol = decodeStat(seed, 0);
|
|
8288
|
+
const thm = decodeStat(seed, 1);
|
|
8289
|
+
out += ` Thrust ${computeEngineThrust(vol)} Drain ${computeEngineDrain(thm)}`;
|
|
8290
|
+
break;
|
|
8291
|
+
}
|
|
8292
|
+
case MODULE_GENERATOR: {
|
|
8293
|
+
const res = decodeStat(seed, 0);
|
|
8294
|
+
const clr = decodeStat(seed, 1);
|
|
8295
|
+
out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(clr)}`;
|
|
8296
|
+
break;
|
|
8297
|
+
}
|
|
8298
|
+
case MODULE_EXTRACTOR: {
|
|
8299
|
+
const str = decodeStat(seed, 0);
|
|
8300
|
+
const tol = decodeStat(seed, 1);
|
|
8301
|
+
const con = decodeStat(seed, 3);
|
|
8302
|
+
const ref = decodeStat(seed, 4);
|
|
8303
|
+
out += ` Rate ${computeExtractorRate(str)} Depth ${computeExtractorDepth(tol)} Drill ${computeExtractorDrill(ref)} Drain ${computeExtractorDrain(con)}`;
|
|
8304
|
+
break;
|
|
8305
|
+
}
|
|
8306
|
+
case MODULE_LOADER: {
|
|
8307
|
+
const duc = decodeStat(seed, 0);
|
|
8308
|
+
const pla = decodeStat(seed, 1);
|
|
8309
|
+
out += ` Mass ${computeLoaderMass(duc)} Thrust ${computeLoaderThrust(pla)}`;
|
|
8310
|
+
break;
|
|
8311
|
+
}
|
|
8312
|
+
case MODULE_CRAFTER: {
|
|
8313
|
+
const rea = decodeStat(seed, 0);
|
|
8314
|
+
const clr = decodeStat(seed, 1);
|
|
8315
|
+
out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(clr)}`;
|
|
8316
|
+
break;
|
|
8317
|
+
}
|
|
8318
|
+
case MODULE_STORAGE: {
|
|
8319
|
+
const str = decodeStat(seed, 0);
|
|
8320
|
+
const duc = decodeStat(seed, 1);
|
|
8321
|
+
const pur = decodeStat(seed, 2);
|
|
8322
|
+
const sum = str + duc + pur;
|
|
8323
|
+
const pct = 10 + idiv(sum * 10, 2997);
|
|
8324
|
+
out += ` +${pct}% capacity`;
|
|
8325
|
+
break;
|
|
8326
|
+
}
|
|
8327
|
+
}
|
|
8328
|
+
return out;
|
|
8329
|
+
}
|
|
8330
|
+
function buildEntityDescription(itemId, hullSeed, moduleItems, moduleSeeds) {
|
|
8331
|
+
const hullMass = computeBaseHullmass(hullSeed);
|
|
8332
|
+
let baseCapacity = 0;
|
|
8333
|
+
if (itemId === ITEM_SHIP_T1_PACKED) {
|
|
8334
|
+
baseCapacity = computeBaseCapacityShip(hullSeed);
|
|
8335
|
+
}
|
|
8336
|
+
else if (itemId === ITEM_WAREHOUSE_T1_PACKED) {
|
|
8337
|
+
baseCapacity = computeBaseCapacityWarehouse(hullSeed);
|
|
8338
|
+
}
|
|
8339
|
+
let out = entityDisplayName(itemId);
|
|
8340
|
+
out += ` - Hull ${hullMass} mass`;
|
|
8341
|
+
if (baseCapacity > 0) {
|
|
8342
|
+
out += ` * ${baseCapacity} capacity`;
|
|
8343
|
+
}
|
|
8344
|
+
out += '\n\n';
|
|
8345
|
+
for (let i = 0; i < moduleItems.length; i++) {
|
|
8346
|
+
out += formatModuleLine(i, moduleItems[i], moduleSeeds[i] ?? 0n);
|
|
8347
|
+
out += '\n';
|
|
8348
|
+
}
|
|
8349
|
+
return out;
|
|
8350
|
+
}
|
|
8351
|
+
|
|
8352
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
8353
|
+
__proto__: null,
|
|
8354
|
+
readCommonBase: readCommonBase,
|
|
8355
|
+
deserializeScalar: deserializeScalar,
|
|
8356
|
+
deserializeResource: deserializeResource,
|
|
8357
|
+
deserializeComponent: deserializeComponent,
|
|
8358
|
+
deserializeModule: deserializeModule,
|
|
8359
|
+
deserializeEntity: deserializeEntity,
|
|
8360
|
+
deserializeAsset: deserializeAsset,
|
|
8361
|
+
computeBaseHullmass: computeBaseHullmass,
|
|
8362
|
+
computeBaseCapacityShip: computeBaseCapacityShip,
|
|
8363
|
+
computeBaseCapacityWarehouse: computeBaseCapacityWarehouse,
|
|
8364
|
+
computeEngineThrust: computeEngineThrust,
|
|
8365
|
+
computeEngineDrain: computeEngineDrain,
|
|
8366
|
+
computeGeneratorCap: computeGeneratorCap,
|
|
8367
|
+
computeGeneratorRech: computeGeneratorRech,
|
|
8368
|
+
computeExtractorRate: computeExtractorRate,
|
|
8369
|
+
computeExtractorDrain: computeExtractorDrain,
|
|
8370
|
+
computeExtractorDepth: computeExtractorDepth,
|
|
8371
|
+
computeExtractorDrill: computeExtractorDrill,
|
|
8372
|
+
computeLoaderMass: computeLoaderMass,
|
|
8373
|
+
computeLoaderThrust: computeLoaderThrust,
|
|
8374
|
+
computeCrafterSpeed: computeCrafterSpeed,
|
|
8375
|
+
computeCrafterDrain: computeCrafterDrain,
|
|
8376
|
+
entityDisplayName: entityDisplayName,
|
|
8377
|
+
moduleDisplayName: moduleDisplayName,
|
|
8378
|
+
formatModuleLine: formatModuleLine,
|
|
8379
|
+
buildEntityDescription: buildEntityDescription
|
|
8380
|
+
});
|
|
8381
|
+
|
|
8382
|
+
export { ActionsManager, BASE_ORBITAL_MASS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_Z, Container, Coordinates, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GameState, INITIAL_CONTAINER_CAPACITY, INITIAL_CONTAINER_HULLMASS, INITIAL_WAREHOUSE_CAPACITY, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_DOES_NOT_EXIST, ITEM_DRILL_SHAFT, ITEM_ENGINE_T1, ITEM_EXTRACTION_PROBE, ITEM_EXTRACTOR_T1, ITEM_GENERATOR_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MANUFACTURING_T1, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_POWER_CELL, ITEM_REACTION_CHAMBER, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_THRUSTER_CORE, ITEM_TOOL_BIT, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, InventoryAccessor, Item, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, MODULE_CRAFTER, MODULE_ENGINE, MODULE_EXTRACTOR, MODULE_GENERATOR, MODULE_LAUNCHER, MODULE_LOADER, MODULE_STORAGE, MODULE_WARP, index as NFT, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, PRECISION, platform as PlatformContract, Player, PlayersManager, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, ScheduleAccessor, server as ServerContract, Ship, Shipload, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, Warehouse, availableCapacity$1 as availableCapacity, availableCapacityFromMass, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildEntityDescription, calcCargoMass, calcEnergyUsage, calcLoadDuration, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_extraction_duration, calc_extraction_energy, calc_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasExtractor, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoUtils, categoryColors, categoryIcons, categoryItemMass, componentIcon, components, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeExtractorCapabilities, computeExtractorDepth, computeExtractorDrain, computeExtractorDrill, computeExtractorRate, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeManufacturingCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseHullCapabilities, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, depthScaleFactor, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStratum, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, distanceBetweenCoordinates, distanceBetweenPoints, encodeStats, energyPercent, entityDisplayName, entityRecipes, estimateDealTravelTime, estimateTravelTime, findNearbyPlanets, formatModuleLine, getAllCraftableItems, getCapabilityAttributes, getCategoryInfo, getComponentById, getComponentsForCategory, getComponentsForStat, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityRecipe, getEntityRecipeByItemId, getEntitySlotLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getModuleCapabilityType, getModuleRecipe, getModuleRecipeByItemId, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getResourceTier, getResourceWeight, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasExtractor, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, isCraftedItem, isExtractableLocation, isFull$1 as isFull, isFullFromMass, isInvertedAttribute, isModuleItem, isRelatedItem, itemCategory, itemIcons, itemIds, itemOffset, itemTier, itemTypeCode, lerp, makeContainer, makeShip, makeWarehouse, maxTravelDistance, moduleAccepts, moduleDisplayName, moduleIcon, moduleRecipes, needsRecharge, projectEntity, projectEntityAt, readCommonBase, resolveItem, resolveStats, rotation, schedule, statMappings, tierColors, toLocation };
|
|
7088
8383
|
//# sourceMappingURL=shipload.m.js.map
|