@shipload/sdk 0.7.1 → 2.0.0-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/lib/shipload.d.ts +1651 -226
  2. package/lib/shipload.js +4958 -1971
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +4787 -1940
  5. package/lib/shipload.m.js.map +1 -1
  6. package/package.json +5 -4
  7. package/src/contracts/server.ts +585 -203
  8. package/src/data/goods.json +23 -0
  9. package/src/data/syllables.json +1184 -0
  10. package/src/entities/cargo-utils.ts +47 -0
  11. package/src/entities/entity-inventory.ts +39 -0
  12. package/src/entities/gamestate.ts +152 -0
  13. package/src/entities/location.ts +241 -0
  14. package/src/entities/player.ts +287 -0
  15. package/src/entities/ship.ts +559 -0
  16. package/src/entities/warehouse.ts +205 -0
  17. package/src/errors.ts +46 -9
  18. package/src/index-module.ts +119 -7
  19. package/src/managers/actions.ts +168 -0
  20. package/src/managers/base.ts +25 -0
  21. package/src/managers/context.ts +104 -0
  22. package/src/managers/entities.ts +86 -0
  23. package/src/managers/epochs.ts +47 -0
  24. package/src/managers/index.ts +9 -0
  25. package/src/managers/locations.ts +103 -0
  26. package/src/managers/players.ts +13 -0
  27. package/src/managers/trades.ts +119 -0
  28. package/src/market/goods.ts +31 -0
  29. package/src/{market.ts → market/market.ts} +32 -37
  30. package/src/{rolls.ts → market/rolls.ts} +3 -3
  31. package/src/{epoch.ts → scheduling/epoch.ts} +1 -1
  32. package/src/scheduling/projection.ts +218 -0
  33. package/src/scheduling/schedule.ts +155 -0
  34. package/src/shipload.ts +39 -157
  35. package/src/trading/collect.ts +939 -0
  36. package/src/trading/deal.ts +208 -0
  37. package/src/trading/trade.ts +203 -0
  38. package/src/travel/travel.ts +425 -0
  39. package/src/types.ts +60 -25
  40. package/src/utils/system.ts +27 -0
  41. package/src/goods.ts +0 -124
  42. package/src/ship.ts +0 -36
  43. package/src/state.ts +0 -0
  44. package/src/syllables.ts +0 -1184
  45. package/src/system.ts +0 -37
  46. package/src/travel.ts +0 -259
  47. /package/src/{hash.ts → utils/hash.ts} +0 -0
@@ -3,15 +3,17 @@ import type {
3
3
  Checksum256Type,
4
4
  Int64Type,
5
5
  NameType,
6
+ TimePointType,
6
7
  UInt16Type,
8
+ UInt32Type,
7
9
  UInt64Type,
10
+ UInt8Type,
8
11
  } from '@wharfkit/antelope'
9
12
  import {
10
13
  ABI,
11
14
  Blob,
12
15
  Checksum256,
13
16
  Checksum512,
14
- Float64,
15
17
  Int64,
16
18
  Name,
17
19
  Struct,
@@ -24,7 +26,7 @@ import {
24
26
  import type {ActionOptions, ContractArgs, PartialBy, Table} from '@wharfkit/contract'
25
27
  import {Contract as BaseContract} from '@wharfkit/contract'
26
28
  export const abiBlob = Blob.from(
27
- 'DmVvc2lvOjphYmkvMS4yACcHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2BmFycml2ZQABAmlkBnVpbnQ2NAhidXlnb29kcwADB3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAdidXlzaGlwAAIHYWNjb3VudARuYW1lBG5hbWUGc3RyaW5nCWNhcmdvX3JvdwAGAmlkBnVpbnQ2NAdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NARwYWlkBnVpbnQ2NAVvd25lZAZ1aW50MzIGbG9hZGVkBnVpbnQzMgpjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2C2Nvb3JkaW5hdGVzAAIBeAVpbnQ2NAF5BWludDY0BmVuYWJsZQABB2VuYWJsZWQEYm9vbApnb29kX3ByaWNlAAMCaWQGdWludDE2BXByaWNlBnVpbnQ2NAZzdXBwbHkGdWludDY0BGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghqZXR0aXNvbgADB3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQ2NARqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyCHF1YW50aXR5BnVpbnQxNgZ0aHJ1c3QGdWludDMyDGxvY2F0aW9uX3JvdwAFAmlkBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwVlcG9jaAZ1aW50NjQHZ29vZF9pZAZ1aW50MTYGc3VwcGx5BnVpbnQxNgttYXJrZXRwcmljZQACCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB2dvb2RfaWQGdWludDE2DG1hcmtldHByaWNlcwABCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB3BheWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NApwbGF5ZXJfcm93AAQFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQ2NAhuZXR3b3J0aAVpbnQ2NARzYWx0AAEEc2FsdAZ1aW50NjQJc2VsbGdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0DHNlcXVlbmNlX3JvdwACA2tleQRuYW1lBXZhbHVlBnVpbnQ2NAhzaGlwX3JvdwAKAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nCGxvY2F0aW9uC2Nvb3JkaW5hdGVzBHNraW4FdWludDgEdGllcgV1aW50OAVzdGF0ZQpzaGlwX3N0YXRlBXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMKdHJhdmVscGxhbgx0cmF2ZWxfcGxhbj8Kc2hpcF9zdGF0ZQABBmVuZXJneQZ1aW50MzIKc2hpcF9zdGF0cwAHCGNhcGFjaXR5BnVpbnQzMgVkcmFpbgZ1aW50MzIEbWFzcwZ1aW50NjQHbWF4bWFzcwZ1aW50NjQFb3JiaXQGdWludDE2CHJlY2hhcmdlBnVpbnQzMgZ0aHJ1c3QGdWludDY0CXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50NjQEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2CHRha2Vsb2FuAAIHYWNjb3VudARuYW1lBmFtb3VudAZ1aW50NjQGdHJhdmVsAAMCaWQGdWludDY0C2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCHJlY2hhcmdlBGJvb2wLdHJhdmVsX3BsYW4ACQlkZXBhcnR1cmUKdGltZV9wb2ludAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwhkaXN0YW5jZQZ1aW50NjQKZmxpZ2h0dGltZQZ1aW50MzIIbG9hZHRpbWUGdWludDMyDHJlY2hhcmdldGltZQZ1aW50MzILbWFzc3BlbmFsdHkGdWludDMyBG1hc3MGdWludDY0C2VuZXJneXVzYWdlBnVpbnQzMg50cmF2ZWxfc3VtbWFyeQANBXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMGb3JpZ2luC2Nvb3JkaW5hdGVzC2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCGRpc3RhbmNlBnVpbnQ2NAl0b3RhbG1hc3MGdWludDY0DGFjY2VsZXJhdGlvbgdmbG9hdDY0CmZsaWdodHRpbWUGdWludDMyC2VuZXJneXVzYWdlBnVpbnQzMgxyZWNoYXJnZXRpbWUGdWludDMyC21hc3NwZW5hbHR5BnVpbnQzMghsb2FkdGltZQZ1aW50NjQEdGltZQZ1aW50NjQKdHJhdmVscGxhbgAEAmlkBnVpbnQ2NAZvcmlnaW4LY29vcmRpbmF0ZXMLZGVzdGluYXRpb24LY29vcmRpbmF0ZXMIcmVjaGFyZ2UEYm9vbAp0cmF2ZWx0aW1lAAICaWQGdWludDY0C2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzDHVwZGF0ZWNyZWRpdAACB2FjY291bnQEbmFtZQZhbW91bnQFaW50NjQKdXBkYXRlZGVidAACB2FjY291bnQEbmFtZQZhbW91bnQFaW50NjQLdXBncmFkZXNoaXAAAgdhY2NvdW50BG5hbWUCaWQGdWludDY0BHdpcGUAAAx3aXBlc2VxdWVuY2UAABoAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAAKjt7jUGYXJyaXZlswItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYXJyaXZlCnN1bW1hcnk6ICdDb21wbGV0ZSB0cmF2ZWwnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbXBsZXRlIHRoZSB0cmF2ZWwgb2YgYSBzaGlwIGJ5IHVwZGF0aW5nIGl0cyBsb2NhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY29vcmRpbmF0ZXMgYWZ0ZXIgdGhlIHRyYXZlbCBkdXJhdGlvbiBoYXMgcGFzc2VkLgoKLS0tAAAAOFHKvD4IYnV5Z29vZHPdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlnb29kcwpzdW1tYXJ5OiAnQnV5IGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBnb29kcyBhbmQgYWRkIHRoZW0gdG8gYSBzaGlwJ3MgY2FyZ28uAAAAoLqGvT4HYnV5c2hpcMYBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eXNoaXAKc3VtbWFyeTogJ0J1eSBhIG5ldyBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBzaGlwAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQAAAAAA0LBpBGhhc2j9AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhMjU2IGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTI1NiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuCgotLS0AAABAhNKwaQdoYXNoNTEy+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaDUxMgpzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTUxMiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGE1MTIgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAAAAkN10BGluaXT6AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0CnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAACTYpezeghqZXR0aXNvbvkBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpldHRpc29uCnN1bW1hcnk6ICdKZXR0aXNvbiBDYXJnbyBmcm9tIFNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpldHRpc29uIGNhcmdvIGZyb20gdGhlIGEgc2hpcCBhbmQgcmVjYWxjdWxhdGUgdHJhdmVsIHRpbWUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tABRyt2YFr5ELbWFya2V0cHJpY2WbAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBtYXJrZXRwcmljZQpzdW1tYXJ5OiAnR2V0IHByaWNlIG9mIGdvb2QgYXQgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhIHNwZWNpZmllZCBnb29kIGF0IGEgZ2l2ZW4gbG9jYXRpb24uCgotLS2AFXK3ZgWvkQxtYXJrZXRwcmljZXOVAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBtYXJrZXRwcmljZXMKc3VtbWFyeTogJ0dldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIGRldGVybWluZXMgdGhlIG1hcmtldCBwcmljZSBvZiBhbGwgZ29vZHMgYXQgYSBnaXZlbiBsb2NhdGlvbi4AAABgGhq9qQdwYXlsb2Fu3gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcGF5bG9hbgpzdW1tYXJ5OiAnTG9hbiBQYXltZW50JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpNYWtlIGEgcGF5bWVudCBvbiBhbiBvdXRzdGFuZGluZyBjcmVkaXQgbG9hbi4AAAAAAJCjwQRzYWx03QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2FsdApzdW1tYXJ5OiAnQXBwZW5kIFNhbHQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkZCBhZGRpdGlvbmFsIHNhbHQgdG8gdGhlIG5leHQgZXBvY2ggc2VlZC4KCi0tLQAAwIlSFqPCCXNlbGxnb29kc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxnb29kcwpzdW1tYXJ5OiAnU2VsbCBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBnb29kcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAA09CooMkIdGFrZWxvYW7qAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0YWtlbG9hbgpzdW1tYXJ5OiAnQ3JlZGl0IExvYW4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJvcnJvdyBjcmVkaXRzIGZyb20gdGhlIGJhbmsgdGhhdCB3aWxsIG5lZWQgdG8gYmUgcmVwYWlkLgAAAABEtc3NBnRyYXZlbMgCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhIHNoaXAgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBhIGdpdmVuIGxvY2F0aW9uLgDANLFGtc3NCnRyYXZlbHBsYW6OAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWxwbGFuCnN1bW1hcnk6ICdFc3RpbWF0ZSBhIHRyYXZlbCBwbGFuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGUgd2hhdCB0aGUgdHJhdmVsIHBsYW4gaXMgZm9yIGEgc2hpcCB0cmF2ZWxpbmcgdG8gYSBnaXZlbiBsb2NhdGlvbi4KCi0tLQCAki5Htc3NCnRyYXZlbHRpbWWMAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmF2ZWx0aW1lCnN1bW1hcnk6ICdFc3RpbWF0ZSBUcmF2ZWwgVGltZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRXN0aW1hdGUgdGhlIGR1cmF0aW9uIG9mIGEgc2hpcCB0cmF2ZWxpbmcgd2l0aG91dCBjb21taXR0aW5nIHRvIHRoZSBhY3Rpb24uCgotLS2QXVIXqWxS1Qx1cGRhdGVjcmVkaXTCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB1cGRhdGVjcmVkaXQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVjcmVkaXQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAEA+KqlsUtUKdXBkYXRlZGVidL4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWRlYnQKc3VtbWFyeTogJ0RFQlVHOiB1cGRhdGVkZWJ0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQCqa1glc1nVC3VwZ3JhZGVzaGlw1wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBncmFkZXNoaXAKc3VtbWFyeTogJ1VwZ3JhZGUgYSBTaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpVcGdyYWRlIGEgc2hpcCB0byB0aGUgbmV4dCB0aWVyLgAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS2g0FTaKqyq4wx3aXBlc2VxdWVuY2XCAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlc2VxdWVuY2UKc3VtbWFyeTogJ0RFQlVHOiB3aXBlc2VxdWVuY2UgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tBgAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAAJO6bBCNA2k2NAAADGxvY2F0aW9uX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAGAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAUcrdmBa+RCmdvb2RfcHJpY2WAFXK3ZgWvkQxnb29kX3ByaWNlW10AwDSxRrXNzQt0cmF2ZWxfcGxhbgCAki5Htc3NDnRyYXZlbF9zdW1tYXJ5'
29
+ 'DmVvc2lvOjphYmkvMS4yAEEHYWR2YW5jZQACBnJldmVhbAZzdHJpbmcGY29tbWl0C2NoZWNrc3VtMjU2CGJ1eWdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyB2J1eXNoaXAAAgdhY2NvdW50BG5hbWUEbmFtZQZzdHJpbmcMYnV5d2FyZWhvdXNlAAMHYWNjb3VudARuYW1lB3NoaXBfaWQGdWludDY0BG5hbWUGc3RyaW5nBmNhbmNlbAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50BnVpbnQ2NApjYW5jZWxfbG9nAAYFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKdGFza19pbmRleAV1aW50OAR0YXNrBHRhc2sKc3RhcnRlZF9hdAp0aW1lX3BvaW50DmNhbmNlbF9yZXN1bHRzAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/CmNhcmdvX2l0ZW0AAwdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIJdW5pdF9jb3N0BnVpbnQ2NAljYXJnb19yb3cABQJpZAZ1aW50NjQJZW50aXR5X2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQJdW5pdF9jb3N0BnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8GY29tbWl0AAEGY29tbWl0C2NoZWNrc3VtMjU2C2Nvb3JkaW5hdGVzAAMBeAVpbnQ2NAF5BWludDY0AXoHdWludDE2PwZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDE2CHJlY2hhcmdlBnVpbnQxNgtlbnRpdHlfaW5mbwAUBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10HbG9hZGVycw1sb2FkZXJfc3RhdHM/BmVuZXJneQd1aW50MTY/BG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/B2lzX2lkbGUEYm9vbAxjdXJyZW50X3Rhc2sFdGFzaz8UY3VycmVudF90YXNrX2VsYXBzZWQGdWludDMyFmN1cnJlbnRfdGFza19yZW1haW5pbmcGdWludDMyDXBlbmRpbmdfdGFza3MGdGFza1tdB2lkbGVfYXQLdGltZV9wb2ludD8Ic2NoZWR1bGUJc2NoZWR1bGU/DGVudGl0eV9zdGF0ZQACCGxvY2F0aW9uC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MTYOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CGdldGdvb2RzAAALZ2V0bG9jYXRpb24AAgF4BWludDY0AXkFaW50NjQJZ2V0bmVhcmJ5AAMLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wJZ2V0cGxheWVyAAEHYWNjb3VudARuYW1lDGdldHN1bW1hcmllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8EZ29vZAADAmlkBnVpbnQxNgpiYXNlX3ByaWNlBnVpbnQzMgRtYXNzBnVpbnQzMgpnb29kc19pbmZvAAEFZ29vZHMGZ29vZFtdBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwRpbml0AAEEc2VlZAtjaGVja3N1bTI1NgRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgNbG9jYXRpb25fZ29vZAAFAmlkBnVpbnQxNgVwcmljZQZ1aW50MzIGc3VwcGx5BnVpbnQxNhFyYXJpdHlfbXVsdGlwbGllcgZ1aW50MzITbG9jYXRpb25fbXVsdGlwbGllcgZ1aW50MzINbG9jYXRpb25faW5mbwADBmNvb3Jkcwtjb29yZGluYXRlcwlpc19zeXN0ZW0EYm9vbAVnb29kcw9sb2NhdGlvbl9nb29kW10MbG9jYXRpb25fcm93AAUCaWQGdWludDY0C2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBWVwb2NoBnVpbnQ2NAdnb29kX2lkBnVpbnQxNgZzdXBwbHkGdWludDE2CWxvZ2NhbmNlbAABA2xvZwpjYW5jZWxfbG9nCmxvZ3Jlc29sdmUAAQNsb2cLcmVzb2x2ZV9sb2cObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQxNgtuZWFyYnlfaW5mbwAFCmNhbl90cmF2ZWwEYm9vbAdjdXJyZW50DGVudGl0eV9zdGF0ZQlwcm9qZWN0ZWQMZW50aXR5X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvB3BheWxvYW4AAgdhY2NvdW50BG5hbWUGYW1vdW50BnVpbnQ2NAtwbGF5ZXJfaW5mbwALBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NA5hdmFpbGFibGVfbG9hbgZ1aW50NjQPbmV4dF9zaGlwX3ByaWNlBnVpbnQ2NBRuZXh0X3dhcmVob3VzZV9wcmljZQZ1aW50NjQKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NApwbGF5ZXJfcm93AAQFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQzMghuZXR3b3J0aAVpbnQ2NAtwdXJnZXN1cHBseQABCG1heF9yb3dzB3VpbnQ2ND8IcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAdyZXNvbHZlAAILZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQLcmVzb2x2ZV9sb2cADQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawpzdGFydGVkX2F0CnRpbWVfcG9pbnQMY29tcGxldGVkX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MTY/DG5ld19sb2NhdGlvbgxjb29yZGluYXRlcz8PY2FyZ29tYXNzX2RlbHRhBWludDY0C2NhcmdvX2FkZGVkDGNhcmdvX2l0ZW1bXQ1jYXJnb19yZW1vdmVkDGNhcmdvX2l0ZW1bXQdjcmVkaXRzBmludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQFdWludDgUbmV3X3NjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8Ec2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQlzZWxsZ29vZHMAAwdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIMc2VxdWVuY2Vfcm93AAIDa2V5BG5hbWUFdmFsdWUGdWludDY0CHNoaXBfcm93AAsCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMEbWFzcwZ1aW50MzIIY2FwYWNpdHkGdWludDMyBmVuZXJneQZ1aW50MTYHZW5naW5lcw5tb3ZlbWVudF9zdGF0cwlnZW5lcmF0b3IMZW5lcmd5X3N0YXRzB2xvYWRlcnMMbG9hZGVyX3N0YXRzCHNjaGVkdWxlCXNjaGVkdWxlPwlzdGF0ZV9yb3cABgdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNhbHQGdWludDY0BXNoaXBzBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2BmNvbW1pdAtjaGVja3N1bTI1Ngh0YWtlbG9hbgACB2FjY291bnQEbmFtZQZhbW91bnQGdWludDY0BHRhc2sABwR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4CGxvY2F0aW9uDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10GZW50aXR5B3VpbnQ2ND8HY3JlZGl0cwZpbnQ2ND8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdCHRyYW5zZmVyAAYLc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0B2dvb2RfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cAAgJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeQx1cGRhdGVjcmVkaXQAAgdhY2NvdW50BG5hbWUGYW1vdW50BWludDY0CnVwZGF0ZWRlYnQAAgdhY2NvdW50BG5hbWUGYW1vdW50BWludDY0DXdhcmVob3VzZV9yb3cABwJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwhsb2NhdGlvbgtjb29yZGluYXRlcwhjYXBhY2l0eQZ1aW50MzIHbG9hZGVycwxsb2FkZXJfc3RhdHMIc2NoZWR1bGUJc2NoZWR1bGU/BHdpcGUAAAx3aXBlc2VxdWVuY2UAACIAAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAOFHKvD4IYnV5Z29vZHPdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlnb29kcwpzdW1tYXJ5OiAnQnV5IGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBnb29kcyBhbmQgYWRkIHRoZW0gdG8gYSBzaGlwJ3MgY2FyZ28uAAAAoLqGvT4HYnV5c2hpcMYBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJ1eXNoaXAKc3VtbWFyeTogJ0J1eSBhIG5ldyBzaGlwJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyBzaGlwoLCmTV3DvT4MYnV5d2FyZWhvdXNlzAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYnV5d2FyZWhvdXNlCnN1bW1hcnk6ICdCdXkgYSBuZXcgd2FyZWhvdXNlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBhIG5ldyB3YXJlaG91c2UgYXQgdGhlIGxvY2F0aW9uIG9mIGFuIGlkbGUgc2hpcC4gV2FyZWhvdXNlcyBwcm92aWRlIGNhcmdvIHN0b3JhZ2Ugd2l0aCBsb2FkaW5nL3VubG9hZGluZyBjYXBhYmlsaXRpZXMgYnV0IGNhbm5vdCBtb3ZlLgAAAABEhaZBBmNhbmNlbMcCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNhbmNlbApzdW1tYXJ5OiAnQ2FuY2VsIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FuY2VsIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHRhc2tzIGZyb20gdGhlIGVuZCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZS4gVGFza3MgdGhhdCBhcmUgaW1tdXRhYmxlIGFuZCBpbiBwcm9ncmVzcyBjYW5ub3QgYmUgY2FuY2VsbGVkLgoKLS0tAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdPEBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4KCi0tLQAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQCwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLgAAADhRyrJiCGdldGdvb2RzqgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Z29vZHMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdHJhZGVhYmxlIGdvb2RzIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgbmFtZSwgYmFzZSBwcmljZSwgYW5kIG1hc3MuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggZ29vZDogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgAA8OcaNbNiCWdldG5lYXJied4DLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5lYXJieQpzdW1tYXJ5OiAnR2V0IG5lYXJieSByZWFjaGFibGUgc3lzdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBuZWFyYnkgc3lzdGVtcyByZWFjaGFibGUgYnkgYW4gZW50aXR5IGZyb20gaXRzIHByb2plY3RlZCBsb2NhdGlvbi4gUmV0dXJucyBjdXJyZW50IHN0YXRlICh3aXRoIGNvbXBsZXRlZCB0YXNrcyByZXNvbHZlZCksIHByb2plY3RlZCBzdGF0ZSAoYWZ0ZXIgYWxsIHNjaGVkdWxlZCB0YXNrcyksIGFuZCBhIGxpc3Qgb2YgcmVhY2hhYmxlIHN5c3RlbXMgd2l0aCBkaXN0YW5jZSwgZW5lcmd5IGNvc3QsIGZsaWdodCB0aW1lLCBhbmQgbWFya2V0IGluZm9ybWF0aW9uLgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AAAAAANCwaQRoYXNo/QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgoKLS0tAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbskBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAoKLS0tAACICk2DGI0JbG9nY2FuY2VsAACA2pFidRmNCmxvZ3Jlc29sdmUAAAAAYBoavakHcGF5bG9hbq8BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBheWxvYW4Kc3VtbWFyeTogJ0xvYW4gUGF5bWVudCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQB8rFVjxa6uC3B1cmdlc3VwcGx56QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcHVyZ2VzdXBwbHkKc3VtbWFyeTogJ1VwZGF0ZSBHYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJnZSBvbGQgc3VwcGx5IHJlY29yZHMgYW5kIGhlbHAgY2xlYW51cCBnYW1lIHN0YXRlLgAAAIpd05C6CHJlY2hhcmdl0gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4KCi0tLQAAAEDtSLG6B3Jlc29sdmXEAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZXNvbHZlCnN1bW1hcnk6ICdDb21wbGV0ZSBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4KCi0tLQAAAAAAkKPBBHNhbHTdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzYWx0CnN1bW1hcnk6ICdBcHBlbmQgU2FsdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWRkIGFkZGl0aW9uYWwgc2FsdCB0byB0aGUgbmV4dCBlcG9jaCBzZWVkLgoKLS0tAADAiVIWo8IJc2VsbGdvb2Rz1QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2VsbGdvb2RzCnN1bW1hcnk6ICdTZWxsIGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZWxsIGdvb2RzIGZyb20gYSBzaGlwJ3MgY2FyZ28uCgotLS0AAADT0KigyQh0YWtlbG9hbuoBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRha2Vsb2FuCnN1bW1hcnk6ICdDcmVkaXQgTG9hbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQm9ycm93IGNyZWRpdHMgZnJvbSB0aGUgYmFuayB0aGF0IHdpbGwgbmVlZCB0byBiZSByZXBhaWQuAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbMsCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBhIGdpdmVuIGxvY2F0aW9uLpBdUhepbFLVDHVwZGF0ZWNyZWRpdMIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWNyZWRpdApzdW1tYXJ5OiAnREVCVUc6IHVwZGF0ZWNyZWRpdCBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AQD4qqWxS1Qp1cGRhdGVkZWJ0vgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdXBkYXRlZGVidApzdW1tYXJ5OiAnREVCVUc6IHVwZGF0ZWRlYnQgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0IAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAk7psEI0DaTY0AAAMbG9jYXRpb25fcm93AAAAAFzlTawDaTY0AAAKcGxheWVyX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAQAAAAOFHKvD4MdGFza19yZXN1bHRzAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm8AAAA4UcqyYgpnb29kc19pbmZvACZ12SAas2INbG9jYXRpb25faW5mbwAA8OcaNbNiC25lYXJieV9pbmZvAAC4yptYs2ILcGxheWVyX2luZm+AlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwAAwIlSFqPCDHRhc2tfcmVzdWx0cwAAAFctPM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cw=='
28
30
  )
29
31
  export const abi = ABI.from(abiBlob)
30
32
  export namespace Types {
@@ -35,19 +37,14 @@ export namespace Types {
35
37
  @Struct.field(Checksum256)
36
38
  declare commit: Checksum256
37
39
  }
38
- @Struct.type('arrive')
39
- export class arrive extends Struct {
40
- @Struct.field(UInt64)
41
- declare id: UInt64
42
- }
43
40
  @Struct.type('buygoods')
44
41
  export class buygoods extends Struct {
45
42
  @Struct.field(UInt64)
46
43
  declare ship_id: UInt64
47
- @Struct.field(UInt64)
48
- declare good_id: UInt64
49
- @Struct.field(UInt64)
50
- declare quantity: UInt64
44
+ @Struct.field(UInt16)
45
+ declare good_id: UInt16
46
+ @Struct.field(UInt32)
47
+ declare quantity: UInt32
51
48
  }
52
49
  @Struct.type('buyship')
53
50
  export class buyship extends Struct {
@@ -56,20 +53,97 @@ export namespace Types {
56
53
  @Struct.field('string')
57
54
  declare name: string
58
55
  }
56
+ @Struct.type('buywarehouse')
57
+ export class buywarehouse extends Struct {
58
+ @Struct.field(Name)
59
+ declare account: Name
60
+ @Struct.field(UInt64)
61
+ declare ship_id: UInt64
62
+ @Struct.field('string')
63
+ declare name: string
64
+ }
65
+ @Struct.type('cancel')
66
+ export class cancel extends Struct {
67
+ @Struct.field(Name)
68
+ declare entity_type: Name
69
+ @Struct.field(UInt64)
70
+ declare id: UInt64
71
+ @Struct.field(UInt64)
72
+ declare count: UInt64
73
+ }
74
+ @Struct.type('coordinates')
75
+ export class coordinates extends Struct {
76
+ @Struct.field(Int64)
77
+ declare x: Int64
78
+ @Struct.field(Int64)
79
+ declare y: Int64
80
+ @Struct.field(UInt16, {optional: true})
81
+ declare z?: UInt16
82
+ }
83
+ @Struct.type('cargo_item')
84
+ export class cargo_item extends Struct {
85
+ @Struct.field(UInt16)
86
+ declare good_id: UInt16
87
+ @Struct.field(UInt32)
88
+ declare quantity: UInt32
89
+ @Struct.field(UInt64)
90
+ declare unit_cost: UInt64
91
+ }
92
+ @Struct.type('task')
93
+ export class task extends Struct {
94
+ @Struct.field(UInt8)
95
+ declare type: UInt8
96
+ @Struct.field(UInt32)
97
+ declare duration: UInt32
98
+ @Struct.field(UInt8)
99
+ declare cancelable: UInt8
100
+ @Struct.field(coordinates, {optional: true})
101
+ declare location?: coordinates
102
+ @Struct.field(cargo_item, {array: true})
103
+ declare cargo: cargo_item[]
104
+ @Struct.field(UInt64, {optional: true})
105
+ declare entity?: UInt64
106
+ @Struct.field(Int64, {optional: true})
107
+ declare credits?: Int64
108
+ }
109
+ @Struct.type('cancel_log')
110
+ export class cancel_log extends Struct {
111
+ @Struct.field(Name)
112
+ declare owner: Name
113
+ @Struct.field(Name)
114
+ declare entity_type: Name
115
+ @Struct.field(UInt64)
116
+ declare entity_id: UInt64
117
+ @Struct.field(UInt8)
118
+ declare task_index: UInt8
119
+ @Struct.field(task)
120
+ declare task: task
121
+ @Struct.field(TimePoint)
122
+ declare started_at: TimePoint
123
+ }
124
+ @Struct.type('cancel_results')
125
+ export class cancel_results extends Struct {
126
+ @Struct.field(UInt64)
127
+ declare entity_id: UInt64
128
+ @Struct.field(Name)
129
+ declare entity_type: Name
130
+ @Struct.field(UInt8)
131
+ declare cancelled_count: UInt8
132
+ @Struct.field(TimePoint, {optional: true})
133
+ declare schedule_started?: TimePoint
134
+ }
59
135
  @Struct.type('cargo_row')
60
136
  export class cargo_row extends Struct {
61
137
  @Struct.field(UInt64)
62
138
  declare id: UInt64
63
139
  @Struct.field(UInt64)
64
- declare ship_id: UInt64
140
+ declare entity_id: UInt64
65
141
  @Struct.field(UInt64)
66
142
  declare good_id: UInt64
67
143
  @Struct.field(UInt64)
68
- declare paid: UInt64
69
- @Struct.field(UInt32)
70
- declare owned: UInt32
71
- @Struct.field(UInt32)
72
- declare loaded: UInt32
144
+ declare quantity: UInt64
145
+ @Struct.field(UInt64)
146
+ declare unit_cost: UInt64
73
147
  }
74
148
  @Struct.type('cleartable')
75
149
  export class cleartable extends Struct {
@@ -85,26 +159,178 @@ export namespace Types {
85
159
  @Struct.field(Checksum256)
86
160
  declare commit: Checksum256
87
161
  }
88
- @Struct.type('coordinates')
89
- export class coordinates extends Struct {
162
+ @Struct.type('enable')
163
+ export class enable extends Struct {
164
+ @Struct.field('bool')
165
+ declare enabled: boolean
166
+ }
167
+ @Struct.type('energy_stats')
168
+ export class energy_stats extends Struct {
169
+ @Struct.field(UInt16)
170
+ declare capacity: UInt16
171
+ @Struct.field(UInt16)
172
+ declare recharge: UInt16
173
+ }
174
+ @Struct.type('loader_stats')
175
+ export class loader_stats extends Struct {
176
+ @Struct.field(UInt32)
177
+ declare mass: UInt32
178
+ @Struct.field(UInt16)
179
+ declare thrust: UInt16
180
+ @Struct.field(UInt8)
181
+ declare quantity: UInt8
182
+ }
183
+ @Struct.type('movement_stats')
184
+ export class movement_stats extends Struct {
185
+ @Struct.field(UInt32)
186
+ declare thrust: UInt32
187
+ @Struct.field(UInt16)
188
+ declare drain: UInt16
189
+ }
190
+ @Struct.type('schedule')
191
+ export class schedule extends Struct {
192
+ @Struct.field(TimePoint)
193
+ declare started: TimePoint
194
+ @Struct.field(task, {array: true})
195
+ declare tasks: task[]
196
+ }
197
+ @Struct.type('entity_info')
198
+ export class entity_info extends Struct {
199
+ @Struct.field(Name)
200
+ declare type: Name
201
+ @Struct.field(UInt64)
202
+ declare id: UInt64
203
+ @Struct.field(Name)
204
+ declare owner: Name
205
+ @Struct.field('string')
206
+ declare entity_name: string
207
+ @Struct.field(coordinates)
208
+ declare location: coordinates
209
+ @Struct.field(UInt32)
210
+ declare cargomass: UInt32
211
+ @Struct.field(cargo_item, {array: true})
212
+ declare cargo: cargo_item[]
213
+ @Struct.field(loader_stats, {optional: true})
214
+ declare loaders?: loader_stats
215
+ @Struct.field(UInt16, {optional: true})
216
+ declare energy?: UInt16
217
+ @Struct.field(UInt32, {optional: true})
218
+ declare mass?: UInt32
219
+ @Struct.field(movement_stats, {optional: true})
220
+ declare engines?: movement_stats
221
+ @Struct.field(energy_stats, {optional: true})
222
+ declare generator?: energy_stats
223
+ @Struct.field(UInt32, {optional: true})
224
+ declare capacity?: UInt32
225
+ @Struct.field('bool')
226
+ declare is_idle: boolean
227
+ @Struct.field(task, {optional: true})
228
+ declare current_task?: task
229
+ @Struct.field(UInt32)
230
+ declare current_task_elapsed: UInt32
231
+ @Struct.field(UInt32)
232
+ declare current_task_remaining: UInt32
233
+ @Struct.field(task, {array: true})
234
+ declare pending_tasks: task[]
235
+ @Struct.field(TimePoint, {optional: true})
236
+ declare idle_at?: TimePoint
237
+ @Struct.field(schedule, {optional: true})
238
+ declare schedule?: schedule
239
+ }
240
+ @Struct.type('entity_state')
241
+ export class entity_state extends Struct {
242
+ @Struct.field(coordinates)
243
+ declare location: coordinates
244
+ @Struct.field(UInt16)
245
+ declare energy: UInt16
246
+ }
247
+ @Struct.type('entity_summary')
248
+ export class entity_summary extends Struct {
249
+ @Struct.field(Name)
250
+ declare type: Name
251
+ @Struct.field(UInt64)
252
+ declare id: UInt64
253
+ @Struct.field(Name)
254
+ declare owner: Name
255
+ @Struct.field('string')
256
+ declare entity_name: string
257
+ @Struct.field(coordinates)
258
+ declare location: coordinates
259
+ @Struct.field('bool')
260
+ declare is_idle: boolean
261
+ @Struct.field(UInt32)
262
+ declare resolved_count: UInt32
263
+ @Struct.field(UInt32)
264
+ declare pending_count: UInt32
265
+ }
266
+ @Struct.type('entity_task_info')
267
+ export class entity_task_info extends Struct {
268
+ @Struct.field(UInt64)
269
+ declare entity_id: UInt64
270
+ @Struct.field(Name)
271
+ declare entity_type: Name
272
+ @Struct.field(UInt8)
273
+ declare task_count: UInt8
274
+ @Struct.field(TimePoint)
275
+ declare schedule_started: TimePoint
276
+ }
277
+ @Struct.type('getentities')
278
+ export class getentities extends Struct {
279
+ @Struct.field(Name)
280
+ declare owner: Name
281
+ @Struct.field(Name, {optional: true})
282
+ declare entity_type?: Name
283
+ }
284
+ @Struct.type('getentity')
285
+ export class getentity extends Struct {
286
+ @Struct.field(Name)
287
+ declare entity_type: Name
288
+ @Struct.field(UInt64)
289
+ declare entity_id: UInt64
290
+ }
291
+ @Struct.type('getgoods')
292
+ export class getgoods extends Struct {}
293
+ @Struct.type('getlocation')
294
+ export class getlocation extends Struct {
90
295
  @Struct.field(Int64)
91
296
  declare x: Int64
92
297
  @Struct.field(Int64)
93
298
  declare y: Int64
94
299
  }
95
- @Struct.type('enable')
96
- export class enable extends Struct {
300
+ @Struct.type('getnearby')
301
+ export class getnearby extends Struct {
302
+ @Struct.field(Name)
303
+ declare entity_type: Name
304
+ @Struct.field(UInt64)
305
+ declare entity_id: UInt64
97
306
  @Struct.field('bool')
98
- declare enabled: boolean
307
+ declare recharge: boolean
99
308
  }
100
- @Struct.type('good_price')
101
- export class good_price extends Struct {
309
+ @Struct.type('getplayer')
310
+ export class getplayer extends Struct {
311
+ @Struct.field(Name)
312
+ declare account: Name
313
+ }
314
+ @Struct.type('getsummaries')
315
+ export class getsummaries extends Struct {
316
+ @Struct.field(Name)
317
+ declare owner: Name
318
+ @Struct.field(Name, {optional: true})
319
+ declare entity_type?: Name
320
+ }
321
+ @Struct.type('good')
322
+ export class good extends Struct {
102
323
  @Struct.field(UInt16)
103
324
  declare id: UInt16
104
- @Struct.field(UInt64)
105
- declare price: UInt64
106
- @Struct.field(UInt64)
107
- declare supply: UInt64
325
+ @Struct.field(UInt32)
326
+ declare base_price: UInt32
327
+ @Struct.field(UInt32)
328
+ declare mass: UInt32
329
+ }
330
+ @Struct.type('goods_info')
331
+ export class goods_info extends Struct {
332
+ @Struct.field(good, {array: true})
333
+ declare goods: good[]
108
334
  }
109
335
  @Struct.type('hash')
110
336
  export class hash extends Struct {
@@ -121,28 +347,32 @@ export namespace Types {
121
347
  @Struct.field(Checksum256)
122
348
  declare seed: Checksum256
123
349
  }
124
- @Struct.type('jettison')
125
- export class jettison extends Struct {
126
- @Struct.field(UInt64)
127
- declare ship_id: UInt64
128
- @Struct.field(UInt16)
129
- declare good_id: UInt16
130
- @Struct.field(UInt64)
131
- declare quantity: UInt64
132
- }
133
350
  @Struct.type('join')
134
351
  export class join extends Struct {
135
352
  @Struct.field(Name)
136
353
  declare account: Name
137
354
  }
138
- @Struct.type('loader_stats')
139
- export class loader_stats extends Struct {
355
+ @Struct.type('location_good')
356
+ export class location_good extends Struct {
357
+ @Struct.field(UInt16)
358
+ declare id: UInt16
140
359
  @Struct.field(UInt32)
141
- declare mass: UInt32
360
+ declare price: UInt32
142
361
  @Struct.field(UInt16)
143
- declare quantity: UInt16
362
+ declare supply: UInt16
144
363
  @Struct.field(UInt32)
145
- declare thrust: UInt32
364
+ declare rarity_multiplier: UInt32
365
+ @Struct.field(UInt32)
366
+ declare location_multiplier: UInt32
367
+ }
368
+ @Struct.type('location_info')
369
+ export class location_info extends Struct {
370
+ @Struct.field(coordinates)
371
+ declare coords: coordinates
372
+ @Struct.field('bool')
373
+ declare is_system: boolean
374
+ @Struct.field(location_good, {array: true})
375
+ declare goods: location_good[]
146
376
  }
147
377
  @Struct.type('location_row')
148
378
  export class location_row extends Struct {
@@ -157,17 +387,68 @@ export namespace Types {
157
387
  @Struct.field(UInt16)
158
388
  declare supply: UInt16
159
389
  }
160
- @Struct.type('marketprice')
161
- export class marketprice extends Struct {
162
- @Struct.field(coordinates)
163
- declare location: coordinates
164
- @Struct.field(UInt16)
165
- declare good_id: UInt16
390
+ @Struct.type('logcancel')
391
+ export class logcancel extends Struct {
392
+ @Struct.field(cancel_log)
393
+ declare log: cancel_log
166
394
  }
167
- @Struct.type('marketprices')
168
- export class marketprices extends Struct {
169
- @Struct.field(coordinates)
170
- declare location: coordinates
395
+ @Struct.type('resolve_log')
396
+ export class resolve_log extends Struct {
397
+ @Struct.field(Name)
398
+ declare owner: Name
399
+ @Struct.field(Name)
400
+ declare entity_type: Name
401
+ @Struct.field(UInt64)
402
+ declare entity_id: UInt64
403
+ @Struct.field(UInt8)
404
+ declare task_index: UInt8
405
+ @Struct.field(task)
406
+ declare task: task
407
+ @Struct.field(TimePoint)
408
+ declare started_at: TimePoint
409
+ @Struct.field(TimePoint)
410
+ declare completed_at: TimePoint
411
+ @Struct.field(UInt16, {optional: true})
412
+ declare new_energy?: UInt16
413
+ @Struct.field(coordinates, {optional: true})
414
+ declare new_location?: coordinates
415
+ @Struct.field(Int64)
416
+ declare cargomass_delta: Int64
417
+ @Struct.field(cargo_item, {array: true})
418
+ declare cargo_added: cargo_item[]
419
+ @Struct.field(cargo_item, {array: true})
420
+ declare cargo_removed: cargo_item[]
421
+ @Struct.field(Int64, {optional: true})
422
+ declare credits?: Int64
423
+ }
424
+ @Struct.type('logresolve')
425
+ export class logresolve extends Struct {
426
+ @Struct.field(resolve_log)
427
+ declare log: resolve_log
428
+ }
429
+ @Struct.type('nearby_system')
430
+ export class nearby_system extends Struct {
431
+ @Struct.field(UInt64)
432
+ declare distance: UInt64
433
+ @Struct.field(UInt64)
434
+ declare energy_cost: UInt64
435
+ @Struct.field(UInt32)
436
+ declare flight_time: UInt32
437
+ @Struct.field(location_info)
438
+ declare location: location_info
439
+ }
440
+ @Struct.type('nearby_info')
441
+ export class nearby_info extends Struct {
442
+ @Struct.field('bool')
443
+ declare can_travel: boolean
444
+ @Struct.field(entity_state)
445
+ declare current: entity_state
446
+ @Struct.field(entity_state)
447
+ declare projected: entity_state
448
+ @Struct.field(UInt16)
449
+ declare max_energy: UInt16
450
+ @Struct.field(nearby_system, {array: true})
451
+ declare systems: nearby_system[]
171
452
  }
172
453
  @Struct.type('payloan')
173
454
  export class payloan extends Struct {
@@ -176,17 +457,72 @@ export namespace Types {
176
457
  @Struct.field(UInt64)
177
458
  declare amount: UInt64
178
459
  }
460
+ @Struct.type('player_info')
461
+ export class player_info extends Struct {
462
+ @Struct.field(Name)
463
+ declare owner: Name
464
+ @Struct.field('bool')
465
+ declare is_player: boolean
466
+ @Struct.field('string')
467
+ declare company_name: string
468
+ @Struct.field(UInt64)
469
+ declare balance: UInt64
470
+ @Struct.field(UInt32)
471
+ declare debt: UInt32
472
+ @Struct.field(Int64)
473
+ declare networth: Int64
474
+ @Struct.field(UInt64)
475
+ declare available_loan: UInt64
476
+ @Struct.field(UInt64)
477
+ declare next_ship_price: UInt64
478
+ @Struct.field(UInt64)
479
+ declare next_warehouse_price: UInt64
480
+ @Struct.field(UInt64)
481
+ declare ship_count: UInt64
482
+ @Struct.field(UInt64)
483
+ declare warehouse_count: UInt64
484
+ }
179
485
  @Struct.type('player_row')
180
486
  export class player_row extends Struct {
181
487
  @Struct.field(Name)
182
488
  declare owner: Name
183
489
  @Struct.field(UInt64)
184
490
  declare balance: UInt64
185
- @Struct.field(UInt64)
186
- declare debt: UInt64
491
+ @Struct.field(UInt32)
492
+ declare debt: UInt32
187
493
  @Struct.field(Int64)
188
494
  declare networth: Int64
189
495
  }
496
+ @Struct.type('purgesupply')
497
+ export class purgesupply extends Struct {
498
+ @Struct.field(UInt64, {optional: true})
499
+ declare max_rows?: UInt64
500
+ }
501
+ @Struct.type('recharge')
502
+ export class recharge extends Struct {
503
+ @Struct.field(Name)
504
+ declare entity_type: Name
505
+ @Struct.field(UInt64)
506
+ declare id: UInt64
507
+ }
508
+ @Struct.type('resolve')
509
+ export class resolve extends Struct {
510
+ @Struct.field(Name)
511
+ declare entity_type: Name
512
+ @Struct.field(UInt64)
513
+ declare id: UInt64
514
+ }
515
+ @Struct.type('resolve_results')
516
+ export class resolve_results extends Struct {
517
+ @Struct.field(UInt64)
518
+ declare entity_id: UInt64
519
+ @Struct.field(Name)
520
+ declare entity_type: Name
521
+ @Struct.field(UInt8)
522
+ declare resolved_count: UInt8
523
+ @Struct.field(TimePoint, {optional: true})
524
+ declare new_schedule_started?: TimePoint
525
+ }
190
526
  @Struct.type('salt')
191
527
  export class salt extends Struct {
192
528
  @Struct.field(UInt64)
@@ -196,10 +532,10 @@ export namespace Types {
196
532
  export class sellgoods extends Struct {
197
533
  @Struct.field(UInt64)
198
534
  declare ship_id: UInt64
199
- @Struct.field(UInt64)
200
- declare good_id: UInt64
201
- @Struct.field(UInt64)
202
- declare quantity: UInt64
535
+ @Struct.field(UInt16)
536
+ declare good_id: UInt16
537
+ @Struct.field(UInt32)
538
+ declare quantity: UInt32
203
539
  }
204
540
  @Struct.type('sequence_row')
205
541
  export class sequence_row extends Struct {
@@ -208,49 +544,6 @@ export namespace Types {
208
544
  @Struct.field(UInt64)
209
545
  declare value: UInt64
210
546
  }
211
- @Struct.type('ship_state')
212
- export class ship_state extends Struct {
213
- @Struct.field(UInt32)
214
- declare energy: UInt32
215
- }
216
- @Struct.type('ship_stats')
217
- export class ship_stats extends Struct {
218
- @Struct.field(UInt32)
219
- declare capacity: UInt32
220
- @Struct.field(UInt32)
221
- declare drain: UInt32
222
- @Struct.field(UInt64)
223
- declare mass: UInt64
224
- @Struct.field(UInt64)
225
- declare maxmass: UInt64
226
- @Struct.field(UInt16)
227
- declare orbit: UInt16
228
- @Struct.field(UInt32)
229
- declare recharge: UInt32
230
- @Struct.field(UInt64)
231
- declare thrust: UInt64
232
- }
233
- @Struct.type('travel_plan')
234
- export class travel_plan extends Struct {
235
- @Struct.field(TimePoint)
236
- declare departure: TimePoint
237
- @Struct.field(coordinates)
238
- declare destination: coordinates
239
- @Struct.field(UInt64)
240
- declare distance: UInt64
241
- @Struct.field(UInt32)
242
- declare flighttime: UInt32
243
- @Struct.field(UInt32)
244
- declare loadtime: UInt32
245
- @Struct.field(UInt32)
246
- declare rechargetime: UInt32
247
- @Struct.field(UInt32)
248
- declare masspenalty: UInt32
249
- @Struct.field(UInt64)
250
- declare mass: UInt64
251
- @Struct.field(UInt32)
252
- declare energyusage: UInt32
253
- }
254
547
  @Struct.type('ship_row')
255
548
  export class ship_row extends Struct {
256
549
  @Struct.field(UInt64)
@@ -261,25 +554,27 @@ export namespace Types {
261
554
  declare name: string
262
555
  @Struct.field(coordinates)
263
556
  declare location: coordinates
264
- @Struct.field(UInt8)
265
- declare skin: UInt8
266
- @Struct.field(UInt8)
267
- declare tier: UInt8
268
- @Struct.field(ship_state)
269
- declare state: ship_state
270
- @Struct.field(ship_stats)
271
- declare stats: ship_stats
557
+ @Struct.field(UInt32)
558
+ declare mass: UInt32
559
+ @Struct.field(UInt32)
560
+ declare capacity: UInt32
561
+ @Struct.field(UInt16)
562
+ declare energy: UInt16
563
+ @Struct.field(movement_stats)
564
+ declare engines: movement_stats
565
+ @Struct.field(energy_stats)
566
+ declare generator: energy_stats
272
567
  @Struct.field(loader_stats)
273
568
  declare loaders: loader_stats
274
- @Struct.field(travel_plan, {optional: true})
275
- declare travelplan?: travel_plan
569
+ @Struct.field(schedule, {optional: true})
570
+ declare schedule?: schedule
276
571
  }
277
572
  @Struct.type('state_row')
278
573
  export class state_row extends Struct {
279
574
  @Struct.field('bool')
280
575
  declare enabled: boolean
281
- @Struct.field(UInt64)
282
- declare epoch: UInt64
576
+ @Struct.field(UInt32)
577
+ declare epoch: UInt32
283
578
  @Struct.field(UInt64)
284
579
  declare salt: UInt64
285
580
  @Struct.field(UInt32)
@@ -296,61 +591,45 @@ export namespace Types {
296
591
  @Struct.field(UInt64)
297
592
  declare amount: UInt64
298
593
  }
299
- @Struct.type('travel')
300
- export class travel extends Struct {
301
- @Struct.field(UInt64)
302
- declare id: UInt64
303
- @Struct.field(coordinates)
304
- declare destination: coordinates
305
- @Struct.field('bool')
306
- declare recharge: boolean
594
+ @Struct.type('task_results')
595
+ export class task_results extends Struct {
596
+ @Struct.field(entity_task_info, {array: true})
597
+ declare entities: entity_task_info[]
307
598
  }
308
- @Struct.type('travel_summary')
309
- export class travel_summary extends Struct {
310
- @Struct.field(ship_stats)
311
- declare stats: ship_stats
312
- @Struct.field(loader_stats)
313
- declare loaders: loader_stats
314
- @Struct.field(coordinates)
315
- declare origin: coordinates
316
- @Struct.field(coordinates)
317
- declare destination: coordinates
599
+ @Struct.type('transfer')
600
+ export class transfer extends Struct {
601
+ @Struct.field(Name)
602
+ declare source_type: Name
318
603
  @Struct.field(UInt64)
319
- declare distance: UInt64
604
+ declare source_id: UInt64
605
+ @Struct.field(Name)
606
+ declare dest_type: Name
320
607
  @Struct.field(UInt64)
321
- declare totalmass: UInt64
322
- @Struct.field(Float64)
323
- declare acceleration: Float64
324
- @Struct.field(UInt32)
325
- declare flighttime: UInt32
326
- @Struct.field(UInt32)
327
- declare energyusage: UInt32
328
- @Struct.field(UInt32)
329
- declare rechargetime: UInt32
608
+ declare dest_id: UInt64
609
+ @Struct.field(UInt16)
610
+ declare good_id: UInt16
330
611
  @Struct.field(UInt32)
331
- declare masspenalty: UInt32
332
- @Struct.field(UInt64)
333
- declare loadtime: UInt64
334
- @Struct.field(UInt64)
335
- declare time: UInt64
612
+ declare quantity: UInt32
336
613
  }
337
- @Struct.type('travelplan')
338
- export class travelplan extends Struct {
614
+ @Struct.type('travel')
615
+ export class travel extends Struct {
616
+ @Struct.field(Name)
617
+ declare entity_type: Name
339
618
  @Struct.field(UInt64)
340
619
  declare id: UInt64
341
- @Struct.field(coordinates)
342
- declare origin: coordinates
343
- @Struct.field(coordinates)
344
- declare destination: coordinates
620
+ @Struct.field(Int64)
621
+ declare x: Int64
622
+ @Struct.field(Int64)
623
+ declare y: Int64
345
624
  @Struct.field('bool')
346
625
  declare recharge: boolean
347
626
  }
348
- @Struct.type('traveltime')
349
- export class traveltime extends Struct {
627
+ @Struct.type('types_row')
628
+ export class types_row extends Struct {
350
629
  @Struct.field(UInt64)
351
630
  declare id: UInt64
352
- @Struct.field(coordinates)
353
- declare destination: coordinates
631
+ @Struct.field(entity_summary)
632
+ declare entity_summary_type: entity_summary
354
633
  }
355
634
  @Struct.type('updatecredit')
356
635
  export class updatecredit extends Struct {
@@ -366,12 +645,22 @@ export namespace Types {
366
645
  @Struct.field(Int64)
367
646
  declare amount: Int64
368
647
  }
369
- @Struct.type('upgradeship')
370
- export class upgradeship extends Struct {
371
- @Struct.field(Name)
372
- declare account: Name
648
+ @Struct.type('warehouse_row')
649
+ export class warehouse_row extends Struct {
373
650
  @Struct.field(UInt64)
374
651
  declare id: UInt64
652
+ @Struct.field(Name)
653
+ declare owner: Name
654
+ @Struct.field('string')
655
+ declare name: string
656
+ @Struct.field(coordinates)
657
+ declare location: coordinates
658
+ @Struct.field(UInt32)
659
+ declare capacity: UInt32
660
+ @Struct.field(loader_stats)
661
+ declare loaders: loader_stats
662
+ @Struct.field(schedule, {optional: true})
663
+ declare schedule?: schedule
375
664
  }
376
665
  @Struct.type('wipe')
377
666
  export class wipe extends Struct {}
@@ -385,6 +674,8 @@ export const TableMap = {
385
674
  sequence: Types.sequence_row,
386
675
  ship: Types.ship_row,
387
676
  state: Types.state_row,
677
+ types: Types.types_row,
678
+ warehouse: Types.warehouse_row,
388
679
  }
389
680
  export interface TableTypes {
390
681
  cargo: Types.cargo_row
@@ -393,32 +684,79 @@ export interface TableTypes {
393
684
  sequence: Types.sequence_row
394
685
  ship: Types.ship_row
395
686
  state: Types.state_row
687
+ types: Types.types_row
688
+ warehouse: Types.warehouse_row
396
689
  }
397
690
  export type RowType<T> = T extends keyof TableTypes ? TableTypes[T] : any
398
691
  export type TableNames = keyof TableTypes
399
692
  export namespace ActionParams {
400
693
  export namespace Type {
694
+ export interface cancel_log {
695
+ owner: NameType
696
+ entity_type: NameType
697
+ entity_id: UInt64Type
698
+ task_index: UInt8Type
699
+ task: Type.task
700
+ started_at: TimePointType
701
+ }
702
+ export interface task {
703
+ type: UInt8Type
704
+ duration: UInt32Type
705
+ cancelable: UInt8Type
706
+ location?: Type.coordinates
707
+ cargo: Type.cargo_item[]
708
+ entity?: UInt64Type
709
+ credits?: Int64Type
710
+ }
401
711
  export interface coordinates {
402
712
  x: Int64Type
403
713
  y: Int64Type
714
+ z?: UInt16Type
715
+ }
716
+ export interface cargo_item {
717
+ good_id: UInt16Type
718
+ quantity: UInt32Type
719
+ unit_cost: UInt64Type
720
+ }
721
+ export interface resolve_log {
722
+ owner: NameType
723
+ entity_type: NameType
724
+ entity_id: UInt64Type
725
+ task_index: UInt8Type
726
+ task: Type.task
727
+ started_at: TimePointType
728
+ completed_at: TimePointType
729
+ new_energy?: UInt16Type
730
+ new_location?: Type.coordinates
731
+ cargomass_delta: Int64Type
732
+ cargo_added: Type.cargo_item[]
733
+ cargo_removed: Type.cargo_item[]
734
+ credits?: Int64Type
404
735
  }
405
736
  }
406
737
  export interface advance {
407
738
  reveal: string
408
739
  commit: Checksum256Type
409
740
  }
410
- export interface arrive {
411
- id: UInt64Type
412
- }
413
741
  export interface buygoods {
414
742
  ship_id: UInt64Type
415
- good_id: UInt64Type
416
- quantity: UInt64Type
743
+ good_id: UInt16Type
744
+ quantity: UInt32Type
417
745
  }
418
746
  export interface buyship {
419
747
  account: NameType
420
748
  name: string
421
749
  }
750
+ export interface buywarehouse {
751
+ account: NameType
752
+ ship_id: UInt64Type
753
+ name: string
754
+ }
755
+ export interface cancel {
756
+ entity_type: NameType
757
+ id: UInt64Type
758
+ count: UInt64Type
759
+ }
422
760
  export interface cleartable {
423
761
  table_name: NameType
424
762
  scope?: NameType
@@ -430,6 +768,31 @@ export namespace ActionParams {
430
768
  export interface enable {
431
769
  enabled: boolean
432
770
  }
771
+ export interface getentities {
772
+ owner: NameType
773
+ entity_type?: NameType
774
+ }
775
+ export interface getentity {
776
+ entity_type: NameType
777
+ entity_id: UInt64Type
778
+ }
779
+ export interface getgoods {}
780
+ export interface getlocation {
781
+ x: Int64Type
782
+ y: Int64Type
783
+ }
784
+ export interface getnearby {
785
+ entity_type: NameType
786
+ entity_id: UInt64Type
787
+ recharge: boolean
788
+ }
789
+ export interface getplayer {
790
+ account: NameType
791
+ }
792
+ export interface getsummaries {
793
+ owner: NameType
794
+ entity_type?: NameType
795
+ }
433
796
  export interface hash {
434
797
  value: string
435
798
  }
@@ -439,52 +802,57 @@ export namespace ActionParams {
439
802
  export interface init {
440
803
  seed: Checksum256Type
441
804
  }
442
- export interface jettison {
443
- ship_id: UInt64Type
444
- good_id: UInt16Type
445
- quantity: UInt64Type
446
- }
447
805
  export interface join {
448
806
  account: NameType
449
807
  }
450
- export interface marketprice {
451
- location: Type.coordinates
452
- good_id: UInt16Type
808
+ export interface logcancel {
809
+ log: Type.cancel_log
453
810
  }
454
- export interface marketprices {
455
- location: Type.coordinates
811
+ export interface logresolve {
812
+ log: Type.resolve_log
456
813
  }
457
814
  export interface payloan {
458
815
  account: NameType
459
816
  amount: UInt64Type
460
817
  }
818
+ export interface purgesupply {
819
+ max_rows?: UInt64Type
820
+ }
821
+ export interface recharge {
822
+ entity_type: NameType
823
+ id: UInt64Type
824
+ }
825
+ export interface resolve {
826
+ entity_type: NameType
827
+ id: UInt64Type
828
+ }
461
829
  export interface salt {
462
830
  salt: UInt64Type
463
831
  }
464
832
  export interface sellgoods {
465
833
  ship_id: UInt64Type
466
- good_id: UInt64Type
467
- quantity: UInt64Type
834
+ good_id: UInt16Type
835
+ quantity: UInt32Type
468
836
  }
469
837
  export interface takeloan {
470
838
  account: NameType
471
839
  amount: UInt64Type
472
840
  }
473
- export interface travel {
474
- id: UInt64Type
475
- destination: Type.coordinates
476
- recharge: boolean
841
+ export interface transfer {
842
+ source_type: NameType
843
+ source_id: UInt64Type
844
+ dest_type: NameType
845
+ dest_id: UInt64Type
846
+ good_id: UInt16Type
847
+ quantity: UInt32Type
477
848
  }
478
- export interface travelplan {
849
+ export interface travel {
850
+ entity_type: NameType
479
851
  id: UInt64Type
480
- origin: Type.coordinates
481
- destination: Type.coordinates
852
+ x: Int64Type
853
+ y: Int64Type
482
854
  recharge: boolean
483
855
  }
484
- export interface traveltime {
485
- id: UInt64Type
486
- destination: Type.coordinates
487
- }
488
856
  export interface updatecredit {
489
857
  account: NameType
490
858
  amount: Int64Type
@@ -493,49 +861,63 @@ export namespace ActionParams {
493
861
  account: NameType
494
862
  amount: Int64Type
495
863
  }
496
- export interface upgradeship {
497
- account: NameType
498
- id: UInt64Type
499
- }
500
864
  export interface wipe {}
501
865
  export interface wipesequence {}
502
866
  }
503
867
  export interface ActionNameParams {
504
868
  advance: ActionParams.advance
505
- arrive: ActionParams.arrive
506
869
  buygoods: ActionParams.buygoods
507
870
  buyship: ActionParams.buyship
871
+ buywarehouse: ActionParams.buywarehouse
872
+ cancel: ActionParams.cancel
508
873
  cleartable: ActionParams.cleartable
509
874
  commit: ActionParams.commit
510
875
  enable: ActionParams.enable
876
+ getentities: ActionParams.getentities
877
+ getentity: ActionParams.getentity
878
+ getgoods: ActionParams.getgoods
879
+ getlocation: ActionParams.getlocation
880
+ getnearby: ActionParams.getnearby
881
+ getplayer: ActionParams.getplayer
882
+ getsummaries: ActionParams.getsummaries
511
883
  hash: ActionParams.hash
512
884
  hash512: ActionParams.hash512
513
885
  init: ActionParams.init
514
- jettison: ActionParams.jettison
515
886
  join: ActionParams.join
516
- marketprice: ActionParams.marketprice
517
- marketprices: ActionParams.marketprices
887
+ logcancel: ActionParams.logcancel
888
+ logresolve: ActionParams.logresolve
518
889
  payloan: ActionParams.payloan
890
+ purgesupply: ActionParams.purgesupply
891
+ recharge: ActionParams.recharge
892
+ resolve: ActionParams.resolve
519
893
  salt: ActionParams.salt
520
894
  sellgoods: ActionParams.sellgoods
521
895
  takeloan: ActionParams.takeloan
896
+ transfer: ActionParams.transfer
522
897
  travel: ActionParams.travel
523
- travelplan: ActionParams.travelplan
524
- traveltime: ActionParams.traveltime
525
898
  updatecredit: ActionParams.updatecredit
526
899
  updatedebt: ActionParams.updatedebt
527
- upgradeship: ActionParams.upgradeship
528
900
  wipe: ActionParams.wipe
529
901
  wipesequence: ActionParams.wipesequence
530
902
  }
531
903
  export type ActionNames = keyof ActionNameParams
532
904
  export interface ActionReturnValues {
905
+ buygoods: Types.task_results
906
+ cancel: Types.cancel_results
907
+ getentities: Types.entity_info[]
908
+ getentity: Types.entity_info
909
+ getgoods: Types.goods_info
910
+ getlocation: Types.location_info
911
+ getnearby: Types.nearby_info
912
+ getplayer: Types.player_info
913
+ getsummaries: Types.entity_summary[]
533
914
  hash: Checksum256
534
915
  hash512: Checksum512
535
- marketprice: Types.good_price
536
- marketprices: Types.good_price[]
537
- travelplan: Types.travel_plan
538
- traveltime: Types.travel_summary
916
+ recharge: Types.task_results
917
+ resolve: Types.resolve_results
918
+ sellgoods: Types.task_results
919
+ transfer: Types.task_results
920
+ travel: Types.task_results
539
921
  }
540
922
  export type ActionReturnNames = keyof ActionReturnValues
541
923
  export class Contract extends BaseContract {