@shipload/sdk 1.0.0-next.50 → 1.0.0-next.52
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 +544 -149
- package/lib/shipload.js +2424 -448
- package/lib/shipload.js.map +1 -1
- package/lib/shipload.m.js +2390 -447
- package/lib/shipload.m.js.map +1 -1
- package/lib/testing.d.ts +131 -7
- package/lib/testing.js +469 -11
- package/lib/testing.js.map +1 -1
- package/lib/testing.m.js +470 -12
- package/lib/testing.m.js.map +1 -1
- package/package.json +1 -1
- package/src/capabilities/crafting.ts +10 -1
- package/src/capabilities/gathering.ts +1 -1
- package/src/capabilities/hauling.ts +0 -5
- package/src/capabilities/modules.ts +6 -0
- package/src/capabilities/movement.ts +1 -1
- package/src/contracts/server.ts +315 -8
- package/src/data/capabilities.ts +11 -2
- package/src/data/entities.json +235 -20
- package/src/data/item-ids.ts +10 -0
- package/src/data/items.json +61 -0
- package/src/data/kind-registry.json +53 -1
- package/src/data/kind-registry.ts +5 -0
- package/src/data/metadata.ts +74 -5
- package/src/data/recipes-runtime.ts +1 -0
- package/src/data/recipes.json +887 -118
- package/src/derivation/capabilities.test.ts +81 -4
- package/src/derivation/capabilities.ts +162 -57
- package/src/derivation/crafting.ts +2 -0
- package/src/derivation/recipe-usage.test.ts +10 -7
- package/src/derivation/rollups.ts +16 -0
- package/src/derivation/stat-scaling.ts +12 -0
- package/src/entities/makers.ts +10 -1
- package/src/index-module.ts +33 -3
- package/src/managers/actions.ts +89 -44
- package/src/managers/construction-types.ts +2 -2
- package/src/managers/construction.ts +15 -15
- package/src/managers/plot.ts +1 -1
- package/src/nft/buildImmutableData.ts +55 -9
- package/src/nft/description.ts +99 -36
- package/src/planner/planner.test.ts +50 -41
- package/src/resolution/resolve-item.test.ts +1 -1
- package/src/resolution/resolve-item.ts +26 -11
- package/src/scheduling/availability.ts +7 -6
- package/src/scheduling/cancel.test.ts +40 -6
- package/src/scheduling/cancel.ts +21 -29
- package/src/scheduling/jobs.ts +71 -0
- package/src/scheduling/lanes.ts +29 -0
- package/src/scheduling/projection.ts +42 -25
- package/src/scheduling/task-cargo.ts +1 -1
- package/src/testing/projection-parity.ts +2 -2
- package/src/travel/reach.ts +4 -6
- package/src/travel/route-planner.ts +60 -49
- package/src/travel/route-simulator.ts +170 -0
- package/src/travel/travel.ts +40 -5
- package/src/types/capabilities.ts +9 -3
- package/src/types.ts +8 -3
- package/src/managers/flatten-gather-plan.test.ts +0 -80
package/lib/shipload.m.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __decorate } from 'tslib';
|
|
2
|
-
import { Blob, ABI, Struct, Name, Asset, UInt64, Checksum256, UInt32, TimePointSec, ExtendedAsset, UInt16, UInt8, Int64, TimePoint, Int8,
|
|
2
|
+
import { Blob, ABI, Struct, Name, Asset, UInt64, Checksum256, UInt32, TimePointSec, ExtendedAsset, UInt16, UInt8, Int64, TimePoint, Int8, Bytes, BlockTimestamp, Int32, Checksum512, PermissionLevel, Action, APIClient, Serializer } from '@wharfkit/antelope';
|
|
3
3
|
import ContractKit, { Contract as Contract$2 } from '@wharfkit/contract';
|
|
4
4
|
|
|
5
5
|
const abiBlob$1 = Blob.from('DmVvc2lvOjphYmkvMS4yAB0LYmFsYW5jZV9yb3cAAg50b2tlbl9jb250cmFjdARuYW1lB2JhbGFuY2UFYXNzZXQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BWNsb3NlAAMFb3duZXIEbmFtZQ50b2tlbl9jb250cmFjdARuYW1lDHRva2VuX3N5bWJvbAZzeW1ib2wLY29tcGFueV9yb3cAAgdhY2NvdW50BG5hbWUEbmFtZQZzdHJpbmcMZGViaXRkZXBvc2l0AAUFb3duZXIEbmFtZQV0b2tlbgRuYW1lBmxvY2tlZAVhc3NldAtmZWVfYWNjb3VudARuYW1lA2ZlZQVhc3NldA5kZXBvc2l0Y2ZnX3JvdwACDnRva2VuX2NvbnRyYWN0BG5hbWUMdG9rZW5fc3ltYm9sBnN5bWJvbAZlbmFibGUAAQdlbmFibGVkBGJvb2wKZW5hYmxlZ2FtZQACCGNvbnRyYWN0BG5hbWUHZW5hYmxlZARib29sDGZvdW5kY29tcGFueQACB2FjY291bnQEbmFtZQRuYW1lBnN0cmluZwtnYW1lX2NvbmZpZwAEBHNlZWQLY2hlY2tzdW0yNTYJZXBvY2h0aW1lBnVpbnQzMgVzdGFydA50aW1lX3BvaW50X3NlYwNlbmQOdGltZV9wb2ludF9zZWMJZ2FtZV9tZXRhAAQEbmFtZQZzdHJpbmcLZGVzY3JpcHRpb24Gc3RyaW5nA3VybAZzdHJpbmcHdmVyc2lvbgZzdHJpbmcIZ2FtZV9yb3cABAhjb250cmFjdARuYW1lBmNvbmZpZwtnYW1lX2NvbmZpZwRtZXRhCWdhbWVfbWV0YQVzdGF0ZQpnYW1lX3N0YXRlCmdhbWVfc3RhdGUAAQdlbmFibGVkBGJvb2wEb3BlbgADBW93bmVyBG5hbWUOdG9rZW5fY29udHJhY3QEbmFtZQx0b2tlbl9zeW1ib2wGc3ltYm9sDHJlbGdhdGVhc3NldAABCGFzc2V0X2lkBnVpbnQ2NAxyZWxnYXRlb3duZXIAAQVvd25lcgRuYW1lDHNldGVwb2NodGltZQACCGNvbnRyYWN0BG5hbWUJZXBvY2h0aW1lBnVpbnQzMghzZXR0b2tlbgACDnRva2VuX2NvbnRyYWN0BG5hbWUMdG9rZW5fc3ltYm9sBnN5bWJvbAlzdGFydGdhbWUABAhjb250cmFjdARuYW1lBmNvbmZpZwtnYW1lX2NvbmZpZwRtZXRhCWdhbWVfbWV0YQVzdGF0ZQpnYW1lX3N0YXRlCXN0YXRlX3JvdwABB2VuYWJsZWQEYm9vbAt1bndyYXBjYXJnbwADBGdhbWUEbmFtZQVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NA51bndyYXBjdXN0X3JvdwACCGFzc2V0X2lkBnVpbnQ2NAVvd25lcgRuYW1lDHVud3JhcGVudGl0eQADBGdhbWUEbmFtZQVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NAp1cGRhdGVnYW1lAAIIY29udHJhY3QEbmFtZQRtZXRhCWdhbWVfbWV0YQR3aXBlAAAId2l0aGRyYXcAAwVvd25lcgRuYW1lCHF1YW50aXR5DmV4dGVuZGVkX2Fzc2V0BG1lbW8Gc3RyaW5nCXdyYXBjYXJnbwAGBGdhbWUEbmFtZQVvd25lcgRuYW1lCWVudGl0eV9pZAZ1aW50NjQIbmV4dXNfaWQGdWludDY0CGNhcmdvX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQKd3JhcGVudGl0eQAEBGdhbWUEbmFtZQVvd25lcgRuYW1lCWVudGl0eV9pZAZ1aW50NjQIbmV4dXNfaWQGdWludDY0DHdyYXBnYXRlX3JvdwADBW93bmVyBG5hbWUEZ2FtZQRuYW1lDWxhc3RfYXNzZXRfaWQGdWludDY0EwCAisfka1RECmNsZWFydGFibGW+AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhcnRhYmxlCnN1bW1hcnk6ICdERUJVRzogY2xlYXJ0YWJsZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAIVpRAVjbG9zZeICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsb3NlCnN1bW1hcnk6ICdDbG9zZSBhIGRlcG9zaXQgYmFsYW5jZSByb3cnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpDbG9zZSB0aGUgb3duZXIncyBkZXBvc2l0IGJhbGFuY2Ugcm93IGZvciB0aGUgZ2l2ZW4gdG9rZW4gYW5kIGZyZWUgaXRzIFJBTS4gVGhlIGJhbGFuY2UgbXVzdCBiZSB6ZXJvIGJlZm9yZSBjbG9zaW5nLiBSZXF1aXJlcyB0aGUgb3duZXIncyBhdXRob3JpdHkukB2mVaXsjkoMZGViaXRkZXBvc2l0nQQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGViaXRkZXBvc2l0CnN1bW1hcnk6ICdEZWJpdCBhIGRlcG9zaXQgYmFsYW5jZSBmb3IgYSB3cmFwIG9wZXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1ODExMzc4MiNkM2JmMjkwZmRkZWRkYmI3ZDMyYWE4OTdlOWY3ZTllMTNhMmFlNDQ5NTYxNDJlMjNlYjQ3Yjc3MDk2YTJlYThkCgotLS0KCkludGVybmFsIGFjdGlvbiBjYWxsZWQgaW5saW5lIGJ5IGEgcmVnaXN0ZXJlZCwgZW5hYmxlZCBnYW1lIGNvbnRyYWN0IG9ubHkuIERlYml0cyB0aGUgb3duZXIncyBkZXBvc2l0IGJhbGFuY2UgYnkgdGhlIGxvY2tlZCBhbW91bnQgcGx1cyB0aGUgZmVlLCBhbmQgY3JlZGl0cyB0aGUgZmVlIHRvIHRoZSBjb25maWd1cmVkIGZlZSBhY2NvdW50LiBVc2VkIGJ5IGEgZ2FtZSdzIHdyYXAgZmxvdyB0byBjb2xsZWN0IHRoZSB3cmFwIGNvc3QuIENhbm5vdCBiZSBjYWxsZWQgZGlyZWN0bHkgYnkgcGxheWVycyBvciB1bnJlZ2lzdGVyZWQgYWNjb3VudHMuAAAAAKh4zFQGZW5hYmxl8wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdFbmFibGUvZGlzYWJsZSBwbGF0Zm9ybScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1ODExMzc4MiNkM2JmMjkwZmRkZWRkYmI3ZDMyYWE4OTdlOWY3ZTllMTNhMmFlNDQ5NTYxNDJlMjNlYjQ3Yjc3MDk2YTJlYThkCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoZSBwbGF0Zm9ybSBjb250cmFjdC4AgJKGqXjMVAplbmFibGVnYW1l/AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlZ2FtZQpzdW1tYXJ5OiAnRW5hYmxlL2Rpc2JhYmxlIGEgZ2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE1ODExMzc4MiNkM2JmMjkwZmRkZWRkYmI3ZDMyYWE4OTdlOWY3ZTllMTNhMmFlNDQ5NTYxNDJlMjNlYjQ3Yjc3MDk2YTJlYThkCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoZSBzcGVjaWZpZWQgZ2FtZSBjb250cmFjdC7gp6mSojQ1XQxmb3VuZGNvbXBhbnmDAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBmb3VuZGNvbXBhbnkKc3VtbWFyeTogJ0ZvdW5kIGEgbmV3IGNvbXBhbnknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpGb3VuZCBhIG5ldyBjb21wYW55IGluIHRoZSBTaGlwbG9hZCBwbGF0Zm9ybSBjb250cmFjdC4AAAAAADBVpQRvcGVumwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogb3BlbgpzdW1tYXJ5OiAnT3BlbiBhIGRlcG9zaXQgYmFsYW5jZSByb3cnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpPcGVuIGEgemVyby1iYWxhbmNlIGRlcG9zaXQgcm93IGZvciB0aGUgZ2l2ZW4gb3duZXIgYW5kIHRva2VuLCB3aXRoIFJBTSBwYWlkIGJ5IHRoZSBvd25lci4gSGFzIG5vIGVmZmVjdCBpZiB0aGUgcm93IGFscmVhZHkgZXhpc3RzLiBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhlIG93bmVyIGNhbiByZWNlaXZlIHRva2VuIGRlcG9zaXRzIG9yIHdyYXAgcmVmdW5kcy6QFcZGZcOiugxyZWxnYXRlYXNzZXQAcNXkVGXDoroMcmVsZ2F0ZW93bmVyAKCkyw3RqrLCDHNldGVwb2NodGltZcQCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNldGVwb2NodGltZQpzdW1tYXJ5OiAnREVCVUc6IG92ZXJyaWRlIGEgZ2FtZScncyBlcG9jaCB0aW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpPdmVycmlkZSB0aGUgZXBvY2ggZHVyYXRpb24gaW4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHNwZWNpZmllZCBnYW1lIGNvbnRyYWN0LiBSZXF1aXJlcyBwbGF0Zm9ybSBjb250cmFjdCBhdXRob3JpdHkuAAAAU0Gas8IIc2V0dG9rZW6dAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzZXR0b2tlbgpzdW1tYXJ5OiAnU2V0IHRoZSBhY2NlcHRlZCBkZXBvc2l0IHRva2VuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKQWRtaW4gYWN0aW9uIHRoYXQgc2V0cyB0aGUgYWNjZXB0ZWQgZGVwb3NpdCB0b2tlbiAoY29udHJhY3QgYWNjb3VudCBhbmQgc3ltYm9sKSBmb3IgdGhlIHBsYXRmb3JtLiBBbGwgcGxheWVyIGRlcG9zaXRzIGFuZCB3cmFwIGNvc3RzIGFyZSBkZW5vbWluYXRlZCBpbiB0aGlzIHRva2VuLiBSZXF1aXJlcyBwbGF0Zm9ybSBjb250cmFjdCBhdXRob3JpdHkuAABQ0rB8TcYJc3RhcnRnYW1l/wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3RhcnRnYW1lCnN1bW1hcnk6ICdTdGFydCBhIG5ldyBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKU3RhcnQgYSBuZXcgZ2FtZSBvZiBTaGlwbG9hZCBkZXBsb3llZCB0byBhIG5ldyBjb250cmFjdC4AKLsGVXP51At1bndyYXBjYXJnb88ELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVud3JhcGNhcmdvCnN1bW1hcnk6ICdEZXBvc2l0IGFuIE5GVCBpbnRvIGEgaG9zdCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkRlcG9zaXQgYW4gQXRvbWljQXNzZXRzIE5GVCBpbnRvIGEgaG9zdCBlbnRpdHkncyBjYXJnby4gUGFpcnMgd2l0aCBhbiBhdG9taWNhc3NldHM6OnRyYW5zZmVyIGNhcnJ5aW5nIHRoZSAndW53cmFwJyBtZW1vIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uLiBUaGUgY2FsbGVyIG11c3Qgb3duIHRoZSBob3N0LCB0aGUgaG9zdCBtdXN0IGhhdmUgbG9hZGVycywgYW5kIHRoZSBob3N0IG11c3QgaGF2ZSBjYXBhY2l0eSBoZWFkcm9vbSBmb3IgdGhlIHVud3JhcHBlZCBtYXNzLiBTY2hlZHVsZXMgYSBUQVNLX1VOV1JBUCBvbiB0aGUgaG9zdCB0aGF0LCBvbiByZXNvbHV0aW9uLCBwbGFjZXMgdGhlIGRlY29kZWQgaXRlbSBpbnRvIHRoZSBob3N0J3MgY2FyZ28gYW5kIGJ1cm5zIHRoZSBORlQu4LPLU1Vz+dQMdW53cmFwZW50aXR54gQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdW53cmFwZW50aXR5CnN1bW1hcnk6ICdEZXBsb3kgYW4gZW50aXR5IE5GVCBkaXJlY3RseSB0byBhIG5leHVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpEZXBsb3kgYSBwYWNrZWQtZW50aXR5IEF0b21pY0Fzc2V0cyBORlQgKG9yYml0YWwgdmVzc2VsOiBzaGlwIG9yIGNvbnRhaW5lcikgZGlyZWN0bHkgYXMgYSBsaXZlIGVudGl0eS4gUGFpcnMgd2l0aCBhbiBhdG9taWNhc3NldHM6OnRyYW5zZmVyIGNhcnJ5aW5nIHRoZSAnZGVwbG95JyBtZW1vIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uLiBUaGUgTkZUIGlzIGJ1cm5lZCwgYSBuZXcgZW50aXR5IHJvdyBpcyBlbXBsYWNlZCBhdCB0aGUgTkZUJ3Mgd3JhcCBvcmlnaW4gcGFpZCBieSB0aGUgb3duZXIsIGFuZCBUQVNLX1RSQVZFTCBwbHVzIFRBU0tfUkVDSEFSR0UgYXJlIHF1ZXVlZCB0byBkZWxpdmVyIHRoZSBlbnRpdHkgdG8gdGhlIHRhcmdldCBuZXh1cyBhbmQgYnJpbmcgaXQgdG8gZnVsbCBlbmVyZ3kuAICShqlsUtUKdXBkYXRlZ2FtZY0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHVwZGF0ZWdhbWUKc3VtbWFyeTogJ1VwZGF0ZSBnYW1lIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTU4MTEzNzgyI2QzYmYyOTBmZGRlZGRiYjdkMzJhYTg5N2U5ZjdlOWUxM2EyYWU0NDk1NjE0MmUyM2ViNDdiNzcwOTZhMmVhOGQKCi0tLQoKVXBkYXRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3BlY2lmaWVkIGdhbWUgY29udHJhY3QuCgotLS0AAAAAAKCq4wR3aXBlsgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2lwZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAA3NzUsuMId2l0aGRyYXeXAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXRoZHJhdwpzdW1tYXJ5OiAnV2l0aGRyYXcgdG9rZW5zIGZyb20gYSBkZXBvc2l0IGJhbGFuY2UnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNTgxMTM3ODIjZDNiZjI5MGZkZGVkZGJiN2QzMmFhODk3ZTlmN2U5ZTEzYTJhZTQ0OTU2MTQyZTIzZWI0N2I3NzA5NmEyZWE4ZAoKLS0tCgpXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgb3duZXIncyBkZXBvc2l0IGJhbGFuY2UuIERlYml0cyB0aGUgbGVkZ2VyIGJ5IHRoZSByZXF1ZXN0ZWQgYW1vdW50IGFuZCB0cmFuc2ZlcnMgdGhlIHRva2VucyB0byB0aGUgb3duZXIuIFJlcXVpcmVzIGEgc3VmZmljaWVudCBiYWxhbmNlIGFuZCB0aGUgb3duZXIncyBhdXRob3JpdHkuAACg7BpUzeUJd3JhcGNhcmdvAACAzy5PVc3lCndyYXBlbnRpdHm1BC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3cmFwZW50aXR5CnN1bW1hcnk6ICdXcmFwIGEgZGVwbG95ZWQgZW50aXR5IGludG8gYW4gTkZUJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpXcmFwIGFuIGVudGl0eSBpbnRvIGFuIEF0b21pY0Fzc2V0cyBORlQgbWludGVkIHRvIGl0cyBvd25lci4gVGhlIGVudGl0eSBtdXN0IGJlIGF0IGEgbmV4dXMsIGlkbGUgd2l0aCBlbXB0eSBjYXJnbywgYW5kIGhhdmUgYW4gbmZ0Y29uZmlnIG1hcHBpbmcgZm9yIGl0cyBpdGVtIGlkLiBFcmFzZXMgdGhlIGVudGl0eSBhbmQgbWludHMgdGhlIE5GVCBpbmxpbmUsIHByZXNlcnZpbmcgaXRzIHN0YXRzIGFuZCBpbnN0YWxsZWQgbW9kdWxlczsgdGhlIHBsYXllciBwYXlzIFJBTSBmb3IgdGhlIG5ldyBhc3NldCByb3cuIFJlcXVpcmVzIHRoZSBvd25lcidzIGFjdGl2ZSBwZXJtaXNzaW9uIChubyBzZXNzaW9uLWtleSBjb21wYXRpYmlsaXR5KS4HAAAAQKFpojkDaTY0AAALYmFsYW5jZV9yb3cAAADAT1MlRQNpNjQAAAtjb21wYW55X3JvdwAAWyg7TKtKA2k2NAAADmRlcG9zaXRjZmdfcm93AAAAAACspGEDaTY0AAAIZ2FtZV9yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAQMYaVXP51ANpNjQAAA51bndyYXBjdXN0X3JvdwAAACobVs3lA2k2NAAADHdyYXBnYXRlX3JvdwETU2hpcGxvYWQgKFBsYXRmb3JtKRNTaGlwbG9hZCAoUGxhdGZvcm0pAAAAAA==');
|
|
@@ -440,7 +440,7 @@ var platform = /*#__PURE__*/Object.freeze({
|
|
|
440
440
|
Contract: Contract$1
|
|
441
441
|
});
|
|
442
442
|
|
|
443
|
-
const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDi/AQlhZGRtb2R1bGUABAllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OAptb2R1bGVfcmVmCWNhcmdvX3JlZgp0YXJnZXRfcmVmCmNhcmdvX3JlZj8IYWRkbmV4dXMAAwpuZXh1c19uYW1lBnN0cmluZwF4BWludDY0AXkFaW50NjQJYWRkb3JhY2xlAAEJb3JhY2xlX2lkBG5hbWUFYmxlbmQAAgJpZAZ1aW50NjQGaW5wdXRzDGNhcmdvX2l0ZW1bXQlidWlsZHBsb3QAAgpidWlsZGVyX2lkBnVpbnQ2NAdwbG90X2lkBnVpbnQ2NAZjYW5jZWwAAwJpZAZ1aW50NjQIbGFuZV9rZXkFdWludDgFY291bnQGdWludDY0DmNhbmNlbF9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lD2NhbmNlbGxlZF9jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CmNhcmdvX2l0ZW0ABQdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhxdWFudGl0eQZ1aW50MzIJZW50aXR5X2lkB3VpbnQ2ND8JY2FyZ29fcmVmAAQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10JZW50aXR5X2lkB3VpbnQ2ND8JY2FyZ29fcm93AAcCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdC3NlcXVlbmNlX2lkB3VpbnQ2ND8KY2FyZ29fdmlldwAGB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHF1YW50aXR5BnVpbnQzMgJpZAZ1aW50NjQJZW50aXR5X2lkB3VpbnQ2ND8JY2xhaW1fcm93AAEFb3duZXIEbmFtZQljbGFpbXBsb3QAAwpidWlsZGVyX2lkBnVpbnQ2NA50YXJnZXRfaXRlbV9pZAZ1aW50MTYEc2xvdAxjbHVzdGVyX3Nsb3QMY2xhaW1zdGFydGVyAAEFb3duZXIEbmFtZQljbGVhbnJzdnAAAgVlcG9jaAZ1aW50NjQIbWF4X3Jvd3MGdWludDY0CmNsZWFydGFibGUAAwp0YWJsZV9uYW1lBG5hbWUFc2NvcGUFbmFtZT8IbWF4X3Jvd3MHdWludDY0PwxjbHVzdGVyX2NlbGwAAwJneARpbnQ4Amd5BGludDgGZW50aXR5BnVpbnQ2NAtjbHVzdGVyX3JvdwACBHJvb3QGdWludDY0BWNlbGxzDmNsdXN0ZXJfY2VsbFtdDGNsdXN0ZXJfc2xvdAADA2h1YgZ1aW50NjQCZ3gEaW50OAJneQRpbnQ4BmNvbW1pdAADCW9yYWNsZV9pZARuYW1lBWVwb2NoBnVpbnQ2NAZjb21taXQLY2hlY2tzdW0yNTYKY29tbWl0X3JvdwAEAmlkBnVpbnQ2NAVlcG9jaAZ1aW50NjQJb3JhY2xlX2lkBG5hbWUGY29tbWl0C2NoZWNrc3VtMjU2CWNvbmZpZ2xvZwABBmNvbmZpZwtnYW1lX2NvbmZpZwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8FY3JhZnQABgJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQZ0YXJnZXQHdWludDY0PwRzbG90BnVpbnQ4PwxjcmFmdGVyX2xhbmUABApzbG90X2luZGV4BXVpbnQ4BXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MzIKb3V0cHV0X3BjdAZ1aW50MTYIZGVtb2xpc2gAAQllbnRpdHlfaWQGdWludDY0BmRlcGxveQADAmlkBnVpbnQ2NANyZWYJY2FyZ29fcmVmBHNsb3QNY2x1c3Rlcl9zbG90PwpkZXNjZW50aXR5AAQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQMbW9kdWxlX2l0ZW1zCHVpbnQxNltdDG1vZHVsZV9zdGF0cwh1aW50NjRbXQZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDMyCHJlY2hhcmdlBnVpbnQzMhRlbnRpdHlfY3VycmVudF9zdGF0ZQACC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MzIPZW50aXR5X2RlZmF1bHRzAAILd2FyZWhvdXNlX3oGdWludDE2C2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAWBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXRlbV9pZAZ1aW50MTYJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQZlbmVyZ3kHdWludDMyPwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8Ed2FycAt3YXJwX3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPw5nYXRoZXJlcl9sYW5lcw9nYXRoZXJlcl9sYW5lW10NY3JhZnRlcl9sYW5lcw5jcmFmdGVyX2xhbmVbXQxsb2FkZXJfbGFuZXMNbG9hZGVyX2xhbmVbXQhsYXVuY2hlcg9sYXVuY2hlcl9zdGF0cz8FbGFuZXMGbGFuZVtdBWhvbGRzBmhvbGRbXQ1lbnRpdHlfbGF5b3V0AAIOZW50aXR5X2l0ZW1faWQGdWludDE2BXNsb3RzCnNsb3RfZGVmW10VZW50aXR5X2xheW91dHNfcmVzdWx0AAEIZW50aXRpZXMPZW50aXR5X2xheW91dFtdCmVudGl0eV9yZWYAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQKZW50aXR5X3JvdwAMAmlkBnVpbnQ2NAVvd25lcgRuYW1lBGtpbmQEbmFtZQdpdGVtX2lkBnVpbnQxNgRuYW1lBnN0cmluZwVzdGF0cwZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5B3VpbnQzMj8JY2FyZ29tYXNzBnVpbnQzMgdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdBWxhbmVzBmxhbmVbXQVob2xkcwZob2xkW10OZW50aXR5X3NlcV9yb3cAAQduZXh0X2lkBnVpbnQ2NA5lbnRpdHlfc3VtbWFyeQAIBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXNfaWRsZQRib29sDnJlc29sdmVkX2NvdW50BnVpbnQzMg1wZW5kaW5nX2NvdW50BnVpbnQzMhBlbnRpdHlfdGFza19pbmZvAAQJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lCnRhc2tfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAp0aW1lX3BvaW50D2VudGl0eWdyb3VwX3JvdwACAmlkBnVpbnQ2NAxwYXJ0aWNpcGFudHMMZW50aXR5X3JlZltdC2VudW1fbWVtYmVyAAIFdmFsdWUFdWludDgEbmFtZQZzdHJpbmcLZW51bV9yZXN1bHQAAQdtZW1iZXJzDWVudW1fbWVtYmVyW10JZXBvY2hfcm93AAQFZXBvY2gGdWludDY0Cm9yYWNsZV9pZHMGbmFtZVtdCXRocmVzaG9sZAV1aW50OARzZWVkC2NoZWNrc3VtMjU2DGZpeGNhcmdvbWFzcwABCWVudGl0eV9pZAZ1aW50NjQQZm9vdHByaW50X3Jlc3VsdAABBWNlbGxzC2dyaWRfY2VsbFtdC2ZvcmNlcmV2ZWFsAAEFZXBvY2gGdWludDY0C2dhbWVfY29uZmlnAAMHdmVyc2lvbgZ1aW50MzIIZGVmYXVsdHMPZW50aXR5X2RlZmF1bHRzBWl0ZW1zCml0ZW1fZGVmW10GZ2F0aGVyAAUJc291cmNlX2lkBnVpbnQ2NA5kZXN0aW5hdGlvbl9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYIcXVhbnRpdHkGdWludDMyBHNsb3QGdWludDg/DWdhdGhlcmVyX2xhbmUABQpzbG90X2luZGV4BXVpbnQ4BXlpZWxkBnVpbnQxNgVkcmFpbgZ1aW50MzIFZGVwdGgGdWludDE2Cm91dHB1dF9wY3QGdWludDE2DGdlbmVzaXNmbGVldAABCGVudGl0aWVzDGVudGl0eV9yb3dbXQpnZXRjbHVzdGVyAAEGaHViX2lkBnVpbnQ2NAlnZXRjb25maWcAAApnZXRkZXBvc2l0AAIFb3duZXIEbmFtZQhhc3NldF9pZAZ1aW50NjQLZ2V0ZGlzdGFuY2UABAJheAVpbnQ2NAJheQVpbnQ2NAJieAVpbnQ2NAJieQVpbnQ2NAtnZXRlbGlnaWJsZQACBmNvb3Jkcwtjb29yZGluYXRlcwdzdHJhdHVtBnVpbnQxNglnZXRlbnRjbHMAAAtnZXRlbnRpdGllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8JZ2V0ZW50aXR5AAEJZW50aXR5X2lkBnVpbnQ2NAxnZXRmb290cHJpbnQAAQdpdGVtX2lkBnVpbnQxNgtnZXRpdGVtZGF0YQAACmdldGl0ZW1pZHMAAAhnZXRpdGVtcwAAC2dldGl0ZW10eXBlAAEHaXRlbV9pZAZ1aW50MTYMZ2V0aXRlbXR5cGVzAAALZ2V0a2luZG1ldGEAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0C2dldG1vZHR5cGVzAAAKZ2V0bW9kdWxlcwAACWdldG5lYXJieQACCWVudGl0eV9pZAZ1aW50NjQIcmVjaGFyZ2UEYm9vbApnZXRuZnRiYXNlAAAKZ2V0bmZ0aW5mbwAACWdldHBsYXllcgABB2FjY291bnQEbmFtZQxnZXRwcm9qc3RhdGUAAgllbnRpdHlfaWQGdWludDY0CnRhc2tfY291bnQGdWludDg/CWdldHJlY2lwZQABDm91dHB1dF9pdGVtX2lkBnVpbnQxNgpnZXRyZWNpcGVzAAILbG93ZXJfYm91bmQGdWludDE2BWxpbWl0BXVpbnQ4CmdldHJlc2NhdHMAAAtnZXRyZXNlcnZlcwACAXgFaW50NjQBeQVpbnQ2NAxnZXRyZXNvdXJjZXMAAAhnZXRzbG90cwAACmdldHN0cmF0dW0AAwF4BWludDY0AXkFaW50NjQHc3RyYXR1bQZ1aW50MTYMZ2V0c3VtbWFyaWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwtnZXR3b3JtaG9sZQACAXgFaW50NjQBeQVpbnQ2NAlncmlkX2NlbGwAAgJneARpbnQ4Amd5BGludDgMZ3JvdXB0cmFuc2l0AAUIZW50aXRpZXMMZW50aXR5X3JlZltdAmF4BWludDY0AmF5BWludDY0AmJ4BWludDY0AmJ5BWludDY0C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwxoYXVsZXJfc3RhdHMABAhjYXBhY2l0eQV1aW50OAplZmZpY2llbmN5BnVpbnQxNgVkcmFpbgZ1aW50MzIQY2FwYWNpdHlfYnlfdGllchFoYXVsZXJfdGllcl9jYXBbXQ9oYXVsZXJfdGllcl9jYXAAAgR0aWVyBXVpbnQ4CGNhcGFjaXR5BXVpbnQ4BGhvbGQABQJpZAZ1aW50NjQEa2luZAV1aW50OAtjb3VudGVycGFydAplbnRpdHlfcmVmBXVudGlsCnRpbWVfcG9pbnQNaW5jb21pbmdfbWFzcwZ1aW50MzILaW1wb3J0Y2FyZ28AAQNyb3cJY2FyZ29fcm93DGltcG9ydGVudGl0eQABA3JvdwplbnRpdHlfcm93C2ltcG9ydGdyb3VwAAEDcm93D2VudGl0eWdyb3VwX3JvdwxpbXBvcnRwbGF5ZXIAAQVvd25lcgRuYW1lDWltcG9ydHJlc2VydmUAAgtlcG9jaF9zY29wZQZ1aW50MzIDcm93C3Jlc2VydmVfcm93C2ltcG9ydHN0YXRlAAEDcm93CXN0YXRlX3JvdwhpdGVtX2RlZgAFAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgR0eXBlBXVpbnQ4B3N1YnR5cGUFdWludDgEdGllcgV1aW50OAxpdGVtX2lkX3BhaXIAAgJpZAZ1aW50MTYEbmFtZQZzdHJpbmcPaXRlbV9pZHNfcmVzdWx0AAEFaXRlbXMOaXRlbV9pZF9wYWlyW10PaXRlbWRhdGFfcmVzdWx0AAIFaXRlbXMKaXRlbV9kZWZbXQdyZWNpcGVzDnJlY2lwZXNfcmVzdWx0Cml0ZW1zX2luZm8AAQVpdGVtcwppdGVtX2RlZltdBGpvaW4AAQdhY2NvdW50BG5hbWUQa2luZF9tZXRhX3Jlc3VsdAACBWtpbmRzD2tpbmRfbWV0YV9yb3dbXQl0ZW1wbGF0ZXMTdGVtcGxhdGVfbWV0YV9yb3dbXQ1raW5kX21ldGFfcm93AAUEa2luZARuYW1lDmNsYXNzaWZpY2F0aW9uBXVpbnQ4EGNhcGFiaWxpdHlfZmxhZ3MFdWludDgHel9jb29yZAZ1aW50MzINZGVmYXVsdF9sYWJlbAZzdHJpbmcEbGFuZQACCGxhbmVfa2V5BXVpbnQ4CHNjaGVkdWxlCHNjaGVkdWxlBmxhdW5jaAADC2xhdW5jaGVyX2lkBnVpbnQ2NApjYXRjaGVyX2lkBnVpbnQ2NAVpdGVtcwxjYXJnb19pdGVtW10ObGF1bmNoZXJfc3RhdHMAAwtjaGFyZ2VfcmF0ZQZ1aW50MTYIdmVsb2NpdHkGdWludDE2BWRyYWluBnVpbnQxNgRsb2FkAAMCaWQGdWludDY0B2Zyb21faWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQtsb2FkZXJfbGFuZQAECnNsb3RfaW5kZXgFdWludDgEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNgpvdXRwdXRfcGN0BnVpbnQxNhBsb2NhdGlvbl9kZXJpdmVkAAIMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwRzaXplBnVpbnQxNg1sb2NhdGlvbl9pbmZvAAMGY29vcmRzC2Nvb3JkaW5hdGVzCWlzX3N5c3RlbQRib29sC2lzX3dvcm1ob2xlBGJvb2wPbG9jYXRpb25fc3RhdGljAAUGY29vcmRzC2Nvb3JkaW5hdGVzBHR5cGUNbG9jYXRpb25fdHlwZQdzdWJ0eXBlBXVpbnQ4BXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DG1vZHVsZV9lbnRyeQACBHR5cGUFdWludDgJaW5zdGFsbGVkDnBhY2tlZF9tb2R1bGU/C21vZHVsZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyC21vZHVsZV90eXBlBXVpbnQ4BHRpZXIFdWludDgObW9kdWxlc19yZXN1bHQAAQdtb2R1bGVzDW1vZHVsZV9pbmZvW10ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQzMghtb3ZldGlsZQAFBmh1Yl9pZAZ1aW50NjQHZnJvbV9neARpbnQ4B2Zyb21fZ3kEaW50OAV0b19neARpbnQ4BXRvX2d5BGludDgLbmVhcmJ5X2luZm8ABQpjYW5fdHJhdmVsBGJvb2wHY3VycmVudBRlbnRpdHlfY3VycmVudF9zdGF0ZQlwcm9qZWN0ZWQUZW50aXR5X2N1cnJlbnRfc3RhdGUKbWF4X2VuZXJneQZ1aW50MzIHc3lzdGVtcw9uZWFyYnlfc3lzdGVtW10NbmVhcmJ5X3N5c3RlbQAECGRpc3RhbmNlBnVpbnQ2NAtlbmVyZ3lfY29zdAZ1aW50NjQLZmxpZ2h0X3RpbWUGdWludDMyCGxvY2F0aW9uDWxvY2F0aW9uX2luZm8ObmZ0X2NhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhxdWFudGl0eQZ1aW50MzIQbmZ0X2l0ZW1fcGF5bG9hZAACBGl0ZW0ObmZ0X2NhcmdvX2l0ZW0IbG9jYXRpb24MY29vcmRpbmF0ZXM/Dm5mdF9zY2hlbWFfZGVmAAILc2NoZW1hX25hbWUEbmFtZQZmaWVsZHMOc2NoZW1hX2ZpZWxkW10QbmZ0X3RlbXBsYXRlX2RlZgADB2l0ZW1faWQGdWludDE2C3NjaGVtYV9uYW1lBG5hbWULdGVtcGxhdGVfaWQFaW50MzINbmZ0Y29uZmlnX3JvdwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUJbmZ0aW1ndXJsAAIEaXRlbQpjYXJnb19pdGVtCGxvY2F0aW9uDGNvb3JkaW5hdGVzPw5uZnRpbmZvX3Jlc3VsdAACB3NjaGVtYXMQbmZ0X3NjaGVtYV9kZWZbXQl0ZW1wbGF0ZXMSbmZ0X3RlbXBsYXRlX2RlZltdBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQRb3JhY2xlX2NvbmZpZ19yb3cAAQl0aHJlc2hvbGQFdWludDgKb3JhY2xlX3JvdwABAmlkBG5hbWUNcGFja2VkX21vZHVsZQACB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NApwbGFjZWNhcmdvAAMFb3duZXIEbmFtZQdob3N0X2lkBnVpbnQ2NAhhc3NldF9pZAZ1aW50NjQLcGxhY2VlbnRpdHkAAwVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NA90YXJnZXRfbmV4dXNfaWQGdWludDY0C3BsYXllcl9pbmZvAAMFb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nCnBsYXllcl9yb3cAAQVvd25lcgRuYW1lD3Byb2plY3RlZF9zdGF0ZQAQBW93bmVyBG5hbWULY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5B3VpbnQzMj8JY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10IaHVsbG1hc3MHdWludDMyPwhjYXBhY2l0eQd1aW50MzI/B2VuZ2luZXMPbW92ZW1lbnRfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8GaGF1bGVyDWhhdWxlcl9zdGF0cz8OZ2F0aGVyZXJfbGFuZXMPZ2F0aGVyZXJfbGFuZVtdDWNyYWZ0ZXJfbGFuZXMOY3JhZnRlcl9sYW5lW10MbG9hZGVyX2xhbmVzDWxvYWRlcl9sYW5lW10IbGF1bmNoZXIPbGF1bmNoZXJfc3RhdHM/BHRpZXIFdWludDgIcmVjaGFyZ2UAAQJpZAZ1aW50NjQMcmVjaXBlX2lucHV0AAIHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyEHJlY2lwZV9pdGVtX2luZm8AAgJpZAZ1aW50MTYEbWFzcwZ1aW50MzIPcmVjaXBlX3Jlc3BvbnNlAAgOb3V0cHV0X2l0ZW1faWQGdWludDE2C291dHB1dF9tYXNzBnVpbnQzMgZpbnB1dHMOcmVjaXBlX2lucHV0W10Kc3RhdF9zbG90cxRzdGF0X3Nsb3RfcmVzcG9uc2VbXQ1ibGVuZF93ZWlnaHRzBWJ5dGVzC291dHB1dF9pdGVtEHJlY2lwZV9pdGVtX2luZm8LaW5wdXRfaXRlbXMScmVjaXBlX2l0ZW1faW5mb1tdD3NvdXJjZV9zdWJjbGFzcwd1aW50MTY/DnJlY2lwZXNfcmVzdWx0AAEHcmVjaXBlcxFyZWNpcGVfcmVzcG9uc2VbXQxyZWZyc2hlbnRpdHkAAQllbnRpdHlfaWQGdWludDY0DHJlbW92ZW9yYWNsZQABCW9yYWNsZV9pZARuYW1lBnJlbmFtZQACAmlkBnVpbnQ2NARuYW1lBnN0cmluZwtyZXNlcnZlX3JvdwAFAmlkBnVpbnQ2NAhjb29yZF9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYJcmVtYWluaW5nBnVpbnQzMgpsYXN0X2Jsb2NrFGJsb2NrX3RpbWVzdGFtcF90eXBlB3Jlc29sdmUAAgJpZAZ1aW50NjQFY291bnQHdWludDY0Pw9yZXNvbHZlX3Jlc3VsdHMABgllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUOcmVzb2x2ZWRfY291bnQGdWludDMyFG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/CnJlc29sdmVhbGwAAQVvd25lcgRuYW1lEnJlc29sdmVhbGxfcmVzdWx0cwACB3NjYW5uZWQGdWludDMyCHJlc29sdmVkBnVpbnQzMg1yZXNvdXJjZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgOcmVzb3VyY2Vfc3RhdHMAAwVzdGF0MQZ1aW50MTYFc3RhdDIGdWludDE2BXN0YXQzBnVpbnQxNhByZXNvdXJjZXNfcmVzdWx0AAEJcmVzb3VyY2VzD3Jlc291cmNlX2luZm9bXQZyZXZlYWwAAwlvcmFjbGVfaWQEbmFtZQVlcG9jaAZ1aW50NjQGcmV2ZWFsC2NoZWNrc3VtMjU2CnJldmVhbF9yb3cABAJpZAZ1aW50NjQFZXBvY2gGdWludDY0CW9yYWNsZV9pZARuYW1lBnJldmVhbAtjaGVja3N1bTI1NghybW1vZHVsZQADCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4CnRhcmdldF9yZWYKY2FyZ29fcmVmPwhybW5mdGNmZwABB2l0ZW1faWQGdWludDE2CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzY2hlbWFfZmllbGQAAgRuYW1lBnN0cmluZwpmaWVsZF90eXBlBnN0cmluZwlzZXRjb29yZHMAAwllbnRpdHlfaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAlzZXRuZnRjZmcAAwdpdGVtX2lkBnVpbnQxNgt0ZW1wbGF0ZV9pZAVpbnQzMgtzY2hlbWFfbmFtZQRuYW1lDHNldHRocmVzaG9sZAABCXRocmVzaG9sZAV1aW50OAtzZXR3cmFwY29zdAADCWl0ZW1fdHlwZQV1aW50OAR0aWVyBXVpbnQ4BmFtb3VudAZ1aW50NjQKc2V0d3JhcGZlZQACB2ZlZV9wY3QGdWludDE2C2ZlZV9hY2NvdW50BG5hbWUIc2xvdF9kZWYAAwR0eXBlBXVpbnQ4Cm91dHB1dF9wY3QGdWludDE2CG1heF90aWVyBXVpbnQ4EnN0YXRfc2xvdF9yZXNwb25zZQABB3NvdXJjZXMNc3RhdF9zb3VyY2VbXQtzdGF0X3NvdXJjZQACC2lucHV0X2luZGV4BXVpbnQ4EGlucHV0X3N0YXRfaW5kZXgFdWludDgJc3RhdGVfcm93AAMHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzZWVkC2NoZWNrc3VtMjU2CXN0b3djYXJnbwAFBW93bmVyBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhuZXh1c19pZAZ1aW50NjQIY2FyZ29faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NApzdG93ZW50aXR5AAMFb3duZXIEbmFtZQllbnRpdHlfaWQGdWludDY0CG5leHVzX2lkBnVpbnQ2NAxzdHJhdHVtX2RhdGEAAgdzdHJhdHVtDHN0cmF0dW1faW5mbwVzdGF0cw5yZXNvdXJjZV9zdGF0cwxzdHJhdHVtX2luZm8ABQdpdGVtX2lkBnVpbnQxNgRzZWVkBnVpbnQ2NAhyaWNobmVzcwZ1aW50MTYHcmVzZXJ2ZQZ1aW50MzILcmVzZXJ2ZV9tYXgGdWludDMyEXN0cmF0dW1fcmVtYWluaW5nAAMHc3RyYXR1bQZ1aW50MTYJcmVtYWluaW5nBnVpbnQzMgpsYXN0X2Jsb2NrFGJsb2NrX3RpbWVzdGFtcF90eXBlCnN3YXBtb2R1bGUAAwllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OAptb2R1bGVfcmVmCWNhcmdvX3JlZghzd2FwdGlsZQAFBmh1Yl9pZAZ1aW50NjQEYV9neARpbnQ4BGFfZ3kEaW50OARiX2d4BGludDgEYl9neQRpbnQ4BHRhc2sACgR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4C2Nvb3JkaW5hdGVzDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10MZW50aXR5dGFyZ2V0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDMyPwRob2xkB3VpbnQ2ND8OdGFyZ2V0X2l0ZW1faWQHdWludDE2Pwp0YXNrX2V2ZW50AAoKZXZlbnRfdHlwZQV1aW50OAVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BnVpbnQzMgR0YXNrBHRhc2sJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQKbmV3X2VuZXJneQd1aW50MzI/CGxhbmVfa2V5BXVpbnQ4DHRhc2tfcmVzdWx0cwABCGVudGl0aWVzEmVudGl0eV90YXNrX2luZm9bXRF0ZW1wbGF0ZV9tZXRhX3JvdwADB2l0ZW1faWQGdWludDE2BGtpbmQEbmFtZQ1kaXNwbGF5X2xhYmVsBnN0cmluZwd0cmFuc2l0AAUCaWQGdWludDY0AmF4BWludDY0AmF5BWludDY0AmJ4BWludDY0AmJ5BWludDY0BnRyYXZlbAAEAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cABQJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRBnYW1lX2NvbmZpZ190eXBlC2dhbWVfY29uZmlnFnN0cmF0dW1fcmVtYWluaW5nX3R5cGURc3RyYXR1bV9yZW1haW5pbmcVbmZ0X2l0ZW1fcGF5bG9hZF90eXBlEG5mdF9pdGVtX3BheWxvYWQIdW5kZXBsb3kAAgdob3N0X2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0BnVubG9hZAADAmlkBnVpbnQ2NAV0b19pZAZ1aW50NjQFaXRlbXMMY2FyZ29faXRlbVtdB3VwZ3JhZGUABQpidWlsZGVyX2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0DnRhcmdldF9pdGVtX2lkBnVpbnQxNgZpbnB1dHMMY2FyZ29faXRlbVtdBHNsb3QGdWludDg/BHdhcnAAAwJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CndhcnBfc3RhdHMAAQVyYW5nZQZ1aW50MzIEd2lwZQAADXdvcm1ob2xlX2luZm8AAwZjb29yZHMLY29vcmRpbmF0ZXMLaXNfd29ybWhvbGUEYm9vbAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcw53cmFwY29uZmlnX3JvdwACB2ZlZV9wY3QGdWludDE2C2ZlZV9hY2NvdW50BG5hbWUMd3JhcGNvc3Rfcm93AAMJaXRlbV90eXBlBXVpbnQ4BHRpZXIFdWludDgGYW1vdW50BnVpbnQ2NGEAAFBRJypTMglhZGRtb2R1bGXHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRtb2R1bGUKc3VtbWFyeTogJ0luc3RhbGwgYSBtb2R1bGUgaW50byBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluc3RhbGwgYSBtb2R1bGUgZnJvbSBjYXJnbyBpbnRvIGEgbW9kdWxlIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldCBzbG90IHR5cGUuIFRoZSBtb2R1bGUgaXRlbSBpcyByZW1vdmVkIGZyb20gY2FyZ28gdXBvbiBpbnN0YWxsYXRpb24uAAAAWHc1UzIIYWRkbmV4dXOnAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRuZXh1cwpzdW1tYXJ5OiAnQWRkIGEgbmV4dXMgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNyZWF0ZSBhIG5ldyBuZXh1cyBlbnRpdHkgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLiBOZXh1c2VzIGFyZSBvd25lZCBieSB0aGUgY29udHJhY3QgYW5kIHNlcnZlIGFzIGZpeGVkIGdhdGhlcmluZyBwb2ludHMgd2hlcmUgcGxheWVycyBjYW4gd3JhcCwgdW53cmFwLCBkZXBsb3ksIGFuZCBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBORlQtYmFja2VkIGFzc2V0cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAUBGZS1MyCWFkZG9yYWNsZQAAAAAAgDRVPAVibGVuZPwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJsZW5kCnN1bW1hcnk6ICdCbGVuZCBjYXJnbyBzdGFja3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbWJpbmUgbXVsdGlwbGUgY2FyZ28gc3RhY2tzIG9mIHRoZSBzYW1lIGl0ZW0gdHlwZSBpbnRvIGEgc2luZ2xlIHN0YWNrIHdpdGggbmV3IGJsZW5kZWQgc3RhdHMuIEFsbCBpbnB1dCBzdGFja3MgbXVzdCBzaGFyZSB0aGUgc2FtZSBpdGVtIGlkLiBUaGUgb3V0cHV0IHN0YWNrIGhhcyB0aGUgY29tYmluZWQgcXVhbnRpdHkgb2YgYWxsIGlucHV0cy4AAMg01hSdPglidWlsZHBsb3QAAAAAAESFpkEGY2FuY2VswgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuAADINFbpTEQJY2xhaW1wbG90AHBVviZj6UxEDGNsYWltc3RhcnRlcgAAAKgb32lURAljbGVhbnJzdnDsAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhbnJzdnAKc3VtbWFyeTogJ0NsZWFuIHVwIHBhc3QgZXBvY2ggcmVzZXJ2ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVyYXNlIHJlc2VydmUgdGFibGUgcm93cyBmcm9tIGEgcGFzdCBlcG9jaC4gQ2Fubm90IGNsZWFuIHRoZSBjdXJyZW50IG9yIGZ1dHVyZSBlcG9jaHMuIFRoZSBtYXhfcm93cyBwYXJhbWV0ZXIgY2FwcyB0aGUgbnVtYmVyIG9mIHJvd3MgZXJhc2VkIHBlciBjYWxsIHRvIGxpbWl0IENQVSB1c2FnZS4AgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl07AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgAAYDQytyZFCWNvbmZpZ2xvZ90CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbmZpZ2xvZwpzdW1tYXJ5OiAnTG9nIGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIHRoYXQgbG9ncyB0aGUgY3VycmVudCBnYW1lIGNvbmZpZ3VyYXRpb24uIENhbGxlZCBpbmxpbmUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gdG8gYnJvYWRjYXN0IGNvbmZpZyB2aWEgYWN0aW9uIHRyYWNlcy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAACAvMxFBWNyYWZ0yAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY3JhZnQKc3VtbWFyeTogJ0NyYWZ0IGl0ZW1zIGZyb20gYSByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZm9ybSBjYXJnbyBpdGVtcyBpbnRvIGEgbmV3IGl0ZW0gdXNpbmcgYSByZWNpcGUuIFRoZSBlbnRpdHkgbXVzdCBoYXZlIGEgY3JhZnRlciBtb2R1bGUgaW5zdGFsbGVkLiBDb25zdW1lcyBlbmVyZ3kgYW5kIHNjaGVkdWxlcyBhIGNyYWZ0aW5nIHRhc2sgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiB0b3RhbCBpbnB1dCBtYXNzIGFuZCBjcmFmdGVyIHNwZWVkLiBJbnB1dCBxdWFudGl0aWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgcmVjaXBlIHJlcXVpcmVtZW50cy4AAAANu0ilSghkZW1vbGlzaPEDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlbW9saXNoCnN1bW1hcnk6ICdEZW1vbGlzaCBhIHN0YXRpb25hcnkgZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpEZWNvbW1pc3Npb24gYW4gZW50aXR5LCBlcmFzaW5nIGl0IGZyb20gdGhlIGdhbWUuIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlLCBoYXZlIGVtcHR5IGNhcmdvLCBhbmQgaGF2ZSBubyBpbnN0YWxsZWQgbW9kdWxlcyAocmVtb3ZlIGVhY2ggdmlhIHJtbW9kdWxlIGZpcnN0KS4gU2NoZWR1bGVzIGEgZGVtb2xpc2ggdGFzayB0aGF0IGVyYXNlcyB0aGUgZW50aXR5IG9uIHJlc29sdXRpb24uIE9ubHkgdmFsaWQgZm9yIGVudGl0aWVzIHRoYXQgY2Fubm90IG1vdmU7IHVzZSB1bmRlcGxveSBvciB3cmFwZW50aXR5IGZvciB0aGUgcmVzdC4AAAAAeBqrSgZkZXBsb3nsAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXBsb3kKc3VtbWFyeTogJ0RlcGxveSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClVucGFjayBhIHBhY2tlZCBlbnRpdHkgaXRlbSAocGFja2VkIHNoaXAgb3IgcGFja2VkIGNvbnRhaW5lcikgZnJvbSBjYXJnbywgc2NoZWR1bGluZyBhIGRlcGxveSB0YXNrIHRoYXQgY3JlYXRlcyB0aGUgbmV3IGVudGl0eSBhdCB0aGUgZGVwbG95aW5nIGVudGl0eSdzIGxvY2F0aW9uIHVwb24gcmVzb2x1dGlvbi4AgM8uT4WwSgpkZXNjZW50aXR5yQMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVzY2VudGl0eQpzdW1tYXJ5OiAnRGVzY3JpYmUgYSBwYWNrZWQgZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyBhIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIHN0cmluZyBmb3IgYSBwYWNrZWQgZW50aXR5LCBkZXJpdmVkIGZyb20gdGhlIGVudGl0eSBpdGVtIGlkLCBodWxsIHN0YXRzLCBhbmQgdGhlIGxpc3Qgb2YgaW5zdGFsbGVkIG1vZHVsZSBpdGVtIGlkcyBhbmQgc3RhdHMuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgYW5kIE5GVCByZW5kZXJlcnMgdG8gZGlzcGxheSBwYWNrZWQgZW50aXRpZXMuAAAAAKh4zFQGZW5hYmxl3QEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdTZXQgZW5hYmxlZCBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBnYW1lIG9mIFNoaXBsb2FkLoCxkZRdg7pbDGZpeGNhcmdvbWFzc5ADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGZpeGNhcmdvbWFzcwpzdW1tYXJ5OiAnREVCVUc6IHJlY29tcHV0ZSBlbnRpdHkgY2FyZ28gbWFzcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVjb21wdXRlIGFuZCByZXdyaXRlIGFuIGVudGl0eSdzIGNhcmdvIG1hc3MgZnJvbSBpdHMgY3VycmVudCBjYXJnby4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LiBBdmFpbGFibGUgZm9yIHJlcGFpcmluZyBkcmlmdCBiZXR3ZWVuIGNhY2hlZCBjYXJnbyBtYXNzIGFuZCB0aGUgdHJ1ZSBtYXNzIGRlcml2ZWQgZnJvbSBjYXJnbyByb3dzLgCiUVtdhS5dC2ZvcmNlcmV2ZWFsvgQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZm9yY2VyZXZlYWwKc3VtbWFyeTogJ0RFQlVHOiBmb3JjZS1maW5hbGl6ZSBhbiBlcG9jaCBmcm9tIGV4aXN0aW5nIHJldmVhbHMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkZpbmFsaXplIGEgc3R1Y2sgZXBvY2ggYnkgY29tcHV0aW5nIGl0cyBzZWVkIGZyb20gdGhlIHJldmVhbHMgYWxyZWFkeSBzdWJtaXR0ZWQsIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGNvbmZpZ3VyZWQgdGhyZXNob2xkLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIFRoZSBzZWVkIGlzIGRlcml2ZWQgc29sZWx5IGZyb20gdGhlIHByZS1pbWFnZS1sb2NrZWQgcmV2ZWFscyBhbHJlYWR5IG9uIGNoYWluOyBubyBhZG1pbi1zdXBwbGllZCBlbnRyb3B5IGlzIGludHJvZHVjZWQuIFVzZWQgdG8gdW5ibG9jayBlcG9jaCBwcm9ncmVzc2lvbiB3aGVuIHRoZSB0aHJlc2hvbGQgY2Fubm90IG90aGVyd2lzZSBiZSBtZXQuAAAAAFzVsmEGZ2F0aGVylwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2F0aGVyCnN1bW1hcnk6ICdHYXRoZXIgcmVzb3VyY2VzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpHYXRoZXIgcmVzb3VyY2VzIGF0IHRoZSBzaGlwJ3MgY3VycmVudCBsb2NhdGlvbi4gT25seSB3b3JrcyBhdCBnYXRoZXJhYmxlIGxvY2F0aW9uIHR5cGVzLiBTY2hlZHVsZXMgYSBnYXRoZXIgdGFzayB0aGF0IGNvbnN1bWVzIGVuZXJneSBhbmQgeWllbGRzIGNhcmdvIGJhc2VkIG9uIHRoZSBzaGlwJ3MgZ2F0aGVyZXIgc3RhdHMgYW5kIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIGNvbXBvc2l0aW9uLpCVigs7rKZiDGdlbmVzaXNmbGVldKkELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdlbmVzaXNmbGVldApzdW1tYXJ5OiAnTWludCB0aGUgb25lLXRpbWUgZ2VuZXNpcyBmbGVldCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW1wbGFjZSB0aGUgb25lLXRpbWUgZ2VuZXNpcyBmbGVldDogYSBjYWxsZXItc3VwcGxpZWQgc2V0IG9mIGVudGl0aWVzIChzaGlwcywgc3RydWN0dXJlcywgYW5kIGNvbnRhaW5lcnMpIHdyaXR0ZW4gdG8gdGhlIHdvcmxkIGFzLWlzLiBWYWxpZCBvbmx5IGR1cmluZyB0aGUgcHJlLWdlbmVzaXMgd2luZG93LCBiZWZvcmUgZXBvY2ggMSBpcyBmaW5hbGl6ZWQuIFRoZSBzdXBwbGllZCBlbnRpdHkgaWRzIGFyZSBob25vcmVkIGFuZCB0aGUgaWQgc2VxdWVuY2UgaXMgYWR2YW5jZWQgcGFzdCB0aGVtOyBpZCAwIGlzIHJlc2VydmVkIGZvciB0aGUgR2VuZXNpcyBOZXh1cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgDAVRnriLJiCmdldGNsdXN0ZXIAAABgbk2KsmIJZ2V0Y29uZmlnygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Y29uZmlnCnN1bW1hcnk6ICdHZXQgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBnYW1lIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGRlZmF1bHQgZW50aXR5IHN0YXRzIGZvciB3YXJlaG91c2VzIGFuZCBjb250YWluZXJzLCBhbmQgdGhlIGZ1bGwgaXRlbSBkZWZpbml0aW9ucyB0YWJsZS4AQHaYVpWyYgpnZXRkZXBvc2l0AAAUmiZjl7JiC2dldGRpc3RhbmNlAABUPI65qLJiC2dldGVsaWdpYmxlyAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZWxpZ2libGUKc3VtbWFyeTogJ0dldCBlbGlnaWJsZSByZXNvdXJjZSBpdGVtIElEcyBhdCBhIGxvY2F0aW9uIGFuZCBzdHJhdHVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgbGlzdCBvZiByZXNvdXJjZSBpdGVtIElEcyBlbGlnaWJsZSB0byBiZSBnYXRoZXJlZCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgYW5kIHN0cmF0dW0gZGVwdGguIEl0ZW1zIGFyZSBnYXRlZCBieSBib3RoIHRoZSBsb2NhdGlvbidzIHJlc291cmNlIHByb2ZpbGUgYW5kIHRoZSBkZXB0aCB0aHJlc2hvbGQgZm9yIGVhY2ggdGllci4AAMAR5amyYglnZXRlbnRjbHOMAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRlbnRjbHMKc3VtbWFyeTogJ0dldCBlbnRpdHkgY2xhc3MgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBlbnRpdHkgY2xhc3MgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAoT3JiaXRhbFZlc3NlbCwgUGxhbmV0YXJ5U3RydWN0dXJlKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgZW50aXR5IGNsYXNzIGlkZW50aWZpZXJzLgCwctnlqbJiC2dldGVudGl0aWVzpAItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXRpZXMKc3VtbWFyeTogJ0dldCBhbGwgZW50aXRpZXMgZm9yIGEgcGxheWVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIGZ1bGwgZW50aXR5IGluZm8gZm9yIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllci4gT3B0aW9uYWxseSBmaWx0ZXIgYnkgZW50aXR5IHR5cGUuAADw2eWpsmIJZ2V0ZW50aXR5ogItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50aXR5CnN1bW1hcnk6ICdHZXQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXR1cm5zIHRoZSBjdXJyZW50IHN0YXRlIG9mIGFuIGVudGl0eSBpbmNsdWRpbmcgaWRlbnRpdHksIGNhcmdvLCBzY2hlZHVsZSBzdGF0ZSwgYW5kIHR5cGUtc3BlY2lmaWMgZmllbGRzLpCnuzVTurJiDGdldGZvb3RwcmludAAATDZJquyyYgtnZXRpdGVtZGF0YagDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1kYXRhCnN1bW1hcnk6ICdHZXQgZnVsbCBpdGVtIGNhdGFsb2cnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBjb21wbGV0ZSBpdGVtIGNhdGFsb2cgYXMgdGhlIGNvbnRyYWN0IHNlZXMgaXQsIGluY2x1ZGluZyB0eXBlLCBzdWJ0eXBlLCB0aWVyLCBtYXNzLCBhbmQgb3RoZXIgc3RhdGljIG1ldGFkYXRhLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBjbGllbnRzIHRvIG1pcnJvciB0aGUgY29udHJhY3QncyBpdGVtIGRlZmluaXRpb25zLgAATk6q7LJiCmdldGl0ZW1pZHOGAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtaWRzCnN1bW1hcnk6ICdHZXQgaXRlbSBpZCB0byBuYW1lIG1hcHBpbmdzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBtYXBwaW5nIG9mIGl0ZW0gaWQgY29uc3RhbnRzIHRvIHRoZWlyIGNhbm9uaWNhbCBzdHJpbmcgbmFtZXMuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gcmVzb2x2ZSBudW1lcmljIGl0ZW0gaWRzIHRvIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXJzLgAAAFiq7LJiCGdldGl0ZW1zmgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgaXRlbXMgaW4gdGhlIGdhbWUgaW5jbHVkaW5nIHRoZWlyIGlkLCBiYXNlIHByaWNlLCBhbmQgbWFzcy4AVPVZquyyYgtnZXRpdGVtdHlwZQCAVfVZquyyYgxnZXRpdGVtdHlwZXOIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtdHlwZXMKc3VtbWFyeTogJ0dldCBpdGVtIHR5cGUgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBpdGVtIHR5cGUgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAocmVzb3VyY2UsIGNvbXBvbmVudCwgbW9kdWxlLCBlbnRpdHkpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBpdGVtIHR5cGUgaWRlbnRpZmllcnMuAExWMk0Hs2ILZ2V0a2luZG1ldGH4Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRraW5kbWV0YQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBraW5kIG1ldGFkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZW50aXR5IGtpbmQgcmVnaXN0cnkgYW5kIHRlbXBsYXRlIHJlZ2lzdHJ5LCBpbmNsdWRpbmcgZWFjaCBraW5kJ3MgY2xhc3NpZmljYXRpb24sIGNhcGFiaWxpdHkgZmxhZ3MsIFotY29vcmRpbmF0ZSwgYW5kIGRlZmF1bHQgbGFiZWwsIHBsdXMgdGhlIG1hcHBpbmcgb2YgZW50aXR5IGl0ZW0gaWRzIHRvIGtpbmRzIHdpdGggZGlzcGxheSBsYWJlbHMuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gaW50ZXJwcmV0IGVudGl0eSBraW5kcyBhbmQgY2FwYWJpbGl0aWVzLgAmddkgGrNiC2dldGxvY2F0aW9u4gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jYXRpb24Kc3VtbWFyeTogJ0dldCBsb2NhdGlvbiBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2F0aW9uIGluY2x1ZGluZyB3aGV0aGVyIGEgc3lzdGVtIGV4aXN0cywgYW5kIGZvciBlYWNoIGl0ZW06IHByaWNlLCBzdXBwbHksIHJhcml0eSBtdWx0aXBsaWVyLCBhbmQgbG9jYXRpb24gbXVsdGlwbGllci4AgMkmIRqzYgpnZXRsb2NkYXRh/gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jZGF0YQpzdW1tYXJ5OiAnR2V0IGRlcml2ZWQgbG9jYXRpb24gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBkZXJpdmVkIGxvY2F0aW9uIGRhdGEgaW5jbHVkaW5nIHN0YXRpYyBwcm9wZXJ0aWVzICh0eXBlLCBkaWZmaWN1bHR5LCBzZWVkcykgZnJvbSB0aGUgZ2FtZSBzZWVkIGFuZCBlcG9jaC1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY3RpdmUsIHNlZWRzKSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoIHNlZWQuALCqPicqs2ILZ2V0bW9kdHlwZXPWAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRtb2R0eXBlcwpzdW1tYXJ5OiAnR2V0IG1vZHVsZSB0eXBlIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgbW9kdWxlIHR5cGUgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAoYW55LCBlbmdpbmUsIGdlbmVyYXRvciwgZ2F0aGVyZXIsIGxvYWRlciwgd2FycCwgY3JhZnRlciwgbGF1bmNoZXIsIHN0b3JhZ2UsIGhhdWxlcikuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGVjb2RlIG1vZHVsZSBzdWJ0eXBlIGlkZW50aWZpZXJzIGFuZCBzbG90IGNvbXBhdGliaWxpdHkuAABWUScqs2IKZ2V0bW9kdWxlc4ADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG1vZHVsZXMKc3VtbWFyeTogJ0dldCBhbGwgbW9kdWxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgc3Vic2V0IG9mIGl0ZW1zIGNsYXNzaWZpZWQgYXMgbW9kdWxlcywgaW5jbHVkaW5nIGVhY2ggbW9kdWxlJ3MgaWQsIG1hc3MsIHN1YnR5cGUsIGFuZCB0aWVyLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGVudW1lcmF0ZSBpbnN0YWxsYWJsZSBlcXVpcG1lbnQuAADw5xo1s2IJZ2V0bmVhcmJ5ygMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmVhcmJ5CnN1bW1hcnk6ICdHZXQgbmVhcmJ5IHJlYWNoYWJsZSBzeXN0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIG5lYXJieSBzeXN0ZW1zIHJlYWNoYWJsZSBieSBhbiBlbnRpdHkgZnJvbSBpdHMgcHJvamVjdGVkIGxvY2F0aW9uLiBSZXR1cm5zIGN1cnJlbnQgc3RhdGUgKHdpdGggY29tcGxldGVkIHRhc2tzIHJlc29sdmVkKSwgcHJvamVjdGVkIHN0YXRlIChhZnRlciBhbGwgc2NoZWR1bGVkIHRhc2tzKSwgYW5kIGEgbGlzdCBvZiByZWFjaGFibGUgc3lzdGVtcyB3aXRoIGRpc3RhbmNlLCBlbmVyZ3kgY29zdCwgYW5kIGZsaWdodCB0aW1lLgCAwubkNbNiCmdldG5mdGJhc2UAAABd0+U1s2IKZ2V0bmZ0aW5mb/ADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5mdGluZm8Kc3VtbWFyeTogJ0dldCBORlQgc2NoZW1hIGFuZCB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgQXRvbWljQXNzZXRzIHNjaGVtYXMgYW5kIHRlbXBsYXRlcyB0aGUgZ2FtZSBjb250cmFjdCBleHBlY3RzLCBwbHVzIHRoZSBjdXJyZW50IGBpdGVtX2lkIOKGkiAodGVtcGxhdGVfaWQsIHNjaGVtYV9uYW1lKWAgbWFwcGluZyBzdG9yZWQgaW4gdGhlIGBuZnRjb25maWdgIHRhYmxlLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHN5bmMgYXRvbWljYXNzZXRzIHN0YXRlIHdpdGggdGhlIGNvbnRyYWN0LgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUuoLLJ+NFbs2IMZ2V0cHJvanN0YXRlywMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cHJvanN0YXRlCnN1bW1hcnk6ICdHZXQgcHJvamVjdGVkIGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHByb2plY3RlZCBzdGF0ZSBvZiBhbiBlbnRpdHkgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5leHQgdGFza19jb3VudCBzY2hlZHVsZWQgdGFza3MgKG9yIGFsbCB0YXNrcyBpZiB0YXNrX2NvdW50IGlzIG9taXR0ZWQpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHByZXZpZXcgdGhlIHJlc3VsdCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZSB3aXRob3V0IHJlc29sdmluZyBvbi1jaGFpbi4AAFDVIXWzYglnZXRyZWNpcGWmAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGUKc3VtbWFyeTogJ0dldCBhIHNpbmdsZSBjcmFmdGluZyByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSByZWNpcGUgd2hvc2Ugb3V0cHV0IG1hdGNoZXMgdGhlIGdpdmVuIGl0ZW0gaWQsIGluY2x1ZGluZyBpdHMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGlzcGxheSBjcmFmdGluZyByZXF1aXJlbWVudHMuAABW1SF1s2IKZ2V0cmVjaXBlc6wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlY2lwZXMKc3VtbWFyeTogJ0xpc3QgY3JhZnRpbmcgcmVjaXBlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBjcmFmdGluZyByZWNpcGVzIHN0YXJ0aW5nIGF0IHRoZSBwcm92aWRlZCBsb3dlciBib3VuZCBvdXRwdXQgaXRlbSBpZCwgdXAgdG8gdGhlIHNwZWNpZmllZCBsaW1pdC4gRWFjaCBlbnRyeSBpbmNsdWRlcyBpbnB1dHMsIGJsZW5kIHdlaWdodHMsIHN0YXQgc2xvdHMsIGFuZCByZXNvbHZlZCBpdGVtIG1hc3MgaW5mby4AAM4GYXWzYgpnZXRyZXNjYXRzngMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzY2F0cwpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcmVzb3VyY2UgY2F0ZWdvcnkgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAob3JlLCBnYXMsIHJlZ29saXRoLCBiaW9tYXNzLCBjcnlzdGFsKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgcmVzb3VyY2Ugc3VidHlwZSBpZGVudGlmaWVycy4AsNpXYXWzYgtnZXRyZXNlcnZlc/wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2VydmVzCnN1bW1hcnk6ICdHZXQgY3VycmVudCByZXNlcnZlIG1vZGlmaWNhdGlvbnMgYXQgYSBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgY2hhaW4ncyBtb2RpZmljYXRpb25zIHRvIGRlcml2ZWQgcmVzZXJ2ZXMgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGUgZm9yIHRoZSBjdXJyZW50IGVwb2NoIGFzIGEgbGlzdCBvZiB7c3RyYXR1bSwgcmVtYWluaW5nfSBwYWlycy4gU3RyYXRhIG5vdCBwcmVzZW50IGluIHRoZSByZXNwb25zZSB1c2UgdGhlaXIgZGVyaXZlZCBpbml0aWFsIHJlc2VydmUuIENvbXBvc2Ugd2l0aCBTREsgZGVyaXZhdGlvbiB0byBnZXQgdGhlIGZ1bGwgcGVyLWxvY2F0aW9uIHN0cmF0YSB2aWV3LoAVuppidbNiDGdldHJlc291cmNlc4cDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc291cmNlcwpzdW1tYXJ5OiAnR2V0IGFsbCByZXNvdXJjZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIHJlc291cmNlcywgaW5jbHVkaW5nIGVhY2ggcmVzb3VyY2UncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGdhdGhlcmFibGUgbWF0ZXJpYWxzLgAAADjTiLNiCGdldHNsb3RzuwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c2xvdHMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc2xvdCBsYXlvdXRzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgbW9kdWxlIHNsb3QgbGF5b3V0IGZvciBldmVyeSBlbnRpdHkgaXRlbSB0eXBlLCBsaXN0aW5nIHRoZSBvcmRlcmVkIHNsb3QgdHlwZXMgYXZhaWxhYmxlIGZvciBtb2R1bGUgaW5zdGFsbGF0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRldGVybWluZSB3aGljaCBtb2R1bGUgdHlwZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBhIGdpdmVuIGVudGl0eSBodWxsLgCA1NncjLNiCmdldHN0cmF0dW3SAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdHJhdHVtCnN1bW1hcnk6ICdHZXQgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHJlc291cmNlIHN0cmF0dW0gZGF0YSBmb3IgYSBzcGVjaWZpYyBkZXB0aCBsYXllciBhdCBhIGNvb3JkaW5hdGUsIGluY2x1ZGluZyB0aGUgc3RyYXR1bSBzZWVkIGluZm8gYW5kIGRlcml2ZWQgcmVzb3VyY2Ugc3RhdHMugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4AVKRNXsqzYgtnZXR3b3JtaG9sZQCQHZ7m5qrpZQxncm91cHRyYW5zaXQAAKLa5uaq6WULZ3JvdXB0cmF2ZWyaBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBncm91cHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBtdWx0aXBsZSBlbnRpdGllcyB0b2dldGhlcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgZ3JvdXAgdHJhdmVsIGZvciBtdWx0aXBsZSBlbnRpdGllcyB0byBhIGRlc3RpbmF0aW9uLiBBbGwgZW50aXRpZXMgbXVzdCBiZSBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhbmQgb3duZWQgYnkgdGhlIGNhbGxlci4gQXQgbGVhc3Qgb25lIGVudGl0eSB3aXRoIGVuZ2luZXMgaXMgcmVxdWlyZWQgdG8gcHJvdmlkZSB0aHJ1c3QuIEZsaWdodCBkdXJhdGlvbiBpcyBjYWxjdWxhdGVkIGZyb20gY29tYmluZWQgdGhydXN0IGFuZCB0b3RhbCBtYXNzIG9mIGFsbCBlbnRpdGllcy4gQ3JlYXRlcyBhbiBlbnRpdHlncm91cCBmb3IgYXRvbWljIHJlc29sdXRpb24gYW5kIGNhbmNlbGxhdGlvbi4AAAAAANCwaQRoYXNo+AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIHNoYTI1NiBoYXNoJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYWxjdWxhdGVzIHRoZSBzaGEyNTYgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAECE0rBpB2hhc2g1MTL7AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoNTEyCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhNTEyIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTUxMiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuACi7BuVLq3QLaW1wb3J0Y2FyZ28A4LPLU+VLq3QMaW1wb3J0ZW50aXR5AACqppflS6t0C2ltcG9ydGdyb3VwAHCVN7HmS6t0DGltcG9ydHBsYXllcgC6r8Lq5kurdA1pbXBvcnRyZXNlcnZlAABUNhnnS6t0C2ltcG9ydHN0YXRlAAAAAAAAMB19BGpvaW7EAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBqb2luCnN1bW1hcnk6ICdKb2luIGEgZ2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSm9pbiBhIGdhbWUgb2YgU2hpcGxvYWQAAAAANDS1iQZsYXVuY2gAAAAAAACQDI0EbG9hZAAAAAAquqw2lQhtb3ZldGlsZQAAAIhXM+nymgluZnRpbWd1cmyyAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBuZnRpbWd1cmwKc3VtbWFyeTogJ0dldCBORlQgaW1hZ2UgVVJMIGZvciBhIGNhcmdvIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBpbWFnZSBVUkwgdGhlIGNvbnRyYWN0IGVtaXRzIGZvciBhIGdpdmVuIGNhcmdvIGl0ZW0sIG9wdGlvbmFsbHkgc2NvcGVkIHRvIGEgbG9jYXRpb24uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgYW5kIE5GVCByZW5kZXJlcnMgdG8gZmV0Y2ggdGhlIGNhbm9uaWNhbCBhcnR3b3JrIGZvciBhbiBpdGVtIG9yIHBhY2tlZCBlbnRpdHkuAAAAAPjlMp0Gbm90aWZ5igMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbm90aWZ5CnN1bW1hcnk6ICdUYXNrIGxpZmVjeWNsZSBub3RpZmljYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IG5vdGlmaWVzIGVudGl0eSBvd25lcnMgb2YgdGFzayBsaWZlY3ljbGUgZXZlbnRzIChyZXNvbHZlZCwgY2FuY2VsbGVkKS4gQ2FsbGVkIGlubGluZSB3aGVuIHRhc2tzIGNoYW5nZSBzdGF0ZS4gVXNlcyByZXF1aXJlX3JlY2lwaWVudCB0byBlbmFibGUgb2ZmLWNoYWluIG1vbml0b3JpbmcgdmlhIGFjdGlvbiB0cmFjZXMuAABl1yCFTKwKcGxhY2VjYXJnb8kELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHBsYWNlY2FyZ28Kc3VtbWFyeTogJ1Jlc3RvcmUgTkZUIGNhcmdvIG9udG8gYSBob3N0IGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIGNhbGxlZCBpbmxpbmUgYnkgdGhlIHBsYXRmb3JtIGNvbnRyYWN0IG9ubHkuIFJlc3RvcmVzIHRoZSBjYXJnbyByZWNvcmRlZCBpbiBhbiB1bndyYXBwZWQgTkZUIG9udG8gYSBob3N0IGVudGl0eS4gVmFsaWRhdGVzIGhvc3Qgb3duZXJzaGlwLCBsb2FkZXJzLCBhbmQgcmVtYWluaW5nIGNhcGFjaXR5LCBkZXNlcmlhbGl6ZXMgdGhlIE5GVCdzIGl0ZW0gZGF0YSwgYW5kIGFwcGVuZHMgYW4gdW53cmFwIHRhc2sgdG8gZGVsaXZlciB0aGUgY2FyZ28gdG8gdGhlIGhvc3QuIFRoZSBwbGF0Zm9ybSBjb250cmFjdCBjcmVkaXRzIHRoZSBkZXBvc2l0IHJlZnVuZCBhbmQgYnVybnMgdGhlIGFzc2V0LiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAHx2eSqFTKwLcGxhY2VlbnRpdHnABC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBwbGFjZWVudGl0eQpzdW1tYXJ5OiAnTWF0ZXJpYWxpemUgYSBwYWNrZWQtZW50aXR5IE5GVCBhcyBhIGxpdmUgZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gY2FsbGVkIGlubGluZSBieSB0aGUgcGxhdGZvcm0gY29udHJhY3Qgb25seS4gRW1wbGFjZXMgYSBsaXZlIG9yYml0YWwgdmVzc2VsIChzaGlwIG9yIGNvbnRhaW5lcikgZnJvbSBpdHMgcGFja2VkLWVudGl0eSBORlQgZGF0YSBhdCB0aGUgcmVjb3JkZWQgd3JhcCBvcmlnaW4sIHRoZW4gcXVldWVzIHRyYXZlbCBhbmQgcmVjaGFyZ2UgdGFza3MgdG8gZGVsaXZlciBpdCB0byB0aGUgdGFyZ2V0IG5leHVzIGF0IGZ1bGwgZW5lcmd5LiBUaGUgcGxhdGZvcm0gY29udHJhY3QgY3JlZGl0cyB0aGUgZGVwb3NpdCByZWZ1bmQgYW5kIGJ1cm5zIHRoZSBhc3NldC4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAIpd05C6CHJlY2hhcmdlzQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS7gs8tTNXyXugxyZWZyc2hlbnRpdHm4Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiByZWZyc2hlbnRpdHkKc3VtbWFyeTogJ1JlZnJlc2ggZGVyaXZlZCBlbnRpdHkgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlY29tcHV0ZSBkZXJpdmVkIGZpZWxkcyBvbiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBjYXJnbyBhbmQgbW9kdWxlcywgcmVmcmVzaGluZyBjYXBhYmlsaXR5IHN0YXRzIGFuZCBjYXJnbyBtYXNzLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVXNlZCB0byByZWNvbmNpbGUgZGVyaXZlZCBzdGF0ZSBhZnRlciBkYXRhIG1pZ3JhdGlvbnMgb3IgY29udHJhY3QgdXBncmFkZXMuoCIyl6pNpboMcmVtb3Zlb3JhY2xlAAAAAAAoaaa6BnJlbmFtZQAAAABA7UixugdyZXNvbHZl0AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVzb2x2ZQpzdW1tYXJ5OiAnQ29tcGxldGUgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXNvbHZlIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4gSWYgY291bnQgaXMgc3BlY2lmaWVkLCByZXNvbHZlIGV4YWN0bHkgdGhhdCBtYW55IHRhc2tzOyBvdGhlcndpc2UgcmVzb2x2ZSBhbGwgY29tcGxldGVkIHRhc2tzLiBGYWlscyBpZiBjb3VudCBleGNlZWRzIHRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRhc2tzLgBAjEbtSLG6CnJlc29sdmVhbGwAAAAAAESjtroGcmV2ZWFsAAAAACrqRKW8CHJtbW9kdWxlvAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcm1tb2R1bGUKc3VtbWFyeTogJ1JlbW92ZSBhIG1vZHVsZSBmcm9tIGEgc2xvdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVtb3ZlIGFuIGluc3RhbGxlZCBtb2R1bGUgZnJvbSBhIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIGlzIHJldHVybmVkIHRvIGNhcmdvLiBGYWlscyBpZiB0aGUgZW50aXR5IGRvZXMgbm90IGhhdmUgZW5vdWdoIGNhcmdvIGNhcGFjaXR5IHRvIGhvbGQgdGhlIHJldHVybmVkIG1vZHVsZS4AAABsobymvAhybW5mdGNmZ6EDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJtbmZ0Y2ZnCnN1bW1hcnk6ICdSZW1vdmUgTkZUIHRlbXBsYXRlIG1hcHBpbmcgZm9yIGFuIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlbW92ZSB0aGUgQXRvbWljQXNzZXRzIHRlbXBsYXRlIG1hcHBpbmcgZm9yIHRoZSBzcGVjaWZpZWQgaXRlbSBpZCBmcm9tIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gQWZ0ZXIgcmVtb3ZhbCB0aGUgaXRlbSBjYW4gbm8gbG9uZ2VyIGJlIHdyYXBwZWQgb3IgdW53cmFwcGVkIHVudGlsIGEgbmV3IG1hcHBpbmcgaXMgc2V0LiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAADA6VKKssIJc2V0Y29vcmRzAAAAYAvlNbPCCXNldG5mdGNmZ8QDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNldG5mdGNmZwpzdW1tYXJ5OiAnU2V0IE5GVCB0ZW1wbGF0ZSBtYXBwaW5nIGZvciBhbiBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpCaW5kIGFuIGl0ZW0gaWQgdG8gYW4gQXRvbWljQXNzZXRzIHRlbXBsYXRlIGlkIGFuZCBzY2hlbWEgbmFtZS4gVXNlZCB0byBjb25maWd1cmUgaG93IHRoZSBjb250cmFjdCBtaW50cyBhbmQgcmVjb2duaXplcyBORlRzIGZvciBhIGdpdmVuIGl0ZW0uIEluc2VydHMgYSBuZXcgbWFwcGluZyBpZiBvbmUgZG9lcyBub3QgZXhpc3QsIG9yIHVwZGF0ZXMgdGhlIGV4aXN0aW5nIG1hcHBpbmcuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS6QIm1Y3ZazwgxzZXR0aHJlc2hvbGQAADKmqJrLs8ILc2V0d3JhcGNvc3QAAIBSq5rLs8IKc2V0d3JhcGZlZQAAAKDsGsRpxglzdG93Y2FyZ2/VBS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzdG93Y2FyZ28Kc3VtbWFyeTogJ1Jlc2VydmUgYSBjYXJnbyBzdGFjayBmb3Igd3JhcHBpbmcgaW50byBhbiBORlQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiBjYWxsZWQgaW5saW5lIGJ5IHRoZSBwbGF0Zm9ybSBjb250cmFjdCBvbmx5LiBSZXNlcnZlcyBhbmQgY29uc3VtZXMgYSBjYXJnbyBzdGFjayBvbiBhIGxpdmUgZW50aXR5IGZvciB3cmFwcGluZyBpbnRvIGFuIE5GVC4gVmFsaWRhdGVzIGVudGl0eSBvd25lcnNoaXAsIGxvYWRlcnMsIGFuZCBwcmVzZW5jZSBhdCB0aGUgbmV4dXMsIGFuZCBjb25maXJtcyB0aGUgdGFyZ2V0IGNhcmdvIHN0YWNrIGlzIGF2YWlsYWJsZSBhbmQgbm90IHJlc2VydmVkIGJ5IGEgcGVuZGluZyB0YXNrLiBDb21wdXRlcyB0aGUgd3JhcCBjb3N0IGFuZCBmZWUsIGRlYml0cyB0aGVtIGZyb20gdGhlIG93bmVyJ3MgcGxhdGZvcm0gZGVwb3NpdCBiYWxhbmNlLCBkZXJpdmVzIHRoZSBORlQncyBpbW11dGFibGUgZGF0YSwgYW5kIG1pbnRzIHRoZSBORlQgaW5saW5lIGFzIHRoZSBnYW1lIGNvbnRyYWN0IGJlZm9yZSBjb25zdW1pbmcgdGhlIGNhcmdvLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAIDPLk/FacYKc3Rvd2VudGl0eZkFLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHN0b3dlbnRpdHkKc3VtbWFyeTogJ1Jlc2VydmUgYW4gZW50aXR5IGZvciB3cmFwcGluZyBpbnRvIGFuIE5GVCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIGNhbGxlZCBpbmxpbmUgYnkgdGhlIHBsYXRmb3JtIGNvbnRyYWN0IG9ubHkuIFJlc2VydmVzIGEgd2hvbGUgZW50aXR5IChzaGlwLCBjb250YWluZXIsIG9yIHBsYW5ldGFyeSBzdHJ1Y3R1cmUpIGZvciB3cmFwcGluZyBpbnRvIGFuIE5GVC4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBlbXB0eSBjYXJnbyBhbmQgbm8gc2NoZWR1bGVkIHRhc2tzLiBDb21wdXRlcyB0aGUgd3JhcCBjb3N0IGFuZCBmZWUsIGRlYml0cyB0aGVtIGZyb20gdGhlIG93bmVyJ3MgcGxhdGZvcm0gZGVwb3NpdCBiYWxhbmNlLCBkZXJpdmVzIHRoZSBlbnRpdHkgTkZUJ3MgaW1tdXRhYmxlIGRhdGEsIG1pbnRzIHRoZSBORlQgaW5saW5lIGFzIHRoZSBnYW1lIGNvbnRyYWN0LCBhbmQgZXJhc2VzIHRoZSBlbnRpdHkgZnJvbSB0aGUgd29ybGQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AgIo6UVkNxwpzd2FwbW9kdWxlAAAAACq6XA3HCHN3YXB0aWxlAAAAACA7PM3NB3RyYW5zaXQAAAAAAES1zc0GdHJhdmVs+wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIGEgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhdGUgdHJhdmVsIG9mIGFuIGVudGl0eSBmcm9tIGl0cyBjdXJyZW50IGxvY2F0aW9uIHRvIGEgbmV3IGRlc3RpbmF0aW9uLgAAAJ7GqtLUCHVuZGVwbG955wQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdW5kZXBsb3kKc3VtbWFyeTogJ1BhY2sgYSBkZXBsb3llZCBlbnRpdHkgaW50byBhIGhvc3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClBhY2sgYW4gZW50aXR5IGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvIGFzIGEgcGFja2VkLWVudGl0eSBpdGVtLiBIb3N0IGFuZCB0YXJnZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSBvd25lciBhbmQgY29vcmRpbmF0ZXMsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzIGFuZCBlbm91Z2ggY2FwYWNpdHkgZm9yIHRoZSBwYWNrZWQgbWFzcywgYW5kIHRoZSB0YXJnZXQgbXVzdCBiZSBpZGxlIHdpdGggZW1wdHkgY2FyZ28uIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgYW5kIHNjaGVkdWxlcyB1bmRlcGxveSB0YXNrcyBvbiBib3RoIGVudGl0aWVzOyBvbiByZXNvbHV0aW9uIHRoZSB0YXJnZXQgaXMgZXJhc2VkIGFuZCB0aGUgcGFja2VkIGVudGl0eSBpcyBhZGRlZCB0byB0aGUgaG9zdCdzIGNhcmdvLiBJbnZlcnNlIG9mIGRlcGxveS4AAAAAJEPj1AZ1bmxvYWQAAAAAQCVzWdUHdXBncmFkZQAAAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLRIAAAAAAMquQQNpNjQAAAljYXJnb19yb3cAAAAAYOlMRANpNjQAAAljbGFpbV9yb3cAAADgqox1RANpNjQAAAtjbHVzdGVyX3JvdwAAAABkJyVFA2k2NAAACmNvbW1pdF9yb3cAAAAA+OzyVANpNjQAAAplbnRpdHlfcm93AKqml/ns8lQDaTY0AAAPZW50aXR5Z3JvdXBfcm93AACwCvvs8lQDaTY0AAAOZW50aXR5X3NlcV9yb3cAAAAAgIZoVQNpNjQAAAllcG9jaF9yb3cAAGBuTYrymgNpNjQAAA1uZnRjb25maWdfcm93AABgC6mIzKUDaTY0AAARb3JhY2xlX2NvbmZpZ19yb3cAAAAAq4jMpQNpNjQAAApvcmFjbGVfcm93AAAAAFzlTawDaTY0AAAKcGxheWVyX3JvdwAAAEDtq7C6A2k2NAAAC3Jlc2VydmVfcm93AAAAAESjtroDaTY0AAAKcmV2ZWFsX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAAAArKrPA2k2NAAACXR5cGVzX3JvdwAAc2tSVM3lA2k2NAAADndyYXBjb25maWdfcm93AAAAGVNUzeUDaTY0AAAMd3JhcGNvc3Rfcm93ARFTaGlwbG9hZCAoU2VydmVyKRFTaGlwbG9hZCAoU2VydmVyKQAAAD8AAMg01hSdPgx0YXNrX3Jlc3VsdHMAAAAARIWmQQ5jYW5jZWxfcmVzdWx0cwAAyDRW6UxEDHRhc2tfcmVzdWx0cwAAAACAvMxFDHRhc2tfcmVzdWx0cwAAAA27SKVKDHRhc2tfcmVzdWx0cwAAAAB4GqtKDHRhc2tfcmVzdWx0cwCAzy5PhbBKBnN0cmluZwAAAABc1bJhDHRhc2tfcmVzdWx0cwDAVRnriLJiC2NsdXN0ZXJfcm93AABgbk2KsmILZ2FtZV9jb25maWcAQHaYVpWyYg5leHRlbmRlZF9hc3NldAAUmiZjl7JiBnVpbnQ2NABUPI65qLJiCHVpbnQxNltdAADAEeWpsmILZW51bV9yZXN1bHQAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm+Qp7s1U7qyYhBmb290cHJpbnRfcmVzdWx0AEw2SarssmIPaXRlbWRhdGFfcmVzdWx0AABOTqrssmIPaXRlbV9pZHNfcmVzdWx0AAAAWKrssmIKaXRlbXNfaW5mbwBU9Vmq7LJiBXVpbnQ4gFX1WarssmILZW51bV9yZXN1bHQATFYyTQezYhBraW5kX21ldGFfcmVzdWx0ACZ12SAas2INbG9jYXRpb25faW5mbwCAySYhGrNiEGxvY2F0aW9uX2Rlcml2ZWQAsKo+JyqzYgtlbnVtX3Jlc3VsdAAAVlEnKrNiDm1vZHVsZXNfcmVzdWx0AADw5xo1s2ILbmVhcmJ5X2luZm8AgMLm5DWzYghzdHJpbmdbXQAAXdPlNbNiDm5mdGluZm9fcmVzdWx0AAC4yptYs2ILcGxheWVyX2luZm+gssn40VuzYg9wcm9qZWN0ZWRfc3RhdGUAAFDVIXWzYg5yZWNpcGVzX3Jlc3VsdAAAVtUhdbNiDnJlY2lwZXNfcmVzdWx0AADOBmF1s2ILZW51bV9yZXN1bHQAsNpXYXWzYhNzdHJhdHVtX3JlbWFpbmluZ1tdgBW6mmJ1s2IQcmVzb3VyY2VzX3Jlc3VsdAAAADjTiLNiFWVudGl0eV9sYXlvdXRzX3Jlc3VsdACA1NncjLNiDHN0cmF0dW1fZGF0YYCVu0ZKjbNiEGVudGl0eV9zdW1tYXJ5W10AVKRNXsqzYg13b3JtaG9sZV9pbmZvkB2e5uaq6WUMdGFza19yZXN1bHRzAKLa5uaq6WUMdGFza19yZXN1bHRzAAAAAADQsGkLY2hlY2tzdW0yNTYAAABAhNKwaQtjaGVja3N1bTUxMgAAAAA0NLWJDHRhc2tfcmVzdWx0cwAAAAAAkAyNDHRhc2tfcmVzdWx0cwAAACq6rDaVDHRhc2tfcmVzdWx0cwAAiFcz6fKaBnN0cmluZwAAZdcghUysDHRhc2tfcmVzdWx0cwB8dnkqhUysDHRhc2tfcmVzdWx0cwAAAIpd05C6DHRhc2tfcmVzdWx0cwAAAEDtSLG6D3Jlc29sdmVfcmVzdWx0cwBAjEbtSLG6EnJlc29sdmVhbGxfcmVzdWx0cwAAoOwaxGnGDHRhc2tfcmVzdWx0cwCAzy5PxWnGDHRhc2tfcmVzdWx0cwAAACq6XA3HDHRhc2tfcmVzdWx0cwAAACA7PM3NDHRhc2tfcmVzdWx0cwAAAABEtc3NDHRhc2tfcmVzdWx0cwAAAJ7GqtLUDHRhc2tfcmVzdWx0cwAAAAAkQ+PUDHRhc2tfcmVzdWx0cwAAAEAlc1nVDHRhc2tfcmVzdWx0cwAAAAAAUK/hDHRhc2tfcmVzdWx0cw==');
|
|
443
|
+
const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDjWAQlhZGRtb2R1bGUABAllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OAptb2R1bGVfcmVmCWNhcmdvX3JlZgp0YXJnZXRfcmVmCmNhcmdvX3JlZj8IYWRkbmV4dXMAAwpuZXh1c19uYW1lBnN0cmluZwF4BWludDY0AXkFaW50NjQJYWRkb3JhY2xlAAEJb3JhY2xlX2lkBG5hbWUFYmxlbmQAAgJpZAZ1aW50NjQGaW5wdXRzDGNhcmdvX2l0ZW1bXQxidWlsZGVyX2xhbmUABApzbG90X2luZGV4BXVpbnQ4BXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MzIKb3V0cHV0X3BjdAZ1aW50MTYJYnVpbGRwbG90AAIKYnVpbGRlcl9pZAZ1aW50NjQHcGxvdF9pZAZ1aW50NjQGY2FuY2VsAAMCaWQGdWludDY0CGxhbmVfa2V5BXVpbnQ4BWNvdW50BnVpbnQ2NA5jYW5jZWxfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ9jYW5jZWxsZWRfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwljYW5jZWxqb2IAAgZqb2JfaWQGdWludDY0B3NoaXBfaWQGdWludDY0CmNhcmdvX2l0ZW0ABQdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhxdWFudGl0eQZ1aW50MzIJZW50aXR5X2lkB3VpbnQ2ND8JY2FyZ29fcmVmAAQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0B21vZHVsZXMObW9kdWxlX2VudHJ5W10JZW50aXR5X2lkB3VpbnQ2ND8JY2FyZ29fcm93AAcCaWQGdWludDY0CWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdC3NlcXVlbmNlX2lkB3VpbnQ2ND8KY2FyZ29fdmlldwAGB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHF1YW50aXR5BnVpbnQzMgJpZAZ1aW50NjQJZW50aXR5X2lkB3VpbnQ2ND8PY2l2aWNjb25maWdfcm93AAELY2l2aWNfb3duZXIEbmFtZQljbGFpbV9yb3cAAQVvd25lcgRuYW1lCGNsYWltam9iAAIGam9iX2lkBnVpbnQ2NAdzaGlwX2lkBnVpbnQ2NAljbGFpbXBsb3QAAwpidWlsZGVyX2lkBnVpbnQ2NA50YXJnZXRfaXRlbV9pZAZ1aW50MTYEc2xvdAxjbHVzdGVyX3Nsb3QMY2xhaW1zdGFydGVyAAEFb3duZXIEbmFtZQljbGVhbnJzdnAAAgVlcG9jaAZ1aW50NjQIbWF4X3Jvd3MGdWludDY0CmNsZWFydGFibGUAAwp0YWJsZV9uYW1lBG5hbWUFc2NvcGUFbmFtZT8IbWF4X3Jvd3MHdWludDY0PwxjbHVzdGVyX2NlbGwAAwJneARpbnQ4Amd5BGludDgGZW50aXR5BnVpbnQ2NAtjbHVzdGVyX3JvdwACBHJvb3QGdWludDY0BWNlbGxzDmNsdXN0ZXJfY2VsbFtdDGNsdXN0ZXJfc2xvdAADA2h1YgZ1aW50NjQCZ3gEaW50OAJneQRpbnQ4BmNvbW1pdAADCW9yYWNsZV9pZARuYW1lBWVwb2NoBnVpbnQ2NAZjb21taXQLY2hlY2tzdW0yNTYKY29tbWl0X3JvdwAEAmlkBnVpbnQ2NAVlcG9jaAZ1aW50NjQJb3JhY2xlX2lkBG5hbWUGY29tbWl0C2NoZWNrc3VtMjU2CWNvbmZpZ2xvZwABBmNvbmZpZwtnYW1lX2NvbmZpZwtjb29yZGluYXRlcwADAXgFaW50NjQBeQVpbnQ2NAF6B3VpbnQxNj8IY291cGxpbmcAAwtjb3VudGVycGFydAplbnRpdHlfcmVmBGhvbGQGdWludDY0BGtpbmQFdWludDgFY3JhZnQABgJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQZ0YXJnZXQHdWludDY0PwRzbG90BnVpbnQ4PwxjcmFmdGVyX2xhbmUABApzbG90X2luZGV4BXVpbnQ4BXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MzIKb3V0cHV0X3BjdAZ1aW50MTYIY3JhZnRqb2IABgdzaGlwX2lkBnVpbnQ2NAt3b3Jrc2hvcF9pZAZ1aW50NjQEc2xvdAV1aW50OAlyZWNpcGVfaWQGdWludDE2CHF1YW50aXR5BnVpbnQzMgZpbnB1dHMMY2FyZ29faXRlbVtdCWRlbGVudGl0eQABCWVudGl0eV9pZAZ1aW50NjQIZGVtb2xpc2gAAQllbnRpdHlfaWQGdWludDY0BmRlcGxveQADAmlkBnVpbnQ2NANyZWYJY2FyZ29fcmVmBHNsb3QNY2x1c3Rlcl9zbG90PwpkZXNjZW50aXR5AAQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQMbW9kdWxlX2l0ZW1zCHVpbnQxNltdDG1vZHVsZV9zdGF0cwh1aW50NjRbXQZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDMyCHJlY2hhcmdlBnVpbnQzMhRlbnRpdHlfY3VycmVudF9zdGF0ZQACC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MzIPZW50aXR5X2RlZmF1bHRzAAILd2FyZWhvdXNlX3oGdWludDE2C2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAXBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMHaXRlbV9pZAZ1aW50MTYJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQZlbmVyZ3kHdWludDMyPwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8HZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8Ed2FycAt3YXJwX3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPw5nYXRoZXJlcl9sYW5lcw9nYXRoZXJlcl9sYW5lW10NY3JhZnRlcl9sYW5lcw5jcmFmdGVyX2xhbmVbXQ1idWlsZGVyX2xhbmVzDmJ1aWxkZXJfbGFuZVtdDGxvYWRlcl9sYW5lcw1sb2FkZXJfbGFuZVtdCGxhdW5jaGVyD2xhdW5jaGVyX3N0YXRzPwVsYW5lcwZsYW5lW10FaG9sZHMGaG9sZFtdDWVudGl0eV9sYXlvdXQAAw5lbnRpdHlfaXRlbV9pZAZ1aW50MTYFc2xvdHMKc2xvdF9kZWZbXQ1iYXNlX2h1bGxtYXNzBnVpbnQzMhVlbnRpdHlfbGF5b3V0c19yZXN1bHQAAQhlbnRpdGllcw9lbnRpdHlfbGF5b3V0W10KZW50aXR5X3JlZgACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAplbnRpdHlfcm93AAwCaWQGdWludDY0BW93bmVyBG5hbWUEa2luZARuYW1lB2l0ZW1faWQGdWludDE2BG5hbWUGc3RyaW5nBXN0YXRzBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwZlbmVyZ3kHdWludDMyPwljYXJnb21hc3MGdWludDMyB21vZHVsZXMObW9kdWxlX2VudHJ5W10FbGFuZXMGbGFuZVtdBWhvbGRzBmhvbGRbXQ5lbnRpdHlfc2VxX3JvdwABB25leHRfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAZ1aW50MzIQc2NoZWR1bGVfc3RhcnRlZAp0aW1lX3BvaW50D2VudGl0eWdyb3VwX3JvdwACAmlkBnVpbnQ2NAxwYXJ0aWNpcGFudHMMZW50aXR5X3JlZltdC2VudW1fbWVtYmVyAAIFdmFsdWUFdWludDgEbmFtZQZzdHJpbmcLZW51bV9yZXN1bHQAAQdtZW1iZXJzDWVudW1fbWVtYmVyW10JZXBvY2hfcm93AAQFZXBvY2gGdWludDY0Cm9yYWNsZV9pZHMGbmFtZVtdCXRocmVzaG9sZAV1aW50OARzZWVkC2NoZWNrc3VtMjU2DGZpeGNhcmdvbWFzcwABCWVudGl0eV9pZAZ1aW50NjQQZm9vdHByaW50X3Jlc3VsdAABBWNlbGxzC2dyaWRfY2VsbFtdC2ZvcmNlcmV2ZWFsAAEFZXBvY2gGdWludDY0C2dhbWVfY29uZmlnAAMHdmVyc2lvbgZ1aW50MzIIZGVmYXVsdHMPZW50aXR5X2RlZmF1bHRzBWl0ZW1zCml0ZW1fZGVmW10GZ2F0aGVyAAUJc291cmNlX2lkBnVpbnQ2NA5kZXN0aW5hdGlvbl9pZAZ1aW50NjQHc3RyYXR1bQZ1aW50MTYIcXVhbnRpdHkGdWludDMyBHNsb3QGdWludDg/DWdhdGhlcmVyX2xhbmUABQpzbG90X2luZGV4BXVpbnQ4BXlpZWxkBnVpbnQxNgVkcmFpbgZ1aW50MzIFZGVwdGgGdWludDE2Cm91dHB1dF9wY3QGdWludDE2CmdhdGhlcnBsYW4ABglzb3VyY2VfaWQGdWludDY0DmRlc3RpbmF0aW9uX2lkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNghxdWFudGl0eQZ1aW50MzIIcmVjaGFyZ2UEYm9vbAVzbG90cwVieXRlcwxnZW5lc2lzZmxlZXQAAQhlbnRpdGllcwxlbnRpdHlfcm93W10KZ2V0Y2x1c3RlcgABBmh1Yl9pZAZ1aW50NjQJZ2V0Y29uZmlnAAAKZ2V0ZGVwb3NpdAACBW93bmVyBG5hbWUIYXNzZXRfaWQGdWludDY0C2dldGRpc3RhbmNlAAQCYXgFaW50NjQCYXkFaW50NjQCYngFaW50NjQCYnkFaW50NjQLZ2V0ZWxpZ2libGUAAgZjb29yZHMLY29vcmRpbmF0ZXMHc3RyYXR1bQZ1aW50MTYJZ2V0ZW50Y2xzAAALZ2V0ZW50aXRpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/CWdldGVudGl0eQABCWVudGl0eV9pZAZ1aW50NjQMZ2V0Zm9vdHByaW50AAEHaXRlbV9pZAZ1aW50MTYLZ2V0aXRlbWRhdGEAAApnZXRpdGVtaWRzAAAIZ2V0aXRlbXMAAAtnZXRpdGVtdHlwZQABB2l0ZW1faWQGdWludDE2DGdldGl0ZW10eXBlcwAAB2dldGpvYnMAAQt3b3Jrc2hvcF9pZAZ1aW50NjQLZ2V0a2luZG1ldGEAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0C2dldG1vZHR5cGVzAAAKZ2V0bW9kdWxlcwAACWdldG5lYXJieQACCWVudGl0eV9pZAZ1aW50NjQIcmVjaGFyZ2UEYm9vbApnZXRuZnRiYXNlAAAKZ2V0bmZ0aW5mbwAACWdldHBsYXllcgABB2FjY291bnQEbmFtZQxnZXRwcm9qc3RhdGUAAgllbnRpdHlfaWQGdWludDY0CnRhc2tfY291bnQGdWludDg/CWdldHJlY2lwZQABDm91dHB1dF9pdGVtX2lkBnVpbnQxNgpnZXRyZWNpcGVzAAILbG93ZXJfYm91bmQGdWludDE2BWxpbWl0BXVpbnQ4CmdldHJlc2NhdHMAAAtnZXRyZXNlcnZlcwACAXgFaW50NjQBeQVpbnQ2NAxnZXRyZXNvdXJjZXMAAApnZXRzZXJ2aWNlAAELd29ya3Nob3BfaWQGdWludDY0CGdldHNsb3RzAAAKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dldHdvcm1ob2xlAAIBeAVpbnQ2NAF5BWludDY0CWdyaWRfY2VsbAACAmd4BGludDgCZ3kEaW50OAxncm91cHRyYW5zaXQABQhlbnRpdGllcwxlbnRpdHlfcmVmW10CYXgFaW50NjQCYXkFaW50NjQCYngFaW50NjQCYnkFaW50NjQLZ3JvdXB0cmF2ZWwABAhlbnRpdGllcwxlbnRpdHlfcmVmW10BeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nDGhhdWxlcl9zdGF0cwAECGNhcGFjaXR5BXVpbnQ4CmVmZmljaWVuY3kGdWludDE2BWRyYWluBnVpbnQzMhBjYXBhY2l0eV9ieV90aWVyEWhhdWxlcl90aWVyX2NhcFtdD2hhdWxlcl90aWVyX2NhcAACBHRpZXIFdWludDgIY2FwYWNpdHkFdWludDgEaG9sZAAFAmlkBnVpbnQ2NARraW5kBXVpbnQ4C2NvdW50ZXJwYXJ0CmVudGl0eV9yZWYFdW50aWwKdGltZV9wb2ludA1pbmNvbWluZ19tYXNzBnVpbnQzMgtpbXBvcnRjYXJnbwABA3JvdwljYXJnb19yb3cKaW1wb3J0Y2VsbAAEBHJvb3QGdWludDY0Amd4BGludDgCZ3kEaW50OAllbnRpdHlfaWQGdWludDY0DGltcG9ydGVudGl0eQABA3JvdwplbnRpdHlfcm93C2ltcG9ydGdyb3VwAAEDcm93D2VudGl0eWdyb3VwX3JvdwxpbXBvcnRwbGF5ZXIAAQVvd25lcgRuYW1lDWltcG9ydHJlc2VydmUAAgtlcG9jaF9zY29wZQZ1aW50MzIDcm93C3Jlc2VydmVfcm93C2ltcG9ydHN0YXRlAAEDcm93CXN0YXRlX3JvdwhpdGVtX2RlZgAFAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgR0eXBlBXVpbnQ4B3N1YnR5cGUFdWludDgEdGllcgV1aW50OAxpdGVtX2lkX3BhaXIAAgJpZAZ1aW50MTYEbmFtZQZzdHJpbmcPaXRlbV9pZHNfcmVzdWx0AAEFaXRlbXMOaXRlbV9pZF9wYWlyW10PaXRlbWRhdGFfcmVzdWx0AAIFaXRlbXMKaXRlbV9kZWZbXQdyZWNpcGVzDnJlY2lwZXNfcmVzdWx0Cml0ZW1zX2luZm8AAQVpdGVtcwppdGVtX2RlZltdC2pvYl9yZWNlaXB0AAMGam9iX2lkBnVpbnQ2NAlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludAdqb2Jfcm93AAwCaWQGdWludDY0CHdvcmtzaG9wBnVpbnQ2NAZzb2NrZXQFdWludDgFb3duZXIEbmFtZQdzaGlwX2lkBnVpbnQ2NAZjb29yZHMLY29vcmRpbmF0ZXMJc3RhcnRzX2F0CnRpbWVfcG9pbnQMY29tcGxldGVzX2F0CnRpbWVfcG9pbnQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzILZW5lcmd5X3BhaWQGdWludDMyBWNhcmdvDGNhcmdvX2l0ZW1bXQtqb2JzX3Jlc3VsdAABBGpvYnMJam9iX3Jvd1tdBGpvaW4AAQdhY2NvdW50BG5hbWUQa2luZF9tZXRhX3Jlc3VsdAACBWtpbmRzD2tpbmRfbWV0YV9yb3dbXQl0ZW1wbGF0ZXMTdGVtcGxhdGVfbWV0YV9yb3dbXQ1raW5kX21ldGFfcm93AAUEa2luZARuYW1lDmNsYXNzaWZpY2F0aW9uBXVpbnQ4EGNhcGFiaWxpdHlfZmxhZ3MFdWludDgHel9jb29yZAZ1aW50MzINZGVmYXVsdF9sYWJlbAZzdHJpbmcEbGFuZQACCGxhbmVfa2V5BXVpbnQ4CHNjaGVkdWxlCHNjaGVkdWxlBmxhdW5jaAADC2xhdW5jaGVyX2lkBnVpbnQ2NApjYXRjaGVyX2lkBnVpbnQ2NAVpdGVtcwxjYXJnb19pdGVtW10ObGF1bmNoZXJfc3RhdHMAAwtjaGFyZ2VfcmF0ZQZ1aW50MTYIdmVsb2NpdHkGdWludDE2BWRyYWluBnVpbnQxNgRsb2FkAAMCaWQGdWludDY0B2Zyb21faWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQtsb2FkZXJfbGFuZQAECnNsb3RfaW5kZXgFdWludDgEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNgpvdXRwdXRfcGN0BnVpbnQxNhBsb2NhdGlvbl9kZXJpdmVkAAIMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwRzaXplBnVpbnQxNg1sb2NhdGlvbl9pbmZvAAMGY29vcmRzC2Nvb3JkaW5hdGVzCWlzX3N5c3RlbQRib29sC2lzX3dvcm1ob2xlBGJvb2wPbG9jYXRpb25fc3RhdGljAAUGY29vcmRzC2Nvb3JkaW5hdGVzBHR5cGUNbG9jYXRpb25fdHlwZQdzdWJ0eXBlBXVpbnQ4BXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DG1pZ3JhdGV0YXNrcwABBWJhdGNoBnVpbnQzMgdtaWdzd2FwAAEFYmF0Y2gGdWludDMyDG1vZHVsZV9lbnRyeQACBHR5cGUFdWludDgJaW5zdGFsbGVkDnBhY2tlZF9tb2R1bGU/C21vZHVsZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyC21vZHVsZV90eXBlBXVpbnQ4BHRpZXIFdWludDgObW9kdWxlc19yZXN1bHQAAQdtb2R1bGVzDW1vZHVsZV9pbmZvW10ObW92ZW1lbnRfc3RhdHMAAgZ0aHJ1c3QGdWludDMyBWRyYWluBnVpbnQzMghtb3ZldGlsZQAFBmh1Yl9pZAZ1aW50NjQHZnJvbV9neARpbnQ4B2Zyb21fZ3kEaW50OAV0b19neARpbnQ4BXRvX2d5BGludDgLbmVhcmJ5X2luZm8ABQpjYW5fdHJhdmVsBGJvb2wHY3VycmVudBRlbnRpdHlfY3VycmVudF9zdGF0ZQlwcm9qZWN0ZWQUZW50aXR5X2N1cnJlbnRfc3RhdGUKbWF4X2VuZXJneQZ1aW50MzIHc3lzdGVtcw9uZWFyYnlfc3lzdGVtW10NbmVhcmJ5X3N5c3RlbQAECGRpc3RhbmNlBnVpbnQ2NAtlbmVyZ3lfY29zdAZ1aW50NjQLZmxpZ2h0X3RpbWUGdWludDMyCGxvY2F0aW9uDWxvY2F0aW9uX2luZm8ObmZ0X2NhcmdvX2l0ZW0ABAdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhxdWFudGl0eQZ1aW50MzIQbmZ0X2l0ZW1fcGF5bG9hZAACBGl0ZW0ObmZ0X2NhcmdvX2l0ZW0IbG9jYXRpb24MY29vcmRpbmF0ZXM/Dm5mdF9zY2hlbWFfZGVmAAILc2NoZW1hX25hbWUEbmFtZQZmaWVsZHMOc2NoZW1hX2ZpZWxkW10QbmZ0X3RlbXBsYXRlX2RlZgADB2l0ZW1faWQGdWludDE2C3NjaGVtYV9uYW1lBG5hbWULdGVtcGxhdGVfaWQFaW50MzINbmZ0Y29uZmlnX3JvdwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUJbmZ0aW1ndXJsAAIEaXRlbQpjYXJnb19pdGVtCGxvY2F0aW9uDGNvb3JkaW5hdGVzPw5uZnRpbmZvX3Jlc3VsdAACB3NjaGVtYXMQbmZ0X3NjaGVtYV9kZWZbXQl0ZW1wbGF0ZXMSbmZ0X3RlbXBsYXRlX2RlZltdBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQRb3JhY2xlX2NvbmZpZ19yb3cAAQl0aHJlc2hvbGQFdWludDgKb3JhY2xlX3JvdwABAmlkBG5hbWUNcGFja2VkX21vZHVsZQACB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NApwbGFjZWNhcmdvAAMFb3duZXIEbmFtZQdob3N0X2lkBnVpbnQ2NAhhc3NldF9pZAZ1aW50NjQLcGxhY2VlbnRpdHkAAwVvd25lcgRuYW1lCGFzc2V0X2lkBnVpbnQ2NA90YXJnZXRfbmV4dXNfaWQGdWludDY0C3BsYXllcl9pbmZvAAMFb3duZXIEbmFtZQlpc19wbGF5ZXIEYm9vbAxjb21wYW55X25hbWUGc3RyaW5nCnBsYXllcl9yb3cAAQVvd25lcgRuYW1lD3Byb2plY3RlZF9zdGF0ZQARBW93bmVyBG5hbWULY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5B3VpbnQzMj8JY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10IaHVsbG1hc3MHdWludDMyPwhjYXBhY2l0eQd1aW50MzI/B2VuZ2luZXMPbW92ZW1lbnRfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8GaGF1bGVyDWhhdWxlcl9zdGF0cz8OZ2F0aGVyZXJfbGFuZXMPZ2F0aGVyZXJfbGFuZVtdDWNyYWZ0ZXJfbGFuZXMOY3JhZnRlcl9sYW5lW10NYnVpbGRlcl9sYW5lcw5idWlsZGVyX2xhbmVbXQxsb2FkZXJfbGFuZXMNbG9hZGVyX2xhbmVbXQhsYXVuY2hlcg9sYXVuY2hlcl9zdGF0cz8EdGllcgV1aW50OAhyZWNoYXJnZQABAmlkBnVpbnQ2NAxyZWNpcGVfaW5wdXQAAgdpdGVtX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIQcmVjaXBlX2l0ZW1faW5mbwACAmlkBnVpbnQxNgRtYXNzBnVpbnQzMg9yZWNpcGVfcmVzcG9uc2UACA5vdXRwdXRfaXRlbV9pZAZ1aW50MTYLb3V0cHV0X21hc3MGdWludDMyBmlucHV0cw5yZWNpcGVfaW5wdXRbXQpzdGF0X3Nsb3RzFHN0YXRfc2xvdF9yZXNwb25zZVtdDWJsZW5kX3dlaWdodHMFYnl0ZXMLb3V0cHV0X2l0ZW0QcmVjaXBlX2l0ZW1faW5mbwtpbnB1dF9pdGVtcxJyZWNpcGVfaXRlbV9pbmZvW10Pc291cmNlX3N1YmNsYXNzB3VpbnQxNj8OcmVjaXBlc19yZXN1bHQAAQdyZWNpcGVzEXJlY2lwZV9yZXNwb25zZVtdDHJlZnJzaGVudGl0eQABCWVudGl0eV9pZAZ1aW50NjQMcmVtb3Zlb3JhY2xlAAEJb3JhY2xlX2lkBG5hbWUGcmVuYW1lAAICaWQGdWludDY0BG5hbWUGc3RyaW5nC3Jlc2VydmVfcm93AAUCaWQGdWludDY0CGNvb3JkX2lkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyCmxhc3RfYmxvY2sUYmxvY2tfdGltZXN0YW1wX3R5cGUHcmVzb2x2ZQACAmlkBnVpbnQ2NAVjb3VudAd1aW50NjQ/D3Jlc29sdmVfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ5yZXNvbHZlZF9jb3VudAZ1aW50MzIUbmV3X3NjaGVkdWxlX3N0YXJ0ZWQLdGltZV9wb2ludD8LZW50aXR5Z3JvdXAHdWludDY0Pw1ncm91cF9tZW1iZXJzFkJfdmVjdG9yX2VudGl0eV9yZWZfRT8KcmVzb2x2ZWFsbAABBW93bmVyBG5hbWUScmVzb2x2ZWFsbF9yZXN1bHRzAAIHc2Nhbm5lZAZ1aW50MzIIcmVzb2x2ZWQGdWludDMyDXJlc291cmNlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzIIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OA5yZXNvdXJjZV9zdGF0cwADBXN0YXQxBnVpbnQxNgVzdGF0MgZ1aW50MTYFc3RhdDMGdWludDE2EHJlc291cmNlc19yZXN1bHQAAQlyZXNvdXJjZXMPcmVzb3VyY2VfaW5mb1tdBnJldmVhbAADCW9yYWNsZV9pZARuYW1lBWVwb2NoBnVpbnQ2NAZyZXZlYWwLY2hlY2tzdW0yNTYKcmV2ZWFsX3JvdwAEAmlkBnVpbnQ2NAVlcG9jaAZ1aW50NjQJb3JhY2xlX2lkBG5hbWUGcmV2ZWFsC2NoZWNrc3VtMjU2CHJtbW9kdWxlAAMJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgKdGFyZ2V0X3JlZgpjYXJnb19yZWY/CHJtbmZ0Y2ZnAAEHaXRlbV9pZAZ1aW50MTYOcm91dGVfd2F5cG9pbnQAAgF4BWludDY0AXkFaW50NjQIc2NoZWR1bGUAAgdzdGFydGVkCnRpbWVfcG9pbnQFdGFza3MGdGFza1tdDHNjaGVtYV9maWVsZAACBG5hbWUGc3RyaW5nCmZpZWxkX3R5cGUGc3RyaW5nC3NlcnZpY2Vfcm93AAIGZW50aXR5BnVpbnQ2NAdzb2NrZXRzEHNlcnZpY2Vfc29ja2V0W10Oc2VydmljZV9zb2NrZXQAAQRvcGVuBGJvb2wIc2V0Y2l2aWMAAQdhY2NvdW50BG5hbWUJc2V0Y29vcmRzAAMJZW50aXR5X2lkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQJc2V0bmZ0Y2ZnAAMHaXRlbV9pZAZ1aW50MTYLdGVtcGxhdGVfaWQFaW50MzILc2NoZW1hX25hbWUEbmFtZQlzZXRzb2NrZXQAAwt3b3Jrc2hvcF9pZAZ1aW50NjQEc2xvdAV1aW50OARvcGVuBGJvb2wMc2V0dGhyZXNob2xkAAEJdGhyZXNob2xkBXVpbnQ4C3NldHdyYXBjb3N0AAMJaXRlbV90eXBlBXVpbnQ4BHRpZXIFdWludDgGYW1vdW50BnVpbnQ2NApzZXR3cmFwZmVlAAIHZmVlX3BjdAZ1aW50MTYLZmVlX2FjY291bnQEbmFtZQdzaHV0dGxlAAQHY2FycmllcgZ1aW50NjQHZnJvbV9pZAZ1aW50NjQFdG9faWQGdWludDY0BWl0ZW1zDGNhcmdvX2l0ZW1bXQhzbG90X2RlZgADBHR5cGUFdWludDgKb3V0cHV0X3BjdAZ1aW50MTYIbWF4X3RpZXIFdWludDgSc3RhdF9zbG90X3Jlc3BvbnNlAAEHc291cmNlcw1zdGF0X3NvdXJjZVtdC3N0YXRfc291cmNlAAILaW5wdXRfaW5kZXgFdWludDgQaW5wdXRfc3RhdF9pbmRleAV1aW50OAlzdGF0ZV9yb3cAAwdlbmFibGVkBGJvb2wFZXBvY2gGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYJc3Rvd2NhcmdvAAUFb3duZXIEbmFtZQllbnRpdHlfaWQGdWludDY0CG5leHVzX2lkBnVpbnQ2NAhjYXJnb19pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CnN0b3dlbnRpdHkAAwVvd25lcgRuYW1lCWVudGl0eV9pZAZ1aW50NjQIbmV4dXNfaWQGdWludDY0DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAFB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgtyZXNlcnZlX21heAZ1aW50MzIRc3RyYXR1bV9yZW1haW5pbmcAAwdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyCmxhc3RfYmxvY2sUYmxvY2tfdGltZXN0YW1wX3R5cGUKc3dhcG1vZHVsZQADCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4Cm1vZHVsZV9yZWYJY2FyZ29fcmVmCHN3YXB0aWxlAAUGaHViX2lkBnVpbnQ2NARhX2d4BGludDgEYV9neQRpbnQ4BGJfZ3gEaW50OARiX2d5BGludDgEdGFzawAKBHR5cGUFdWludDgIZHVyYXRpb24GdWludDMyCmNhbmNlbGFibGUFdWludDgLY29vcmRpbmF0ZXMMY29vcmRpbmF0ZXM/BWNhcmdvDGNhcmdvX2l0ZW1bXQljb3VwbGluZ3MKY291cGxpbmdbXQdzdWJqZWN0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDMyPw50YXJnZXRfaXRlbV9pZAd1aW50MTY/CnRhc2tfZXZlbnQACgpldmVudF90eXBlBXVpbnQ4BW93bmVyBG5hbWULZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CnRhc2tfaW5kZXgGdWludDMyBHRhc2sEdGFzawlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludApuZXdfZW5lcmd5B3VpbnQzMj8IbGFuZV9rZXkFdWludDgMdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdEXRlbXBsYXRlX21ldGFfcm93AAMHaXRlbV9pZAZ1aW50MTYEa2luZARuYW1lDWRpc3BsYXlfbGFiZWwGc3RyaW5nB3RyYW5zaXQABQJpZAZ1aW50NjQCYXgFaW50NjQCYXkFaW50NjQCYngFaW50NjQCYnkFaW50NjQGdHJhdmVsAAQCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sCnRyYXZlbHBsYW4AAwhlbnRpdGllcwxlbnRpdHlfcmVmW10Jd2F5cG9pbnRzEHJvdXRlX3dheXBvaW50W10IcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cABQJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRBnYW1lX2NvbmZpZ190eXBlC2dhbWVfY29uZmlnFnN0cmF0dW1fcmVtYWluaW5nX3R5cGURc3RyYXR1bV9yZW1haW5pbmcVbmZ0X2l0ZW1fcGF5bG9hZF90eXBlEG5mdF9pdGVtX3BheWxvYWQIdW5kZXBsb3kAAgdob3N0X2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0BnVubG9hZAADAmlkBnVpbnQ2NAV0b19pZAZ1aW50NjQFaXRlbXMMY2FyZ29faXRlbVtdB3VwZ3JhZGUABQpidWlsZGVyX2lkBnVpbnQ2NAl0YXJnZXRfaWQGdWludDY0DnRhcmdldF9pdGVtX2lkBnVpbnQxNgZpbnB1dHMMY2FyZ29faXRlbVtdBHNsb3QGdWludDg/BHdhcnAAAwJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CndhcnBfc3RhdHMAAQVyYW5nZQZ1aW50MzIEd2lwZQAADXdvcm1ob2xlX2luZm8AAwZjb29yZHMLY29vcmRpbmF0ZXMLaXNfd29ybWhvbGUEYm9vbAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcw53cmFwY29uZmlnX3JvdwACB2ZlZV9wY3QGdWludDE2C2ZlZV9hY2NvdW50BG5hbWUMd3JhcGNvc3Rfcm93AAMJaXRlbV90eXBlBXVpbnQ4BHRpZXIFdWludDgGYW1vdW50BnVpbnQ2NG8AAFBRJypTMglhZGRtb2R1bGXHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRtb2R1bGUKc3VtbWFyeTogJ0luc3RhbGwgYSBtb2R1bGUgaW50byBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluc3RhbGwgYSBtb2R1bGUgZnJvbSBjYXJnbyBpbnRvIGEgbW9kdWxlIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldCBzbG90IHR5cGUuIFRoZSBtb2R1bGUgaXRlbSBpcyByZW1vdmVkIGZyb20gY2FyZ28gdXBvbiBpbnN0YWxsYXRpb24uAAAAWHc1UzIIYWRkbmV4dXOnAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRuZXh1cwpzdW1tYXJ5OiAnQWRkIGEgbmV4dXMgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNyZWF0ZSBhIG5ldyBuZXh1cyBlbnRpdHkgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLiBOZXh1c2VzIGFyZSBvd25lZCBieSB0aGUgY29udHJhY3QgYW5kIHNlcnZlIGFzIGZpeGVkIGdhdGhlcmluZyBwb2ludHMgd2hlcmUgcGxheWVycyBjYW4gd3JhcCwgdW53cmFwLCBkZXBsb3ksIGFuZCBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBORlQtYmFja2VkIGFzc2V0cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAUBGZS1MyCWFkZG9yYWNsZQAAAAAAgDRVPAVibGVuZPwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJsZW5kCnN1bW1hcnk6ICdCbGVuZCBjYXJnbyBzdGFja3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbWJpbmUgbXVsdGlwbGUgY2FyZ28gc3RhY2tzIG9mIHRoZSBzYW1lIGl0ZW0gdHlwZSBpbnRvIGEgc2luZ2xlIHN0YWNrIHdpdGggbmV3IGJsZW5kZWQgc3RhdHMuIEFsbCBpbnB1dCBzdGFja3MgbXVzdCBzaGFyZSB0aGUgc2FtZSBpdGVtIGlkLiBUaGUgb3V0cHV0IHN0YWNrIGhhcyB0aGUgY29tYmluZWQgcXVhbnRpdHkgb2YgYWxsIGlucHV0cy4AAMg01hSdPglidWlsZHBsb3QAAAAAAESFpkEGY2FuY2VswgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2FuY2VsCnN1bW1hcnk6ICdDYW5jZWwgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpDYW5jZWwgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgdGFza3MgZnJvbSB0aGUgZW5kIG9mIGFuIGVudGl0eSdzIHNjaGVkdWxlLiBUYXNrcyB0aGF0IGFyZSBpbW11dGFibGUgYW5kIGluIHByb2dyZXNzIGNhbm5vdCBiZSBjYW5jZWxsZWQuAAA49EWFpkEJY2FuY2Vsam9iAAAAAIc+6UxECGNsYWltam9iAAAAyDRW6UxECWNsYWltcGxvdABwVb4mY+lMRAxjbGFpbXN0YXJ0ZXIAAACoG99pVEQJY2xlYW5yc3Zw7AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYW5yc3ZwCnN1bW1hcnk6ICdDbGVhbiB1cCBwYXN0IGVwb2NoIHJlc2VydmVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFcmFzZSByZXNlcnZlIHRhYmxlIHJvd3MgZnJvbSBhIHBhc3QgZXBvY2guIENhbm5vdCBjbGVhbiB0aGUgY3VycmVudCBvciBmdXR1cmUgZXBvY2hzLiBUaGUgbWF4X3Jvd3MgcGFyYW1ldGVyIGNhcHMgdGhlIG51bWJlciBvZiByb3dzIGVyYXNlZCBwZXIgY2FsbCB0byBsaW1pdCBDUFUgdXNhZ2UuAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABkJyVFBmNvbW1pdOwBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbW1pdApzdW1tYXJ5OiAnU2V0IGNvbW1pdCB2YWx1ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2V0IHRoZSBpbml0aWFsIGNvbW1pdCB2YWx1ZSBkdXJpbmcgZ2FtZSBpbml0aWFsaXphdGlvbi4AAGA0MrcmRQljb25maWdsb2fdAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjb25maWdsb2cKc3VtbWFyeTogJ0xvZyBnYW1lIGNvbmZpZ3VyYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiB0aGF0IGxvZ3MgdGhlIGN1cnJlbnQgZ2FtZSBjb25maWd1cmF0aW9uLiBDYWxsZWQgaW5saW5lIGFmdGVyIGluaXRpYWxpemF0aW9uIHRvIGJyb2FkY2FzdCBjb25maWcgdmlhIGFjdGlvbiB0cmFjZXMuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAAAAgLzMRQVjcmFmdMgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNyYWZ0CnN1bW1hcnk6ICdDcmFmdCBpdGVtcyBmcm9tIGEgcmVjaXBlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUcmFuc2Zvcm0gY2FyZ28gaXRlbXMgaW50byBhIG5ldyBpdGVtIHVzaW5nIGEgcmVjaXBlLiBUaGUgZW50aXR5IG11c3QgaGF2ZSBhIGNyYWZ0ZXIgbW9kdWxlIGluc3RhbGxlZC4gQ29uc3VtZXMgZW5lcmd5IGFuZCBzY2hlZHVsZXMgYSBjcmFmdGluZyB0YXNrIHdpdGggZHVyYXRpb24gYmFzZWQgb24gdG90YWwgaW5wdXQgbWFzcyBhbmQgY3JhZnRlciBzcGVlZC4gSW5wdXQgcXVhbnRpdGllcyBtdXN0IGV4YWN0bHkgbWF0Y2ggdGhlIHJlY2lwZSByZXF1aXJlbWVudHMuAAAAh768zEUIY3JhZnRqb2IAAADw2eWpokoJZGVsZW50aXR5AAAAAA27SKVKCGRlbW9saXNo8QMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVtb2xpc2gKc3VtbWFyeTogJ0RlbW9saXNoIGEgc3RhdGlvbmFyeSBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkRlY29tbWlzc2lvbiBhbiBlbnRpdHksIGVyYXNpbmcgaXQgZnJvbSB0aGUgZ2FtZS4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUsIGhhdmUgZW1wdHkgY2FyZ28sIGFuZCBoYXZlIG5vIGluc3RhbGxlZCBtb2R1bGVzIChyZW1vdmUgZWFjaCB2aWEgcm1tb2R1bGUgZmlyc3QpLiBTY2hlZHVsZXMgYSBkZW1vbGlzaCB0YXNrIHRoYXQgZXJhc2VzIHRoZSBlbnRpdHkgb24gcmVzb2x1dGlvbi4gT25seSB2YWxpZCBmb3IgZW50aXRpZXMgdGhhdCBjYW5ub3QgbW92ZTsgdXNlIHVuZGVwbG95IG9yIHdyYXBlbnRpdHkgZm9yIHRoZSByZXN0LgAAAAB4GqtKBmRlcGxveewCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlcGxveQpzdW1tYXJ5OiAnRGVwbG95IGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVW5wYWNrIGEgcGFja2VkIGVudGl0eSBpdGVtIChwYWNrZWQgc2hpcCBvciBwYWNrZWQgY29udGFpbmVyKSBmcm9tIGNhcmdvLCBzY2hlZHVsaW5nIGEgZGVwbG95IHRhc2sgdGhhdCBjcmVhdGVzIHRoZSBuZXcgZW50aXR5IGF0IHRoZSBkZXBsb3lpbmcgZW50aXR5J3MgbG9jYXRpb24gdXBvbiByZXNvbHV0aW9uLgCAzy5PhbBKCmRlc2NlbnRpdHnJAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBkZXNjZW50aXR5CnN1bW1hcnk6ICdEZXNjcmliZSBhIHBhY2tlZCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIGEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gc3RyaW5nIGZvciBhIHBhY2tlZCBlbnRpdHksIGRlcml2ZWQgZnJvbSB0aGUgZW50aXR5IGl0ZW0gaWQsIGh1bGwgc3RhdHMsIGFuZCB0aGUgbGlzdCBvZiBpbnN0YWxsZWQgbW9kdWxlIGl0ZW0gaWRzIGFuZCBzdGF0cy4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgTkZUIHJlbmRlcmVycyB0byBkaXNwbGF5IHBhY2tlZCBlbnRpdGllcy4AAAAAqHjMVAZlbmFibGXdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBlbmFibGUKc3VtbWFyeTogJ1NldCBlbmFibGVkIHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpFbmFibGUgb3IgZGlzYWJsZSB0aGlzIGdhbWUgb2YgU2hpcGxvYWQugLGRlF2DulsMZml4Y2FyZ29tYXNzkAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZml4Y2FyZ29tYXNzCnN1bW1hcnk6ICdERUJVRzogcmVjb21wdXRlIGVudGl0eSBjYXJnbyBtYXNzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZWNvbXB1dGUgYW5kIHJld3JpdGUgYW4gZW50aXR5J3MgY2FyZ28gbWFzcyBmcm9tIGl0cyBjdXJyZW50IGNhcmdvLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuIEF2YWlsYWJsZSBmb3IgcmVwYWlyaW5nIGRyaWZ0IGJldHdlZW4gY2FjaGVkIGNhcmdvIG1hc3MgYW5kIHRoZSB0cnVlIG1hc3MgZGVyaXZlZCBmcm9tIGNhcmdvIHJvd3MuAKJRW12FLl0LZm9yY2VyZXZlYWy+BC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBmb3JjZXJldmVhbApzdW1tYXJ5OiAnREVCVUc6IGZvcmNlLWZpbmFsaXplIGFuIGVwb2NoIGZyb20gZXhpc3RpbmcgcmV2ZWFscycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRmluYWxpemUgYSBzdHVjayBlcG9jaCBieSBjb21wdXRpbmcgaXRzIHNlZWQgZnJvbSB0aGUgcmV2ZWFscyBhbHJlYWR5IHN1Ym1pdHRlZCwgd2l0aG91dCB3YWl0aW5nIGZvciB0aGUgY29uZmlndXJlZCB0aHJlc2hvbGQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4gVGhlIHNlZWQgaXMgZGVyaXZlZCBzb2xlbHkgZnJvbSB0aGUgcHJlLWltYWdlLWxvY2tlZCByZXZlYWxzIGFscmVhZHkgb24gY2hhaW47IG5vIGFkbWluLXN1cHBsaWVkIGVudHJvcHkgaXMgaW50cm9kdWNlZC4gVXNlZCB0byB1bmJsb2NrIGVwb2NoIHByb2dyZXNzaW9uIHdoZW4gdGhlIHRocmVzaG9sZCBjYW5ub3Qgb3RoZXJ3aXNlIGJlIG1ldC4AAAAAXNWyYQZnYXRoZXKXAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnYXRoZXIKc3VtbWFyeTogJ0dhdGhlciByZXNvdXJjZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkdhdGhlciByZXNvdXJjZXMgYXQgdGhlIHNoaXAncyBjdXJyZW50IGxvY2F0aW9uLiBPbmx5IHdvcmtzIGF0IGdhdGhlcmFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhIGdhdGhlciB0YXNrIHRoYXQgY29uc3VtZXMgZW5lcmd5IGFuZCB5aWVsZHMgY2FyZ28gYmFzZWQgb24gdGhlIHNoaXAncyBnYXRoZXJlciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAMA0sV7VsmEKZ2F0aGVycGxhbgCQlYoLO6ymYgxnZW5lc2lzZmxlZXSpBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZW5lc2lzZmxlZXQKc3VtbWFyeTogJ01pbnQgdGhlIG9uZS10aW1lIGdlbmVzaXMgZmxlZXQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVtcGxhY2UgdGhlIG9uZS10aW1lIGdlbmVzaXMgZmxlZXQ6IGEgY2FsbGVyLXN1cHBsaWVkIHNldCBvZiBlbnRpdGllcyAoc2hpcHMsIHN0cnVjdHVyZXMsIGFuZCBjb250YWluZXJzKSB3cml0dGVuIHRvIHRoZSB3b3JsZCBhcy1pcy4gVmFsaWQgb25seSBkdXJpbmcgdGhlIHByZS1nZW5lc2lzIHdpbmRvdywgYmVmb3JlIGVwb2NoIDEgaXMgZmluYWxpemVkLiBUaGUgc3VwcGxpZWQgZW50aXR5IGlkcyBhcmUgaG9ub3JlZCBhbmQgdGhlIGlkIHNlcXVlbmNlIGlzIGFkdmFuY2VkIHBhc3QgdGhlbTsgaWQgMCBpcyByZXNlcnZlZCBmb3IgdGhlIEdlbmVzaXMgTmV4dXMuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AwFUZ64iyYgpnZXRjbHVzdGVyAAAAYG5NirJiCWdldGNvbmZpZ8oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGNvbmZpZwpzdW1tYXJ5OiAnR2V0IGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgZ2FtZSBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBkZWZhdWx0IGVudGl0eSBzdGF0cyBmb3Igd2FyZWhvdXNlcyBhbmQgY29udGFpbmVycywgYW5kIHRoZSBmdWxsIGl0ZW0gZGVmaW5pdGlvbnMgdGFibGUuAEB2mFaVsmIKZ2V0ZGVwb3NpdAAAFJomY5eyYgtnZXRkaXN0YW5jZQAAVDyOuaiyYgtnZXRlbGlnaWJsZcgDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVsaWdpYmxlCnN1bW1hcnk6ICdHZXQgZWxpZ2libGUgcmVzb3VyY2UgaXRlbSBJRHMgYXQgYSBsb2NhdGlvbiBhbmQgc3RyYXR1bScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGxpc3Qgb2YgcmVzb3VyY2UgaXRlbSBJRHMgZWxpZ2libGUgdG8gYmUgZ2F0aGVyZWQgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzIGFuZCBzdHJhdHVtIGRlcHRoLiBJdGVtcyBhcmUgZ2F0ZWQgYnkgYm90aCB0aGUgbG9jYXRpb24ncyByZXNvdXJjZSBwcm9maWxlIGFuZCB0aGUgZGVwdGggdGhyZXNob2xkIGZvciBlYWNoIHRpZXIuAADAEeWpsmIJZ2V0ZW50Y2xzjAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0ZW50Y2xzCnN1bW1hcnk6ICdHZXQgZW50aXR5IGNsYXNzIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgZW50aXR5IGNsYXNzIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKE9yYml0YWxWZXNzZWwsIFBsYW5ldGFyeVN0cnVjdHVyZSkuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGVjb2RlIGVudGl0eSBjbGFzcyBpZGVudGlmaWVycy4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy6Qp7s1U7qyYgxnZXRmb290cHJpbnQAAEw2SarssmILZ2V0aXRlbWRhdGGoAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtZGF0YQpzdW1tYXJ5OiAnR2V0IGZ1bGwgaXRlbSBjYXRhbG9nJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgY29tcGxldGUgaXRlbSBjYXRhbG9nIGFzIHRoZSBjb250cmFjdCBzZWVzIGl0LCBpbmNsdWRpbmcgdHlwZSwgc3VidHlwZSwgdGllciwgbWFzcywgYW5kIG90aGVyIHN0YXRpYyBtZXRhZGF0YS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyBhbmQgY2xpZW50cyB0byBtaXJyb3IgdGhlIGNvbnRyYWN0J3MgaXRlbSBkZWZpbml0aW9ucy4AAE5OquyyYgpnZXRpdGVtaWRzhgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbWlkcwpzdW1tYXJ5OiAnR2V0IGl0ZW0gaWQgdG8gbmFtZSBtYXBwaW5ncycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGZ1bGwgbWFwcGluZyBvZiBpdGVtIGlkIGNvbnN0YW50cyB0byB0aGVpciBjYW5vbmljYWwgc3RyaW5nIG5hbWVzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHJlc29sdmUgbnVtZXJpYyBpdGVtIGlkcyB0byBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVycy4AAABYquyyYghnZXRpdGVtc5oCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1zCnN1bW1hcnk6ICdHZXQgYWxsIGF2YWlsYWJsZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIGl0ZW1zIGluIHRoZSBnYW1lIGluY2x1ZGluZyB0aGVpciBpZCwgYmFzZSBwcmljZSwgYW5kIG1hc3MuAFT1WarssmILZ2V0aXRlbXR5cGUAgFX1WarssmIMZ2V0aXRlbXR5cGVziAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXR5cGVzCnN1bW1hcnk6ICdHZXQgaXRlbSB0eXBlIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgaXRlbSB0eXBlIGVudW0gdmFsdWVzIGFuZCB0aGVpciBzdHJpbmcgbmFtZXMgKHJlc291cmNlLCBjb21wb25lbnQsIG1vZHVsZSwgZW50aXR5KS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgaXRlbSB0eXBlIGlkZW50aWZpZXJzLgAAAAAf+rJiB2dldGpvYnMAAExWMk0Hs2ILZ2V0a2luZG1ldGH4Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRraW5kbWV0YQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBraW5kIG1ldGFkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZW50aXR5IGtpbmQgcmVnaXN0cnkgYW5kIHRlbXBsYXRlIHJlZ2lzdHJ5LCBpbmNsdWRpbmcgZWFjaCBraW5kJ3MgY2xhc3NpZmljYXRpb24sIGNhcGFiaWxpdHkgZmxhZ3MsIFotY29vcmRpbmF0ZSwgYW5kIGRlZmF1bHQgbGFiZWwsIHBsdXMgdGhlIG1hcHBpbmcgb2YgZW50aXR5IGl0ZW0gaWRzIHRvIGtpbmRzIHdpdGggZGlzcGxheSBsYWJlbHMuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gaW50ZXJwcmV0IGVudGl0eSBraW5kcyBhbmQgY2FwYWJpbGl0aWVzLgAmddkgGrNiC2dldGxvY2F0aW9u4gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jYXRpb24Kc3VtbWFyeTogJ0dldCBsb2NhdGlvbiBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIGxvY2F0aW9uIGluY2x1ZGluZyB3aGV0aGVyIGEgc3lzdGVtIGV4aXN0cywgYW5kIGZvciBlYWNoIGl0ZW06IHByaWNlLCBzdXBwbHksIHJhcml0eSBtdWx0aXBsaWVyLCBhbmQgbG9jYXRpb24gbXVsdGlwbGllci4AgMkmIRqzYgpnZXRsb2NkYXRh/gItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bG9jZGF0YQpzdW1tYXJ5OiAnR2V0IGRlcml2ZWQgbG9jYXRpb24gZGF0YScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBkZXJpdmVkIGxvY2F0aW9uIGRhdGEgaW5jbHVkaW5nIHN0YXRpYyBwcm9wZXJ0aWVzICh0eXBlLCBkaWZmaWN1bHR5LCBzZWVkcykgZnJvbSB0aGUgZ2FtZSBzZWVkIGFuZCBlcG9jaC1zcGVjaWZpYyBwcm9wZXJ0aWVzIChhY3RpdmUsIHNlZWRzKSBmcm9tIHRoZSBjdXJyZW50IGVwb2NoIHNlZWQuALCqPicqs2ILZ2V0bW9kdHlwZXPWAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRtb2R0eXBlcwpzdW1tYXJ5OiAnR2V0IG1vZHVsZSB0eXBlIGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgbW9kdWxlIHR5cGUgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAoYW55LCBlbmdpbmUsIGdlbmVyYXRvciwgZ2F0aGVyZXIsIGxvYWRlciwgd2FycCwgY3JhZnRlciwgbGF1bmNoZXIsIHN0b3JhZ2UsIGhhdWxlcikuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGVjb2RlIG1vZHVsZSBzdWJ0eXBlIGlkZW50aWZpZXJzIGFuZCBzbG90IGNvbXBhdGliaWxpdHkuAABWUScqs2IKZ2V0bW9kdWxlc4ADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG1vZHVsZXMKc3VtbWFyeTogJ0dldCBhbGwgbW9kdWxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgc3Vic2V0IG9mIGl0ZW1zIGNsYXNzaWZpZWQgYXMgbW9kdWxlcywgaW5jbHVkaW5nIGVhY2ggbW9kdWxlJ3MgaWQsIG1hc3MsIHN1YnR5cGUsIGFuZCB0aWVyLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGVudW1lcmF0ZSBpbnN0YWxsYWJsZSBlcXVpcG1lbnQuAADw5xo1s2IJZ2V0bmVhcmJ5ygMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmVhcmJ5CnN1bW1hcnk6ICdHZXQgbmVhcmJ5IHJlYWNoYWJsZSBzeXN0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIG5lYXJieSBzeXN0ZW1zIHJlYWNoYWJsZSBieSBhbiBlbnRpdHkgZnJvbSBpdHMgcHJvamVjdGVkIGxvY2F0aW9uLiBSZXR1cm5zIGN1cnJlbnQgc3RhdGUgKHdpdGggY29tcGxldGVkIHRhc2tzIHJlc29sdmVkKSwgcHJvamVjdGVkIHN0YXRlIChhZnRlciBhbGwgc2NoZWR1bGVkIHRhc2tzKSwgYW5kIGEgbGlzdCBvZiByZWFjaGFibGUgc3lzdGVtcyB3aXRoIGRpc3RhbmNlLCBlbmVyZ3kgY29zdCwgYW5kIGZsaWdodCB0aW1lLgCAwubkNbNiCmdldG5mdGJhc2UAAABd0+U1s2IKZ2V0bmZ0aW5mb/ADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG5mdGluZm8Kc3VtbWFyeTogJ0dldCBORlQgc2NoZW1hIGFuZCB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgQXRvbWljQXNzZXRzIHNjaGVtYXMgYW5kIHRlbXBsYXRlcyB0aGUgZ2FtZSBjb250cmFjdCBleHBlY3RzLCBwbHVzIHRoZSBjdXJyZW50IGBpdGVtX2lkIOKGkiAodGVtcGxhdGVfaWQsIHNjaGVtYV9uYW1lKWAgbWFwcGluZyBzdG9yZWQgaW4gdGhlIGBuZnRjb25maWdgIHRhYmxlLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHN5bmMgYXRvbWljYXNzZXRzIHN0YXRlIHdpdGggdGhlIGNvbnRyYWN0LgAAuMqbWLNiCWdldHBsYXllcv0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHBsYXllcgpzdW1tYXJ5OiAnR2V0IHBsYXllciBpbmZvcm1hdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBhIHBsYXllciBpbmNsdWRpbmcgYmFsYW5jZSwgZGVidCwgbmV0d29ydGgsIGVudGl0eSBjb3VudHMsIGFuZCBwcmljaW5nIGZvciBuZXh0IHB1cmNoYXNlcy4gUmV0dXJucyBpc19wbGF5ZXI9ZmFsc2UgaWYgdGhlIGFjY291bnQgaGFzIG5vdCBqb2luZWQgdGhlIGdhbWUuoLLJ+NFbs2IMZ2V0cHJvanN0YXRlywMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cHJvanN0YXRlCnN1bW1hcnk6ICdHZXQgcHJvamVjdGVkIGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHByb2plY3RlZCBzdGF0ZSBvZiBhbiBlbnRpdHkgYWZ0ZXIgYXBwbHlpbmcgdGhlIG5leHQgdGFza19jb3VudCBzY2hlZHVsZWQgdGFza3MgKG9yIGFsbCB0YXNrcyBpZiB0YXNrX2NvdW50IGlzIG9taXR0ZWQpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIHByZXZpZXcgdGhlIHJlc3VsdCBvZiBhbiBlbnRpdHkncyBzY2hlZHVsZSB3aXRob3V0IHJlc29sdmluZyBvbi1jaGFpbi4AAFDVIXWzYglnZXRyZWNpcGWmAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGUKc3VtbWFyeTogJ0dldCBhIHNpbmdsZSBjcmFmdGluZyByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSByZWNpcGUgd2hvc2Ugb3V0cHV0IG1hdGNoZXMgdGhlIGdpdmVuIGl0ZW0gaWQsIGluY2x1ZGluZyBpdHMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGlzcGxheSBjcmFmdGluZyByZXF1aXJlbWVudHMuAABW1SF1s2IKZ2V0cmVjaXBlc6wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlY2lwZXMKc3VtbWFyeTogJ0xpc3QgY3JhZnRpbmcgcmVjaXBlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBjcmFmdGluZyByZWNpcGVzIHN0YXJ0aW5nIGF0IHRoZSBwcm92aWRlZCBsb3dlciBib3VuZCBvdXRwdXQgaXRlbSBpZCwgdXAgdG8gdGhlIHNwZWNpZmllZCBsaW1pdC4gRWFjaCBlbnRyeSBpbmNsdWRlcyBpbnB1dHMsIGJsZW5kIHdlaWdodHMsIHN0YXQgc2xvdHMsIGFuZCByZXNvbHZlZCBpdGVtIG1hc3MgaW5mby4AAM4GYXWzYgpnZXRyZXNjYXRzngMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzY2F0cwpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcmVzb3VyY2UgY2F0ZWdvcnkgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAob3JlLCBnYXMsIHJlZ29saXRoLCBiaW9tYXNzLCBjcnlzdGFsKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgcmVzb3VyY2Ugc3VidHlwZSBpZGVudGlmaWVycy4AsNpXYXWzYgtnZXRyZXNlcnZlc/wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2VydmVzCnN1bW1hcnk6ICdHZXQgY3VycmVudCByZXNlcnZlIG1vZGlmaWNhdGlvbnMgYXQgYSBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgY2hhaW4ncyBtb2RpZmljYXRpb25zIHRvIGRlcml2ZWQgcmVzZXJ2ZXMgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGUgZm9yIHRoZSBjdXJyZW50IGVwb2NoIGFzIGEgbGlzdCBvZiB7c3RyYXR1bSwgcmVtYWluaW5nfSBwYWlycy4gU3RyYXRhIG5vdCBwcmVzZW50IGluIHRoZSByZXNwb25zZSB1c2UgdGhlaXIgZGVyaXZlZCBpbml0aWFsIHJlc2VydmUuIENvbXBvc2Ugd2l0aCBTREsgZGVyaXZhdGlvbiB0byBnZXQgdGhlIGZ1bGwgcGVyLWxvY2F0aW9uIHN0cmF0YSB2aWV3LoAVuppidbNiDGdldHJlc291cmNlc4cDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc291cmNlcwpzdW1tYXJ5OiAnR2V0IGFsbCByZXNvdXJjZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIHJlc291cmNlcywgaW5jbHVkaW5nIGVhY2ggcmVzb3VyY2UncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGdhdGhlcmFibGUgbWF0ZXJpYWxzLgCAQm5fhbNiCmdldHNlcnZpY2UAAAAAONOIs2IIZ2V0c2xvdHO7Ay0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzbG90cwpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzbG90IGxheW91dHMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBtb2R1bGUgc2xvdCBsYXlvdXQgZm9yIGV2ZXJ5IGVudGl0eSBpdGVtIHR5cGUsIGxpc3RpbmcgdGhlIG9yZGVyZWQgc2xvdCB0eXBlcyBhdmFpbGFibGUgZm9yIG1vZHVsZSBpbnN0YWxsYXRpb24uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZSB0eXBlcyBhcmUgY29tcGF0aWJsZSB3aXRoIGEgZ2l2ZW4gZW50aXR5IGh1bGwuAIDU2dyMs2IKZ2V0c3RyYXR1bdICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHN0cmF0dW0Kc3VtbWFyeTogJ0dldCByZXNvdXJjZSBzdHJhdHVtIGRhdGEnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhIGZvciBhIHNwZWNpZmljIGRlcHRoIGxheWVyIGF0IGEgY29vcmRpbmF0ZSwgaW5jbHVkaW5nIHRoZSBzdHJhdHVtIHNlZWQgaW5mbyBhbmQgZGVyaXZlZCByZXNvdXJjZSBzdGF0cy6AlbtGSo2zYgxnZXRzdW1tYXJpZXPoAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdW1tYXJpZXMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc3VtbWFyaWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBsaWdodHdlaWdodCBzdW1tYXJpZXMgb2YgYWxsIGVudGl0aWVzIG93bmVkIGJ5IGEgcGxheWVyIGluY2x1ZGluZyB0eXBlLCBpZCwgb3duZXIsIG5hbWUsIGxvY2F0aW9uLCBhbmQgaWRsZSBzdGF0dXMuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgBUpE1eyrNiC2dldHdvcm1ob2xlAJAdnubmqullDGdyb3VwdHJhbnNpdAAAotrm5qrpZQtncm91cHRyYXZlbJoELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdyb3VwdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIG11bHRpcGxlIGVudGl0aWVzIHRvZ2V0aGVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSBncm91cCB0cmF2ZWwgZm9yIG11bHRpcGxlIGVudGl0aWVzIHRvIGEgZGVzdGluYXRpb24uIEFsbCBlbnRpdGllcyBtdXN0IGJlIGF0IHRoZSBzYW1lIGxvY2F0aW9uIGFuZCBvd25lZCBieSB0aGUgY2FsbGVyLiBBdCBsZWFzdCBvbmUgZW50aXR5IHdpdGggZW5naW5lcyBpcyByZXF1aXJlZCB0byBwcm92aWRlIHRocnVzdC4gRmxpZ2h0IGR1cmF0aW9uIGlzIGNhbGN1bGF0ZWQgZnJvbSBjb21iaW5lZCB0aHJ1c3QgYW5kIHRvdGFsIG1hc3Mgb2YgYWxsIGVudGl0aWVzLiBDcmVhdGVzIGFuIGVudGl0eWdyb3VwIGZvciBhdG9taWMgcmVzb2x1dGlvbiBhbmQgY2FuY2VsbGF0aW9uLgAAAAAA0LBpBGhhc2j4AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhMjU2IGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTI1NiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AKLsG5UurdAtpbXBvcnRjYXJnbwAAQIwK5UurdAppbXBvcnRjZWxsAOCzy1PlS6t0DGltcG9ydGVudGl0eQAAqqaX5UurdAtpbXBvcnRncm91cABwlTex5kurdAxpbXBvcnRwbGF5ZXIAuq/C6uZLq3QNaW1wb3J0cmVzZXJ2ZQAAVDYZ50urdAtpbXBvcnRzdGF0ZQAAAAAAADAdfQRqb2luxAEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkAAAAADQ0tYkGbGF1bmNoAAAAAAAAkAyNBGxvYWQAgCE2WWVzmZMMbWlncmF0ZXRhc2tzAAAAAKAajpmTB21pZ3N3YXAAAAAAKrqsNpUIbW92ZXRpbGUAAACIVzPp8poJbmZ0aW1ndXJssgMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogbmZ0aW1ndXJsCnN1bW1hcnk6ICdHZXQgTkZUIGltYWdlIFVSTCBmb3IgYSBjYXJnbyBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgaW1hZ2UgVVJMIHRoZSBjb250cmFjdCBlbWl0cyBmb3IgYSBnaXZlbiBjYXJnbyBpdGVtLCBvcHRpb25hbGx5IHNjb3BlZCB0byBhIGxvY2F0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGZldGNoIHRoZSBjYW5vbmljYWwgYXJ0d29yayBmb3IgYW4gaXRlbSBvciBwYWNrZWQgZW50aXR5LgAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAZdcghUysCnBsYWNlY2FyZ2/JBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBwbGFjZWNhcmdvCnN1bW1hcnk6ICdSZXN0b3JlIE5GVCBjYXJnbyBvbnRvIGEgaG9zdCBlbnRpdHknCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiBjYWxsZWQgaW5saW5lIGJ5IHRoZSBwbGF0Zm9ybSBjb250cmFjdCBvbmx5LiBSZXN0b3JlcyB0aGUgY2FyZ28gcmVjb3JkZWQgaW4gYW4gdW53cmFwcGVkIE5GVCBvbnRvIGEgaG9zdCBlbnRpdHkuIFZhbGlkYXRlcyBob3N0IG93bmVyc2hpcCwgbG9hZGVycywgYW5kIHJlbWFpbmluZyBjYXBhY2l0eSwgZGVzZXJpYWxpemVzIHRoZSBORlQncyBpdGVtIGRhdGEsIGFuZCBhcHBlbmRzIGFuIHVud3JhcCB0YXNrIHRvIGRlbGl2ZXIgdGhlIGNhcmdvIHRvIHRoZSBob3N0LiBUaGUgcGxhdGZvcm0gY29udHJhY3QgY3JlZGl0cyB0aGUgZGVwb3NpdCByZWZ1bmQgYW5kIGJ1cm5zIHRoZSBhc3NldC4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgB8dnkqhUysC3BsYWNlZW50aXR5wAQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcGxhY2VlbnRpdHkKc3VtbWFyeTogJ01hdGVyaWFsaXplIGEgcGFja2VkLWVudGl0eSBORlQgYXMgYSBsaXZlIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIGNhbGxlZCBpbmxpbmUgYnkgdGhlIHBsYXRmb3JtIGNvbnRyYWN0IG9ubHkuIEVtcGxhY2VzIGEgbGl2ZSBvcmJpdGFsIHZlc3NlbCAoc2hpcCBvciBjb250YWluZXIpIGZyb20gaXRzIHBhY2tlZC1lbnRpdHkgTkZUIGRhdGEgYXQgdGhlIHJlY29yZGVkIHdyYXAgb3JpZ2luLCB0aGVuIHF1ZXVlcyB0cmF2ZWwgYW5kIHJlY2hhcmdlIHRhc2tzIHRvIGRlbGl2ZXIgaXQgdG8gdGhlIHRhcmdldCBuZXh1cyBhdCBmdWxsIGVuZXJneS4gVGhlIHBsYXRmb3JtIGNvbnRyYWN0IGNyZWRpdHMgdGhlIGRlcG9zaXQgcmVmdW5kIGFuZCBidXJucyB0aGUgYXNzZXQuIFJlcXVpcmVzIGNvbnRyYWN0IGF1dGhvcml0eS4AAACKXdOQughyZWNoYXJnZc0CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlY2hhcmdlCnN1bW1hcnk6ICdSZWNoYXJnZSBzaGlwIGVuZXJneScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2NoZWR1bGUgYSByZWNoYXJnZSB0YXNrIGZvciBhbiBlbnRpdHkgdG8gcmVzdG9yZSBlbmVyZ3kgdG8gZnVsbCBjYXBhY2l0eS4gVGhlIHJlY2hhcmdlIGR1cmF0aW9uIGRlcGVuZHMgb24gY3VycmVudCBlbmVyZ3kgbGV2ZWwgYW5kIHJlY2hhcmdlIHJhdGUu4LPLUzV8l7oMcmVmcnNoZW50aXR5uAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVmcnNoZW50aXR5CnN1bW1hcnk6ICdSZWZyZXNoIGRlcml2ZWQgZW50aXR5IHN0YXRlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZWNvbXB1dGUgZGVyaXZlZCBmaWVsZHMgb24gYW4gZW50aXR5IGZyb20gaXRzIGN1cnJlbnQgY2FyZ28gYW5kIG1vZHVsZXMsIHJlZnJlc2hpbmcgY2FwYWJpbGl0eSBzdGF0cyBhbmQgY2FyZ28gbWFzcy4gVGhlIGVudGl0eSBtdXN0IGJlIGlkbGUgd2l0aCBubyBzY2hlZHVsZWQgdGFza3MuIFVzZWQgdG8gcmVjb25jaWxlIGRlcml2ZWQgc3RhdGUgYWZ0ZXIgZGF0YSBtaWdyYXRpb25zIG9yIGNvbnRyYWN0IHVwZ3JhZGVzLqAiMpeqTaW6DHJlbW92ZW9yYWNsZQAAAAAAKGmmugZyZW5hbWUAAAAAQO1IsboHcmVzb2x2ZdADLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJlc29sdmUKc3VtbWFyeTogJ0NvbXBsZXRlIHNjaGVkdWxlZCB0YXNrcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVzb2x2ZSBjb21wbGV0ZWQgdGFza3MgaW4gYW4gZW50aXR5J3Mgc2NoZWR1bGUsIGFwcGx5aW5nIHRoZWlyIGVmZmVjdHMgKHJlY2hhcmdlIGVuZXJneSwgdXBkYXRlIGxvY2F0aW9uLCBsb2FkL3VubG9hZCBjYXJnbykuIElmIGNvdW50IGlzIHNwZWNpZmllZCwgcmVzb2x2ZSBleGFjdGx5IHRoYXQgbWFueSB0YXNrczsgb3RoZXJ3aXNlIHJlc29sdmUgYWxsIGNvbXBsZXRlZCB0YXNrcy4gRmFpbHMgaWYgY291bnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mIGNvbXBsZXRlZCB0YXNrcy4AQIxG7UixugpyZXNvbHZlYWxsAAAAAABEo7a6BnJldmVhbAAAAAAq6kSlvAhybW1vZHVsZbwDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJtbW9kdWxlCnN1bW1hcnk6ICdSZW1vdmUgYSBtb2R1bGUgZnJvbSBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlbW92ZSBhbiBpbnN0YWxsZWQgbW9kdWxlIGZyb20gYSBzbG90IG9uIGEgbGl2ZSBlbnRpdHkgb3IgYSBwYWNrZWQgZW50aXR5IGluIGNhcmdvLiBUaGUgZW50aXR5IG11c3QgYmUgaWRsZSB3aXRoIG5vIHNjaGVkdWxlZCB0YXNrcy4gVGhlIG1vZHVsZSBpcyByZXR1cm5lZCB0byBjYXJnby4gRmFpbHMgaWYgdGhlIGVudGl0eSBkb2VzIG5vdCBoYXZlIGVub3VnaCBjYXJnbyBjYXBhY2l0eSB0byBob2xkIHRoZSByZXR1cm5lZCBtb2R1bGUuAAAAbKG8prwIcm1uZnRjZmehAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBybW5mdGNmZwpzdW1tYXJ5OiAnUmVtb3ZlIE5GVCB0ZW1wbGF0ZSBtYXBwaW5nIGZvciBhbiBpdGVtJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZW1vdmUgdGhlIEF0b21pY0Fzc2V0cyB0ZW1wbGF0ZSBtYXBwaW5nIGZvciB0aGUgc3BlY2lmaWVkIGl0ZW0gaWQgZnJvbSB0aGUgYG5mdGNvbmZpZ2AgdGFibGUuIEFmdGVyIHJlbW92YWwgdGhlIGl0ZW0gY2FuIG5vIGxvbmdlciBiZSB3cmFwcGVkIG9yIHVud3JhcHBlZCB1bnRpbCBhIG5ldyBtYXBwaW5nIGlzIHNldC4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAMhth7LCCHNldGNpdmljAAAAwOlSirLCCXNldGNvb3JkcwAAAGAL5TWzwglzZXRuZnRjZmfEAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzZXRuZnRjZmcKc3VtbWFyeTogJ1NldCBORlQgdGVtcGxhdGUgbWFwcGluZyBmb3IgYW4gaXRlbScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQmluZCBhbiBpdGVtIGlkIHRvIGFuIEF0b21pY0Fzc2V0cyB0ZW1wbGF0ZSBpZCBhbmQgc2NoZW1hIG5hbWUuIFVzZWQgdG8gY29uZmlndXJlIGhvdyB0aGUgY29udHJhY3QgbWludHMgYW5kIHJlY29nbml6ZXMgTkZUcyBmb3IgYSBnaXZlbiBpdGVtLiBJbnNlcnRzIGEgbmV3IG1hcHBpbmcgaWYgb25lIGRvZXMgbm90IGV4aXN0LCBvciB1cGRhdGVzIHRoZSBleGlzdGluZyBtYXBwaW5nLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAADICiKKs8IJc2V0c29ja2V0AJAibVjdlrPCDHNldHRocmVzaG9sZAAAMqaomsuzwgtzZXR3cmFwY29zdAAAgFKrmsuzwgpzZXR3cmFwZmVlAAAAAEDFnHXDB3NodXR0bGUAAACg7BrEacYJc3Rvd2Nhcmdv1QUtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Rvd2NhcmdvCnN1bW1hcnk6ICdSZXNlcnZlIGEgY2FyZ28gc3RhY2sgZm9yIHdyYXBwaW5nIGludG8gYW4gTkZUJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gY2FsbGVkIGlubGluZSBieSB0aGUgcGxhdGZvcm0gY29udHJhY3Qgb25seS4gUmVzZXJ2ZXMgYW5kIGNvbnN1bWVzIGEgY2FyZ28gc3RhY2sgb24gYSBsaXZlIGVudGl0eSBmb3Igd3JhcHBpbmcgaW50byBhbiBORlQuIFZhbGlkYXRlcyBlbnRpdHkgb3duZXJzaGlwLCBsb2FkZXJzLCBhbmQgcHJlc2VuY2UgYXQgdGhlIG5leHVzLCBhbmQgY29uZmlybXMgdGhlIHRhcmdldCBjYXJnbyBzdGFjayBpcyBhdmFpbGFibGUgYW5kIG5vdCByZXNlcnZlZCBieSBhIHBlbmRpbmcgdGFzay4gQ29tcHV0ZXMgdGhlIHdyYXAgY29zdCBhbmQgZmVlLCBkZWJpdHMgdGhlbSBmcm9tIHRoZSBvd25lcidzIHBsYXRmb3JtIGRlcG9zaXQgYmFsYW5jZSwgZGVyaXZlcyB0aGUgTkZUJ3MgaW1tdXRhYmxlIGRhdGEsIGFuZCBtaW50cyB0aGUgTkZUIGlubGluZSBhcyB0aGUgZ2FtZSBjb250cmFjdCBiZWZvcmUgY29uc3VtaW5nIHRoZSBjYXJnby4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgCAzy5PxWnGCnN0b3dlbnRpdHmZBS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzdG93ZW50aXR5CnN1bW1hcnk6ICdSZXNlcnZlIGFuIGVudGl0eSBmb3Igd3JhcHBpbmcgaW50byBhbiBORlQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkludGVybmFsIGFjdGlvbiBjYWxsZWQgaW5saW5lIGJ5IHRoZSBwbGF0Zm9ybSBjb250cmFjdCBvbmx5LiBSZXNlcnZlcyBhIHdob2xlIGVudGl0eSAoc2hpcCwgY29udGFpbmVyLCBvciBwbGFuZXRhcnkgc3RydWN0dXJlKSBmb3Igd3JhcHBpbmcgaW50byBhbiBORlQuIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggZW1wdHkgY2FyZ28gYW5kIG5vIHNjaGVkdWxlZCB0YXNrcy4gQ29tcHV0ZXMgdGhlIHdyYXAgY29zdCBhbmQgZmVlLCBkZWJpdHMgdGhlbSBmcm9tIHRoZSBvd25lcidzIHBsYXRmb3JtIGRlcG9zaXQgYmFsYW5jZSwgZGVyaXZlcyB0aGUgZW50aXR5IE5GVCdzIGltbXV0YWJsZSBkYXRhLCBtaW50cyB0aGUgTkZUIGlubGluZSBhcyB0aGUgZ2FtZSBjb250cmFjdCwgYW5kIGVyYXNlcyB0aGUgZW50aXR5IGZyb20gdGhlIHdvcmxkLiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAICKOlFZDccKc3dhcG1vZHVsZQAAAAAqulwNxwhzd2FwdGlsZQAAAAAgOzzNzQd0cmFuc2l0AAAAAABEtc3NBnRyYXZlbPsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4AwDSxRrXNzQp0cmF2ZWxwbGFuAAAAAJ7GqtLUCHVuZGVwbG955wQtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogdW5kZXBsb3kKc3VtbWFyeTogJ1BhY2sgYSBkZXBsb3llZCBlbnRpdHkgaW50byBhIGhvc3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClBhY2sgYW4gZW50aXR5IGludG8gYSBob3N0IGVudGl0eSdzIGNhcmdvIGFzIGEgcGFja2VkLWVudGl0eSBpdGVtLiBIb3N0IGFuZCB0YXJnZXQgbXVzdCBzaGFyZSB0aGUgc2FtZSBvd25lciBhbmQgY29vcmRpbmF0ZXMsIHRoZSBob3N0IG11c3QgaGF2ZSBsb2FkZXJzIGFuZCBlbm91Z2ggY2FwYWNpdHkgZm9yIHRoZSBwYWNrZWQgbWFzcywgYW5kIHRoZSB0YXJnZXQgbXVzdCBiZSBpZGxlIHdpdGggZW1wdHkgY2FyZ28uIENyZWF0ZXMgYW4gZW50aXR5Z3JvdXAgYW5kIHNjaGVkdWxlcyB1bmRlcGxveSB0YXNrcyBvbiBib3RoIGVudGl0aWVzOyBvbiByZXNvbHV0aW9uIHRoZSB0YXJnZXQgaXMgZXJhc2VkIGFuZCB0aGUgcGFja2VkIGVudGl0eSBpcyBhZGRlZCB0byB0aGUgaG9zdCdzIGNhcmdvLiBJbnZlcnNlIG9mIGRlcGxveS4AAAAAJEPj1AZ1bmxvYWQAAAAAQCVzWdUHdXBncmFkZQAAAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLRYAAAAAAMquQQNpNjQAAAljYXJnb19yb3cAmFuTIuS2QwNpNjQAAA9jaXZpY2NvbmZpZ19yb3cAAAAAYOlMRANpNjQAAAljbGFpbV9yb3cAAADgqox1RANpNjQAAAtjbHVzdGVyX3JvdwAAAABkJyVFA2k2NAAACmNvbW1pdF9yb3cAAAAA+OzyVANpNjQAAAplbnRpdHlfcm93AABzEvjs8lQDaTY0AAAKZW50aXR5X3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAsAr77PJUA2k2NAAADmVudGl0eV9zZXFfcm93AAAAAICGaFUDaTY0AAAJZXBvY2hfcm93AAAAAACAD30DaTY0AAAHam9iX3JvdwAAYG5NivKaA2k2NAAADW5mdGNvbmZpZ19yb3cAAGALqYjMpQNpNjQAABFvcmFjbGVfY29uZmlnX3JvdwAAAACriMylA2k2NAAACm9yYWNsZV9yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAARKO2ugNpNjQAAApyZXZlYWxfcm93AAAAQCG3r8IDaTY0AAALc2VydmljZV9yb3cAAAAAAJVNxgNpNjQAAAlzdGF0ZV9yb3cAAAAAAKyqzwNpNjQAAAl0eXBlc19yb3cAAHNrUlTN5QNpNjQAAA53cmFwY29uZmlnX3JvdwAAABlTVM3lA2k2NAAADHdyYXBjb3N0X3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAABFAADINNYUnT4MdGFza19yZXN1bHRzAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAMg0VulMRAx0YXNrX3Jlc3VsdHMAAAAAgLzMRQx0YXNrX3Jlc3VsdHMAAACHvrzMRQtqb2JfcmVjZWlwdAAAAA27SKVKDHRhc2tfcmVzdWx0cwAAAAB4GqtKDHRhc2tfcmVzdWx0cwCAzy5PhbBKBnN0cmluZwAAAABc1bJhDHRhc2tfcmVzdWx0cwDANLFe1bJhDHRhc2tfcmVzdWx0cwDAVRnriLJiC2NsdXN0ZXJfcm93AABgbk2KsmILZ2FtZV9jb25maWcAQHaYVpWyYg5leHRlbmRlZF9hc3NldAAUmiZjl7JiBnVpbnQ2NABUPI65qLJiCHVpbnQxNltdAADAEeWpsmILZW51bV9yZXN1bHQAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm+Qp7s1U7qyYhBmb290cHJpbnRfcmVzdWx0AEw2SarssmIPaXRlbWRhdGFfcmVzdWx0AABOTqrssmIPaXRlbV9pZHNfcmVzdWx0AAAAWKrssmIKaXRlbXNfaW5mbwBU9Vmq7LJiBXVpbnQ4gFX1WarssmILZW51bV9yZXN1bHQAAAAAH/qyYgtqb2JzX3Jlc3VsdABMVjJNB7NiEGtpbmRfbWV0YV9yZXN1bHQAJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZACwqj4nKrNiC2VudW1fcmVzdWx0AABWUScqs2IObW9kdWxlc19yZXN1bHQAAPDnGjWzYgtuZWFyYnlfaW5mbwCAwubkNbNiCHN0cmluZ1tdAABd0+U1s2IObmZ0aW5mb19yZXN1bHQAALjKm1izYgtwbGF5ZXJfaW5mb6CyyfjRW7NiD3Byb2plY3RlZF9zdGF0ZQAAUNUhdbNiDnJlY2lwZXNfcmVzdWx0AABW1SF1s2IOcmVjaXBlc19yZXN1bHQAAM4GYXWzYgtlbnVtX3Jlc3VsdACw2ldhdbNiE3N0cmF0dW1fcmVtYWluaW5nW12AFbqaYnWzYhByZXNvdXJjZXNfcmVzdWx0AIBCbl+Fs2ILc2VydmljZV9yb3cAAAA404izYhVlbnRpdHlfbGF5b3V0c19yZXN1bHQAgNTZ3IyzYgxzdHJhdHVtX2RhdGGAlbtGSo2zYhBlbnRpdHlfc3VtbWFyeVtdAFSkTV7Ks2INd29ybWhvbGVfaW5mb5AdnubmqullDHRhc2tfcmVzdWx0cwCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAAAANDS1iQx0YXNrX3Jlc3VsdHMAAAAAAJAMjQx0YXNrX3Jlc3VsdHMAAAAquqw2lQx0YXNrX3Jlc3VsdHMAAIhXM+nymgZzdHJpbmcAAGXXIIVMrAx0YXNrX3Jlc3VsdHMAfHZ5KoVMrAx0YXNrX3Jlc3VsdHMAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAQIxG7UixuhJyZXNvbHZlYWxsX3Jlc3VsdHMAAABAxZx1wwx0YXNrX3Jlc3VsdHMAAKDsGsRpxgx0YXNrX3Jlc3VsdHMAgM8uT8Vpxgx0YXNrX3Jlc3VsdHMAAAAqulwNxwx0YXNrX3Jlc3VsdHMAAAAgOzzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHMAwDSxRrXNzQx0YXNrX3Jlc3VsdHMAAACexqrS1Ax0YXNrX3Jlc3VsdHMAAAAAJEPj1Ax0YXNrX3Jlc3VsdHMAAABAJXNZ1Qx0YXNrX3Jlc3VsdHMAAAAAAFCv4Qx0YXNrX3Jlc3VsdHM=');
|
|
444
444
|
const abi = ABI.from(abiBlob);
|
|
445
445
|
var Types;
|
|
446
446
|
(function (Types) {
|
|
@@ -561,6 +561,24 @@ var Types;
|
|
|
561
561
|
Struct.type('blend')
|
|
562
562
|
], blend);
|
|
563
563
|
Types.blend = blend;
|
|
564
|
+
let builder_lane = class builder_lane extends Struct {
|
|
565
|
+
};
|
|
566
|
+
__decorate([
|
|
567
|
+
Struct.field(UInt8)
|
|
568
|
+
], builder_lane.prototype, "slot_index", void 0);
|
|
569
|
+
__decorate([
|
|
570
|
+
Struct.field(UInt16)
|
|
571
|
+
], builder_lane.prototype, "speed", void 0);
|
|
572
|
+
__decorate([
|
|
573
|
+
Struct.field(UInt32)
|
|
574
|
+
], builder_lane.prototype, "drain", void 0);
|
|
575
|
+
__decorate([
|
|
576
|
+
Struct.field(UInt16)
|
|
577
|
+
], builder_lane.prototype, "output_pct", void 0);
|
|
578
|
+
builder_lane = __decorate([
|
|
579
|
+
Struct.type('builder_lane')
|
|
580
|
+
], builder_lane);
|
|
581
|
+
Types.builder_lane = builder_lane;
|
|
564
582
|
let buildplot = class buildplot extends Struct {
|
|
565
583
|
};
|
|
566
584
|
__decorate([
|
|
@@ -624,6 +642,18 @@ var Types;
|
|
|
624
642
|
Struct.type('cancel_results')
|
|
625
643
|
], cancel_results);
|
|
626
644
|
Types.cancel_results = cancel_results;
|
|
645
|
+
let canceljob = class canceljob extends Struct {
|
|
646
|
+
};
|
|
647
|
+
__decorate([
|
|
648
|
+
Struct.field(UInt64)
|
|
649
|
+
], canceljob.prototype, "job_id", void 0);
|
|
650
|
+
__decorate([
|
|
651
|
+
Struct.field(UInt64)
|
|
652
|
+
], canceljob.prototype, "ship_id", void 0);
|
|
653
|
+
canceljob = __decorate([
|
|
654
|
+
Struct.type('canceljob')
|
|
655
|
+
], canceljob);
|
|
656
|
+
Types.canceljob = canceljob;
|
|
627
657
|
let cargo_row = class cargo_row extends Struct {
|
|
628
658
|
};
|
|
629
659
|
__decorate([
|
|
@@ -675,6 +705,15 @@ var Types;
|
|
|
675
705
|
Struct.type('cargo_view')
|
|
676
706
|
], cargo_view);
|
|
677
707
|
Types.cargo_view = cargo_view;
|
|
708
|
+
let civicconfig_row = class civicconfig_row extends Struct {
|
|
709
|
+
};
|
|
710
|
+
__decorate([
|
|
711
|
+
Struct.field(Name)
|
|
712
|
+
], civicconfig_row.prototype, "civic_owner", void 0);
|
|
713
|
+
civicconfig_row = __decorate([
|
|
714
|
+
Struct.type('civicconfig_row')
|
|
715
|
+
], civicconfig_row);
|
|
716
|
+
Types.civicconfig_row = civicconfig_row;
|
|
678
717
|
let claim_row = class claim_row extends Struct {
|
|
679
718
|
};
|
|
680
719
|
__decorate([
|
|
@@ -684,6 +723,18 @@ var Types;
|
|
|
684
723
|
Struct.type('claim_row')
|
|
685
724
|
], claim_row);
|
|
686
725
|
Types.claim_row = claim_row;
|
|
726
|
+
let claimjob = class claimjob extends Struct {
|
|
727
|
+
};
|
|
728
|
+
__decorate([
|
|
729
|
+
Struct.field(UInt64)
|
|
730
|
+
], claimjob.prototype, "job_id", void 0);
|
|
731
|
+
__decorate([
|
|
732
|
+
Struct.field(UInt64)
|
|
733
|
+
], claimjob.prototype, "ship_id", void 0);
|
|
734
|
+
claimjob = __decorate([
|
|
735
|
+
Struct.type('claimjob')
|
|
736
|
+
], claimjob);
|
|
737
|
+
Types.claimjob = claimjob;
|
|
687
738
|
let cluster_slot = class cluster_slot extends Struct {
|
|
688
739
|
};
|
|
689
740
|
__decorate([
|
|
@@ -882,6 +933,21 @@ var Types;
|
|
|
882
933
|
Struct.type('coordinates')
|
|
883
934
|
], coordinates);
|
|
884
935
|
Types.coordinates = coordinates;
|
|
936
|
+
let coupling = class coupling extends Struct {
|
|
937
|
+
};
|
|
938
|
+
__decorate([
|
|
939
|
+
Struct.field(entity_ref)
|
|
940
|
+
], coupling.prototype, "counterpart", void 0);
|
|
941
|
+
__decorate([
|
|
942
|
+
Struct.field(UInt64)
|
|
943
|
+
], coupling.prototype, "hold", void 0);
|
|
944
|
+
__decorate([
|
|
945
|
+
Struct.field(UInt8)
|
|
946
|
+
], coupling.prototype, "kind", void 0);
|
|
947
|
+
coupling = __decorate([
|
|
948
|
+
Struct.type('coupling')
|
|
949
|
+
], coupling);
|
|
950
|
+
Types.coupling = coupling;
|
|
885
951
|
let craft = class craft extends Struct {
|
|
886
952
|
};
|
|
887
953
|
__decorate([
|
|
@@ -924,6 +990,39 @@ var Types;
|
|
|
924
990
|
Struct.type('crafter_lane')
|
|
925
991
|
], crafter_lane);
|
|
926
992
|
Types.crafter_lane = crafter_lane;
|
|
993
|
+
let craftjob = class craftjob extends Struct {
|
|
994
|
+
};
|
|
995
|
+
__decorate([
|
|
996
|
+
Struct.field(UInt64)
|
|
997
|
+
], craftjob.prototype, "ship_id", void 0);
|
|
998
|
+
__decorate([
|
|
999
|
+
Struct.field(UInt64)
|
|
1000
|
+
], craftjob.prototype, "workshop_id", void 0);
|
|
1001
|
+
__decorate([
|
|
1002
|
+
Struct.field(UInt8)
|
|
1003
|
+
], craftjob.prototype, "slot", void 0);
|
|
1004
|
+
__decorate([
|
|
1005
|
+
Struct.field(UInt16)
|
|
1006
|
+
], craftjob.prototype, "recipe_id", void 0);
|
|
1007
|
+
__decorate([
|
|
1008
|
+
Struct.field(UInt32)
|
|
1009
|
+
], craftjob.prototype, "quantity", void 0);
|
|
1010
|
+
__decorate([
|
|
1011
|
+
Struct.field(cargo_item, { array: true })
|
|
1012
|
+
], craftjob.prototype, "inputs", void 0);
|
|
1013
|
+
craftjob = __decorate([
|
|
1014
|
+
Struct.type('craftjob')
|
|
1015
|
+
], craftjob);
|
|
1016
|
+
Types.craftjob = craftjob;
|
|
1017
|
+
let delentity = class delentity extends Struct {
|
|
1018
|
+
};
|
|
1019
|
+
__decorate([
|
|
1020
|
+
Struct.field(UInt64)
|
|
1021
|
+
], delentity.prototype, "entity_id", void 0);
|
|
1022
|
+
delentity = __decorate([
|
|
1023
|
+
Struct.type('delentity')
|
|
1024
|
+
], delentity);
|
|
1025
|
+
Types.delentity = delentity;
|
|
927
1026
|
let demolish = class demolish extends Struct {
|
|
928
1027
|
};
|
|
929
1028
|
__decorate([
|
|
@@ -1121,18 +1220,18 @@ var Types;
|
|
|
1121
1220
|
__decorate([
|
|
1122
1221
|
Struct.field(cargo_item, { array: true })
|
|
1123
1222
|
], task.prototype, "cargo", void 0);
|
|
1223
|
+
__decorate([
|
|
1224
|
+
Struct.field(coupling, { array: true })
|
|
1225
|
+
], task.prototype, "couplings", void 0);
|
|
1124
1226
|
__decorate([
|
|
1125
1227
|
Struct.field(entity_ref, { optional: true })
|
|
1126
|
-
], task.prototype, "
|
|
1228
|
+
], task.prototype, "subject", void 0);
|
|
1127
1229
|
__decorate([
|
|
1128
1230
|
Struct.field(UInt64, { optional: true })
|
|
1129
1231
|
], task.prototype, "entitygroup", void 0);
|
|
1130
1232
|
__decorate([
|
|
1131
1233
|
Struct.field(UInt32, { optional: true })
|
|
1132
1234
|
], task.prototype, "energy_cost", void 0);
|
|
1133
|
-
__decorate([
|
|
1134
|
-
Struct.field(UInt64, { optional: true })
|
|
1135
|
-
], task.prototype, "hold", void 0);
|
|
1136
1235
|
__decorate([
|
|
1137
1236
|
Struct.field(UInt16, { optional: true })
|
|
1138
1237
|
], task.prototype, "target_item_id", void 0);
|
|
@@ -1241,6 +1340,9 @@ var Types;
|
|
|
1241
1340
|
__decorate([
|
|
1242
1341
|
Struct.field(crafter_lane, { array: true })
|
|
1243
1342
|
], entity_info.prototype, "crafter_lanes", void 0);
|
|
1343
|
+
__decorate([
|
|
1344
|
+
Struct.field(builder_lane, { array: true })
|
|
1345
|
+
], entity_info.prototype, "builder_lanes", void 0);
|
|
1244
1346
|
__decorate([
|
|
1245
1347
|
Struct.field(loader_lane, { array: true })
|
|
1246
1348
|
], entity_info.prototype, "loader_lanes", void 0);
|
|
@@ -1280,6 +1382,9 @@ var Types;
|
|
|
1280
1382
|
__decorate([
|
|
1281
1383
|
Struct.field(slot_def, { array: true })
|
|
1282
1384
|
], entity_layout.prototype, "slots", void 0);
|
|
1385
|
+
__decorate([
|
|
1386
|
+
Struct.field(UInt32)
|
|
1387
|
+
], entity_layout.prototype, "base_hullmass", void 0);
|
|
1283
1388
|
entity_layout = __decorate([
|
|
1284
1389
|
Struct.type('entity_layout')
|
|
1285
1390
|
], entity_layout);
|
|
@@ -1383,7 +1488,7 @@ var Types;
|
|
|
1383
1488
|
Struct.field(Name)
|
|
1384
1489
|
], entity_task_info.prototype, "entity_type", void 0);
|
|
1385
1490
|
__decorate([
|
|
1386
|
-
Struct.field(
|
|
1491
|
+
Struct.field(UInt32)
|
|
1387
1492
|
], entity_task_info.prototype, "task_count", void 0);
|
|
1388
1493
|
__decorate([
|
|
1389
1494
|
Struct.field(TimePoint)
|
|
@@ -1503,6 +1608,30 @@ var Types;
|
|
|
1503
1608
|
Struct.type('gather')
|
|
1504
1609
|
], gather);
|
|
1505
1610
|
Types.gather = gather;
|
|
1611
|
+
let gatherplan = class gatherplan extends Struct {
|
|
1612
|
+
};
|
|
1613
|
+
__decorate([
|
|
1614
|
+
Struct.field(UInt64)
|
|
1615
|
+
], gatherplan.prototype, "source_id", void 0);
|
|
1616
|
+
__decorate([
|
|
1617
|
+
Struct.field(UInt64)
|
|
1618
|
+
], gatherplan.prototype, "destination_id", void 0);
|
|
1619
|
+
__decorate([
|
|
1620
|
+
Struct.field(UInt16)
|
|
1621
|
+
], gatherplan.prototype, "stratum", void 0);
|
|
1622
|
+
__decorate([
|
|
1623
|
+
Struct.field(UInt32)
|
|
1624
|
+
], gatherplan.prototype, "quantity", void 0);
|
|
1625
|
+
__decorate([
|
|
1626
|
+
Struct.field('bool')
|
|
1627
|
+
], gatherplan.prototype, "recharge", void 0);
|
|
1628
|
+
__decorate([
|
|
1629
|
+
Struct.field(Bytes)
|
|
1630
|
+
], gatherplan.prototype, "slots", void 0);
|
|
1631
|
+
gatherplan = __decorate([
|
|
1632
|
+
Struct.type('gatherplan')
|
|
1633
|
+
], gatherplan);
|
|
1634
|
+
Types.gatherplan = gatherplan;
|
|
1506
1635
|
let genesisfleet = class genesisfleet extends Struct {
|
|
1507
1636
|
};
|
|
1508
1637
|
__decorate([
|
|
@@ -1638,6 +1767,15 @@ var Types;
|
|
|
1638
1767
|
Struct.type('getitemtypes')
|
|
1639
1768
|
], getitemtypes);
|
|
1640
1769
|
Types.getitemtypes = getitemtypes;
|
|
1770
|
+
let getjobs = class getjobs extends Struct {
|
|
1771
|
+
};
|
|
1772
|
+
__decorate([
|
|
1773
|
+
Struct.field(UInt64)
|
|
1774
|
+
], getjobs.prototype, "workshop_id", void 0);
|
|
1775
|
+
getjobs = __decorate([
|
|
1776
|
+
Struct.type('getjobs')
|
|
1777
|
+
], getjobs);
|
|
1778
|
+
Types.getjobs = getjobs;
|
|
1641
1779
|
let getkindmeta = class getkindmeta extends Struct {
|
|
1642
1780
|
};
|
|
1643
1781
|
getkindmeta = __decorate([
|
|
@@ -1770,6 +1908,15 @@ var Types;
|
|
|
1770
1908
|
Struct.type('getresources')
|
|
1771
1909
|
], getresources);
|
|
1772
1910
|
Types.getresources = getresources;
|
|
1911
|
+
let getservice = class getservice extends Struct {
|
|
1912
|
+
};
|
|
1913
|
+
__decorate([
|
|
1914
|
+
Struct.field(UInt64)
|
|
1915
|
+
], getservice.prototype, "workshop_id", void 0);
|
|
1916
|
+
getservice = __decorate([
|
|
1917
|
+
Struct.type('getservice')
|
|
1918
|
+
], getservice);
|
|
1919
|
+
Types.getservice = getservice;
|
|
1773
1920
|
let getslots = class getslots extends Struct {
|
|
1774
1921
|
};
|
|
1775
1922
|
getslots = __decorate([
|
|
@@ -1881,6 +2028,24 @@ var Types;
|
|
|
1881
2028
|
Struct.type('importcargo')
|
|
1882
2029
|
], importcargo);
|
|
1883
2030
|
Types.importcargo = importcargo;
|
|
2031
|
+
let importcell = class importcell extends Struct {
|
|
2032
|
+
};
|
|
2033
|
+
__decorate([
|
|
2034
|
+
Struct.field(UInt64)
|
|
2035
|
+
], importcell.prototype, "root", void 0);
|
|
2036
|
+
__decorate([
|
|
2037
|
+
Struct.field(Int8)
|
|
2038
|
+
], importcell.prototype, "gx", void 0);
|
|
2039
|
+
__decorate([
|
|
2040
|
+
Struct.field(Int8)
|
|
2041
|
+
], importcell.prototype, "gy", void 0);
|
|
2042
|
+
__decorate([
|
|
2043
|
+
Struct.field(UInt64)
|
|
2044
|
+
], importcell.prototype, "entity_id", void 0);
|
|
2045
|
+
importcell = __decorate([
|
|
2046
|
+
Struct.type('importcell')
|
|
2047
|
+
], importcell);
|
|
2048
|
+
Types.importcell = importcell;
|
|
1884
2049
|
let importentity = class importentity extends Struct {
|
|
1885
2050
|
};
|
|
1886
2051
|
__decorate([
|
|
@@ -2091,6 +2256,72 @@ var Types;
|
|
|
2091
2256
|
Struct.type('items_info')
|
|
2092
2257
|
], items_info);
|
|
2093
2258
|
Types.items_info = items_info;
|
|
2259
|
+
let job_receipt = class job_receipt extends Struct {
|
|
2260
|
+
};
|
|
2261
|
+
__decorate([
|
|
2262
|
+
Struct.field(UInt64)
|
|
2263
|
+
], job_receipt.prototype, "job_id", void 0);
|
|
2264
|
+
__decorate([
|
|
2265
|
+
Struct.field(TimePoint)
|
|
2266
|
+
], job_receipt.prototype, "starts_at", void 0);
|
|
2267
|
+
__decorate([
|
|
2268
|
+
Struct.field(TimePoint)
|
|
2269
|
+
], job_receipt.prototype, "completes_at", void 0);
|
|
2270
|
+
job_receipt = __decorate([
|
|
2271
|
+
Struct.type('job_receipt')
|
|
2272
|
+
], job_receipt);
|
|
2273
|
+
Types.job_receipt = job_receipt;
|
|
2274
|
+
let job_row = class job_row extends Struct {
|
|
2275
|
+
};
|
|
2276
|
+
__decorate([
|
|
2277
|
+
Struct.field(UInt64)
|
|
2278
|
+
], job_row.prototype, "id", void 0);
|
|
2279
|
+
__decorate([
|
|
2280
|
+
Struct.field(UInt64)
|
|
2281
|
+
], job_row.prototype, "workshop", void 0);
|
|
2282
|
+
__decorate([
|
|
2283
|
+
Struct.field(UInt8)
|
|
2284
|
+
], job_row.prototype, "socket", void 0);
|
|
2285
|
+
__decorate([
|
|
2286
|
+
Struct.field(Name)
|
|
2287
|
+
], job_row.prototype, "owner", void 0);
|
|
2288
|
+
__decorate([
|
|
2289
|
+
Struct.field(UInt64)
|
|
2290
|
+
], job_row.prototype, "ship_id", void 0);
|
|
2291
|
+
__decorate([
|
|
2292
|
+
Struct.field(coordinates)
|
|
2293
|
+
], job_row.prototype, "coords", void 0);
|
|
2294
|
+
__decorate([
|
|
2295
|
+
Struct.field(TimePoint)
|
|
2296
|
+
], job_row.prototype, "starts_at", void 0);
|
|
2297
|
+
__decorate([
|
|
2298
|
+
Struct.field(TimePoint)
|
|
2299
|
+
], job_row.prototype, "completes_at", void 0);
|
|
2300
|
+
__decorate([
|
|
2301
|
+
Struct.field(UInt16)
|
|
2302
|
+
], job_row.prototype, "recipe_id", void 0);
|
|
2303
|
+
__decorate([
|
|
2304
|
+
Struct.field(UInt32)
|
|
2305
|
+
], job_row.prototype, "quantity", void 0);
|
|
2306
|
+
__decorate([
|
|
2307
|
+
Struct.field(UInt32)
|
|
2308
|
+
], job_row.prototype, "energy_paid", void 0);
|
|
2309
|
+
__decorate([
|
|
2310
|
+
Struct.field(cargo_item, { array: true })
|
|
2311
|
+
], job_row.prototype, "cargo", void 0);
|
|
2312
|
+
job_row = __decorate([
|
|
2313
|
+
Struct.type('job_row')
|
|
2314
|
+
], job_row);
|
|
2315
|
+
Types.job_row = job_row;
|
|
2316
|
+
let jobs_result = class jobs_result extends Struct {
|
|
2317
|
+
};
|
|
2318
|
+
__decorate([
|
|
2319
|
+
Struct.field(job_row, { array: true })
|
|
2320
|
+
], jobs_result.prototype, "jobs", void 0);
|
|
2321
|
+
jobs_result = __decorate([
|
|
2322
|
+
Struct.type('jobs_result')
|
|
2323
|
+
], jobs_result);
|
|
2324
|
+
Types.jobs_result = jobs_result;
|
|
2094
2325
|
let join = class join extends Struct {
|
|
2095
2326
|
};
|
|
2096
2327
|
__decorate([
|
|
@@ -2226,6 +2457,24 @@ var Types;
|
|
|
2226
2457
|
Struct.type('location_info')
|
|
2227
2458
|
], location_info);
|
|
2228
2459
|
Types.location_info = location_info;
|
|
2460
|
+
let migratetasks = class migratetasks extends Struct {
|
|
2461
|
+
};
|
|
2462
|
+
__decorate([
|
|
2463
|
+
Struct.field(UInt32)
|
|
2464
|
+
], migratetasks.prototype, "batch", void 0);
|
|
2465
|
+
migratetasks = __decorate([
|
|
2466
|
+
Struct.type('migratetasks')
|
|
2467
|
+
], migratetasks);
|
|
2468
|
+
Types.migratetasks = migratetasks;
|
|
2469
|
+
let migswap = class migswap extends Struct {
|
|
2470
|
+
};
|
|
2471
|
+
__decorate([
|
|
2472
|
+
Struct.field(UInt32)
|
|
2473
|
+
], migswap.prototype, "batch", void 0);
|
|
2474
|
+
migswap = __decorate([
|
|
2475
|
+
Struct.type('migswap')
|
|
2476
|
+
], migswap);
|
|
2477
|
+
Types.migswap = migswap;
|
|
2229
2478
|
let module_info = class module_info extends Struct {
|
|
2230
2479
|
};
|
|
2231
2480
|
__decorate([
|
|
@@ -2579,6 +2828,9 @@ var Types;
|
|
|
2579
2828
|
__decorate([
|
|
2580
2829
|
Struct.field(crafter_lane, { array: true })
|
|
2581
2830
|
], projected_state.prototype, "crafter_lanes", void 0);
|
|
2831
|
+
__decorate([
|
|
2832
|
+
Struct.field(builder_lane, { array: true })
|
|
2833
|
+
], projected_state.prototype, "builder_lanes", void 0);
|
|
2582
2834
|
__decorate([
|
|
2583
2835
|
Struct.field(loader_lane, { array: true })
|
|
2584
2836
|
], projected_state.prototype, "loader_lanes", void 0);
|
|
@@ -2787,6 +3039,48 @@ var Types;
|
|
|
2787
3039
|
Struct.type('rmnftcfg')
|
|
2788
3040
|
], rmnftcfg);
|
|
2789
3041
|
Types.rmnftcfg = rmnftcfg;
|
|
3042
|
+
let route_waypoint = class route_waypoint extends Struct {
|
|
3043
|
+
};
|
|
3044
|
+
__decorate([
|
|
3045
|
+
Struct.field(Int64)
|
|
3046
|
+
], route_waypoint.prototype, "x", void 0);
|
|
3047
|
+
__decorate([
|
|
3048
|
+
Struct.field(Int64)
|
|
3049
|
+
], route_waypoint.prototype, "y", void 0);
|
|
3050
|
+
route_waypoint = __decorate([
|
|
3051
|
+
Struct.type('route_waypoint')
|
|
3052
|
+
], route_waypoint);
|
|
3053
|
+
Types.route_waypoint = route_waypoint;
|
|
3054
|
+
let service_socket = class service_socket extends Struct {
|
|
3055
|
+
};
|
|
3056
|
+
__decorate([
|
|
3057
|
+
Struct.field('bool')
|
|
3058
|
+
], service_socket.prototype, "open", void 0);
|
|
3059
|
+
service_socket = __decorate([
|
|
3060
|
+
Struct.type('service_socket')
|
|
3061
|
+
], service_socket);
|
|
3062
|
+
Types.service_socket = service_socket;
|
|
3063
|
+
let service_row = class service_row extends Struct {
|
|
3064
|
+
};
|
|
3065
|
+
__decorate([
|
|
3066
|
+
Struct.field(UInt64)
|
|
3067
|
+
], service_row.prototype, "entity", void 0);
|
|
3068
|
+
__decorate([
|
|
3069
|
+
Struct.field(service_socket, { array: true })
|
|
3070
|
+
], service_row.prototype, "sockets", void 0);
|
|
3071
|
+
service_row = __decorate([
|
|
3072
|
+
Struct.type('service_row')
|
|
3073
|
+
], service_row);
|
|
3074
|
+
Types.service_row = service_row;
|
|
3075
|
+
let setcivic = class setcivic extends Struct {
|
|
3076
|
+
};
|
|
3077
|
+
__decorate([
|
|
3078
|
+
Struct.field(Name)
|
|
3079
|
+
], setcivic.prototype, "account", void 0);
|
|
3080
|
+
setcivic = __decorate([
|
|
3081
|
+
Struct.type('setcivic')
|
|
3082
|
+
], setcivic);
|
|
3083
|
+
Types.setcivic = setcivic;
|
|
2790
3084
|
let setcoords = class setcoords extends Struct {
|
|
2791
3085
|
};
|
|
2792
3086
|
__decorate([
|
|
@@ -2817,6 +3111,21 @@ var Types;
|
|
|
2817
3111
|
Struct.type('setnftcfg')
|
|
2818
3112
|
], setnftcfg);
|
|
2819
3113
|
Types.setnftcfg = setnftcfg;
|
|
3114
|
+
let setsocket = class setsocket extends Struct {
|
|
3115
|
+
};
|
|
3116
|
+
__decorate([
|
|
3117
|
+
Struct.field(UInt64)
|
|
3118
|
+
], setsocket.prototype, "workshop_id", void 0);
|
|
3119
|
+
__decorate([
|
|
3120
|
+
Struct.field(UInt8)
|
|
3121
|
+
], setsocket.prototype, "slot", void 0);
|
|
3122
|
+
__decorate([
|
|
3123
|
+
Struct.field('bool')
|
|
3124
|
+
], setsocket.prototype, "open", void 0);
|
|
3125
|
+
setsocket = __decorate([
|
|
3126
|
+
Struct.type('setsocket')
|
|
3127
|
+
], setsocket);
|
|
3128
|
+
Types.setsocket = setsocket;
|
|
2820
3129
|
let setthreshold = class setthreshold extends Struct {
|
|
2821
3130
|
};
|
|
2822
3131
|
__decorate([
|
|
@@ -2853,6 +3162,24 @@ var Types;
|
|
|
2853
3162
|
Struct.type('setwrapfee')
|
|
2854
3163
|
], setwrapfee);
|
|
2855
3164
|
Types.setwrapfee = setwrapfee;
|
|
3165
|
+
let shuttle = class shuttle extends Struct {
|
|
3166
|
+
};
|
|
3167
|
+
__decorate([
|
|
3168
|
+
Struct.field(UInt64)
|
|
3169
|
+
], shuttle.prototype, "carrier", void 0);
|
|
3170
|
+
__decorate([
|
|
3171
|
+
Struct.field(UInt64)
|
|
3172
|
+
], shuttle.prototype, "from_id", void 0);
|
|
3173
|
+
__decorate([
|
|
3174
|
+
Struct.field(UInt64)
|
|
3175
|
+
], shuttle.prototype, "to_id", void 0);
|
|
3176
|
+
__decorate([
|
|
3177
|
+
Struct.field(cargo_item, { array: true })
|
|
3178
|
+
], shuttle.prototype, "items", void 0);
|
|
3179
|
+
shuttle = __decorate([
|
|
3180
|
+
Struct.type('shuttle')
|
|
3181
|
+
], shuttle);
|
|
3182
|
+
Types.shuttle = shuttle;
|
|
2856
3183
|
let stowcargo = class stowcargo extends Struct {
|
|
2857
3184
|
};
|
|
2858
3185
|
__decorate([
|
|
@@ -3021,6 +3348,21 @@ var Types;
|
|
|
3021
3348
|
Struct.type('travel')
|
|
3022
3349
|
], travel);
|
|
3023
3350
|
Types.travel = travel;
|
|
3351
|
+
let travelplan = class travelplan extends Struct {
|
|
3352
|
+
};
|
|
3353
|
+
__decorate([
|
|
3354
|
+
Struct.field(entity_ref, { array: true })
|
|
3355
|
+
], travelplan.prototype, "entities", void 0);
|
|
3356
|
+
__decorate([
|
|
3357
|
+
Struct.field(route_waypoint, { array: true })
|
|
3358
|
+
], travelplan.prototype, "waypoints", void 0);
|
|
3359
|
+
__decorate([
|
|
3360
|
+
Struct.field('bool')
|
|
3361
|
+
], travelplan.prototype, "recharge", void 0);
|
|
3362
|
+
travelplan = __decorate([
|
|
3363
|
+
Struct.type('travelplan')
|
|
3364
|
+
], travelplan);
|
|
3365
|
+
Types.travelplan = travelplan;
|
|
3024
3366
|
let types_row = class types_row extends Struct {
|
|
3025
3367
|
};
|
|
3026
3368
|
__decorate([
|
|
@@ -3156,19 +3498,23 @@ var Types;
|
|
|
3156
3498
|
})(Types || (Types = {}));
|
|
3157
3499
|
const TableMap = {
|
|
3158
3500
|
cargo: Types.cargo_row,
|
|
3501
|
+
civicconfig: Types.civicconfig_row,
|
|
3159
3502
|
claims: Types.claim_row,
|
|
3160
3503
|
cluster: Types.cluster_row,
|
|
3161
3504
|
commit: Types.commit_row,
|
|
3162
3505
|
entity: Types.entity_row,
|
|
3506
|
+
'entity.mig': Types.entity_row,
|
|
3163
3507
|
entitygroup: Types.entitygroup_row,
|
|
3164
3508
|
entityseq: Types.entity_seq_row,
|
|
3165
3509
|
epoch: Types.epoch_row,
|
|
3510
|
+
jobs: Types.job_row,
|
|
3166
3511
|
nftconfig: Types.nftconfig_row,
|
|
3167
3512
|
oraclecfg: Types.oracle_config_row,
|
|
3168
3513
|
oracles: Types.oracle_row,
|
|
3169
3514
|
player: Types.player_row,
|
|
3170
3515
|
reserve: Types.reserve_row,
|
|
3171
3516
|
reveal: Types.reveal_row,
|
|
3517
|
+
service: Types.service_row,
|
|
3172
3518
|
state: Types.state_row,
|
|
3173
3519
|
types: Types.types_row,
|
|
3174
3520
|
wrapconfig: Types.wrapconfig_row,
|
|
@@ -3289,11 +3635,13 @@ const INSUFFICIENT_BALANCE = 'Insufficient balance.';
|
|
|
3289
3635
|
const INSUFFICIENT_ITEM_QUANTITY = 'Insufficient quantity in cargo.';
|
|
3290
3636
|
const INSUFFICIENT_ITEM_SUPPLY = 'Insufficient supply of item at location.';
|
|
3291
3637
|
|
|
3292
|
-
const PRECISION
|
|
3638
|
+
const PRECISION = 10000;
|
|
3293
3639
|
const CRAFT_ENERGY_DIVISOR = 150000;
|
|
3294
3640
|
const PLANETARY_STRUCTURE_Z = 0;
|
|
3295
3641
|
const CONTAINER_Z = 300;
|
|
3296
3642
|
const TRAVEL_MAX_DURATION = 86400;
|
|
3643
|
+
const BASE_HAUL_PENALTY_MILLI$1 = 300;
|
|
3644
|
+
const HAULER_EFFICIENCY_DENOM$1 = 10000;
|
|
3297
3645
|
const MIN_ORBITAL_ALTITUDE = 800;
|
|
3298
3646
|
const MAX_ORBITAL_ALTITUDE = 3000;
|
|
3299
3647
|
const BASE_ORBITAL_MASS = 100000;
|
|
@@ -3309,15 +3657,15 @@ var TaskType;
|
|
|
3309
3657
|
TaskType[TaskType["GATHER"] = 5] = "GATHER";
|
|
3310
3658
|
TaskType[TaskType["WARP"] = 6] = "WARP";
|
|
3311
3659
|
TaskType[TaskType["CRAFT"] = 7] = "CRAFT";
|
|
3312
|
-
TaskType[TaskType["DEPLOY"] = 8] = "DEPLOY";
|
|
3313
3660
|
TaskType[TaskType["TRANSIT"] = 9] = "TRANSIT";
|
|
3314
3661
|
TaskType[TaskType["UNWRAP"] = 10] = "UNWRAP";
|
|
3315
3662
|
TaskType[TaskType["UNDEPLOY"] = 11] = "UNDEPLOY";
|
|
3663
|
+
TaskType[TaskType["LAUNCH"] = 12] = "LAUNCH";
|
|
3316
3664
|
TaskType[TaskType["DEMOLISH"] = 13] = "DEMOLISH";
|
|
3317
|
-
TaskType[TaskType["CLAIMPLOT"] = 14] = "CLAIMPLOT";
|
|
3318
3665
|
TaskType[TaskType["BUILDPLOT"] = 15] = "BUILDPLOT";
|
|
3319
3666
|
TaskType[TaskType["CHARGE"] = 16] = "CHARGE";
|
|
3320
3667
|
TaskType[TaskType["UPGRADE"] = 17] = "UPGRADE";
|
|
3668
|
+
TaskType[TaskType["SHUTTLE"] = 18] = "SHUTTLE";
|
|
3321
3669
|
})(TaskType || (TaskType = {}));
|
|
3322
3670
|
var HoldKind;
|
|
3323
3671
|
(function (HoldKind) {
|
|
@@ -3325,6 +3673,7 @@ var HoldKind;
|
|
|
3325
3673
|
HoldKind[HoldKind["PUSH"] = 2] = "PUSH";
|
|
3326
3674
|
HoldKind[HoldKind["GATHER"] = 3] = "GATHER";
|
|
3327
3675
|
HoldKind[HoldKind["BUILD"] = 4] = "BUILD";
|
|
3676
|
+
HoldKind[HoldKind["FLIGHT"] = 5] = "FLIGHT";
|
|
3328
3677
|
HoldKind[HoldKind["UPGRADE"] = 6] = "UPGRADE";
|
|
3329
3678
|
})(HoldKind || (HoldKind = {}));
|
|
3330
3679
|
var LocationType;
|
|
@@ -3459,6 +3808,7 @@ const ITEM_HAULER_T1 = 10106;
|
|
|
3459
3808
|
const ITEM_WARP_T1 = 10107;
|
|
3460
3809
|
const ITEM_BATTERY_T1 = 10108;
|
|
3461
3810
|
const ITEM_LAUNCHER_T1 = 10109;
|
|
3811
|
+
const ITEM_BUILDER_T1 = 10110;
|
|
3462
3812
|
const ITEM_CONTAINER_T1_PACKED = 10200;
|
|
3463
3813
|
const ITEM_SHIP_T1_PACKED = 10201;
|
|
3464
3814
|
const ITEM_WAREHOUSE_T1_PACKED = 10202;
|
|
@@ -3467,6 +3817,15 @@ const ITEM_FACTORY_T1_PACKED = 10204;
|
|
|
3467
3817
|
const ITEM_MASS_DRIVER_T1_PACKED = 10205;
|
|
3468
3818
|
const ITEM_MASS_CATCHER_T1_PACKED = 10206;
|
|
3469
3819
|
const ITEM_HUB_T1_PACKED = 10207;
|
|
3820
|
+
const ITEM_WORKSHOP_T1_PACKED = 10208;
|
|
3821
|
+
const ITEM_ROUSTABOUT_T1_PACKED = 10210;
|
|
3822
|
+
const ITEM_PROSPECTOR_T1_PACKED = 10211;
|
|
3823
|
+
const ITEM_TENDER_T1_PACKED = 10212;
|
|
3824
|
+
const ITEM_WRIGHT_T1_PACKED = 10213;
|
|
3825
|
+
const ITEM_TUG_T1_PACKED = 10214;
|
|
3826
|
+
const ITEM_PORTER_T1_PACKED = 10215;
|
|
3827
|
+
const ITEM_WRANGLER_T1_PACKED = 10216;
|
|
3828
|
+
const ITEM_DREDGER_T1_PACKED = 10217;
|
|
3470
3829
|
const ITEM_PLATE_T2 = 20001;
|
|
3471
3830
|
const ITEM_FRAME_T2 = 20002;
|
|
3472
3831
|
const ITEM_PLASMA_CELL_T2 = 20003;
|
|
@@ -4270,47 +4629,31 @@ var recipes = [
|
|
|
4270
4629
|
]
|
|
4271
4630
|
},
|
|
4272
4631
|
{
|
|
4273
|
-
outputItemId:
|
|
4274
|
-
outputMass:
|
|
4632
|
+
outputItemId: 10110,
|
|
4633
|
+
outputMass: 960000,
|
|
4275
4634
|
inputs: [
|
|
4276
4635
|
{
|
|
4277
|
-
itemId:
|
|
4278
|
-
quantity:
|
|
4636
|
+
itemId: 10005,
|
|
4637
|
+
quantity: 300
|
|
4279
4638
|
},
|
|
4280
4639
|
{
|
|
4281
|
-
itemId:
|
|
4282
|
-
quantity:
|
|
4640
|
+
itemId: 10002,
|
|
4641
|
+
quantity: 300
|
|
4283
4642
|
}
|
|
4284
4643
|
],
|
|
4285
4644
|
statSlots: [
|
|
4286
|
-
{
|
|
4287
|
-
sources: [
|
|
4288
|
-
{
|
|
4289
|
-
inputIndex: 0,
|
|
4290
|
-
statIndex: 0
|
|
4291
|
-
}
|
|
4292
|
-
]
|
|
4293
|
-
},
|
|
4294
|
-
{
|
|
4295
|
-
sources: [
|
|
4296
|
-
{
|
|
4297
|
-
inputIndex: 0,
|
|
4298
|
-
statIndex: 1
|
|
4299
|
-
}
|
|
4300
|
-
]
|
|
4301
|
-
},
|
|
4302
4645
|
{
|
|
4303
4646
|
sources: [
|
|
4304
4647
|
{
|
|
4305
4648
|
inputIndex: 1,
|
|
4306
|
-
statIndex:
|
|
4649
|
+
statIndex: 1
|
|
4307
4650
|
}
|
|
4308
4651
|
]
|
|
4309
4652
|
},
|
|
4310
4653
|
{
|
|
4311
4654
|
sources: [
|
|
4312
4655
|
{
|
|
4313
|
-
inputIndex:
|
|
4656
|
+
inputIndex: 0,
|
|
4314
4657
|
statIndex: 1
|
|
4315
4658
|
}
|
|
4316
4659
|
]
|
|
@@ -4320,28 +4663,16 @@ var recipes = [
|
|
|
4320
4663
|
]
|
|
4321
4664
|
},
|
|
4322
4665
|
{
|
|
4323
|
-
outputItemId:
|
|
4324
|
-
outputMass:
|
|
4666
|
+
outputItemId: 10200,
|
|
4667
|
+
outputMass: 1900000,
|
|
4325
4668
|
inputs: [
|
|
4326
4669
|
{
|
|
4327
4670
|
itemId: 10001,
|
|
4328
|
-
quantity:
|
|
4671
|
+
quantity: 600
|
|
4329
4672
|
},
|
|
4330
4673
|
{
|
|
4331
4674
|
itemId: 10008,
|
|
4332
|
-
quantity:
|
|
4333
|
-
},
|
|
4334
|
-
{
|
|
4335
|
-
itemId: 10007,
|
|
4336
|
-
quantity: 300
|
|
4337
|
-
},
|
|
4338
|
-
{
|
|
4339
|
-
itemId: 10003,
|
|
4340
|
-
quantity: 300
|
|
4341
|
-
},
|
|
4342
|
-
{
|
|
4343
|
-
itemId: 10006,
|
|
4344
|
-
quantity: 300
|
|
4675
|
+
quantity: 600
|
|
4345
4676
|
}
|
|
4346
4677
|
],
|
|
4347
4678
|
statSlots: [
|
|
@@ -4363,10 +4694,18 @@ var recipes = [
|
|
|
4363
4694
|
},
|
|
4364
4695
|
{
|
|
4365
4696
|
sources: [
|
|
4697
|
+
{
|
|
4698
|
+
inputIndex: 1,
|
|
4699
|
+
statIndex: 0
|
|
4700
|
+
}
|
|
4366
4701
|
]
|
|
4367
4702
|
},
|
|
4368
4703
|
{
|
|
4369
4704
|
sources: [
|
|
4705
|
+
{
|
|
4706
|
+
inputIndex: 1,
|
|
4707
|
+
statIndex: 1
|
|
4708
|
+
}
|
|
4370
4709
|
]
|
|
4371
4710
|
}
|
|
4372
4711
|
],
|
|
@@ -4538,12 +4877,28 @@ var recipes = [
|
|
|
4538
4877
|
]
|
|
4539
4878
|
},
|
|
4540
4879
|
{
|
|
4541
|
-
outputItemId:
|
|
4542
|
-
outputMass:
|
|
4880
|
+
outputItemId: 10210,
|
|
4881
|
+
outputMass: 1600000,
|
|
4543
4882
|
inputs: [
|
|
4544
4883
|
{
|
|
4545
|
-
itemId:
|
|
4546
|
-
quantity:
|
|
4884
|
+
itemId: 10001,
|
|
4885
|
+
quantity: 200
|
|
4886
|
+
},
|
|
4887
|
+
{
|
|
4888
|
+
itemId: 10008,
|
|
4889
|
+
quantity: 200
|
|
4890
|
+
},
|
|
4891
|
+
{
|
|
4892
|
+
itemId: 10007,
|
|
4893
|
+
quantity: 200
|
|
4894
|
+
},
|
|
4895
|
+
{
|
|
4896
|
+
itemId: 10003,
|
|
4897
|
+
quantity: 200
|
|
4898
|
+
},
|
|
4899
|
+
{
|
|
4900
|
+
itemId: 10006,
|
|
4901
|
+
quantity: 200
|
|
4547
4902
|
}
|
|
4548
4903
|
],
|
|
4549
4904
|
statSlots: [
|
|
@@ -4558,27 +4913,746 @@ var recipes = [
|
|
|
4558
4913
|
{
|
|
4559
4914
|
sources: [
|
|
4560
4915
|
{
|
|
4561
|
-
inputIndex:
|
|
4562
|
-
statIndex:
|
|
4916
|
+
inputIndex: 1,
|
|
4917
|
+
statIndex: 0
|
|
4563
4918
|
}
|
|
4564
4919
|
]
|
|
4565
4920
|
},
|
|
4566
4921
|
{
|
|
4567
4922
|
sources: [
|
|
4568
4923
|
{
|
|
4569
|
-
inputIndex:
|
|
4570
|
-
statIndex:
|
|
4924
|
+
inputIndex: 2,
|
|
4925
|
+
statIndex: 0
|
|
4571
4926
|
}
|
|
4572
4927
|
]
|
|
4573
|
-
}
|
|
4574
|
-
|
|
4575
|
-
|
|
4576
|
-
|
|
4577
|
-
|
|
4578
|
-
|
|
4579
|
-
|
|
4580
|
-
|
|
4581
|
-
|
|
4928
|
+
},
|
|
4929
|
+
{
|
|
4930
|
+
sources: [
|
|
4931
|
+
{
|
|
4932
|
+
inputIndex: 3,
|
|
4933
|
+
statIndex: 0
|
|
4934
|
+
}
|
|
4935
|
+
]
|
|
4936
|
+
},
|
|
4937
|
+
{
|
|
4938
|
+
sources: [
|
|
4939
|
+
{
|
|
4940
|
+
inputIndex: 4,
|
|
4941
|
+
statIndex: 0
|
|
4942
|
+
}
|
|
4943
|
+
]
|
|
4944
|
+
}
|
|
4945
|
+
],
|
|
4946
|
+
blendWeights: [
|
|
4947
|
+
]
|
|
4948
|
+
},
|
|
4949
|
+
{
|
|
4950
|
+
outputItemId: 10211,
|
|
4951
|
+
outputMass: 2400000,
|
|
4952
|
+
inputs: [
|
|
4953
|
+
{
|
|
4954
|
+
itemId: 10005,
|
|
4955
|
+
quantity: 100
|
|
4956
|
+
},
|
|
4957
|
+
{
|
|
4958
|
+
itemId: 10002,
|
|
4959
|
+
quantity: 100
|
|
4960
|
+
},
|
|
4961
|
+
{
|
|
4962
|
+
itemId: 10010,
|
|
4963
|
+
quantity: 100
|
|
4964
|
+
},
|
|
4965
|
+
{
|
|
4966
|
+
itemId: 10009,
|
|
4967
|
+
quantity: 100
|
|
4968
|
+
},
|
|
4969
|
+
{
|
|
4970
|
+
itemId: 10004,
|
|
4971
|
+
quantity: 100
|
|
4972
|
+
},
|
|
4973
|
+
{
|
|
4974
|
+
itemId: 10210,
|
|
4975
|
+
quantity: 1
|
|
4976
|
+
}
|
|
4977
|
+
],
|
|
4978
|
+
statSlots: [
|
|
4979
|
+
{
|
|
4980
|
+
sources: [
|
|
4981
|
+
{
|
|
4982
|
+
inputIndex: 0,
|
|
4983
|
+
statIndex: 0
|
|
4984
|
+
},
|
|
4985
|
+
{
|
|
4986
|
+
inputIndex: 5,
|
|
4987
|
+
statIndex: 0
|
|
4988
|
+
}
|
|
4989
|
+
]
|
|
4990
|
+
},
|
|
4991
|
+
{
|
|
4992
|
+
sources: [
|
|
4993
|
+
{
|
|
4994
|
+
inputIndex: 1,
|
|
4995
|
+
statIndex: 0
|
|
4996
|
+
},
|
|
4997
|
+
{
|
|
4998
|
+
inputIndex: 5,
|
|
4999
|
+
statIndex: 1
|
|
5000
|
+
}
|
|
5001
|
+
]
|
|
5002
|
+
},
|
|
5003
|
+
{
|
|
5004
|
+
sources: [
|
|
5005
|
+
{
|
|
5006
|
+
inputIndex: 2,
|
|
5007
|
+
statIndex: 0
|
|
5008
|
+
},
|
|
5009
|
+
{
|
|
5010
|
+
inputIndex: 5,
|
|
5011
|
+
statIndex: 2
|
|
5012
|
+
}
|
|
5013
|
+
]
|
|
5014
|
+
},
|
|
5015
|
+
{
|
|
5016
|
+
sources: [
|
|
5017
|
+
{
|
|
5018
|
+
inputIndex: 3,
|
|
5019
|
+
statIndex: 0
|
|
5020
|
+
},
|
|
5021
|
+
{
|
|
5022
|
+
inputIndex: 5,
|
|
5023
|
+
statIndex: 3
|
|
5024
|
+
}
|
|
5025
|
+
]
|
|
5026
|
+
},
|
|
5027
|
+
{
|
|
5028
|
+
sources: [
|
|
5029
|
+
{
|
|
5030
|
+
inputIndex: 4,
|
|
5031
|
+
statIndex: 0
|
|
5032
|
+
},
|
|
5033
|
+
{
|
|
5034
|
+
inputIndex: 5,
|
|
5035
|
+
statIndex: 4
|
|
5036
|
+
}
|
|
5037
|
+
]
|
|
5038
|
+
}
|
|
5039
|
+
],
|
|
5040
|
+
blendWeights: [
|
|
5041
|
+
],
|
|
5042
|
+
sourceSubclass: 10210
|
|
5043
|
+
},
|
|
5044
|
+
{
|
|
5045
|
+
outputItemId: 10212,
|
|
5046
|
+
outputMass: 2400000,
|
|
5047
|
+
inputs: [
|
|
5048
|
+
{
|
|
5049
|
+
itemId: 10005,
|
|
5050
|
+
quantity: 100
|
|
5051
|
+
},
|
|
5052
|
+
{
|
|
5053
|
+
itemId: 10002,
|
|
5054
|
+
quantity: 100
|
|
5055
|
+
},
|
|
5056
|
+
{
|
|
5057
|
+
itemId: 10010,
|
|
5058
|
+
quantity: 100
|
|
5059
|
+
},
|
|
5060
|
+
{
|
|
5061
|
+
itemId: 10009,
|
|
5062
|
+
quantity: 100
|
|
5063
|
+
},
|
|
5064
|
+
{
|
|
5065
|
+
itemId: 10004,
|
|
5066
|
+
quantity: 100
|
|
5067
|
+
},
|
|
5068
|
+
{
|
|
5069
|
+
itemId: 10210,
|
|
5070
|
+
quantity: 1
|
|
5071
|
+
}
|
|
5072
|
+
],
|
|
5073
|
+
statSlots: [
|
|
5074
|
+
{
|
|
5075
|
+
sources: [
|
|
5076
|
+
{
|
|
5077
|
+
inputIndex: 0,
|
|
5078
|
+
statIndex: 0
|
|
5079
|
+
},
|
|
5080
|
+
{
|
|
5081
|
+
inputIndex: 5,
|
|
5082
|
+
statIndex: 0
|
|
5083
|
+
}
|
|
5084
|
+
]
|
|
5085
|
+
},
|
|
5086
|
+
{
|
|
5087
|
+
sources: [
|
|
5088
|
+
{
|
|
5089
|
+
inputIndex: 1,
|
|
5090
|
+
statIndex: 0
|
|
5091
|
+
},
|
|
5092
|
+
{
|
|
5093
|
+
inputIndex: 5,
|
|
5094
|
+
statIndex: 1
|
|
5095
|
+
}
|
|
5096
|
+
]
|
|
5097
|
+
},
|
|
5098
|
+
{
|
|
5099
|
+
sources: [
|
|
5100
|
+
{
|
|
5101
|
+
inputIndex: 2,
|
|
5102
|
+
statIndex: 0
|
|
5103
|
+
},
|
|
5104
|
+
{
|
|
5105
|
+
inputIndex: 5,
|
|
5106
|
+
statIndex: 2
|
|
5107
|
+
}
|
|
5108
|
+
]
|
|
5109
|
+
},
|
|
5110
|
+
{
|
|
5111
|
+
sources: [
|
|
5112
|
+
{
|
|
5113
|
+
inputIndex: 3,
|
|
5114
|
+
statIndex: 0
|
|
5115
|
+
},
|
|
5116
|
+
{
|
|
5117
|
+
inputIndex: 5,
|
|
5118
|
+
statIndex: 3
|
|
5119
|
+
}
|
|
5120
|
+
]
|
|
5121
|
+
},
|
|
5122
|
+
{
|
|
5123
|
+
sources: [
|
|
5124
|
+
{
|
|
5125
|
+
inputIndex: 4,
|
|
5126
|
+
statIndex: 0
|
|
5127
|
+
},
|
|
5128
|
+
{
|
|
5129
|
+
inputIndex: 5,
|
|
5130
|
+
statIndex: 4
|
|
5131
|
+
}
|
|
5132
|
+
]
|
|
5133
|
+
}
|
|
5134
|
+
],
|
|
5135
|
+
blendWeights: [
|
|
5136
|
+
],
|
|
5137
|
+
sourceSubclass: 10210
|
|
5138
|
+
},
|
|
5139
|
+
{
|
|
5140
|
+
outputItemId: 10213,
|
|
5141
|
+
outputMass: 2400000,
|
|
5142
|
+
inputs: [
|
|
5143
|
+
{
|
|
5144
|
+
itemId: 10005,
|
|
5145
|
+
quantity: 100
|
|
5146
|
+
},
|
|
5147
|
+
{
|
|
5148
|
+
itemId: 10002,
|
|
5149
|
+
quantity: 100
|
|
5150
|
+
},
|
|
5151
|
+
{
|
|
5152
|
+
itemId: 10010,
|
|
5153
|
+
quantity: 100
|
|
5154
|
+
},
|
|
5155
|
+
{
|
|
5156
|
+
itemId: 10009,
|
|
5157
|
+
quantity: 100
|
|
5158
|
+
},
|
|
5159
|
+
{
|
|
5160
|
+
itemId: 10004,
|
|
5161
|
+
quantity: 100
|
|
5162
|
+
},
|
|
5163
|
+
{
|
|
5164
|
+
itemId: 10210,
|
|
5165
|
+
quantity: 1
|
|
5166
|
+
}
|
|
5167
|
+
],
|
|
5168
|
+
statSlots: [
|
|
5169
|
+
{
|
|
5170
|
+
sources: [
|
|
5171
|
+
{
|
|
5172
|
+
inputIndex: 0,
|
|
5173
|
+
statIndex: 0
|
|
5174
|
+
},
|
|
5175
|
+
{
|
|
5176
|
+
inputIndex: 5,
|
|
5177
|
+
statIndex: 0
|
|
5178
|
+
}
|
|
5179
|
+
]
|
|
5180
|
+
},
|
|
5181
|
+
{
|
|
5182
|
+
sources: [
|
|
5183
|
+
{
|
|
5184
|
+
inputIndex: 1,
|
|
5185
|
+
statIndex: 0
|
|
5186
|
+
},
|
|
5187
|
+
{
|
|
5188
|
+
inputIndex: 5,
|
|
5189
|
+
statIndex: 1
|
|
5190
|
+
}
|
|
5191
|
+
]
|
|
5192
|
+
},
|
|
5193
|
+
{
|
|
5194
|
+
sources: [
|
|
5195
|
+
{
|
|
5196
|
+
inputIndex: 2,
|
|
5197
|
+
statIndex: 0
|
|
5198
|
+
},
|
|
5199
|
+
{
|
|
5200
|
+
inputIndex: 5,
|
|
5201
|
+
statIndex: 2
|
|
5202
|
+
}
|
|
5203
|
+
]
|
|
5204
|
+
},
|
|
5205
|
+
{
|
|
5206
|
+
sources: [
|
|
5207
|
+
{
|
|
5208
|
+
inputIndex: 3,
|
|
5209
|
+
statIndex: 0
|
|
5210
|
+
},
|
|
5211
|
+
{
|
|
5212
|
+
inputIndex: 5,
|
|
5213
|
+
statIndex: 3
|
|
5214
|
+
}
|
|
5215
|
+
]
|
|
5216
|
+
},
|
|
5217
|
+
{
|
|
5218
|
+
sources: [
|
|
5219
|
+
{
|
|
5220
|
+
inputIndex: 4,
|
|
5221
|
+
statIndex: 0
|
|
5222
|
+
},
|
|
5223
|
+
{
|
|
5224
|
+
inputIndex: 5,
|
|
5225
|
+
statIndex: 4
|
|
5226
|
+
}
|
|
5227
|
+
]
|
|
5228
|
+
}
|
|
5229
|
+
],
|
|
5230
|
+
blendWeights: [
|
|
5231
|
+
],
|
|
5232
|
+
sourceSubclass: 10210
|
|
5233
|
+
},
|
|
5234
|
+
{
|
|
5235
|
+
outputItemId: 10214,
|
|
5236
|
+
outputMass: 2400000,
|
|
5237
|
+
inputs: [
|
|
5238
|
+
{
|
|
5239
|
+
itemId: 10005,
|
|
5240
|
+
quantity: 100
|
|
5241
|
+
},
|
|
5242
|
+
{
|
|
5243
|
+
itemId: 10002,
|
|
5244
|
+
quantity: 100
|
|
5245
|
+
},
|
|
5246
|
+
{
|
|
5247
|
+
itemId: 10010,
|
|
5248
|
+
quantity: 100
|
|
5249
|
+
},
|
|
5250
|
+
{
|
|
5251
|
+
itemId: 10009,
|
|
5252
|
+
quantity: 100
|
|
5253
|
+
},
|
|
5254
|
+
{
|
|
5255
|
+
itemId: 10004,
|
|
5256
|
+
quantity: 100
|
|
5257
|
+
},
|
|
5258
|
+
{
|
|
5259
|
+
itemId: 10210,
|
|
5260
|
+
quantity: 1
|
|
5261
|
+
}
|
|
5262
|
+
],
|
|
5263
|
+
statSlots: [
|
|
5264
|
+
{
|
|
5265
|
+
sources: [
|
|
5266
|
+
{
|
|
5267
|
+
inputIndex: 0,
|
|
5268
|
+
statIndex: 0
|
|
5269
|
+
},
|
|
5270
|
+
{
|
|
5271
|
+
inputIndex: 5,
|
|
5272
|
+
statIndex: 0
|
|
5273
|
+
}
|
|
5274
|
+
]
|
|
5275
|
+
},
|
|
5276
|
+
{
|
|
5277
|
+
sources: [
|
|
5278
|
+
{
|
|
5279
|
+
inputIndex: 1,
|
|
5280
|
+
statIndex: 0
|
|
5281
|
+
},
|
|
5282
|
+
{
|
|
5283
|
+
inputIndex: 5,
|
|
5284
|
+
statIndex: 1
|
|
5285
|
+
}
|
|
5286
|
+
]
|
|
5287
|
+
},
|
|
5288
|
+
{
|
|
5289
|
+
sources: [
|
|
5290
|
+
{
|
|
5291
|
+
inputIndex: 2,
|
|
5292
|
+
statIndex: 0
|
|
5293
|
+
},
|
|
5294
|
+
{
|
|
5295
|
+
inputIndex: 5,
|
|
5296
|
+
statIndex: 2
|
|
5297
|
+
}
|
|
5298
|
+
]
|
|
5299
|
+
},
|
|
5300
|
+
{
|
|
5301
|
+
sources: [
|
|
5302
|
+
{
|
|
5303
|
+
inputIndex: 3,
|
|
5304
|
+
statIndex: 0
|
|
5305
|
+
},
|
|
5306
|
+
{
|
|
5307
|
+
inputIndex: 5,
|
|
5308
|
+
statIndex: 3
|
|
5309
|
+
}
|
|
5310
|
+
]
|
|
5311
|
+
},
|
|
5312
|
+
{
|
|
5313
|
+
sources: [
|
|
5314
|
+
{
|
|
5315
|
+
inputIndex: 4,
|
|
5316
|
+
statIndex: 0
|
|
5317
|
+
},
|
|
5318
|
+
{
|
|
5319
|
+
inputIndex: 5,
|
|
5320
|
+
statIndex: 4
|
|
5321
|
+
}
|
|
5322
|
+
]
|
|
5323
|
+
}
|
|
5324
|
+
],
|
|
5325
|
+
blendWeights: [
|
|
5326
|
+
],
|
|
5327
|
+
sourceSubclass: 10210
|
|
5328
|
+
},
|
|
5329
|
+
{
|
|
5330
|
+
outputItemId: 10215,
|
|
5331
|
+
outputMass: 2400000,
|
|
5332
|
+
inputs: [
|
|
5333
|
+
{
|
|
5334
|
+
itemId: 10005,
|
|
5335
|
+
quantity: 100
|
|
5336
|
+
},
|
|
5337
|
+
{
|
|
5338
|
+
itemId: 10002,
|
|
5339
|
+
quantity: 100
|
|
5340
|
+
},
|
|
5341
|
+
{
|
|
5342
|
+
itemId: 10010,
|
|
5343
|
+
quantity: 100
|
|
5344
|
+
},
|
|
5345
|
+
{
|
|
5346
|
+
itemId: 10009,
|
|
5347
|
+
quantity: 100
|
|
5348
|
+
},
|
|
5349
|
+
{
|
|
5350
|
+
itemId: 10004,
|
|
5351
|
+
quantity: 100
|
|
5352
|
+
},
|
|
5353
|
+
{
|
|
5354
|
+
itemId: 10210,
|
|
5355
|
+
quantity: 1
|
|
5356
|
+
}
|
|
5357
|
+
],
|
|
5358
|
+
statSlots: [
|
|
5359
|
+
{
|
|
5360
|
+
sources: [
|
|
5361
|
+
{
|
|
5362
|
+
inputIndex: 0,
|
|
5363
|
+
statIndex: 0
|
|
5364
|
+
},
|
|
5365
|
+
{
|
|
5366
|
+
inputIndex: 5,
|
|
5367
|
+
statIndex: 0
|
|
5368
|
+
}
|
|
5369
|
+
]
|
|
5370
|
+
},
|
|
5371
|
+
{
|
|
5372
|
+
sources: [
|
|
5373
|
+
{
|
|
5374
|
+
inputIndex: 1,
|
|
5375
|
+
statIndex: 0
|
|
5376
|
+
},
|
|
5377
|
+
{
|
|
5378
|
+
inputIndex: 5,
|
|
5379
|
+
statIndex: 1
|
|
5380
|
+
}
|
|
5381
|
+
]
|
|
5382
|
+
},
|
|
5383
|
+
{
|
|
5384
|
+
sources: [
|
|
5385
|
+
{
|
|
5386
|
+
inputIndex: 2,
|
|
5387
|
+
statIndex: 0
|
|
5388
|
+
},
|
|
5389
|
+
{
|
|
5390
|
+
inputIndex: 5,
|
|
5391
|
+
statIndex: 2
|
|
5392
|
+
}
|
|
5393
|
+
]
|
|
5394
|
+
},
|
|
5395
|
+
{
|
|
5396
|
+
sources: [
|
|
5397
|
+
{
|
|
5398
|
+
inputIndex: 3,
|
|
5399
|
+
statIndex: 0
|
|
5400
|
+
},
|
|
5401
|
+
{
|
|
5402
|
+
inputIndex: 5,
|
|
5403
|
+
statIndex: 3
|
|
5404
|
+
}
|
|
5405
|
+
]
|
|
5406
|
+
},
|
|
5407
|
+
{
|
|
5408
|
+
sources: [
|
|
5409
|
+
{
|
|
5410
|
+
inputIndex: 4,
|
|
5411
|
+
statIndex: 0
|
|
5412
|
+
},
|
|
5413
|
+
{
|
|
5414
|
+
inputIndex: 5,
|
|
5415
|
+
statIndex: 4
|
|
5416
|
+
}
|
|
5417
|
+
]
|
|
5418
|
+
}
|
|
5419
|
+
],
|
|
5420
|
+
blendWeights: [
|
|
5421
|
+
],
|
|
5422
|
+
sourceSubclass: 10210
|
|
5423
|
+
},
|
|
5424
|
+
{
|
|
5425
|
+
outputItemId: 10216,
|
|
5426
|
+
outputMass: 3600000,
|
|
5427
|
+
inputs: [
|
|
5428
|
+
{
|
|
5429
|
+
itemId: 10005,
|
|
5430
|
+
quantity: 150
|
|
5431
|
+
},
|
|
5432
|
+
{
|
|
5433
|
+
itemId: 10002,
|
|
5434
|
+
quantity: 150
|
|
5435
|
+
},
|
|
5436
|
+
{
|
|
5437
|
+
itemId: 10010,
|
|
5438
|
+
quantity: 150
|
|
5439
|
+
},
|
|
5440
|
+
{
|
|
5441
|
+
itemId: 10009,
|
|
5442
|
+
quantity: 150
|
|
5443
|
+
},
|
|
5444
|
+
{
|
|
5445
|
+
itemId: 10004,
|
|
5446
|
+
quantity: 150
|
|
5447
|
+
},
|
|
5448
|
+
{
|
|
5449
|
+
itemId: 10211,
|
|
5450
|
+
quantity: 1
|
|
5451
|
+
}
|
|
5452
|
+
],
|
|
5453
|
+
statSlots: [
|
|
5454
|
+
{
|
|
5455
|
+
sources: [
|
|
5456
|
+
{
|
|
5457
|
+
inputIndex: 0,
|
|
5458
|
+
statIndex: 0
|
|
5459
|
+
},
|
|
5460
|
+
{
|
|
5461
|
+
inputIndex: 5,
|
|
5462
|
+
statIndex: 0
|
|
5463
|
+
}
|
|
5464
|
+
]
|
|
5465
|
+
},
|
|
5466
|
+
{
|
|
5467
|
+
sources: [
|
|
5468
|
+
{
|
|
5469
|
+
inputIndex: 1,
|
|
5470
|
+
statIndex: 0
|
|
5471
|
+
},
|
|
5472
|
+
{
|
|
5473
|
+
inputIndex: 5,
|
|
5474
|
+
statIndex: 1
|
|
5475
|
+
}
|
|
5476
|
+
]
|
|
5477
|
+
},
|
|
5478
|
+
{
|
|
5479
|
+
sources: [
|
|
5480
|
+
{
|
|
5481
|
+
inputIndex: 2,
|
|
5482
|
+
statIndex: 0
|
|
5483
|
+
},
|
|
5484
|
+
{
|
|
5485
|
+
inputIndex: 5,
|
|
5486
|
+
statIndex: 2
|
|
5487
|
+
}
|
|
5488
|
+
]
|
|
5489
|
+
},
|
|
5490
|
+
{
|
|
5491
|
+
sources: [
|
|
5492
|
+
{
|
|
5493
|
+
inputIndex: 3,
|
|
5494
|
+
statIndex: 0
|
|
5495
|
+
},
|
|
5496
|
+
{
|
|
5497
|
+
inputIndex: 5,
|
|
5498
|
+
statIndex: 3
|
|
5499
|
+
}
|
|
5500
|
+
]
|
|
5501
|
+
},
|
|
5502
|
+
{
|
|
5503
|
+
sources: [
|
|
5504
|
+
{
|
|
5505
|
+
inputIndex: 4,
|
|
5506
|
+
statIndex: 0
|
|
5507
|
+
},
|
|
5508
|
+
{
|
|
5509
|
+
inputIndex: 5,
|
|
5510
|
+
statIndex: 4
|
|
5511
|
+
}
|
|
5512
|
+
]
|
|
5513
|
+
}
|
|
5514
|
+
],
|
|
5515
|
+
blendWeights: [
|
|
5516
|
+
],
|
|
5517
|
+
sourceSubclass: 10211
|
|
5518
|
+
},
|
|
5519
|
+
{
|
|
5520
|
+
outputItemId: 10217,
|
|
5521
|
+
outputMass: 3600000,
|
|
5522
|
+
inputs: [
|
|
5523
|
+
{
|
|
5524
|
+
itemId: 10005,
|
|
5525
|
+
quantity: 150
|
|
5526
|
+
},
|
|
5527
|
+
{
|
|
5528
|
+
itemId: 10002,
|
|
5529
|
+
quantity: 150
|
|
5530
|
+
},
|
|
5531
|
+
{
|
|
5532
|
+
itemId: 10010,
|
|
5533
|
+
quantity: 150
|
|
5534
|
+
},
|
|
5535
|
+
{
|
|
5536
|
+
itemId: 10009,
|
|
5537
|
+
quantity: 150
|
|
5538
|
+
},
|
|
5539
|
+
{
|
|
5540
|
+
itemId: 10004,
|
|
5541
|
+
quantity: 150
|
|
5542
|
+
},
|
|
5543
|
+
{
|
|
5544
|
+
itemId: 10211,
|
|
5545
|
+
quantity: 1
|
|
5546
|
+
}
|
|
5547
|
+
],
|
|
5548
|
+
statSlots: [
|
|
5549
|
+
{
|
|
5550
|
+
sources: [
|
|
5551
|
+
{
|
|
5552
|
+
inputIndex: 0,
|
|
5553
|
+
statIndex: 0
|
|
5554
|
+
},
|
|
5555
|
+
{
|
|
5556
|
+
inputIndex: 5,
|
|
5557
|
+
statIndex: 0
|
|
5558
|
+
}
|
|
5559
|
+
]
|
|
5560
|
+
},
|
|
5561
|
+
{
|
|
5562
|
+
sources: [
|
|
5563
|
+
{
|
|
5564
|
+
inputIndex: 1,
|
|
5565
|
+
statIndex: 0
|
|
5566
|
+
},
|
|
5567
|
+
{
|
|
5568
|
+
inputIndex: 5,
|
|
5569
|
+
statIndex: 1
|
|
5570
|
+
}
|
|
5571
|
+
]
|
|
5572
|
+
},
|
|
5573
|
+
{
|
|
5574
|
+
sources: [
|
|
5575
|
+
{
|
|
5576
|
+
inputIndex: 2,
|
|
5577
|
+
statIndex: 0
|
|
5578
|
+
},
|
|
5579
|
+
{
|
|
5580
|
+
inputIndex: 5,
|
|
5581
|
+
statIndex: 2
|
|
5582
|
+
}
|
|
5583
|
+
]
|
|
5584
|
+
},
|
|
5585
|
+
{
|
|
5586
|
+
sources: [
|
|
5587
|
+
{
|
|
5588
|
+
inputIndex: 3,
|
|
5589
|
+
statIndex: 0
|
|
5590
|
+
},
|
|
5591
|
+
{
|
|
5592
|
+
inputIndex: 5,
|
|
5593
|
+
statIndex: 3
|
|
5594
|
+
}
|
|
5595
|
+
]
|
|
5596
|
+
},
|
|
5597
|
+
{
|
|
5598
|
+
sources: [
|
|
5599
|
+
{
|
|
5600
|
+
inputIndex: 4,
|
|
5601
|
+
statIndex: 0
|
|
5602
|
+
},
|
|
5603
|
+
{
|
|
5604
|
+
inputIndex: 5,
|
|
5605
|
+
statIndex: 4
|
|
5606
|
+
}
|
|
5607
|
+
]
|
|
5608
|
+
}
|
|
5609
|
+
],
|
|
5610
|
+
blendWeights: [
|
|
5611
|
+
],
|
|
5612
|
+
sourceSubclass: 10211
|
|
5613
|
+
},
|
|
5614
|
+
{
|
|
5615
|
+
outputItemId: 20001,
|
|
5616
|
+
outputMass: 4800,
|
|
5617
|
+
inputs: [
|
|
5618
|
+
{
|
|
5619
|
+
itemId: 102,
|
|
5620
|
+
quantity: 12
|
|
5621
|
+
}
|
|
5622
|
+
],
|
|
5623
|
+
statSlots: [
|
|
5624
|
+
{
|
|
5625
|
+
sources: [
|
|
5626
|
+
{
|
|
5627
|
+
inputIndex: 0,
|
|
5628
|
+
statIndex: 0
|
|
5629
|
+
}
|
|
5630
|
+
]
|
|
5631
|
+
},
|
|
5632
|
+
{
|
|
5633
|
+
sources: [
|
|
5634
|
+
{
|
|
5635
|
+
inputIndex: 0,
|
|
5636
|
+
statIndex: 2
|
|
5637
|
+
}
|
|
5638
|
+
]
|
|
5639
|
+
},
|
|
5640
|
+
{
|
|
5641
|
+
sources: [
|
|
5642
|
+
{
|
|
5643
|
+
inputIndex: 0,
|
|
5644
|
+
statIndex: 1
|
|
5645
|
+
}
|
|
5646
|
+
]
|
|
5647
|
+
}
|
|
5648
|
+
],
|
|
5649
|
+
blendWeights: [
|
|
5650
|
+
]
|
|
5651
|
+
},
|
|
5652
|
+
{
|
|
5653
|
+
outputItemId: 20002,
|
|
5654
|
+
outputMass: 4800,
|
|
5655
|
+
inputs: [
|
|
4582
5656
|
{
|
|
4583
5657
|
itemId: 402,
|
|
4584
5658
|
quantity: 6
|
|
@@ -5137,27 +6211,27 @@ var recipes = [
|
|
|
5137
6211
|
outputMass: 3840000,
|
|
5138
6212
|
inputs: [
|
|
5139
6213
|
{
|
|
5140
|
-
itemId:
|
|
5141
|
-
quantity:
|
|
6214
|
+
itemId: 20005,
|
|
6215
|
+
quantity: 150
|
|
5142
6216
|
},
|
|
5143
6217
|
{
|
|
5144
|
-
itemId:
|
|
5145
|
-
quantity:
|
|
6218
|
+
itemId: 20002,
|
|
6219
|
+
quantity: 150
|
|
5146
6220
|
},
|
|
5147
6221
|
{
|
|
5148
|
-
itemId:
|
|
5149
|
-
quantity:
|
|
6222
|
+
itemId: 20010,
|
|
6223
|
+
quantity: 150
|
|
5150
6224
|
},
|
|
5151
6225
|
{
|
|
5152
|
-
itemId:
|
|
5153
|
-
quantity:
|
|
6226
|
+
itemId: 20009,
|
|
6227
|
+
quantity: 150
|
|
5154
6228
|
},
|
|
5155
6229
|
{
|
|
5156
|
-
itemId:
|
|
5157
|
-
quantity:
|
|
6230
|
+
itemId: 20004,
|
|
6231
|
+
quantity: 150
|
|
5158
6232
|
},
|
|
5159
6233
|
{
|
|
5160
|
-
itemId:
|
|
6234
|
+
itemId: 10211,
|
|
5161
6235
|
quantity: 1
|
|
5162
6236
|
}
|
|
5163
6237
|
],
|
|
@@ -5177,8 +6251,8 @@ var recipes = [
|
|
|
5177
6251
|
{
|
|
5178
6252
|
sources: [
|
|
5179
6253
|
{
|
|
5180
|
-
inputIndex:
|
|
5181
|
-
statIndex:
|
|
6254
|
+
inputIndex: 1,
|
|
6255
|
+
statIndex: 0
|
|
5182
6256
|
},
|
|
5183
6257
|
{
|
|
5184
6258
|
inputIndex: 5,
|
|
@@ -5188,43 +6262,71 @@ var recipes = [
|
|
|
5188
6262
|
},
|
|
5189
6263
|
{
|
|
5190
6264
|
sources: [
|
|
6265
|
+
{
|
|
6266
|
+
inputIndex: 2,
|
|
6267
|
+
statIndex: 0
|
|
6268
|
+
},
|
|
6269
|
+
{
|
|
6270
|
+
inputIndex: 5,
|
|
6271
|
+
statIndex: 2
|
|
6272
|
+
}
|
|
6273
|
+
]
|
|
6274
|
+
},
|
|
6275
|
+
{
|
|
6276
|
+
sources: [
|
|
6277
|
+
{
|
|
6278
|
+
inputIndex: 3,
|
|
6279
|
+
statIndex: 0
|
|
6280
|
+
},
|
|
6281
|
+
{
|
|
6282
|
+
inputIndex: 5,
|
|
6283
|
+
statIndex: 3
|
|
6284
|
+
}
|
|
5191
6285
|
]
|
|
5192
6286
|
},
|
|
5193
6287
|
{
|
|
5194
6288
|
sources: [
|
|
6289
|
+
{
|
|
6290
|
+
inputIndex: 4,
|
|
6291
|
+
statIndex: 0
|
|
6292
|
+
},
|
|
6293
|
+
{
|
|
6294
|
+
inputIndex: 5,
|
|
6295
|
+
statIndex: 4
|
|
6296
|
+
}
|
|
5195
6297
|
]
|
|
5196
6298
|
}
|
|
5197
6299
|
],
|
|
5198
6300
|
blendWeights: [
|
|
5199
6301
|
],
|
|
5200
|
-
sourceSubclass:
|
|
6302
|
+
sourceSubclass: 10211
|
|
5201
6303
|
},
|
|
5202
6304
|
{
|
|
5203
6305
|
outputItemId: 20211,
|
|
5204
6306
|
outputMass: 3840000,
|
|
5205
6307
|
inputs: [
|
|
5206
6308
|
{
|
|
5207
|
-
itemId:
|
|
5208
|
-
quantity:
|
|
6309
|
+
itemId: 20005,
|
|
6310
|
+
quantity: 150
|
|
5209
6311
|
},
|
|
5210
6312
|
{
|
|
5211
6313
|
itemId: 20002,
|
|
5212
|
-
quantity:
|
|
6314
|
+
quantity: 150
|
|
5213
6315
|
},
|
|
5214
6316
|
{
|
|
5215
|
-
itemId:
|
|
5216
|
-
quantity:
|
|
6317
|
+
itemId: 20010,
|
|
6318
|
+
quantity: 150
|
|
5217
6319
|
},
|
|
5218
6320
|
{
|
|
5219
|
-
itemId:
|
|
5220
|
-
quantity:
|
|
6321
|
+
itemId: 20009,
|
|
6322
|
+
quantity: 150
|
|
5221
6323
|
},
|
|
5222
6324
|
{
|
|
5223
6325
|
itemId: 20004,
|
|
5224
|
-
quantity:
|
|
6326
|
+
quantity: 150
|
|
5225
6327
|
},
|
|
5226
6328
|
{
|
|
5227
|
-
itemId:
|
|
6329
|
+
itemId: 10214,
|
|
5228
6330
|
quantity: 1
|
|
5229
6331
|
}
|
|
5230
6332
|
],
|
|
@@ -5244,8 +6346,8 @@ var recipes = [
|
|
|
5244
6346
|
{
|
|
5245
6347
|
sources: [
|
|
5246
6348
|
{
|
|
5247
|
-
inputIndex:
|
|
5248
|
-
statIndex:
|
|
6349
|
+
inputIndex: 1,
|
|
6350
|
+
statIndex: 0
|
|
5249
6351
|
},
|
|
5250
6352
|
{
|
|
5251
6353
|
inputIndex: 5,
|
|
@@ -5254,141 +6356,390 @@ var recipes = [
|
|
|
5254
6356
|
]
|
|
5255
6357
|
},
|
|
5256
6358
|
{
|
|
5257
|
-
sources: [
|
|
5258
|
-
|
|
6359
|
+
sources: [
|
|
6360
|
+
{
|
|
6361
|
+
inputIndex: 2,
|
|
6362
|
+
statIndex: 0
|
|
6363
|
+
},
|
|
6364
|
+
{
|
|
6365
|
+
inputIndex: 5,
|
|
6366
|
+
statIndex: 2
|
|
6367
|
+
}
|
|
6368
|
+
]
|
|
6369
|
+
},
|
|
6370
|
+
{
|
|
6371
|
+
sources: [
|
|
6372
|
+
{
|
|
6373
|
+
inputIndex: 3,
|
|
6374
|
+
statIndex: 0
|
|
6375
|
+
},
|
|
6376
|
+
{
|
|
6377
|
+
inputIndex: 5,
|
|
6378
|
+
statIndex: 3
|
|
6379
|
+
}
|
|
6380
|
+
]
|
|
6381
|
+
},
|
|
6382
|
+
{
|
|
6383
|
+
sources: [
|
|
6384
|
+
{
|
|
6385
|
+
inputIndex: 4,
|
|
6386
|
+
statIndex: 0
|
|
6387
|
+
},
|
|
6388
|
+
{
|
|
6389
|
+
inputIndex: 5,
|
|
6390
|
+
statIndex: 4
|
|
6391
|
+
}
|
|
6392
|
+
]
|
|
6393
|
+
}
|
|
6394
|
+
],
|
|
6395
|
+
blendWeights: [
|
|
6396
|
+
],
|
|
6397
|
+
sourceSubclass: 10214
|
|
6398
|
+
}
|
|
6399
|
+
];
|
|
6400
|
+
|
|
6401
|
+
var entities = [
|
|
6402
|
+
{
|
|
6403
|
+
entityItemId: 10200,
|
|
6404
|
+
slots: [
|
|
6405
|
+
],
|
|
6406
|
+
baseHullmass: 100000
|
|
6407
|
+
},
|
|
6408
|
+
{
|
|
6409
|
+
entityItemId: 10201,
|
|
6410
|
+
slots: [
|
|
6411
|
+
{
|
|
6412
|
+
type: "any",
|
|
6413
|
+
outputPct: 80,
|
|
6414
|
+
maxTier: 1
|
|
6415
|
+
},
|
|
6416
|
+
{
|
|
6417
|
+
type: "any",
|
|
6418
|
+
outputPct: 80,
|
|
6419
|
+
maxTier: 1
|
|
6420
|
+
},
|
|
6421
|
+
{
|
|
6422
|
+
type: "any",
|
|
6423
|
+
outputPct: 80,
|
|
6424
|
+
maxTier: 1
|
|
6425
|
+
},
|
|
6426
|
+
{
|
|
6427
|
+
type: "any",
|
|
6428
|
+
outputPct: 80,
|
|
6429
|
+
maxTier: 1
|
|
6430
|
+
},
|
|
6431
|
+
{
|
|
6432
|
+
type: "any",
|
|
6433
|
+
outputPct: 80,
|
|
6434
|
+
maxTier: 1
|
|
6435
|
+
}
|
|
6436
|
+
],
|
|
6437
|
+
baseHullmass: 4000000
|
|
6438
|
+
},
|
|
6439
|
+
{
|
|
6440
|
+
entityItemId: 10202,
|
|
6441
|
+
slots: [
|
|
6442
|
+
{
|
|
6443
|
+
type: "loader",
|
|
6444
|
+
outputPct: 100,
|
|
6445
|
+
maxTier: 1
|
|
6446
|
+
},
|
|
6447
|
+
{
|
|
6448
|
+
type: "storage",
|
|
6449
|
+
outputPct: 100,
|
|
6450
|
+
maxTier: 1
|
|
6451
|
+
},
|
|
6452
|
+
{
|
|
6453
|
+
type: "storage",
|
|
6454
|
+
outputPct: 100,
|
|
6455
|
+
maxTier: 1
|
|
6456
|
+
},
|
|
6457
|
+
{
|
|
6458
|
+
type: "storage",
|
|
6459
|
+
outputPct: 100,
|
|
6460
|
+
maxTier: 1
|
|
6461
|
+
},
|
|
6462
|
+
{
|
|
6463
|
+
type: "storage",
|
|
6464
|
+
outputPct: 100,
|
|
6465
|
+
maxTier: 1
|
|
6466
|
+
}
|
|
6467
|
+
],
|
|
6468
|
+
baseHullmass: 100000
|
|
6469
|
+
},
|
|
6470
|
+
{
|
|
6471
|
+
entityItemId: 10203,
|
|
6472
|
+
slots: [
|
|
6473
|
+
{
|
|
6474
|
+
type: "generator",
|
|
6475
|
+
outputPct: 200,
|
|
6476
|
+
maxTier: 1
|
|
6477
|
+
},
|
|
6478
|
+
{
|
|
6479
|
+
type: "gatherer",
|
|
6480
|
+
outputPct: 200,
|
|
6481
|
+
maxTier: 1
|
|
6482
|
+
}
|
|
6483
|
+
],
|
|
6484
|
+
baseHullmass: 100000
|
|
6485
|
+
},
|
|
6486
|
+
{
|
|
6487
|
+
entityItemId: 10204,
|
|
6488
|
+
slots: [
|
|
6489
|
+
{
|
|
6490
|
+
type: "generator",
|
|
6491
|
+
outputPct: 200,
|
|
6492
|
+
maxTier: 1
|
|
6493
|
+
},
|
|
6494
|
+
{
|
|
6495
|
+
type: "crafter",
|
|
6496
|
+
outputPct: 200,
|
|
6497
|
+
maxTier: 1
|
|
6498
|
+
}
|
|
6499
|
+
],
|
|
6500
|
+
baseHullmass: 100000
|
|
6501
|
+
},
|
|
6502
|
+
{
|
|
6503
|
+
entityItemId: 10205,
|
|
6504
|
+
slots: [
|
|
6505
|
+
{
|
|
6506
|
+
type: "generator",
|
|
6507
|
+
outputPct: 200,
|
|
6508
|
+
maxTier: 1
|
|
6509
|
+
},
|
|
6510
|
+
{
|
|
6511
|
+
type: "launcher",
|
|
6512
|
+
outputPct: 200,
|
|
6513
|
+
maxTier: 1
|
|
6514
|
+
}
|
|
6515
|
+
],
|
|
6516
|
+
baseHullmass: 100000
|
|
6517
|
+
},
|
|
6518
|
+
{
|
|
6519
|
+
entityItemId: 10206,
|
|
6520
|
+
slots: [
|
|
6521
|
+
{
|
|
6522
|
+
type: "storage",
|
|
6523
|
+
outputPct: 100,
|
|
6524
|
+
maxTier: 1
|
|
6525
|
+
},
|
|
6526
|
+
{
|
|
6527
|
+
type: "storage",
|
|
6528
|
+
outputPct: 100,
|
|
6529
|
+
maxTier: 1
|
|
6530
|
+
},
|
|
6531
|
+
{
|
|
6532
|
+
type: "storage",
|
|
6533
|
+
outputPct: 100,
|
|
6534
|
+
maxTier: 1
|
|
6535
|
+
}
|
|
6536
|
+
],
|
|
6537
|
+
baseHullmass: 100000
|
|
6538
|
+
},
|
|
6539
|
+
{
|
|
6540
|
+
entityItemId: 10207,
|
|
6541
|
+
slots: [
|
|
6542
|
+
],
|
|
6543
|
+
baseHullmass: 100000
|
|
6544
|
+
},
|
|
6545
|
+
{
|
|
6546
|
+
entityItemId: 10208,
|
|
6547
|
+
slots: [
|
|
6548
|
+
{
|
|
6549
|
+
type: "crafter",
|
|
6550
|
+
outputPct: 75,
|
|
6551
|
+
maxTier: 1
|
|
6552
|
+
},
|
|
6553
|
+
{
|
|
6554
|
+
type: "crafter",
|
|
6555
|
+
outputPct: 75,
|
|
6556
|
+
maxTier: 1
|
|
5259
6557
|
},
|
|
5260
6558
|
{
|
|
5261
|
-
|
|
5262
|
-
|
|
6559
|
+
type: "crafter",
|
|
6560
|
+
outputPct: 75,
|
|
6561
|
+
maxTier: 1
|
|
6562
|
+
},
|
|
6563
|
+
{
|
|
6564
|
+
type: "crafter",
|
|
6565
|
+
outputPct: 75,
|
|
6566
|
+
maxTier: 1
|
|
6567
|
+
},
|
|
6568
|
+
{
|
|
6569
|
+
type: "crafter",
|
|
6570
|
+
outputPct: 75,
|
|
6571
|
+
maxTier: 1
|
|
5263
6572
|
}
|
|
5264
6573
|
],
|
|
5265
|
-
|
|
5266
|
-
],
|
|
5267
|
-
sourceSubclass: 10201
|
|
5268
|
-
}
|
|
5269
|
-
];
|
|
5270
|
-
|
|
5271
|
-
var entities = [
|
|
5272
|
-
{
|
|
5273
|
-
entityItemId: 10200,
|
|
5274
|
-
slots: [
|
|
5275
|
-
]
|
|
6574
|
+
baseHullmass: 100000
|
|
5276
6575
|
},
|
|
5277
6576
|
{
|
|
5278
|
-
entityItemId:
|
|
6577
|
+
entityItemId: 10210,
|
|
5279
6578
|
slots: [
|
|
5280
6579
|
{
|
|
5281
|
-
type: "
|
|
6580
|
+
type: "generator",
|
|
5282
6581
|
outputPct: 80,
|
|
5283
6582
|
maxTier: 1
|
|
5284
6583
|
},
|
|
5285
6584
|
{
|
|
5286
|
-
type: "
|
|
6585
|
+
type: "engine",
|
|
5287
6586
|
outputPct: 80,
|
|
5288
6587
|
maxTier: 1
|
|
5289
6588
|
},
|
|
5290
6589
|
{
|
|
5291
6590
|
type: "any",
|
|
5292
|
-
outputPct:
|
|
6591
|
+
outputPct: 60,
|
|
6592
|
+
maxTier: 1
|
|
6593
|
+
}
|
|
6594
|
+
],
|
|
6595
|
+
baseHullmass: 3200000
|
|
6596
|
+
},
|
|
6597
|
+
{
|
|
6598
|
+
entityItemId: 10211,
|
|
6599
|
+
slots: [
|
|
6600
|
+
{
|
|
6601
|
+
type: "generator",
|
|
6602
|
+
outputPct: 85,
|
|
5293
6603
|
maxTier: 1
|
|
5294
6604
|
},
|
|
5295
6605
|
{
|
|
5296
|
-
type: "
|
|
5297
|
-
outputPct:
|
|
6606
|
+
type: "engine",
|
|
6607
|
+
outputPct: 85,
|
|
5298
6608
|
maxTier: 1
|
|
5299
6609
|
},
|
|
5300
6610
|
{
|
|
5301
|
-
type: "
|
|
5302
|
-
outputPct:
|
|
6611
|
+
type: "gatherer",
|
|
6612
|
+
outputPct: 100,
|
|
5303
6613
|
maxTier: 1
|
|
5304
6614
|
}
|
|
5305
|
-
]
|
|
6615
|
+
],
|
|
6616
|
+
baseHullmass: 3600000
|
|
5306
6617
|
},
|
|
5307
6618
|
{
|
|
5308
|
-
entityItemId:
|
|
6619
|
+
entityItemId: 10212,
|
|
5309
6620
|
slots: [
|
|
5310
6621
|
{
|
|
5311
|
-
type: "
|
|
5312
|
-
outputPct:
|
|
6622
|
+
type: "generator",
|
|
6623
|
+
outputPct: 85,
|
|
5313
6624
|
maxTier: 1
|
|
5314
6625
|
},
|
|
5315
6626
|
{
|
|
5316
|
-
type: "
|
|
5317
|
-
outputPct:
|
|
6627
|
+
type: "engine",
|
|
6628
|
+
outputPct: 85,
|
|
5318
6629
|
maxTier: 1
|
|
5319
6630
|
},
|
|
5320
6631
|
{
|
|
5321
|
-
type: "
|
|
6632
|
+
type: "loader",
|
|
5322
6633
|
outputPct: 100,
|
|
5323
6634
|
maxTier: 1
|
|
6635
|
+
}
|
|
6636
|
+
],
|
|
6637
|
+
baseHullmass: 3600000
|
|
6638
|
+
},
|
|
6639
|
+
{
|
|
6640
|
+
entityItemId: 10213,
|
|
6641
|
+
slots: [
|
|
6642
|
+
{
|
|
6643
|
+
type: "generator",
|
|
6644
|
+
outputPct: 85,
|
|
6645
|
+
maxTier: 1
|
|
5324
6646
|
},
|
|
5325
6647
|
{
|
|
5326
|
-
type: "
|
|
5327
|
-
outputPct:
|
|
6648
|
+
type: "engine",
|
|
6649
|
+
outputPct: 85,
|
|
5328
6650
|
maxTier: 1
|
|
5329
6651
|
},
|
|
5330
6652
|
{
|
|
5331
|
-
type: "
|
|
6653
|
+
type: "builder",
|
|
5332
6654
|
outputPct: 100,
|
|
5333
6655
|
maxTier: 1
|
|
5334
6656
|
}
|
|
5335
|
-
]
|
|
6657
|
+
],
|
|
6658
|
+
baseHullmass: 4400000
|
|
5336
6659
|
},
|
|
5337
6660
|
{
|
|
5338
|
-
entityItemId:
|
|
6661
|
+
entityItemId: 10214,
|
|
5339
6662
|
slots: [
|
|
5340
6663
|
{
|
|
5341
6664
|
type: "generator",
|
|
5342
|
-
outputPct:
|
|
6665
|
+
outputPct: 85,
|
|
5343
6666
|
maxTier: 1
|
|
5344
6667
|
},
|
|
5345
6668
|
{
|
|
5346
|
-
type: "
|
|
5347
|
-
outputPct:
|
|
6669
|
+
type: "engine",
|
|
6670
|
+
outputPct: 85,
|
|
6671
|
+
maxTier: 1
|
|
6672
|
+
},
|
|
6673
|
+
{
|
|
6674
|
+
type: "hauler",
|
|
6675
|
+
outputPct: 100,
|
|
5348
6676
|
maxTier: 1
|
|
5349
6677
|
}
|
|
5350
|
-
]
|
|
6678
|
+
],
|
|
6679
|
+
baseHullmass: 4400000
|
|
5351
6680
|
},
|
|
5352
6681
|
{
|
|
5353
|
-
entityItemId:
|
|
6682
|
+
entityItemId: 10215,
|
|
5354
6683
|
slots: [
|
|
5355
6684
|
{
|
|
5356
6685
|
type: "generator",
|
|
5357
|
-
outputPct:
|
|
6686
|
+
outputPct: 85,
|
|
5358
6687
|
maxTier: 1
|
|
5359
6688
|
},
|
|
5360
6689
|
{
|
|
5361
|
-
type: "
|
|
5362
|
-
outputPct:
|
|
6690
|
+
type: "engine",
|
|
6691
|
+
outputPct: 85,
|
|
6692
|
+
maxTier: 1
|
|
6693
|
+
},
|
|
6694
|
+
{
|
|
6695
|
+
type: "storage",
|
|
6696
|
+
outputPct: 100,
|
|
5363
6697
|
maxTier: 1
|
|
5364
6698
|
}
|
|
5365
|
-
]
|
|
6699
|
+
],
|
|
6700
|
+
baseHullmass: 5000000
|
|
5366
6701
|
},
|
|
5367
6702
|
{
|
|
5368
|
-
entityItemId:
|
|
6703
|
+
entityItemId: 10216,
|
|
5369
6704
|
slots: [
|
|
5370
6705
|
{
|
|
5371
6706
|
type: "generator",
|
|
5372
|
-
outputPct:
|
|
6707
|
+
outputPct: 90,
|
|
5373
6708
|
maxTier: 1
|
|
5374
6709
|
},
|
|
5375
6710
|
{
|
|
5376
|
-
type: "
|
|
5377
|
-
outputPct:
|
|
6711
|
+
type: "engine",
|
|
6712
|
+
outputPct: 90,
|
|
6713
|
+
maxTier: 1
|
|
6714
|
+
},
|
|
6715
|
+
{
|
|
6716
|
+
type: "gatherer",
|
|
6717
|
+
outputPct: 100,
|
|
6718
|
+
maxTier: 1
|
|
6719
|
+
},
|
|
6720
|
+
{
|
|
6721
|
+
type: "gatherer",
|
|
6722
|
+
outputPct: 100,
|
|
5378
6723
|
maxTier: 1
|
|
5379
6724
|
}
|
|
5380
|
-
]
|
|
6725
|
+
],
|
|
6726
|
+
baseHullmass: 4000000
|
|
5381
6727
|
},
|
|
5382
6728
|
{
|
|
5383
|
-
entityItemId:
|
|
6729
|
+
entityItemId: 10217,
|
|
5384
6730
|
slots: [
|
|
5385
6731
|
{
|
|
5386
|
-
type: "
|
|
5387
|
-
outputPct:
|
|
6732
|
+
type: "generator",
|
|
6733
|
+
outputPct: 90,
|
|
5388
6734
|
maxTier: 1
|
|
5389
6735
|
},
|
|
5390
6736
|
{
|
|
5391
|
-
type: "
|
|
6737
|
+
type: "engine",
|
|
6738
|
+
outputPct: 90,
|
|
6739
|
+
maxTier: 1
|
|
6740
|
+
},
|
|
6741
|
+
{
|
|
6742
|
+
type: "gatherer",
|
|
5392
6743
|
outputPct: 100,
|
|
5393
6744
|
maxTier: 1
|
|
5394
6745
|
},
|
|
@@ -5397,23 +6748,20 @@ var entities = [
|
|
|
5397
6748
|
outputPct: 100,
|
|
5398
6749
|
maxTier: 1
|
|
5399
6750
|
}
|
|
5400
|
-
]
|
|
5401
|
-
|
|
5402
|
-
{
|
|
5403
|
-
entityItemId: 10207,
|
|
5404
|
-
slots: [
|
|
5405
|
-
]
|
|
6751
|
+
],
|
|
6752
|
+
baseHullmass: 4800000
|
|
5406
6753
|
},
|
|
5407
6754
|
{
|
|
5408
6755
|
entityItemId: 20200,
|
|
5409
6756
|
slots: [
|
|
5410
|
-
]
|
|
6757
|
+
],
|
|
6758
|
+
baseHullmass: 100000
|
|
5411
6759
|
},
|
|
5412
6760
|
{
|
|
5413
6761
|
entityItemId: 20210,
|
|
5414
6762
|
slots: [
|
|
5415
6763
|
{
|
|
5416
|
-
type: "
|
|
6764
|
+
type: "generator",
|
|
5417
6765
|
outputPct: 100,
|
|
5418
6766
|
maxTier: 2
|
|
5419
6767
|
},
|
|
@@ -5423,7 +6771,7 @@ var entities = [
|
|
|
5423
6771
|
maxTier: 2
|
|
5424
6772
|
},
|
|
5425
6773
|
{
|
|
5426
|
-
type: "
|
|
6774
|
+
type: "engine",
|
|
5427
6775
|
outputPct: 100,
|
|
5428
6776
|
maxTier: 2
|
|
5429
6777
|
},
|
|
@@ -5431,24 +6779,20 @@ var entities = [
|
|
|
5431
6779
|
type: "gatherer",
|
|
5432
6780
|
outputPct: 100,
|
|
5433
6781
|
maxTier: 2
|
|
5434
|
-
},
|
|
5435
|
-
{
|
|
5436
|
-
type: "any",
|
|
5437
|
-
outputPct: 80,
|
|
5438
|
-
maxTier: 1
|
|
5439
6782
|
}
|
|
5440
|
-
]
|
|
6783
|
+
],
|
|
6784
|
+
baseHullmass: 5760000
|
|
5441
6785
|
},
|
|
5442
6786
|
{
|
|
5443
6787
|
entityItemId: 20211,
|
|
5444
6788
|
slots: [
|
|
5445
6789
|
{
|
|
5446
|
-
type: "
|
|
6790
|
+
type: "generator",
|
|
5447
6791
|
outputPct: 100,
|
|
5448
6792
|
maxTier: 2
|
|
5449
6793
|
},
|
|
5450
6794
|
{
|
|
5451
|
-
type: "
|
|
6795
|
+
type: "engine",
|
|
5452
6796
|
outputPct: 100,
|
|
5453
6797
|
maxTier: 2
|
|
5454
6798
|
},
|
|
@@ -5462,7 +6806,8 @@ var entities = [
|
|
|
5462
6806
|
outputPct: 100,
|
|
5463
6807
|
maxTier: 2
|
|
5464
6808
|
}
|
|
5465
|
-
]
|
|
6809
|
+
],
|
|
6810
|
+
baseHullmass: 7040000
|
|
5466
6811
|
}
|
|
5467
6812
|
];
|
|
5468
6813
|
|
|
@@ -5987,6 +7332,13 @@ var items = [
|
|
|
5987
7332
|
tier: 1,
|
|
5988
7333
|
subtype: "launcher"
|
|
5989
7334
|
},
|
|
7335
|
+
{
|
|
7336
|
+
id: 10110,
|
|
7337
|
+
mass: 960000,
|
|
7338
|
+
type: "module",
|
|
7339
|
+
tier: 1,
|
|
7340
|
+
subtype: "builder"
|
|
7341
|
+
},
|
|
5990
7342
|
{
|
|
5991
7343
|
id: 10200,
|
|
5992
7344
|
mass: 1900000,
|
|
@@ -6035,6 +7387,60 @@ var items = [
|
|
|
6035
7387
|
type: "entity",
|
|
6036
7388
|
tier: 1
|
|
6037
7389
|
},
|
|
7390
|
+
{
|
|
7391
|
+
id: 10208,
|
|
7392
|
+
mass: 1900000,
|
|
7393
|
+
type: "entity",
|
|
7394
|
+
tier: 1
|
|
7395
|
+
},
|
|
7396
|
+
{
|
|
7397
|
+
id: 10210,
|
|
7398
|
+
mass: 1600000,
|
|
7399
|
+
type: "entity",
|
|
7400
|
+
tier: 1
|
|
7401
|
+
},
|
|
7402
|
+
{
|
|
7403
|
+
id: 10211,
|
|
7404
|
+
mass: 2400000,
|
|
7405
|
+
type: "entity",
|
|
7406
|
+
tier: 1
|
|
7407
|
+
},
|
|
7408
|
+
{
|
|
7409
|
+
id: 10212,
|
|
7410
|
+
mass: 2400000,
|
|
7411
|
+
type: "entity",
|
|
7412
|
+
tier: 1
|
|
7413
|
+
},
|
|
7414
|
+
{
|
|
7415
|
+
id: 10213,
|
|
7416
|
+
mass: 2400000,
|
|
7417
|
+
type: "entity",
|
|
7418
|
+
tier: 1
|
|
7419
|
+
},
|
|
7420
|
+
{
|
|
7421
|
+
id: 10214,
|
|
7422
|
+
mass: 2400000,
|
|
7423
|
+
type: "entity",
|
|
7424
|
+
tier: 1
|
|
7425
|
+
},
|
|
7426
|
+
{
|
|
7427
|
+
id: 10215,
|
|
7428
|
+
mass: 2400000,
|
|
7429
|
+
type: "entity",
|
|
7430
|
+
tier: 1
|
|
7431
|
+
},
|
|
7432
|
+
{
|
|
7433
|
+
id: 10216,
|
|
7434
|
+
mass: 3600000,
|
|
7435
|
+
type: "entity",
|
|
7436
|
+
tier: 1
|
|
7437
|
+
},
|
|
7438
|
+
{
|
|
7439
|
+
id: 10217,
|
|
7440
|
+
mass: 3600000,
|
|
7441
|
+
type: "entity",
|
|
7442
|
+
tier: 1
|
|
7443
|
+
},
|
|
6038
7444
|
{
|
|
6039
7445
|
id: 20001,
|
|
6040
7446
|
mass: 4800,
|
|
@@ -6298,7 +7704,7 @@ const itemMetadata = {
|
|
|
6298
7704
|
},
|
|
6299
7705
|
10106: {
|
|
6300
7706
|
name: 'Tractor Beam',
|
|
6301
|
-
description: 'Projects a haul beam to lock onto and transport containers
|
|
7707
|
+
description: 'Projects a haul beam to lock onto and transport containers through group travel.',
|
|
6302
7708
|
color: '#4ADBFF',
|
|
6303
7709
|
},
|
|
6304
7710
|
10107: {
|
|
@@ -6316,13 +7722,18 @@ const itemMetadata = {
|
|
|
6316
7722
|
description: 'Accelerates and launches cargo payloads toward a remote mass catcher.',
|
|
6317
7723
|
color: '#E86344',
|
|
6318
7724
|
},
|
|
7725
|
+
10110: {
|
|
7726
|
+
name: 'Assembly Arm',
|
|
7727
|
+
description: 'Heavy manipulator arms for on-site construction work. Claims build sites, builds them out, and upgrades ships in place.',
|
|
7728
|
+
color: '#FFB347',
|
|
7729
|
+
},
|
|
6319
7730
|
10200: {
|
|
6320
7731
|
name: 'Container',
|
|
6321
7732
|
description: 'Passive floating cargo storage in space. Towed by ships.',
|
|
6322
7733
|
color: '#7B8D9E',
|
|
6323
7734
|
},
|
|
6324
7735
|
10201: {
|
|
6325
|
-
name: '
|
|
7736
|
+
name: 'Ship',
|
|
6326
7737
|
description: 'General-purpose vessel with 5 module slots.',
|
|
6327
7738
|
color: '#4AE898',
|
|
6328
7739
|
},
|
|
@@ -6356,6 +7767,51 @@ const itemMetadata = {
|
|
|
6356
7767
|
description: 'Orbital command structure. Anchors a player station cluster.',
|
|
6357
7768
|
color: '#A0B8D0',
|
|
6358
7769
|
},
|
|
7770
|
+
10208: {
|
|
7771
|
+
name: 'Workshop',
|
|
7772
|
+
description: 'A station workshop with five independent workers. Visiting ships bring materials and power, and the workshop does the crafting.',
|
|
7773
|
+
color: '#B877FF',
|
|
7774
|
+
},
|
|
7775
|
+
10210: {
|
|
7776
|
+
name: 'Roustabout',
|
|
7777
|
+
description: 'A basic starter ship. One engine, one power core, and one open slot to fit as you like.',
|
|
7778
|
+
color: '#4AE898',
|
|
7779
|
+
},
|
|
7780
|
+
10211: {
|
|
7781
|
+
name: 'Prospector',
|
|
7782
|
+
description: 'A light gathering ship. One engine, one power core, one gathering rig.',
|
|
7783
|
+
color: '#4AE898',
|
|
7784
|
+
},
|
|
7785
|
+
10212: {
|
|
7786
|
+
name: 'Tender',
|
|
7787
|
+
description: 'A logistics ship with a shuttle bay for moving cargo between ships and stations.',
|
|
7788
|
+
color: '#4AE898',
|
|
7789
|
+
},
|
|
7790
|
+
10213: {
|
|
7791
|
+
name: 'Wright',
|
|
7792
|
+
description: 'A construction ship with an assembly arm for building structures and upgrading ships.',
|
|
7793
|
+
color: '#4AE898',
|
|
7794
|
+
},
|
|
7795
|
+
10214: {
|
|
7796
|
+
name: 'Tug',
|
|
7797
|
+
description: 'A logistics ship with a tractor beam for towing containers from place to place.',
|
|
7798
|
+
color: '#4AE898',
|
|
7799
|
+
},
|
|
7800
|
+
10215: {
|
|
7801
|
+
name: 'Porter',
|
|
7802
|
+
description: 'A cargo ship built around a large storage hold. The extra mass makes it slower than a Roustabout.',
|
|
7803
|
+
color: '#4AE898',
|
|
7804
|
+
},
|
|
7805
|
+
10216: {
|
|
7806
|
+
name: 'Wrangler',
|
|
7807
|
+
description: 'A heavy gathering ship with two gathering rigs, so it mines faster.',
|
|
7808
|
+
color: '#4AE898',
|
|
7809
|
+
},
|
|
7810
|
+
10217: {
|
|
7811
|
+
name: 'Dredger',
|
|
7812
|
+
description: 'A gathering ship with its own storage hold, so it can keep mining before it has to offload.',
|
|
7813
|
+
color: '#4AE898',
|
|
7814
|
+
},
|
|
6359
7815
|
20001: {
|
|
6360
7816
|
name: 'Plate',
|
|
6361
7817
|
description: 'Advanced structural plating reinforced with tier 2 ore.',
|
|
@@ -6427,13 +7883,21 @@ const itemMetadata = {
|
|
|
6427
7883
|
color: '#4AE898',
|
|
6428
7884
|
},
|
|
6429
7885
|
20211: {
|
|
6430
|
-
name: '
|
|
7886
|
+
name: 'Tug',
|
|
6431
7887
|
description: 'Advanced towing vessel with tiered engine, generator, and tractor beam slots.',
|
|
6432
7888
|
color: '#4AE898',
|
|
6433
7889
|
},
|
|
6434
7890
|
};
|
|
6435
7891
|
const entityMetadata = {
|
|
6436
7892
|
10201: { moduleSlotLabels: ['Engine', 'Power Core', 'Limpet Bay', 'Shuttle Bay', 'Cargo Hold'] },
|
|
7893
|
+
10210: { moduleSlotLabels: ['Power Core', 'Engine', 'Utility Bay'] },
|
|
7894
|
+
10211: { moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay'] },
|
|
7895
|
+
10212: { moduleSlotLabels: ['Power Core', 'Engine', 'Shuttle Bay'] },
|
|
7896
|
+
10213: { moduleSlotLabels: ['Power Core', 'Engine', 'Assembly Arm'] },
|
|
7897
|
+
10214: { moduleSlotLabels: ['Power Core', 'Engine', 'Tractor Beam'] },
|
|
7898
|
+
10215: { moduleSlotLabels: ['Power Core', 'Engine', 'Cargo Hold'] },
|
|
7899
|
+
10216: { moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay', 'Limpet Bay'] },
|
|
7900
|
+
10217: { moduleSlotLabels: ['Power Core', 'Engine', 'Limpet Bay', 'Cargo Hold'] },
|
|
6437
7901
|
10202: {
|
|
6438
7902
|
moduleSlotLabels: ['Shuttle Bay', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold', 'Cargo Hold'],
|
|
6439
7903
|
},
|
|
@@ -6441,8 +7905,11 @@ const entityMetadata = {
|
|
|
6441
7905
|
10204: { moduleSlotLabels: ['Power Core', 'Fabricator'] },
|
|
6442
7906
|
10205: { moduleSlotLabels: ['Power Core', 'Drive Coil'] },
|
|
6443
7907
|
10206: { moduleSlotLabels: ['Cargo Hold', 'Cargo Hold', 'Cargo Hold'] },
|
|
6444
|
-
|
|
6445
|
-
|
|
7908
|
+
10208: {
|
|
7909
|
+
moduleSlotLabels: ['Fabricator', 'Fabricator', 'Fabricator', 'Fabricator', 'Fabricator'],
|
|
7910
|
+
},
|
|
7911
|
+
20210: { moduleSlotLabels: ['Power Core', 'Power Core', 'Engine', 'Limpet Bay'] },
|
|
7912
|
+
20211: { moduleSlotLabels: ['Power Core', 'Engine', 'Tractor Beam', 'Tractor Beam'] },
|
|
6446
7913
|
};
|
|
6447
7914
|
for (const item of items) {
|
|
6448
7915
|
if (!itemMetadata[item.id]) {
|
|
@@ -9328,18 +10795,65 @@ var kinds = [
|
|
|
9328
10795
|
defaultLabel: "Plot"
|
|
9329
10796
|
},
|
|
9330
10797
|
{
|
|
9331
|
-
kind: "hub",
|
|
9332
|
-
classification: "OrbitalStructure",
|
|
9333
|
-
capabilityFlags: 4,
|
|
9334
|
-
zCoord: 0,
|
|
9335
|
-
defaultLabel: "Station Hub"
|
|
9336
|
-
}
|
|
9337
|
-
|
|
9338
|
-
|
|
10798
|
+
kind: "hub",
|
|
10799
|
+
classification: "OrbitalStructure",
|
|
10800
|
+
capabilityFlags: 4,
|
|
10801
|
+
zCoord: 0,
|
|
10802
|
+
defaultLabel: "Station Hub"
|
|
10803
|
+
},
|
|
10804
|
+
{
|
|
10805
|
+
kind: "workshop",
|
|
10806
|
+
classification: "OrbitalStructure",
|
|
10807
|
+
capabilityFlags: 20,
|
|
10808
|
+
zCoord: 0,
|
|
10809
|
+
defaultLabel: "Workshop"
|
|
10810
|
+
}
|
|
10811
|
+
];
|
|
10812
|
+
var templates = [
|
|
10813
|
+
{
|
|
10814
|
+
itemId: 10201,
|
|
10815
|
+
kind: "ship",
|
|
10816
|
+
displayLabel: "Ship"
|
|
10817
|
+
},
|
|
10818
|
+
{
|
|
10819
|
+
itemId: 10210,
|
|
10820
|
+
kind: "ship",
|
|
10821
|
+
displayLabel: "Roustabout"
|
|
10822
|
+
},
|
|
10823
|
+
{
|
|
10824
|
+
itemId: 10211,
|
|
10825
|
+
kind: "ship",
|
|
10826
|
+
displayLabel: "Prospector"
|
|
10827
|
+
},
|
|
10828
|
+
{
|
|
10829
|
+
itemId: 10212,
|
|
10830
|
+
kind: "ship",
|
|
10831
|
+
displayLabel: "Tender"
|
|
10832
|
+
},
|
|
10833
|
+
{
|
|
10834
|
+
itemId: 10213,
|
|
10835
|
+
kind: "ship",
|
|
10836
|
+
displayLabel: "Wright"
|
|
10837
|
+
},
|
|
10838
|
+
{
|
|
10839
|
+
itemId: 10214,
|
|
10840
|
+
kind: "ship",
|
|
10841
|
+
displayLabel: "Tug"
|
|
10842
|
+
},
|
|
10843
|
+
{
|
|
10844
|
+
itemId: 10215,
|
|
10845
|
+
kind: "ship",
|
|
10846
|
+
displayLabel: "Porter"
|
|
10847
|
+
},
|
|
9339
10848
|
{
|
|
9340
|
-
itemId:
|
|
10849
|
+
itemId: 10216,
|
|
9341
10850
|
kind: "ship",
|
|
9342
|
-
displayLabel: "
|
|
10851
|
+
displayLabel: "Wrangler"
|
|
10852
|
+
},
|
|
10853
|
+
{
|
|
10854
|
+
itemId: 10217,
|
|
10855
|
+
kind: "ship",
|
|
10856
|
+
displayLabel: "Dredger"
|
|
9343
10857
|
},
|
|
9344
10858
|
{
|
|
9345
10859
|
itemId: 10202,
|
|
@@ -9381,6 +10895,11 @@ var templates = [
|
|
|
9381
10895
|
kind: "hub",
|
|
9382
10896
|
displayLabel: ""
|
|
9383
10897
|
},
|
|
10898
|
+
{
|
|
10899
|
+
itemId: 10208,
|
|
10900
|
+
kind: "workshop",
|
|
10901
|
+
displayLabel: ""
|
|
10902
|
+
},
|
|
9384
10903
|
{
|
|
9385
10904
|
itemId: 20210,
|
|
9386
10905
|
kind: "ship",
|
|
@@ -9389,7 +10908,7 @@ var templates = [
|
|
|
9389
10908
|
{
|
|
9390
10909
|
itemId: 20211,
|
|
9391
10910
|
kind: "ship",
|
|
9392
|
-
displayLabel: "
|
|
10911
|
+
displayLabel: "Tug"
|
|
9393
10912
|
}
|
|
9394
10913
|
];
|
|
9395
10914
|
var kindRegistryJson = {
|
|
@@ -9473,6 +10992,7 @@ const ENTITY_SHIP = Name.from('ship');
|
|
|
9473
10992
|
const ENTITY_WAREHOUSE = Name.from('warehouse');
|
|
9474
10993
|
const ENTITY_EXTRACTOR = Name.from('extractor');
|
|
9475
10994
|
const ENTITY_FACTORY = Name.from('factory');
|
|
10995
|
+
const ENTITY_WORKSHOP = Name.from('workshop');
|
|
9476
10996
|
const ENTITY_CONTAINER = Name.from('container');
|
|
9477
10997
|
const ENTITY_NEXUS = Name.from('nexus');
|
|
9478
10998
|
const ENTITY_PLOT = Name.from('plot');
|
|
@@ -9491,6 +11011,9 @@ function isExtractor(entity) {
|
|
|
9491
11011
|
function isFactory(entity) {
|
|
9492
11012
|
return entity.type?.equals(ENTITY_FACTORY) ?? false;
|
|
9493
11013
|
}
|
|
11014
|
+
function isWorkshop(entity) {
|
|
11015
|
+
return entity.type?.equals(ENTITY_WORKSHOP) ?? false;
|
|
11016
|
+
}
|
|
9494
11017
|
function isContainer(entity) {
|
|
9495
11018
|
return entity.type?.equals(ENTITY_CONTAINER) ?? false;
|
|
9496
11019
|
}
|
|
@@ -9972,7 +11495,7 @@ function distanceBetweenCoordinates(origin, destination) {
|
|
|
9972
11495
|
function distanceBetweenPoints(x1, y1, x2, y2) {
|
|
9973
11496
|
const x = (x1 - x2) ** 2;
|
|
9974
11497
|
const y = (y1 - y2) ** 2;
|
|
9975
|
-
return UInt64.from(Math.sqrt(x + y) * PRECISION
|
|
11498
|
+
return UInt64.from(Math.sqrt(x + y) * PRECISION);
|
|
9976
11499
|
}
|
|
9977
11500
|
function lerp$1(origin, destination, time) {
|
|
9978
11501
|
return {
|
|
@@ -10018,9 +11541,9 @@ function getInterpolatedPosition(entity, taskIndex, taskProgress) {
|
|
|
10018
11541
|
function rotation(origin, destination) {
|
|
10019
11542
|
return Math.atan2(destination.y - origin.y, destination.x - origin.x) * (180 / Math.PI) + 90;
|
|
10020
11543
|
}
|
|
10021
|
-
function findNearbyPlanets(seed, origin, maxDistance = 20 * PRECISION
|
|
11544
|
+
function findNearbyPlanets(seed, origin, maxDistance = 20 * PRECISION) {
|
|
10022
11545
|
const nearbySystems = [];
|
|
10023
|
-
const max = UInt64.from(maxDistance / PRECISION
|
|
11546
|
+
const max = UInt64.from(maxDistance / PRECISION);
|
|
10024
11547
|
const xMin = Int64.from(origin.x).subtracting(max);
|
|
10025
11548
|
const xMax = Int64.from(origin.x).adding(max);
|
|
10026
11549
|
const yMin = Int64.from(origin.y).subtracting(max);
|
|
@@ -10046,19 +11569,28 @@ function calc_rechargetime(capacity, energy, recharge) {
|
|
|
10046
11569
|
const eng = UInt32.from(energy);
|
|
10047
11570
|
if (eng.gte(cap))
|
|
10048
11571
|
return UInt32.zero;
|
|
10049
|
-
|
|
11572
|
+
const ticks = cap.subtracting(eng).dividing(recharge);
|
|
11573
|
+
return ticks.equals(UInt32.zero) ? UInt32.from(1) : ticks;
|
|
10050
11574
|
}
|
|
10051
11575
|
function calc_ship_rechargetime(ship) {
|
|
10052
11576
|
if (!ship.generator)
|
|
10053
11577
|
return UInt32.from(0);
|
|
10054
|
-
return calc_rechargetime(ship.generator.capacity, ship.energy ??
|
|
11578
|
+
return calc_rechargetime(ship.generator.capacity, ship.energy ?? UInt32.from(0), ship.generator.recharge);
|
|
10055
11579
|
}
|
|
10056
11580
|
function calc_flighttime(distance, acceleration) {
|
|
10057
11581
|
return UInt32.from(2 * Math.sqrt(Number(distance) / acceleration));
|
|
10058
11582
|
}
|
|
11583
|
+
function calc_travel_flighttime(distance, acceleration) {
|
|
11584
|
+
const cruiseTransitionDistance = 2 * PRECISION;
|
|
11585
|
+
if (Number(distance) <= cruiseTransitionDistance) {
|
|
11586
|
+
return calc_flighttime(distance, acceleration);
|
|
11587
|
+
}
|
|
11588
|
+
const cruiseVelocity = Math.sqrt(acceleration * cruiseTransitionDistance);
|
|
11589
|
+
return UInt32.from(Number(distance) / cruiseVelocity + cruiseVelocity / acceleration);
|
|
11590
|
+
}
|
|
10059
11591
|
function calc_transit_duration(ax, ay, bx, by) {
|
|
10060
11592
|
const distance = distanceBetweenPoints(ax, ay, bx, by);
|
|
10061
|
-
return UInt32.from(Math.floor(distance.toNumber() / (PRECISION
|
|
11593
|
+
return UInt32.from(Math.floor(distance.toNumber() / (PRECISION * WH.TRANSIT_SPEED)));
|
|
10062
11594
|
}
|
|
10063
11595
|
function shipLoaderLane(ship) {
|
|
10064
11596
|
const lanes = ship.loader_lanes ?? [];
|
|
@@ -10082,14 +11614,14 @@ function calc_loader_acceleration(ship, mass) {
|
|
|
10082
11614
|
}
|
|
10083
11615
|
function calc_ship_flighttime(ship, mass, distance) {
|
|
10084
11616
|
const acceleration = calc_ship_acceleration(ship, mass);
|
|
10085
|
-
return
|
|
11617
|
+
return calc_travel_flighttime(distance, acceleration);
|
|
10086
11618
|
}
|
|
10087
11619
|
function calc_ship_acceleration(ship, mass) {
|
|
10088
11620
|
const thrust = ship.engines ? Number(ship.engines.thrust) : 0;
|
|
10089
11621
|
return calc_acceleration(thrust, Number(mass));
|
|
10090
11622
|
}
|
|
10091
11623
|
function calc_acceleration(thrust, mass) {
|
|
10092
|
-
return (thrust / mass) * PRECISION
|
|
11624
|
+
return (thrust / mass) * PRECISION;
|
|
10093
11625
|
}
|
|
10094
11626
|
function calc_ship_mass(ship, cargos) {
|
|
10095
11627
|
const mass = UInt64.from(0);
|
|
@@ -10105,8 +11637,20 @@ function calc_ship_mass(ship, cargos) {
|
|
|
10105
11637
|
}
|
|
10106
11638
|
return mass;
|
|
10107
11639
|
}
|
|
11640
|
+
function calc_group_flighttime(totalThrust, haulCount, pooledHaulCap, weightedHaulEffNum, totalMass, distance) {
|
|
11641
|
+
const avgHaulEff = pooledHaulCap > 0 ? Math.trunc(weightedHaulEffNum / pooledHaulCap) : 0;
|
|
11642
|
+
let effectiveThrust = totalThrust;
|
|
11643
|
+
if (haulCount > 0) {
|
|
11644
|
+
const penaltyMilli = 1000 +
|
|
11645
|
+
Math.trunc((haulCount * BASE_HAUL_PENALTY_MILLI$1 * (HAULER_EFFICIENCY_DENOM$1 - avgHaulEff)) /
|
|
11646
|
+
HAULER_EFFICIENCY_DENOM$1);
|
|
11647
|
+
effectiveThrust = Math.trunc((totalThrust * 1000) / penaltyMilli);
|
|
11648
|
+
}
|
|
11649
|
+
const acceleration = calc_acceleration(effectiveThrust, totalMass);
|
|
11650
|
+
return calc_travel_flighttime(distance, acceleration);
|
|
11651
|
+
}
|
|
10108
11652
|
function calc_energyusage(distance, drain) {
|
|
10109
|
-
return UInt64.from(distance).
|
|
11653
|
+
return UInt64.from(distance).multiplying(drain).dividing(PRECISION);
|
|
10110
11654
|
}
|
|
10111
11655
|
function calculateTransferTime(ship, cargos, quantities) {
|
|
10112
11656
|
let mass = UInt64.from(0);
|
|
@@ -10206,7 +11750,7 @@ function estimateDealTravelTime(ship, shipMass, distance, loadMass) {
|
|
|
10206
11750
|
function hasEnergyForDistance(ship, distance) {
|
|
10207
11751
|
if (!ship.engines)
|
|
10208
11752
|
return false;
|
|
10209
|
-
const energyNeeded = UInt64.from(distance).dividing(PRECISION
|
|
11753
|
+
const energyNeeded = UInt64.from(distance).dividing(PRECISION).multiplying(ship.engines.drain);
|
|
10210
11754
|
return UInt64.from(ship.energy ?? 0).gte(energyNeeded);
|
|
10211
11755
|
}
|
|
10212
11756
|
function toNum$1(v) {
|
|
@@ -10913,6 +12457,8 @@ function getItemStatKeys(itemId) {
|
|
|
10913
12457
|
return [];
|
|
10914
12458
|
return getStatDefinitions(item.category).map((d) => d.key);
|
|
10915
12459
|
}
|
|
12460
|
+
if (itemId === ITEM_SHIP_T1_PACKED)
|
|
12461
|
+
return ['strength', 'density', '', ''];
|
|
10916
12462
|
const recipe = getRecipe(itemId);
|
|
10917
12463
|
if (!recipe)
|
|
10918
12464
|
return [];
|
|
@@ -11723,6 +13269,7 @@ const MODULE_LAUNCHER = 7;
|
|
|
11723
13269
|
const MODULE_STORAGE = 8;
|
|
11724
13270
|
const MODULE_HAULER = 9;
|
|
11725
13271
|
const MODULE_BATTERY = 10;
|
|
13272
|
+
const MODULE_BUILDER = 12;
|
|
11726
13273
|
function moduleAccepts(slotType, moduleType) {
|
|
11727
13274
|
return slotType === MODULE_ANY || slotType === moduleType;
|
|
11728
13275
|
}
|
|
@@ -11739,6 +13286,8 @@ function getModuleCapabilityType(itemId) {
|
|
|
11739
13286
|
return MODULE_LOADER;
|
|
11740
13287
|
case ITEM_CRAFTER_T1:
|
|
11741
13288
|
return MODULE_CRAFTER;
|
|
13289
|
+
case ITEM_BUILDER_T1:
|
|
13290
|
+
return MODULE_BUILDER;
|
|
11742
13291
|
case ITEM_STORAGE_T1:
|
|
11743
13292
|
return MODULE_STORAGE;
|
|
11744
13293
|
case ITEM_HAULER_T1:
|
|
@@ -11773,6 +13322,8 @@ function moduleSlotTypeToCode(slotType) {
|
|
|
11773
13322
|
return MODULE_WARP;
|
|
11774
13323
|
case 'crafter':
|
|
11775
13324
|
return MODULE_CRAFTER;
|
|
13325
|
+
case 'builder':
|
|
13326
|
+
return MODULE_BUILDER;
|
|
11776
13327
|
case 'launcher':
|
|
11777
13328
|
return MODULE_LAUNCHER;
|
|
11778
13329
|
case 'storage':
|
|
@@ -13416,7 +14967,7 @@ const UINT32_MAX = 4294967295;
|
|
|
13416
14967
|
const UINT32_MAX_BIGINT = 4294967295n;
|
|
13417
14968
|
const UINT32_MOD = 4294967296n;
|
|
13418
14969
|
const UINT64_MAX = 18446744073709551615n;
|
|
13419
|
-
const PRECISION_BIGINT = BigInt(PRECISION
|
|
14970
|
+
const PRECISION_BIGINT = BigInt(PRECISION);
|
|
13420
14971
|
function toNumber(value) {
|
|
13421
14972
|
if (typeof value === 'number')
|
|
13422
14973
|
return Math.trunc(value);
|
|
@@ -13465,7 +15016,7 @@ function calcDistance(origin, destination) {
|
|
|
13465
15016
|
const b = Coordinates.from(destination);
|
|
13466
15017
|
const dx = toNumber(a.x) - toNumber(b.x);
|
|
13467
15018
|
const dy = toNumber(a.y) - toNumber(b.y);
|
|
13468
|
-
return BigInt(Math.trunc(Math.sqrt(dx * dx + dy * dy) * PRECISION
|
|
15019
|
+
return BigInt(Math.trunc(Math.sqrt(dx * dx + dy * dy) * PRECISION));
|
|
13469
15020
|
}
|
|
13470
15021
|
function calcCargoItemMassUint32(item) {
|
|
13471
15022
|
let mass = toUint32(BigInt(getItem(item.item_id).mass) * toUint32(toBigInt(item.quantity)));
|
|
@@ -13535,6 +15086,15 @@ class ActionsManager extends BaseManager {
|
|
|
13535
15086
|
recharge,
|
|
13536
15087
|
});
|
|
13537
15088
|
}
|
|
15089
|
+
travelplan(entities, waypoints, recharge = true) {
|
|
15090
|
+
const entityRefs = this.entityRefs(entities);
|
|
15091
|
+
const wps = waypoints.map((w) => Types.route_waypoint.from({ x: Int64.from(w.x), y: Int64.from(w.y) }));
|
|
15092
|
+
return this.server.action('travelplan', {
|
|
15093
|
+
entities: entityRefs,
|
|
15094
|
+
waypoints: wps,
|
|
15095
|
+
recharge,
|
|
15096
|
+
});
|
|
15097
|
+
}
|
|
13538
15098
|
transit(shipId, entrance, exit) {
|
|
13539
15099
|
return this.server.action('transit', {
|
|
13540
15100
|
id: UInt64.from(shipId),
|
|
@@ -13616,6 +15176,14 @@ class ActionsManager extends BaseManager {
|
|
|
13616
15176
|
items,
|
|
13617
15177
|
});
|
|
13618
15178
|
}
|
|
15179
|
+
shuttle(carrierId, fromId, toId, items) {
|
|
15180
|
+
return this.server.action('shuttle', {
|
|
15181
|
+
carrier: UInt64.from(carrierId),
|
|
15182
|
+
from_id: UInt64.from(fromId),
|
|
15183
|
+
to_id: UInt64.from(toId),
|
|
15184
|
+
items,
|
|
15185
|
+
});
|
|
15186
|
+
}
|
|
13619
15187
|
launch(launcherId, catcherId, items) {
|
|
13620
15188
|
return this.server.action('launch', {
|
|
13621
15189
|
launcher_id: UInt64.from(launcherId),
|
|
@@ -13664,26 +15232,16 @@ class ActionsManager extends BaseManager {
|
|
|
13664
15232
|
}
|
|
13665
15233
|
return this.server.action('gather', params);
|
|
13666
15234
|
}
|
|
13667
|
-
|
|
13668
|
-
|
|
13669
|
-
|
|
13670
|
-
|
|
13671
|
-
|
|
13672
|
-
|
|
13673
|
-
|
|
15235
|
+
gatherplan(sourceId, destinationId, stratum, quantity, recharge = true, slots = []) {
|
|
15236
|
+
return this.server.action('gatherplan', {
|
|
15237
|
+
source_id: UInt64.from(sourceId),
|
|
15238
|
+
destination_id: UInt64.from(destinationId),
|
|
15239
|
+
stratum: UInt16.from(stratum),
|
|
15240
|
+
quantity: UInt32.from(quantity),
|
|
15241
|
+
recharge,
|
|
15242
|
+
slots: Bytes.from(slots),
|
|
13674
15243
|
});
|
|
13675
15244
|
}
|
|
13676
|
-
flattenGatherPlan(plan, ctx) {
|
|
13677
|
-
const actions = [];
|
|
13678
|
-
for (const cycle of plan.cycles) {
|
|
13679
|
-
if (cycle.rechargeBefore)
|
|
13680
|
-
actions.push(this.recharge(ctx.sourceId));
|
|
13681
|
-
for (const limpet of cycle.limpets) {
|
|
13682
|
-
actions.push(this.gather(ctx.sourceId, ctx.destinationId, ctx.stratum, limpet.quantity, limpet.slot));
|
|
13683
|
-
}
|
|
13684
|
-
}
|
|
13685
|
-
return actions;
|
|
13686
|
-
}
|
|
13687
15245
|
warp(entityId, destination) {
|
|
13688
15246
|
const x = Int64.from(destination.x);
|
|
13689
15247
|
const y = Int64.from(destination.y);
|
|
@@ -13708,6 +15266,39 @@ class ActionsManager extends BaseManager {
|
|
|
13708
15266
|
}
|
|
13709
15267
|
return this.server.action('craft', params);
|
|
13710
15268
|
}
|
|
15269
|
+
craftjob(shipId, workshopId, slot, recipeId, quantity, inputs) {
|
|
15270
|
+
const params = {
|
|
15271
|
+
ship_id: UInt64.from(shipId),
|
|
15272
|
+
workshop_id: UInt64.from(workshopId),
|
|
15273
|
+
slot: UInt8.from(slot),
|
|
15274
|
+
recipe_id: UInt16.from(recipeId),
|
|
15275
|
+
quantity: UInt32.from(quantity),
|
|
15276
|
+
inputs,
|
|
15277
|
+
};
|
|
15278
|
+
return this.server.action('craftjob', params);
|
|
15279
|
+
}
|
|
15280
|
+
claimjob(jobId, shipId) {
|
|
15281
|
+
const params = {
|
|
15282
|
+
job_id: UInt64.from(jobId),
|
|
15283
|
+
ship_id: UInt64.from(shipId),
|
|
15284
|
+
};
|
|
15285
|
+
return this.server.action('claimjob', params);
|
|
15286
|
+
}
|
|
15287
|
+
canceljob(jobId, shipId) {
|
|
15288
|
+
const params = {
|
|
15289
|
+
job_id: UInt64.from(jobId),
|
|
15290
|
+
ship_id: UInt64.from(shipId),
|
|
15291
|
+
};
|
|
15292
|
+
return this.server.action('canceljob', params);
|
|
15293
|
+
}
|
|
15294
|
+
setsocket(workshopId, slot, open) {
|
|
15295
|
+
const params = {
|
|
15296
|
+
workshop_id: UInt64.from(workshopId),
|
|
15297
|
+
slot: UInt8.from(slot),
|
|
15298
|
+
open,
|
|
15299
|
+
};
|
|
15300
|
+
return this.server.action('setsocket', params);
|
|
15301
|
+
}
|
|
13711
15302
|
blend(entityId, inputs) {
|
|
13712
15303
|
return this.server.action('blend', {
|
|
13713
15304
|
id: UInt64.from(entityId),
|
|
@@ -14622,6 +16213,15 @@ class Shipload {
|
|
|
14622
16213
|
}
|
|
14623
16214
|
}
|
|
14624
16215
|
|
|
16216
|
+
const MODULE_STAT_SCALING_ANCHOR = 213;
|
|
16217
|
+
const MODULE_STAT_SCALING_POST_ANCHOR_PERCENT = 40;
|
|
16218
|
+
function computeEffectiveModuleStat(stat) {
|
|
16219
|
+
if (stat <= MODULE_STAT_SCALING_ANCHOR)
|
|
16220
|
+
return stat;
|
|
16221
|
+
return (MODULE_STAT_SCALING_ANCHOR +
|
|
16222
|
+
Math.floor(((stat - MODULE_STAT_SCALING_ANCHOR) * MODULE_STAT_SCALING_POST_ANCHOR_PERCENT) / 100));
|
|
16223
|
+
}
|
|
16224
|
+
|
|
14625
16225
|
const U16_MAX = 65535;
|
|
14626
16226
|
function packedModulesToInstalled(entries) {
|
|
14627
16227
|
const installed = [];
|
|
@@ -14653,13 +16253,27 @@ function getSlotAmp(layout, slotIndex) {
|
|
|
14653
16253
|
function idiv(a, b) {
|
|
14654
16254
|
return Math.floor(a / b);
|
|
14655
16255
|
}
|
|
14656
|
-
function
|
|
16256
|
+
function toWholeEnergy$1(milli) {
|
|
16257
|
+
return idiv(milli + 500, 1000);
|
|
16258
|
+
}
|
|
16259
|
+
function isShipHull$1(itemId) {
|
|
16260
|
+
return getPackedEntityType(itemId)?.equals(ENTITY_SHIP) ?? false;
|
|
16261
|
+
}
|
|
16262
|
+
function sumPackedShipChannels(stats) {
|
|
16263
|
+
let sum = 0;
|
|
16264
|
+
for (let slot = 0; slot < 5; slot++)
|
|
16265
|
+
sum += decodeStat(stats, slot);
|
|
16266
|
+
return sum;
|
|
16267
|
+
}
|
|
16268
|
+
function computeBaseHullmass$1(itemId, stats) {
|
|
16269
|
+
if (isShipHull$1(itemId)) {
|
|
16270
|
+
return Math.floor((getBaseHullmassFor(itemId) * (10000 - sumPackedShipChannels(stats))) / 10000);
|
|
16271
|
+
}
|
|
14657
16272
|
const density = decodeStat(stats, 1);
|
|
14658
|
-
return
|
|
16273
|
+
return Math.floor((getBaseHullmassFor(itemId) * (2000 - density)) / 2000);
|
|
14659
16274
|
}
|
|
14660
16275
|
function computeBaseCapacityShip(stats) {
|
|
14661
|
-
|
|
14662
|
-
return Math.floor(5000000 * 6 ** (s / 1998));
|
|
16276
|
+
return Math.floor(5000000 * 6 ** (sumPackedShipChannels(stats) / 4995));
|
|
14663
16277
|
}
|
|
14664
16278
|
function computeBaseCapacityContainer(stats) {
|
|
14665
16279
|
const s = decodeStat(stats, 0) + decodeStat(stats, 2);
|
|
@@ -14671,35 +16285,57 @@ function computeBaseCapacityWarehouse(stats) {
|
|
|
14671
16285
|
}
|
|
14672
16286
|
const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
|
|
14673
16287
|
const computeEngineDrain = (thm) => 2 * Math.max(30, 50 - idiv(thm, 70));
|
|
14674
|
-
const ENGINE_DRAIN_BASE =
|
|
16288
|
+
const ENGINE_DRAIN_BASE = 156;
|
|
14675
16289
|
const ENGINE_DRAIN_REF_THRUST = 775;
|
|
14676
16290
|
const ENGINE_DRAIN_REF_THM = 500;
|
|
14677
16291
|
const computeTravelDrain = (totalThrust, avgThm) => {
|
|
14678
16292
|
if (totalThrust <= 0)
|
|
14679
16293
|
return 0;
|
|
14680
|
-
const
|
|
14681
|
-
const
|
|
14682
|
-
return
|
|
16294
|
+
const thermalFactor = computeEngineDrain(avgThm) / computeEngineDrain(ENGINE_DRAIN_REF_THM);
|
|
16295
|
+
const thrustFactor = Math.sqrt(ENGINE_DRAIN_REF_THRUST / totalThrust);
|
|
16296
|
+
return Math.floor(ENGINE_DRAIN_BASE * 1000 * thermalFactor * thrustFactor);
|
|
14683
16297
|
};
|
|
14684
|
-
const computeGeneratorCap = (com) =>
|
|
14685
|
-
const computeGeneratorRech = (fin) =>
|
|
16298
|
+
const computeGeneratorCap = (com) => 1300000 + com * 500;
|
|
16299
|
+
const computeGeneratorRech = (fin) => 2000 + fin * 6;
|
|
14686
16300
|
const computeGathererYield = (str) => 200 + str;
|
|
14687
|
-
const computeGathererDrain = (con) => 2 * Math.max(
|
|
16301
|
+
const computeGathererDrain = (con) => 2 * Math.max(250000, 1250000 - con * 1250);
|
|
14688
16302
|
const computeGathererDepth = (tol, tier) => gathererDepthForTier(tol, tier);
|
|
14689
16303
|
const computeLoaderMass = (ins) => Math.max(200, 2000 - ins * 2);
|
|
14690
16304
|
const computeLoaderThrust = (pla) => 1 + idiv(pla * pla, 10000);
|
|
14691
16305
|
const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
|
|
14692
|
-
const computeCrafterDrain = (fin) => Math.max(
|
|
16306
|
+
const computeCrafterDrain = (fin) => Math.max(5000, 30000 - idiv(fin * 1000, 33));
|
|
16307
|
+
const computeBuilderSpeed = (coh) => 100 + idiv(coh * 4, 5);
|
|
16308
|
+
const computeBuilderDrain = (tol) => Math.max(5000, 30000 - idiv(tol * 1000, 33));
|
|
14693
16309
|
const computeHaulerCapacity = (fin, tier) => Math.max(tier, tier + idiv(fin, 400));
|
|
14694
16310
|
const computeHaulerEfficiency = (con) => 2000 + con * 6;
|
|
14695
|
-
const
|
|
16311
|
+
const supportDrainTierPercent = (tier) => {
|
|
16312
|
+
const clampedTier = Math.min(10, Math.max(1, Math.trunc(tier)));
|
|
16313
|
+
return Math.max(50, 110 - clampedTier * 10);
|
|
16314
|
+
};
|
|
16315
|
+
const computeT1LogisticsDrain = (stat) => Math.max(3000, 15000 - Math.min(12000, idiv(stat * 1000, 80)));
|
|
16316
|
+
const computeHaulerDrain = (conductivity, tier) => idiv(computeT1LogisticsDrain(conductivity) * supportDrainTierPercent(tier), 100);
|
|
16317
|
+
const computeCargoBayDrain = (cohesion, tier) => idiv(computeT1LogisticsDrain(cohesion) * 3 * supportDrainTierPercent(tier), 400);
|
|
14696
16318
|
const computeWarpRange = (stat) => 100 + stat * 3;
|
|
14697
|
-
const computeCargoBayCapacity = (strength, density, hardness
|
|
14698
|
-
const computeBatteryBankCapacity = (volatility, thermal, plasticity, insulation) =>
|
|
16319
|
+
const computeCargoBayCapacity = (strength, density, hardness) => 10000000 + idiv((strength + density + hardness) * 50000000, 2997);
|
|
16320
|
+
const computeBatteryBankCapacity = (volatility, thermal, plasticity, insulation) => 2500000 + idiv((volatility + thermal + plasticity + insulation) * 7500000, 3996);
|
|
14699
16321
|
function entityDisplayName(itemId) {
|
|
14700
16322
|
switch (itemId) {
|
|
14701
16323
|
case ITEM_SHIP_T1_PACKED:
|
|
16324
|
+
return 'Ship';
|
|
16325
|
+
case ITEM_ROUSTABOUT_T1_PACKED:
|
|
14702
16326
|
return 'Roustabout';
|
|
16327
|
+
case ITEM_PROSPECTOR_T1_PACKED:
|
|
16328
|
+
return 'Prospector';
|
|
16329
|
+
case ITEM_TENDER_T1_PACKED:
|
|
16330
|
+
return 'Tender';
|
|
16331
|
+
case ITEM_TUG_T1_PACKED:
|
|
16332
|
+
return 'Tug';
|
|
16333
|
+
case ITEM_PORTER_T1_PACKED:
|
|
16334
|
+
return 'Porter';
|
|
16335
|
+
case ITEM_WRANGLER_T1_PACKED:
|
|
16336
|
+
return 'Wrangler';
|
|
16337
|
+
case ITEM_DREDGER_T1_PACKED:
|
|
16338
|
+
return 'Dredger';
|
|
14703
16339
|
case ITEM_WAREHOUSE_T1_PACKED:
|
|
14704
16340
|
return 'Warehouse';
|
|
14705
16341
|
case ITEM_EXTRACTOR_T1_PACKED:
|
|
@@ -14713,7 +16349,7 @@ function entityDisplayName(itemId) {
|
|
|
14713
16349
|
case ITEM_PROSPECTOR_T2_PACKED:
|
|
14714
16350
|
return 'Prospector';
|
|
14715
16351
|
case ITEM_HAULER_SHIP_T2_PACKED:
|
|
14716
|
-
return '
|
|
16352
|
+
return 'Tug';
|
|
14717
16353
|
default:
|
|
14718
16354
|
return 'Entity';
|
|
14719
16355
|
}
|
|
@@ -14731,6 +16367,8 @@ function moduleDisplayName(itemId) {
|
|
|
14731
16367
|
return 'Shuttle Bay';
|
|
14732
16368
|
case ITEM_CRAFTER_T1:
|
|
14733
16369
|
return 'Fabricator';
|
|
16370
|
+
case ITEM_BUILDER_T1:
|
|
16371
|
+
return 'Assembly Arm';
|
|
14734
16372
|
case ITEM_STORAGE_T1:
|
|
14735
16373
|
return 'Cargo Hold';
|
|
14736
16374
|
case ITEM_HAULER_T1:
|
|
@@ -14756,15 +16394,15 @@ function formatModuleLine(slot, itemId, stats) {
|
|
|
14756
16394
|
const subtype = getModuleCapabilityType(itemId);
|
|
14757
16395
|
switch (subtype) {
|
|
14758
16396
|
case MODULE_ENGINE: {
|
|
14759
|
-
const vol = decodeStat(stats, 0);
|
|
14760
|
-
const thm = decodeStat(stats, 1);
|
|
16397
|
+
const vol = computeEffectiveModuleStat(decodeStat(stats, 0));
|
|
16398
|
+
const thm = computeEffectiveModuleStat(decodeStat(stats, 1));
|
|
14761
16399
|
out += ` Thrust ${computeEngineThrust(vol)} Drain ${computeEngineDrain(thm)}`;
|
|
14762
16400
|
break;
|
|
14763
16401
|
}
|
|
14764
16402
|
case MODULE_GENERATOR: {
|
|
14765
|
-
const res = decodeStat(stats, 0);
|
|
14766
|
-
const ref = decodeStat(stats, 1);
|
|
14767
|
-
out += ` Capacity ${computeGeneratorCap(res)} Recharge ${computeGeneratorRech(ref)}`;
|
|
16403
|
+
const res = computeEffectiveModuleStat(decodeStat(stats, 0));
|
|
16404
|
+
const ref = computeEffectiveModuleStat(decodeStat(stats, 1));
|
|
16405
|
+
out += ` Capacity ${toWholeEnergy$1(computeGeneratorCap(res))} Recharge ${toWholeEnergy$1(computeGeneratorRech(ref))}`;
|
|
14768
16406
|
break;
|
|
14769
16407
|
}
|
|
14770
16408
|
case MODULE_GATHERER: {
|
|
@@ -14772,7 +16410,7 @@ function formatModuleLine(slot, itemId, stats) {
|
|
|
14772
16410
|
const tol = decodeStat(stats, 1);
|
|
14773
16411
|
const con = decodeStat(stats, 2);
|
|
14774
16412
|
const tier = getItem(itemId).tier;
|
|
14775
|
-
out += ` Yield ${computeGathererYield(str)} Depth ${computeGathererDepth(tol, tier)} Drain ${computeGathererDrain(con)}`;
|
|
16413
|
+
out += ` Yield ${computeGathererYield(str)} Depth ${computeGathererDepth(tol, tier)} Drain ${toWholeEnergy$1(computeGathererDrain(con))}`;
|
|
14776
16414
|
break;
|
|
14777
16415
|
}
|
|
14778
16416
|
case MODULE_LOADER: {
|
|
@@ -14784,23 +16422,30 @@ function formatModuleLine(slot, itemId, stats) {
|
|
|
14784
16422
|
case MODULE_CRAFTER: {
|
|
14785
16423
|
const rea = decodeStat(stats, 0);
|
|
14786
16424
|
const con = decodeStat(stats, 1);
|
|
14787
|
-
out += ` Speed ${computeCrafterSpeed(rea)} Drain ${computeCrafterDrain(con)}`;
|
|
16425
|
+
out += ` Speed ${computeCrafterSpeed(rea)} Drain ${toWholeEnergy$1(computeCrafterDrain(con))}`;
|
|
16426
|
+
break;
|
|
16427
|
+
}
|
|
16428
|
+
case MODULE_BUILDER: {
|
|
16429
|
+
const coh = decodeStat(stats, 0);
|
|
16430
|
+
const tol = decodeStat(stats, 1);
|
|
16431
|
+
out += ` Speed ${computeBuilderSpeed(coh)} Drain ${toWholeEnergy$1(computeBuilderDrain(tol))}`;
|
|
14788
16432
|
break;
|
|
14789
16433
|
}
|
|
14790
16434
|
case MODULE_STORAGE: {
|
|
14791
16435
|
const str = decodeStat(stats, 0);
|
|
14792
16436
|
const den = decodeStat(stats, 1);
|
|
14793
16437
|
const hrd = decodeStat(stats, 2);
|
|
14794
|
-
const
|
|
14795
|
-
|
|
16438
|
+
const coh = decodeStat(stats, 3);
|
|
16439
|
+
const tier = getItem(itemId).tier;
|
|
16440
|
+
out += ` Cargo Capacity ${computeCargoBayCapacity(str, den, hrd)} Drain ${toWholeEnergy$1(computeCargoBayDrain(coh, tier))}`;
|
|
14796
16441
|
break;
|
|
14797
16442
|
}
|
|
14798
16443
|
case MODULE_HAULER: {
|
|
14799
16444
|
const res = decodeStat(stats, 0);
|
|
14800
16445
|
const pla = decodeStat(stats, 1);
|
|
14801
|
-
const
|
|
16446
|
+
const con = decodeStat(stats, 2);
|
|
14802
16447
|
const tier = getItem(itemId).tier;
|
|
14803
|
-
out += ` Capacity ${computeHaulerCapacity(res, tier)} Efficiency ${computeHaulerEfficiency(pla)} Drain ${
|
|
16448
|
+
out += ` Capacity ${computeHaulerCapacity(res, tier)} Efficiency ${computeHaulerEfficiency(pla)} Drain ${toWholeEnergy$1(computeHaulerDrain(con, tier))}`;
|
|
14804
16449
|
break;
|
|
14805
16450
|
}
|
|
14806
16451
|
case MODULE_WARP: {
|
|
@@ -14813,18 +16458,16 @@ function formatModuleLine(slot, itemId, stats) {
|
|
|
14813
16458
|
const thm = decodeStat(stats, 1);
|
|
14814
16459
|
const pla = decodeStat(stats, 2);
|
|
14815
16460
|
const ins = decodeStat(stats, 3);
|
|
14816
|
-
out += ` Energy Capacity ${computeBatteryBankCapacity(vol, thm, pla, ins)}`;
|
|
16461
|
+
out += ` Energy Capacity ${toWholeEnergy$1(computeBatteryBankCapacity(vol, thm, pla, ins))}`;
|
|
14817
16462
|
break;
|
|
14818
16463
|
}
|
|
14819
16464
|
}
|
|
14820
16465
|
return out;
|
|
14821
16466
|
}
|
|
14822
16467
|
function buildEntityDescription(itemId, hullStats, moduleItems, moduleStats) {
|
|
14823
|
-
const hullMass = computeBaseHullmass$1(hullStats);
|
|
16468
|
+
const hullMass = computeBaseHullmass$1(itemId, hullStats);
|
|
14824
16469
|
let baseCapacity = 0;
|
|
14825
|
-
if (itemId
|
|
14826
|
-
itemId === ITEM_PROSPECTOR_T2_PACKED ||
|
|
14827
|
-
itemId === ITEM_HAULER_SHIP_T2_PACKED) {
|
|
16470
|
+
if (isShipHull$1(itemId)) {
|
|
14828
16471
|
baseCapacity = computeBaseCapacityShip(hullStats);
|
|
14829
16472
|
}
|
|
14830
16473
|
else if (itemId === ITEM_WAREHOUSE_T1_PACKED) {
|
|
@@ -14849,31 +16492,45 @@ function buildEntityDescription(itemId, hullStats, moduleItems, moduleStats) {
|
|
|
14849
16492
|
return out;
|
|
14850
16493
|
}
|
|
14851
16494
|
|
|
14852
|
-
|
|
14853
|
-
|
|
16495
|
+
const DEFAULT_BASE_HULLMASS = 100000;
|
|
16496
|
+
function getBaseHullmassFor(itemId) {
|
|
16497
|
+
return getEntityLayout(itemId)?.baseHullmass ?? DEFAULT_BASE_HULLMASS;
|
|
14854
16498
|
}
|
|
14855
|
-
function
|
|
14856
|
-
|
|
14857
|
-
|
|
16499
|
+
function isShipHull(itemId) {
|
|
16500
|
+
return getPackedEntityType(itemId)?.equals(ENTITY_SHIP) ?? false;
|
|
16501
|
+
}
|
|
16502
|
+
function sumHullStats(stats) {
|
|
16503
|
+
return Object.values(stats).reduce((sum, value) => sum + value, 0);
|
|
16504
|
+
}
|
|
16505
|
+
function computeBaseHullmass(itemId, stats) {
|
|
16506
|
+
if (isShipHull(itemId)) {
|
|
16507
|
+
return Math.floor((getBaseHullmassFor(itemId) * (10000 - sumHullStats(stats))) / 10000);
|
|
16508
|
+
}
|
|
16509
|
+
const lightness = stats.density ?? stats.hardness ?? 0;
|
|
16510
|
+
return Math.floor((getBaseHullmassFor(itemId) * (2000 - lightness)) / 2000);
|
|
16511
|
+
}
|
|
16512
|
+
function computeShipHullCapabilities(stats, itemId = ITEM_SHIP_T1_PACKED) {
|
|
16513
|
+
const statSum = sumHullStats(stats);
|
|
16514
|
+
const exponent = statSum / 4995.0;
|
|
14858
16515
|
return {
|
|
14859
|
-
hullmass: computeBaseHullmass(stats),
|
|
16516
|
+
hullmass: computeBaseHullmass(itemId, stats),
|
|
14860
16517
|
capacity: Math.floor(5000000 * 6 ** exponent),
|
|
14861
16518
|
};
|
|
14862
16519
|
}
|
|
14863
16520
|
function computeEngineCapabilities(stats) {
|
|
14864
|
-
const vol = stats.volatility;
|
|
14865
|
-
const thm = stats.thermal;
|
|
16521
|
+
const vol = computeEffectiveModuleStat(stats.volatility);
|
|
16522
|
+
const thm = computeEffectiveModuleStat(stats.thermal);
|
|
14866
16523
|
return {
|
|
14867
16524
|
thrust: 400 + Math.floor((vol * 3) / 4),
|
|
14868
16525
|
drain: 2 * Math.max(30, 50 - Math.floor(thm / 70)),
|
|
14869
16526
|
};
|
|
14870
16527
|
}
|
|
14871
16528
|
function computeGeneratorCapabilities(stats) {
|
|
14872
|
-
const res = stats.resonance;
|
|
14873
|
-
const ref = stats.reflectivity;
|
|
16529
|
+
const res = computeEffectiveModuleStat(stats.resonance);
|
|
16530
|
+
const ref = computeEffectiveModuleStat(stats.reflectivity);
|
|
14874
16531
|
return {
|
|
14875
|
-
capacity:
|
|
14876
|
-
recharge:
|
|
16532
|
+
capacity: 1300000 + res * 500,
|
|
16533
|
+
recharge: 2000 + ref * 6,
|
|
14877
16534
|
};
|
|
14878
16535
|
}
|
|
14879
16536
|
const GATHERER_DEPTH_TABLE = [
|
|
@@ -14899,11 +16556,11 @@ function gathererDepthForTier(tol, tier) {
|
|
|
14899
16556
|
function computeGathererCapabilities(stats, tier) {
|
|
14900
16557
|
const str = stats.strength;
|
|
14901
16558
|
const con = stats.saturation;
|
|
14902
|
-
const
|
|
16559
|
+
const tol = stats.tolerance ?? stats.hardness;
|
|
14903
16560
|
return {
|
|
14904
16561
|
yield: 200 + str,
|
|
14905
|
-
drain: 2 * Math.max(
|
|
14906
|
-
depth: gathererDepthForTier(
|
|
16562
|
+
drain: 2 * Math.max(250000, 1250000 - con * 1250),
|
|
16563
|
+
depth: gathererDepthForTier(tol, tier),
|
|
14907
16564
|
};
|
|
14908
16565
|
}
|
|
14909
16566
|
function computeLoaderCapabilities(stats) {
|
|
@@ -14920,7 +16577,15 @@ function computeCrafterCapabilities(stats) {
|
|
|
14920
16577
|
const con = stats.conductivity;
|
|
14921
16578
|
return {
|
|
14922
16579
|
speed: 100 + Math.floor((fin * 4) / 5),
|
|
14923
|
-
drain: Math.max(
|
|
16580
|
+
drain: Math.max(5000, 30000 - Math.floor((con * 1000) / 33)),
|
|
16581
|
+
};
|
|
16582
|
+
}
|
|
16583
|
+
function computeBuilderCapabilities(stats) {
|
|
16584
|
+
const coh = stats.cohesion;
|
|
16585
|
+
const tol = stats.tolerance;
|
|
16586
|
+
return {
|
|
16587
|
+
speed: 100 + Math.floor((coh * 4) / 5),
|
|
16588
|
+
drain: Math.max(5000, 30000 - Math.floor((tol * 1000) / 33)),
|
|
14924
16589
|
};
|
|
14925
16590
|
}
|
|
14926
16591
|
function computeHaulerCapabilities(stats, tier) {
|
|
@@ -14930,7 +16595,7 @@ function computeHaulerCapabilities(stats, tier) {
|
|
|
14930
16595
|
return {
|
|
14931
16596
|
capacity: computeHaulerCapacity(resonance, tier),
|
|
14932
16597
|
efficiency: 2000 + plasticity * 6,
|
|
14933
|
-
drain:
|
|
16598
|
+
drain: computeHaulerDrain(conductivity, tier),
|
|
14934
16599
|
};
|
|
14935
16600
|
}
|
|
14936
16601
|
function computeLauncherCapabilities(stats, amp = 100) {
|
|
@@ -14940,13 +16605,11 @@ function computeLauncherCapabilities(stats, amp = 100) {
|
|
|
14940
16605
|
drain: stats.drain,
|
|
14941
16606
|
};
|
|
14942
16607
|
}
|
|
14943
|
-
function computeStorageCapabilities(stats) {
|
|
14944
|
-
|
|
14945
|
-
|
|
14946
|
-
|
|
14947
|
-
|
|
14948
|
-
const statSum = strength + density + hardness + cohesion;
|
|
14949
|
-
return { capacity: 10000000 + Math.floor((statSum * 50000000) / 3996) };
|
|
16608
|
+
function computeStorageCapabilities(stats, tier) {
|
|
16609
|
+
return {
|
|
16610
|
+
capacity: computeCargoBayCapacity(stats.strength ?? 0, stats.density ?? 0, stats.hardness ?? 0),
|
|
16611
|
+
drain: computeCargoBayDrain(stats.cohesion ?? 0, tier),
|
|
16612
|
+
};
|
|
14950
16613
|
}
|
|
14951
16614
|
function computeBatteryCapabilities(stats) {
|
|
14952
16615
|
const volatility = stats.volatility ?? 0;
|
|
@@ -14954,7 +16617,7 @@ function computeBatteryCapabilities(stats) {
|
|
|
14954
16617
|
const plasticity = stats.plasticity ?? 0;
|
|
14955
16618
|
const insulation = stats.insulation ?? 0;
|
|
14956
16619
|
const statSum = volatility + thermal + plasticity + insulation;
|
|
14957
|
-
return { capacity:
|
|
16620
|
+
return { capacity: 2500000 + Math.floor((statSum * 7500000) / 3996) };
|
|
14958
16621
|
}
|
|
14959
16622
|
const CAPACITY_TIER_TABLE = [1.0, 1.4, 1.8, 2.2, 2.6, 3.0, 3.4, 3.8, 4.2, 4.6];
|
|
14960
16623
|
function capacityTierMultiplier(tier) {
|
|
@@ -14966,25 +16629,25 @@ function applyCapacityTier(baseCapacity, tier) {
|
|
|
14966
16629
|
}
|
|
14967
16630
|
function computeBaseCapacity(itemId, stats) {
|
|
14968
16631
|
let base;
|
|
14969
|
-
|
|
14970
|
-
|
|
14971
|
-
|
|
14972
|
-
|
|
14973
|
-
|
|
14974
|
-
|
|
14975
|
-
|
|
14976
|
-
|
|
14977
|
-
|
|
14978
|
-
|
|
14979
|
-
|
|
14980
|
-
|
|
14981
|
-
|
|
14982
|
-
|
|
14983
|
-
|
|
14984
|
-
|
|
14985
|
-
|
|
14986
|
-
|
|
14987
|
-
|
|
16632
|
+
if (isShipHull(itemId)) {
|
|
16633
|
+
base = computeShipHullCapabilities(stats, itemId).capacity;
|
|
16634
|
+
}
|
|
16635
|
+
else {
|
|
16636
|
+
switch (itemId) {
|
|
16637
|
+
case ITEM_EXTRACTOR_T1_PACKED:
|
|
16638
|
+
case ITEM_FACTORY_T1_PACKED:
|
|
16639
|
+
case ITEM_MASS_DRIVER_T1_PACKED:
|
|
16640
|
+
case ITEM_MASS_CATCHER_T1_PACKED:
|
|
16641
|
+
case ITEM_CONTAINER_T1_PACKED:
|
|
16642
|
+
case ITEM_CONTAINER_T2_PACKED:
|
|
16643
|
+
base = computeContainerCapabilities(stats).capacity;
|
|
16644
|
+
break;
|
|
16645
|
+
case ITEM_WAREHOUSE_T1_PACKED:
|
|
16646
|
+
base = computeWarehouseHullCapabilities(stats).capacity;
|
|
16647
|
+
break;
|
|
16648
|
+
default:
|
|
16649
|
+
return 0;
|
|
16650
|
+
}
|
|
14988
16651
|
}
|
|
14989
16652
|
return applyCapacityTier(base, getItem(itemId).tier);
|
|
14990
16653
|
}
|
|
@@ -14996,7 +16659,7 @@ function computeWarehouseHullCapabilities(stats) {
|
|
|
14996
16659
|
const statSum = (stats.strength ?? 0) + (stats.hardness ?? 0);
|
|
14997
16660
|
const exponent = statSum / 1998.0;
|
|
14998
16661
|
return {
|
|
14999
|
-
hullmass: computeBaseHullmass(stats),
|
|
16662
|
+
hullmass: computeBaseHullmass(ITEM_WAREHOUSE_T1_PACKED, stats),
|
|
15000
16663
|
capacity: Math.floor(100000000 * 6 ** exponent),
|
|
15001
16664
|
};
|
|
15002
16665
|
}
|
|
@@ -15017,11 +16680,15 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15017
16680
|
let maxGathDepth = 0;
|
|
15018
16681
|
let hasGatherer = false;
|
|
15019
16682
|
let totalStorageCapacity = 0;
|
|
16683
|
+
let totalCargoHoldDrain = 0;
|
|
15020
16684
|
const baseCapacity = computeBaseCapacity(itemId, stats);
|
|
15021
16685
|
let installedModuleMass = 0;
|
|
15022
16686
|
let totalCrafterSpeed = 0;
|
|
15023
16687
|
let totalCrafterDrain = 0;
|
|
15024
16688
|
let hasCrafter = false;
|
|
16689
|
+
let totalBuilderSpeed = 0;
|
|
16690
|
+
let totalBuilderDrain = 0;
|
|
16691
|
+
let hasBuilder = false;
|
|
15025
16692
|
let totalHaulerCapacity = 0;
|
|
15026
16693
|
let weightedHaulerEffNum = 0n;
|
|
15027
16694
|
let totalHaulerDrain = 0;
|
|
@@ -15036,6 +16703,7 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15036
16703
|
let totalBatteryCapacity = 0;
|
|
15037
16704
|
const gathererLanes = [];
|
|
15038
16705
|
const crafterLanes = [];
|
|
16706
|
+
const builderLanes = [];
|
|
15039
16707
|
const loaderLanes = [];
|
|
15040
16708
|
for (const mod of modules) {
|
|
15041
16709
|
const item = getItem(mod.itemId);
|
|
@@ -15047,19 +16715,23 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15047
16715
|
hasEngine = true;
|
|
15048
16716
|
const caps = computeEngineCapabilities(decodedStats);
|
|
15049
16717
|
totalThrust += applySlotMultiplier(caps.thrust, amp);
|
|
15050
|
-
totalEngineThm += decodedStats.thermal ?? 0;
|
|
16718
|
+
totalEngineThm += computeEffectiveModuleStat(decodedStats.thermal ?? 0);
|
|
15051
16719
|
engineCount += 1;
|
|
15052
16720
|
}
|
|
15053
16721
|
else if (modType === MODULE_GENERATOR) {
|
|
15054
16722
|
hasGenerator = true;
|
|
15055
16723
|
const caps = computeGeneratorCapabilities(decodedStats);
|
|
15056
|
-
totalGenCapacity +=
|
|
15057
|
-
totalGenRecharge +=
|
|
16724
|
+
totalGenCapacity += applySlotMultiplierUint32(caps.capacity, amp);
|
|
16725
|
+
totalGenRecharge += applySlotMultiplierUint32(caps.recharge, amp);
|
|
15058
16726
|
}
|
|
15059
16727
|
else if (modType === MODULE_GATHERER) {
|
|
15060
16728
|
hasGatherer = true;
|
|
15061
16729
|
const tier = item.tier;
|
|
15062
|
-
const caps = computeGathererCapabilities(
|
|
16730
|
+
const caps = computeGathererCapabilities({
|
|
16731
|
+
strength: decodeStat(mod.stats, 0),
|
|
16732
|
+
tolerance: decodeStat(mod.stats, 1),
|
|
16733
|
+
saturation: decodeStat(mod.stats, 2),
|
|
16734
|
+
}, tier);
|
|
15063
16735
|
const scaledYield = applySlotMultiplier(caps.yield, amp);
|
|
15064
16736
|
totalGathYield += scaledYield;
|
|
15065
16737
|
totalGathDrain += caps.drain;
|
|
@@ -15087,8 +16759,9 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15087
16759
|
});
|
|
15088
16760
|
}
|
|
15089
16761
|
else if (modType === MODULE_STORAGE) {
|
|
15090
|
-
const caps = computeStorageCapabilities(decodedStats);
|
|
16762
|
+
const caps = computeStorageCapabilities(decodedStats, item.tier);
|
|
15091
16763
|
totalStorageCapacity += applySlotMultiplierUint32(caps.capacity, amp);
|
|
16764
|
+
totalCargoHoldDrain += caps.drain;
|
|
15092
16765
|
}
|
|
15093
16766
|
else if (modType === MODULE_CRAFTER) {
|
|
15094
16767
|
hasCrafter = true;
|
|
@@ -15103,6 +16776,19 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15103
16776
|
outputPct: amp,
|
|
15104
16777
|
});
|
|
15105
16778
|
}
|
|
16779
|
+
else if (modType === MODULE_BUILDER) {
|
|
16780
|
+
hasBuilder = true;
|
|
16781
|
+
const caps = computeBuilderCapabilities(decodedStats);
|
|
16782
|
+
const scaledSpeed = applySlotMultiplier(caps.speed, amp);
|
|
16783
|
+
totalBuilderSpeed += scaledSpeed;
|
|
16784
|
+
totalBuilderDrain += caps.drain;
|
|
16785
|
+
builderLanes.push({
|
|
16786
|
+
slotIndex: mod.slotIndex,
|
|
16787
|
+
speed: scaledSpeed,
|
|
16788
|
+
drain: caps.drain,
|
|
16789
|
+
outputPct: amp,
|
|
16790
|
+
});
|
|
16791
|
+
}
|
|
15106
16792
|
else if (modType === MODULE_HAULER) {
|
|
15107
16793
|
hasHauler = true;
|
|
15108
16794
|
const caps = computeHaulerCapabilities(decodedStats, item.tier);
|
|
@@ -15137,12 +16823,20 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15137
16823
|
totalGenCapacity += totalBatteryCapacity;
|
|
15138
16824
|
}
|
|
15139
16825
|
const result = {
|
|
15140
|
-
hullmass: computeBaseHullmass(stats) + installedModuleMass,
|
|
16826
|
+
hullmass: computeBaseHullmass(itemId, stats) + installedModuleMass,
|
|
15141
16827
|
capacity: clampUint32(baseCapacity + totalStorageCapacity),
|
|
15142
16828
|
};
|
|
15143
16829
|
if (hasEngine) {
|
|
15144
16830
|
const avgThm = engineCount > 0 ? Math.trunc(totalEngineThm / engineCount) : 0;
|
|
15145
|
-
|
|
16831
|
+
const engineDrain = computeTravelDrain(totalThrust, avgThm);
|
|
16832
|
+
const totalDrain = clampUint32(engineDrain + totalCargoHoldDrain + totalHaulerDrain);
|
|
16833
|
+
result.engines = { thrust: totalThrust, drain: totalDrain };
|
|
16834
|
+
result.travelDrain = {
|
|
16835
|
+
engine: engineDrain,
|
|
16836
|
+
cargoHolds: totalCargoHoldDrain,
|
|
16837
|
+
tractorBeams: totalHaulerDrain,
|
|
16838
|
+
total: totalDrain,
|
|
16839
|
+
};
|
|
15146
16840
|
}
|
|
15147
16841
|
if (hasGenerator) {
|
|
15148
16842
|
result.generator = {
|
|
@@ -15170,6 +16864,10 @@ function computeEntityCapabilities(stats, itemId, modules, layout) {
|
|
|
15170
16864
|
result.crafter = { speed: clampUint16(totalCrafterSpeed), drain: totalCrafterDrain };
|
|
15171
16865
|
result.crafterLanes = crafterLanes;
|
|
15172
16866
|
}
|
|
16867
|
+
if (hasBuilder) {
|
|
16868
|
+
result.builder = { speed: clampUint16(totalBuilderSpeed), drain: totalBuilderDrain };
|
|
16869
|
+
result.builderLanes = builderLanes;
|
|
16870
|
+
}
|
|
15173
16871
|
if (hasHauler) {
|
|
15174
16872
|
const efficiency = totalHaulerCapacity > 0 ? Number(weightedHaulerEffNum / BigInt(totalHaulerCapacity)) : 0;
|
|
15175
16873
|
result.hauler = {
|
|
@@ -15197,7 +16895,7 @@ function computeContainerCapabilities(stats) {
|
|
|
15197
16895
|
const statSum = (stats.strength ?? 0) + (stats.hardness ?? 0);
|
|
15198
16896
|
const exponent = statSum / 1998.0;
|
|
15199
16897
|
return {
|
|
15200
|
-
hullmass: computeBaseHullmass(stats),
|
|
16898
|
+
hullmass: computeBaseHullmass(ITEM_CONTAINER_T1_PACKED, stats),
|
|
15201
16899
|
capacity: Math.floor(22000000 * 6 ** exponent),
|
|
15202
16900
|
};
|
|
15203
16901
|
}
|
|
@@ -15263,7 +16961,7 @@ function makeEntity(packedItemId, state) {
|
|
|
15263
16961
|
holds: [],
|
|
15264
16962
|
};
|
|
15265
16963
|
if (state.energy !== undefined)
|
|
15266
|
-
info.energy =
|
|
16964
|
+
info.energy = UInt32.from(state.energy);
|
|
15267
16965
|
if (kind === 'container') {
|
|
15268
16966
|
info.modules = [];
|
|
15269
16967
|
if (state.hullmass !== undefined)
|
|
@@ -15323,6 +17021,12 @@ function makeEntity(packedItemId, state) {
|
|
|
15323
17021
|
drain: l.drain,
|
|
15324
17022
|
output_pct: l.outputPct,
|
|
15325
17023
|
}));
|
|
17024
|
+
info.builder_lanes = (caps.builderLanes ?? []).map((l) => Types.builder_lane.from({
|
|
17025
|
+
slot_index: l.slotIndex,
|
|
17026
|
+
speed: l.speed,
|
|
17027
|
+
drain: l.drain,
|
|
17028
|
+
output_pct: l.outputPct,
|
|
17029
|
+
}));
|
|
15326
17030
|
info.loader_lanes = (caps.loaderLanes ?? []).map((l) => Types.loader_lane.from({
|
|
15327
17031
|
slot_index: l.slotIndex,
|
|
15328
17032
|
mass: l.mass,
|
|
@@ -15334,6 +17038,8 @@ function makeEntity(packedItemId, state) {
|
|
|
15334
17038
|
info.gatherer_lanes = [];
|
|
15335
17039
|
if (!info.crafter_lanes)
|
|
15336
17040
|
info.crafter_lanes = [];
|
|
17041
|
+
if (!info.builder_lanes)
|
|
17042
|
+
info.builder_lanes = [];
|
|
15337
17043
|
if (!info.loader_lanes)
|
|
15338
17044
|
info.loader_lanes = [];
|
|
15339
17045
|
const entityInfo = Types.entity_info.from(info);
|
|
@@ -15349,7 +17055,13 @@ function calc_craft_duration(speed, totalInputMass) {
|
|
|
15349
17055
|
}
|
|
15350
17056
|
function calc_craft_energy(drain, totalInputMass) {
|
|
15351
17057
|
const raw = Math.floor((totalInputMass * drain) / CRAFT_ENERGY_DIVISOR);
|
|
15352
|
-
return UInt32.from(Math.min(Math.max(raw + 1,
|
|
17058
|
+
return UInt32.from(Math.min(Math.max(raw + 1, 1000), 4294967295));
|
|
17059
|
+
}
|
|
17060
|
+
function calc_build_duration(speed, totalInputMass) {
|
|
17061
|
+
return calc_craft_duration(speed, totalInputMass);
|
|
17062
|
+
}
|
|
17063
|
+
function calc_build_energy(drain, totalInputMass) {
|
|
17064
|
+
return calc_craft_energy(drain, totalInputMass);
|
|
15353
17065
|
}
|
|
15354
17066
|
|
|
15355
17067
|
class PlotManager extends BaseManager {
|
|
@@ -15412,7 +17124,7 @@ class PlotManager extends BaseManager {
|
|
|
15412
17124
|
recipe,
|
|
15413
17125
|
progress,
|
|
15414
17126
|
finalizeAction: Name.from('buildplot'),
|
|
15415
|
-
finalizerCapability: '
|
|
17127
|
+
finalizerCapability: 'builder',
|
|
15416
17128
|
activeTask,
|
|
15417
17129
|
scheduledBuild,
|
|
15418
17130
|
};
|
|
@@ -15460,16 +17172,16 @@ class ConstructionManager extends BaseManager {
|
|
|
15460
17172
|
continue;
|
|
15461
17173
|
if (!coordsEqual(entity.coordinates, target.coordinates))
|
|
15462
17174
|
continue;
|
|
15463
|
-
const
|
|
15464
|
-
if (
|
|
17175
|
+
const builderLanes = entity.builder_lanes ?? [];
|
|
17176
|
+
if (builderLanes.length === 0)
|
|
15465
17177
|
continue;
|
|
15466
|
-
const speed =
|
|
17178
|
+
const speed = builderLanes.reduce((s, l) => s + Number(l.speed), 0);
|
|
15467
17179
|
out.push({
|
|
15468
17180
|
entityId: entity.id,
|
|
15469
17181
|
entityType: entity.type,
|
|
15470
17182
|
name: entity.entity_name,
|
|
15471
|
-
capability: '
|
|
15472
|
-
|
|
17183
|
+
capability: 'builder',
|
|
17184
|
+
builderSpeed: speed,
|
|
15473
17185
|
estimatedDuration: this.estimateFinalizeDuration(target, speed),
|
|
15474
17186
|
});
|
|
15475
17187
|
}
|
|
@@ -15491,12 +17203,12 @@ class ConstructionManager extends BaseManager {
|
|
|
15491
17203
|
cumulativeSec += task.duration.toNumber();
|
|
15492
17204
|
if (!isPushTask(task))
|
|
15493
17205
|
continue;
|
|
15494
|
-
if (
|
|
17206
|
+
if (task.couplings.length === 0)
|
|
15495
17207
|
continue;
|
|
15496
17208
|
const projectedEndMs = startedMs + cumulativeSec * 1000;
|
|
15497
17209
|
if (projectedEndMs < nowMs)
|
|
15498
17210
|
continue;
|
|
15499
|
-
const targetIdStr = task.
|
|
17211
|
+
const targetIdStr = task.couplings[0].counterpart.entity_id.toString();
|
|
15500
17212
|
const etaSeconds = Math.max(0, Math.round((projectedEndMs - nowMs) / 1000));
|
|
15501
17213
|
let perTarget = buckets.get(targetIdStr);
|
|
15502
17214
|
if (!perTarget) {
|
|
@@ -15621,8 +17333,8 @@ class ConstructionManager extends BaseManager {
|
|
|
15621
17333
|
return [];
|
|
15622
17334
|
return reservationsOf(source);
|
|
15623
17335
|
}
|
|
15624
|
-
estimateFinalizeDuration(target,
|
|
15625
|
-
return
|
|
17336
|
+
estimateFinalizeDuration(target, builderSpeed) {
|
|
17337
|
+
return calc_build_duration(builderSpeed, target.progress.massRequired);
|
|
15626
17338
|
}
|
|
15627
17339
|
static isConstructionKind(kind) {
|
|
15628
17340
|
return CONSTRUCTION_KINDS.has(kind);
|
|
@@ -15715,18 +17427,18 @@ function isPushTask(task) {
|
|
|
15715
17427
|
}
|
|
15716
17428
|
function isBuildOfPlot(task, plotId) {
|
|
15717
17429
|
return (task.type.toNumber() === TaskType.BUILDPLOT &&
|
|
15718
|
-
task.
|
|
15719
|
-
task.
|
|
17430
|
+
task.couplings.length > 0 &&
|
|
17431
|
+
task.couplings[0].counterpart.entity_id.equals(plotId));
|
|
15720
17432
|
}
|
|
15721
17433
|
function reservationsOf(source) {
|
|
15722
17434
|
const out = new Map();
|
|
15723
17435
|
for (const task of getTasks(source)) {
|
|
15724
17436
|
if (!isPushTask(task))
|
|
15725
17437
|
continue;
|
|
15726
|
-
if (
|
|
17438
|
+
if (task.couplings.length === 0)
|
|
15727
17439
|
continue;
|
|
15728
|
-
const targetType = task.
|
|
15729
|
-
const targetId = task.
|
|
17440
|
+
const targetType = task.couplings[0].counterpart.entity_type;
|
|
17441
|
+
const targetId = task.couplings[0].counterpart.entity_id;
|
|
15730
17442
|
for (const c of task.cargo) {
|
|
15731
17443
|
const itemId = c.item_id.toNumber();
|
|
15732
17444
|
const quantity = c.quantity.toNumber();
|
|
@@ -15815,11 +17527,23 @@ function planRoute(params) {
|
|
|
15815
17527
|
return { ok: false, reason: 'empty-destination' };
|
|
15816
17528
|
}
|
|
15817
17529
|
const straightLine = dist(origin, dest);
|
|
15818
|
-
|
|
17530
|
+
if (straightLine <= perLegReach) {
|
|
17531
|
+
const directCost = params.legCost?.({
|
|
17532
|
+
from: origin,
|
|
17533
|
+
to: dest,
|
|
17534
|
+
distance: straightLine,
|
|
17535
|
+
isDestination: true,
|
|
17536
|
+
});
|
|
17537
|
+
if (directCost !== null) {
|
|
17538
|
+
return { ok: true, waypoints: [dest], legs: 1, totalDistance: straightLine };
|
|
17539
|
+
}
|
|
17540
|
+
}
|
|
17541
|
+
const heuristic = (c) => params.heuristicCost?.(c, dest) ??
|
|
17542
|
+
(params.legCost ? 0 : Math.ceil(dist(c, dest) / perLegReach));
|
|
15819
17543
|
const gScore = new Map([[key(origin), 0]]);
|
|
15820
17544
|
const cameFrom = new Map();
|
|
15821
17545
|
const frontier = [
|
|
15822
|
-
{ coord: origin,
|
|
17546
|
+
{ coord: origin, legs: 0, cost: 0, f: heuristic(origin), remaining: straightLine },
|
|
15823
17547
|
];
|
|
15824
17548
|
let furthest = origin;
|
|
15825
17549
|
let furthestRemaining = dist(origin, dest);
|
|
@@ -15835,6 +17559,8 @@ function planRoute(params) {
|
|
|
15835
17559
|
}
|
|
15836
17560
|
}
|
|
15837
17561
|
const current = frontier.splice(bestIdx, 1)[0];
|
|
17562
|
+
if (current.cost !== gScore.get(key(current.coord)))
|
|
17563
|
+
continue;
|
|
15838
17564
|
if (sameCoord(current.coord, dest)) {
|
|
15839
17565
|
return reconstruct(cameFrom, origin, dest);
|
|
15840
17566
|
}
|
|
@@ -15848,20 +17574,33 @@ function planRoute(params) {
|
|
|
15848
17574
|
const inCorridor = dist(origin, n.coord) + dist(n.coord, dest) <= straightLine + corridorSlack;
|
|
15849
17575
|
if (!inCorridor)
|
|
15850
17576
|
continue;
|
|
15851
|
-
const
|
|
15852
|
-
if (
|
|
17577
|
+
const tentativeLegs = current.legs + 1;
|
|
17578
|
+
if (tentativeLegs > maxLegs) {
|
|
15853
17579
|
cappedByMaxLegs = true;
|
|
15854
17580
|
continue;
|
|
15855
17581
|
}
|
|
17582
|
+
const evaluatedCost = params.legCost?.({
|
|
17583
|
+
from: current.coord,
|
|
17584
|
+
to: n.coord,
|
|
17585
|
+
distance: n.dist,
|
|
17586
|
+
isDestination: sameCoord(n.coord, dest),
|
|
17587
|
+
});
|
|
17588
|
+
if (evaluatedCost === null)
|
|
17589
|
+
continue;
|
|
17590
|
+
const legCost = evaluatedCost ?? 1;
|
|
17591
|
+
if (!(legCost >= 0) || !Number.isFinite(legCost))
|
|
17592
|
+
continue;
|
|
15856
17593
|
const nk = key(n.coord);
|
|
15857
|
-
|
|
15858
|
-
|
|
17594
|
+
const nextCost = current.cost + legCost;
|
|
17595
|
+
if (nextCost < (gScore.get(nk) ?? Infinity)) {
|
|
17596
|
+
gScore.set(nk, nextCost);
|
|
15859
17597
|
cameFrom.set(nk, current.coord);
|
|
15860
17598
|
const remaining = dist(n.coord, dest);
|
|
15861
17599
|
frontier.push({
|
|
15862
17600
|
coord: n.coord,
|
|
15863
|
-
|
|
15864
|
-
|
|
17601
|
+
legs: tentativeLegs,
|
|
17602
|
+
cost: nextCost,
|
|
17603
|
+
f: nextCost + heuristic(n.coord),
|
|
15865
17604
|
remaining,
|
|
15866
17605
|
});
|
|
15867
17606
|
}
|
|
@@ -15911,47 +17650,22 @@ function reconstruct(cameFrom, origin, dest) {
|
|
|
15911
17650
|
const waypoints = path.slice(1);
|
|
15912
17651
|
return { ok: true, waypoints, legs: waypoints.length, totalDistance };
|
|
15913
17652
|
}
|
|
15914
|
-
|
|
15915
|
-
|
|
15916
|
-
function setScanProvider(provider) {
|
|
15917
|
-
scanProvider = provider;
|
|
15918
|
-
graphCache.clear();
|
|
15919
|
-
}
|
|
15920
|
-
function sdkSystemGraph(seed) {
|
|
17653
|
+
const graphCache = new WeakMap();
|
|
17654
|
+
function sdkSystemGraph(seed, scan) {
|
|
15921
17655
|
const s = Checksum256.from(seed);
|
|
15922
17656
|
const seedHex = s.toString();
|
|
15923
|
-
|
|
17657
|
+
let bySeed = graphCache.get(scan);
|
|
17658
|
+
if (!bySeed) {
|
|
17659
|
+
bySeed = new Map();
|
|
17660
|
+
graphCache.set(scan, bySeed);
|
|
17661
|
+
}
|
|
17662
|
+
const cached = bySeed.get(seedHex);
|
|
15924
17663
|
if (cached)
|
|
15925
17664
|
return cached;
|
|
15926
|
-
const graph =
|
|
15927
|
-
|
|
17665
|
+
const graph = wasmSystemGraph(s, seedHex, scan);
|
|
17666
|
+
bySeed.set(seedHex, graph);
|
|
15928
17667
|
return graph;
|
|
15929
17668
|
}
|
|
15930
|
-
function jsSystemGraph(s) {
|
|
15931
|
-
return {
|
|
15932
|
-
hasSystem: (c) => hasSystem(s, { x: c.x, y: c.y }) || wormholeAt(s, c.x, c.y) !== null,
|
|
15933
|
-
nearby: (c, reachTiles) => {
|
|
15934
|
-
const seen = new Set([`${c.x},${c.y}`]);
|
|
15935
|
-
const out = [];
|
|
15936
|
-
for (const d of findNearbyPlanets(s, { x: c.x, y: c.y }, reachTiles * PRECISION$1)) {
|
|
15937
|
-
const coord = { x: Number(d.destination.x), y: Number(d.destination.y) };
|
|
15938
|
-
const k = `${coord.x},${coord.y}`;
|
|
15939
|
-
if (seen.has(k))
|
|
15940
|
-
continue;
|
|
15941
|
-
seen.add(k);
|
|
15942
|
-
out.push({ coord, dist: Number(d.distance) / PRECISION$1 });
|
|
15943
|
-
}
|
|
15944
|
-
for (const coord of nearbyWormholes(s, c.x, c.y, reachTiles)) {
|
|
15945
|
-
const k = `${coord.x},${coord.y}`;
|
|
15946
|
-
if (seen.has(k))
|
|
15947
|
-
continue;
|
|
15948
|
-
seen.add(k);
|
|
15949
|
-
out.push({ coord, dist: Math.hypot(coord.x - c.x, coord.y - c.y) });
|
|
15950
|
-
}
|
|
15951
|
-
return out;
|
|
15952
|
-
},
|
|
15953
|
-
};
|
|
15954
|
-
}
|
|
15955
17669
|
const SCAN_BUCKET = 48;
|
|
15956
17670
|
function wasmSystemGraph(s, seedHex, scan) {
|
|
15957
17671
|
const bucketCache = new Map();
|
|
@@ -16004,21 +17718,120 @@ function wasmSystemGraph(s, seedHex, scan) {
|
|
|
16004
17718
|
};
|
|
16005
17719
|
}
|
|
16006
17720
|
|
|
16007
|
-
function computePerLegReach(s
|
|
17721
|
+
function computePerLegReach(s) {
|
|
16008
17722
|
const capacity = s.generator?.capacity;
|
|
16009
17723
|
const drain = s.engines?.drain;
|
|
16010
17724
|
if (capacity === undefined || drain === undefined || drain === 0n) {
|
|
16011
17725
|
throw new Error('entity has no usable engine/generator (cannot compute per-leg reach)');
|
|
16012
17726
|
}
|
|
16013
|
-
|
|
16014
|
-
return Number(capacity) / Number(drain + haulDrain);
|
|
17727
|
+
return Number(capacity) / Number(drain);
|
|
16015
17728
|
}
|
|
16016
|
-
function computeGroupPerLegReach(participants
|
|
17729
|
+
function computeGroupPerLegReach(participants) {
|
|
16017
17730
|
const movers = participants.filter((p) => p.engines !== undefined && p.engines.drain !== 0n);
|
|
16018
17731
|
if (movers.length === 0) {
|
|
16019
17732
|
throw new Error('group has no moving entity (cannot compute per-leg reach)');
|
|
16020
17733
|
}
|
|
16021
|
-
return Math.min(...movers.map(
|
|
17734
|
+
return Math.min(...movers.map(computePerLegReach));
|
|
17735
|
+
}
|
|
17736
|
+
|
|
17737
|
+
function simulateRoute(movers, waypoints, origin, recharge) {
|
|
17738
|
+
const totalThrust = movers
|
|
17739
|
+
.filter((m) => m.hasMovement && m.engines)
|
|
17740
|
+
.reduce((sum, m) => sum + m.engines.thrust, 0);
|
|
17741
|
+
const totalMass = movers.reduce((sum, m) => sum + m.mass, 0);
|
|
17742
|
+
const haulCount = movers.filter((m) => !m.hasMovement).length;
|
|
17743
|
+
const pooledHaulCap = movers
|
|
17744
|
+
.filter((m) => m.hasMovement && m.hauler)
|
|
17745
|
+
.reduce((sum, m) => sum + m.hauler.capacity, 0);
|
|
17746
|
+
const weightedHaulEffNum = movers
|
|
17747
|
+
.filter((m) => m.hasMovement && m.hauler)
|
|
17748
|
+
.reduce((sum, m) => sum + m.hauler.efficiency * m.hauler.capacity, 0);
|
|
17749
|
+
const energyByMover = new Map(movers.map((m) => [String(m.ref.entityId), m.energy]));
|
|
17750
|
+
let reachable = true;
|
|
17751
|
+
const legs = [];
|
|
17752
|
+
const mobilityBarrier = movers
|
|
17753
|
+
.filter((m) => m.hasMovement)
|
|
17754
|
+
.reduce((mx, m) => Math.max(mx, m.priorMobilityEnd, m.narrowBarrierEnd), 0);
|
|
17755
|
+
const rechargeFloor = movers
|
|
17756
|
+
.filter((m) => m.hasMovement && m.generator)
|
|
17757
|
+
.reduce((mx, m) => Math.max(mx, m.allLanesEnd ?? 0), 0);
|
|
17758
|
+
let clock = 0;
|
|
17759
|
+
let from = origin;
|
|
17760
|
+
for (const to of waypoints) {
|
|
17761
|
+
const distance = distanceBetweenPoints(from.x, from.y, to.x, to.y);
|
|
17762
|
+
const distanceNum = Number(distance);
|
|
17763
|
+
const distanceCells = distanceNum / PRECISION;
|
|
17764
|
+
const energyCostByMover = {};
|
|
17765
|
+
for (const m of movers) {
|
|
17766
|
+
if (!m.hasMovement || !m.engines)
|
|
17767
|
+
continue;
|
|
17768
|
+
const key = String(m.ref.entityId);
|
|
17769
|
+
energyCostByMover[key] = Number(calc_energyusage(distance, m.engines.drain));
|
|
17770
|
+
}
|
|
17771
|
+
let rechargeBefore = false;
|
|
17772
|
+
let rechargeSeconds = 0;
|
|
17773
|
+
if (recharge) {
|
|
17774
|
+
let maxDur = 0;
|
|
17775
|
+
for (const m of movers) {
|
|
17776
|
+
if (!m.hasMovement || !m.generator)
|
|
17777
|
+
continue;
|
|
17778
|
+
const key = String(m.ref.entityId);
|
|
17779
|
+
const curEnergy = energyByMover.get(key) ?? 0;
|
|
17780
|
+
const dur = Number(calc_rechargetime(m.generator.capacity, curEnergy, m.generator.recharge));
|
|
17781
|
+
if (dur > maxDur)
|
|
17782
|
+
maxDur = dur;
|
|
17783
|
+
}
|
|
17784
|
+
rechargeSeconds = maxDur;
|
|
17785
|
+
rechargeBefore = rechargeSeconds > 0;
|
|
17786
|
+
if (rechargeBefore) {
|
|
17787
|
+
for (const m of movers) {
|
|
17788
|
+
if (!m.hasMovement || !m.generator)
|
|
17789
|
+
continue;
|
|
17790
|
+
const key = String(m.ref.entityId);
|
|
17791
|
+
energyByMover.set(key, m.generator.capacity);
|
|
17792
|
+
}
|
|
17793
|
+
clock = Math.max(clock, rechargeFloor) + rechargeSeconds;
|
|
17794
|
+
}
|
|
17795
|
+
}
|
|
17796
|
+
for (const m of movers) {
|
|
17797
|
+
if (!m.hasMovement || !m.engines)
|
|
17798
|
+
continue;
|
|
17799
|
+
const key = String(m.ref.entityId);
|
|
17800
|
+
const cost = energyCostByMover[key] ?? 0;
|
|
17801
|
+
const curEnergy = energyByMover.get(key) ?? 0;
|
|
17802
|
+
if (recharge && m.generator) {
|
|
17803
|
+
if (cost > m.generator.capacity)
|
|
17804
|
+
reachable = false;
|
|
17805
|
+
}
|
|
17806
|
+
else {
|
|
17807
|
+
if (cost > curEnergy)
|
|
17808
|
+
reachable = false;
|
|
17809
|
+
}
|
|
17810
|
+
}
|
|
17811
|
+
const flightSeconds = Number(calc_group_flighttime(totalThrust, haulCount, pooledHaulCap, weightedHaulEffNum, totalMass, distance));
|
|
17812
|
+
if (flightSeconds > TRAVEL_MAX_DURATION)
|
|
17813
|
+
reachable = false;
|
|
17814
|
+
for (const m of movers) {
|
|
17815
|
+
if (!m.hasMovement || !m.engines)
|
|
17816
|
+
continue;
|
|
17817
|
+
const key = String(m.ref.entityId);
|
|
17818
|
+
const cost = energyCostByMover[key] ?? 0;
|
|
17819
|
+
const curEnergy = energyByMover.get(key) ?? 0;
|
|
17820
|
+
energyByMover.set(key, Math.max(0, curEnergy - cost));
|
|
17821
|
+
}
|
|
17822
|
+
clock = Math.max(clock, mobilityBarrier) + flightSeconds;
|
|
17823
|
+
legs.push({
|
|
17824
|
+
from,
|
|
17825
|
+
to,
|
|
17826
|
+
distanceCells,
|
|
17827
|
+
energyCostByMover,
|
|
17828
|
+
rechargeBefore,
|
|
17829
|
+
rechargeSeconds,
|
|
17830
|
+
flightSeconds,
|
|
17831
|
+
});
|
|
17832
|
+
from = to;
|
|
17833
|
+
}
|
|
17834
|
+
return { legs, totalSeconds: clock, reachable };
|
|
16022
17835
|
}
|
|
16023
17836
|
|
|
16024
17837
|
function laneKeyForModule(slotIndex) {
|
|
@@ -16074,6 +17887,23 @@ function resolveLaneCrafter(modules, entityItemId, laneKey) {
|
|
|
16074
17887
|
const drain = computeCrafterDrain(fin);
|
|
16075
17888
|
return { slotIndex: idx, speed, drain, outputPct: amp };
|
|
16076
17889
|
}
|
|
17890
|
+
function resolveLaneBuilder(modules, entityItemId, laneKey) {
|
|
17891
|
+
const idx = laneKey - 1;
|
|
17892
|
+
const installed = idx >= 0 && idx < modules.length ? modules[idx].installed : undefined;
|
|
17893
|
+
if (!installed)
|
|
17894
|
+
throw new Error('builder lane has no module');
|
|
17895
|
+
const item = getItem(Number(installed.item_id.value ?? installed.item_id));
|
|
17896
|
+
if (item.moduleType !== 'builder')
|
|
17897
|
+
throw new Error('lane module is not a builder');
|
|
17898
|
+
const stats = BigInt(installed.stats.toString());
|
|
17899
|
+
const coh = decodeStat(stats, 0);
|
|
17900
|
+
const tol = decodeStat(stats, 1);
|
|
17901
|
+
const layout = getEntityLayout(entityItemId)?.slots ?? [];
|
|
17902
|
+
const amp = getSlotAmp(layout, idx);
|
|
17903
|
+
const speed = applySlotMultiplier(computeBuilderSpeed(coh), amp);
|
|
17904
|
+
const drain = computeBuilderDrain(tol);
|
|
17905
|
+
return { slotIndex: idx, speed, drain, outputPct: amp };
|
|
17906
|
+
}
|
|
16077
17907
|
function resolveLaneLoader(modules, entityItemId, laneKey) {
|
|
16078
17908
|
if (laneKey === LANE_MOBILITY) {
|
|
16079
17909
|
return { slotIndex: -1, thrust: 0, mass: 0, outputPct: 0, valid: false };
|
|
@@ -16381,6 +18211,10 @@ function recomputeCaps(entity) {
|
|
|
16381
18211
|
hullStats.strength = decodeStat(entity.stats, 0);
|
|
16382
18212
|
if (hullStats.hardness === undefined)
|
|
16383
18213
|
hullStats.hardness = decodeStat(entity.stats, 2);
|
|
18214
|
+
if (itemId === ITEM_SHIP_T1_PACKED) {
|
|
18215
|
+
hullStats.__legacyShipChannel3 = decodeStat(entity.stats, 3);
|
|
18216
|
+
hullStats.__legacyShipChannel4 = decodeStat(entity.stats, 4);
|
|
18217
|
+
}
|
|
16384
18218
|
const layout = getEntityLayout(itemId)?.slots ?? [];
|
|
16385
18219
|
const installed = toInstalledModules(entity.modules);
|
|
16386
18220
|
const caps = computeEntityCapabilities(hullStats, itemId, installed, layout);
|
|
@@ -16403,6 +18237,12 @@ function recomputeCaps(entity) {
|
|
|
16403
18237
|
drain: l.drain,
|
|
16404
18238
|
output_pct: l.outputPct,
|
|
16405
18239
|
});
|
|
18240
|
+
const toBuilderLane = (l) => Types.builder_lane.from({
|
|
18241
|
+
slot_index: l.slotIndex,
|
|
18242
|
+
speed: l.speed,
|
|
18243
|
+
drain: l.drain,
|
|
18244
|
+
output_pct: l.outputPct,
|
|
18245
|
+
});
|
|
16406
18246
|
return {
|
|
16407
18247
|
hullmass: UInt32.from(caps.hullmass),
|
|
16408
18248
|
capacity: UInt32.from(caps.capacity),
|
|
@@ -16413,6 +18253,7 @@ function recomputeCaps(entity) {
|
|
|
16413
18253
|
loaderLanes: (caps.loaderLanes ?? []).map(toLoaderLane),
|
|
16414
18254
|
gathererLanes: (caps.gathererLanes ?? []).map(toGathererLane),
|
|
16415
18255
|
crafterLanes: (caps.crafterLanes ?? []).map(toCrafterLane),
|
|
18256
|
+
builderLanes: (caps.builderLanes ?? []).map(toBuilderLane),
|
|
16416
18257
|
hauler: caps.hauler
|
|
16417
18258
|
? Types.hauler_stats.from({
|
|
16418
18259
|
capacity: caps.hauler.capacity,
|
|
@@ -16449,6 +18290,7 @@ function createProjectedEntity(entity) {
|
|
|
16449
18290
|
const loaderLanes = entity.loader_lanes ?? caps?.loaderLanes ?? [];
|
|
16450
18291
|
const gathererLanes = entity.gatherer_lanes ?? caps?.gathererLanes ?? [];
|
|
16451
18292
|
const crafterLanes = entity.crafter_lanes ?? caps?.crafterLanes ?? [];
|
|
18293
|
+
const builderLanes = entity.builder_lanes ?? caps?.builderLanes ?? [];
|
|
16452
18294
|
const engines = entity.engines ?? caps?.engines;
|
|
16453
18295
|
const generator = entity.generator ?? caps?.generator;
|
|
16454
18296
|
const hauler = entity.hauler ?? caps?.hauler;
|
|
@@ -16457,7 +18299,7 @@ function createProjectedEntity(entity) {
|
|
|
16457
18299
|
const cargo = entity.cargo.map(cargoItemToStack);
|
|
16458
18300
|
const projected = {
|
|
16459
18301
|
location: Coordinates.from(entity.coordinates),
|
|
16460
|
-
energy:
|
|
18302
|
+
energy: UInt32.from(entity.energy ?? 0),
|
|
16461
18303
|
cargo,
|
|
16462
18304
|
shipMass,
|
|
16463
18305
|
capacity: capacity ? UInt64.from(capacity) : undefined,
|
|
@@ -16468,6 +18310,7 @@ function createProjectedEntity(entity) {
|
|
|
16468
18310
|
loaderLanes,
|
|
16469
18311
|
gathererLanes,
|
|
16470
18312
|
crafterLanes,
|
|
18313
|
+
builderLanes,
|
|
16471
18314
|
get cargoMass() {
|
|
16472
18315
|
return calcStacksMass(this.cargo);
|
|
16473
18316
|
},
|
|
@@ -16513,13 +18356,13 @@ function applyRechargeTask(projected, _task, options) {
|
|
|
16513
18356
|
if (!projected.generator)
|
|
16514
18357
|
return;
|
|
16515
18358
|
if (options.complete) {
|
|
16516
|
-
projected.energy =
|
|
18359
|
+
projected.energy = UInt32.from(projected.generator.capacity);
|
|
16517
18360
|
}
|
|
16518
18361
|
else if (options.progress !== undefined) {
|
|
16519
18362
|
const capacity = Number(projected.generator.capacity);
|
|
16520
18363
|
const currentEnergy = Number(projected.energy);
|
|
16521
18364
|
const rechargeAmount = (capacity - currentEnergy) * options.progress;
|
|
16522
|
-
projected.energy =
|
|
18365
|
+
projected.energy = UInt32.from(Math.min(capacity, currentEnergy + rechargeAmount));
|
|
16523
18366
|
}
|
|
16524
18367
|
}
|
|
16525
18368
|
function applyFlightTask(projected, task, options) {
|
|
@@ -16538,8 +18381,8 @@ function applyFlightTask(projected, task, options) {
|
|
|
16538
18381
|
});
|
|
16539
18382
|
const partialEnergy = UInt64.from(Math.floor(Number(task.energy_cost ?? 0) * options.progress));
|
|
16540
18383
|
projected.energy = projected.energy.gt(partialEnergy)
|
|
16541
|
-
?
|
|
16542
|
-
:
|
|
18384
|
+
? UInt32.from(projected.energy.subtracting(partialEnergy))
|
|
18385
|
+
: UInt32.from(0);
|
|
16543
18386
|
}
|
|
16544
18387
|
}
|
|
16545
18388
|
function addCargoItem(projected, item) {
|
|
@@ -16561,16 +18404,16 @@ function applyRemoveCargoTask(projected, task) {
|
|
|
16561
18404
|
function applyEnergyCost(projected, task) {
|
|
16562
18405
|
if (!task.energy_cost)
|
|
16563
18406
|
return;
|
|
16564
|
-
const energyCost =
|
|
18407
|
+
const energyCost = UInt32.from(task.energy_cost);
|
|
16565
18408
|
projected.energy = projected.energy.gt(energyCost)
|
|
16566
|
-
?
|
|
16567
|
-
:
|
|
18409
|
+
? UInt32.from(projected.energy.subtracting(energyCost))
|
|
18410
|
+
: UInt32.from(0);
|
|
16568
18411
|
}
|
|
16569
18412
|
function applyGatherTask(projected, task, options) {
|
|
16570
18413
|
if (!options.complete)
|
|
16571
18414
|
return;
|
|
16572
18415
|
applyEnergyCost(projected, task);
|
|
16573
|
-
if (
|
|
18416
|
+
if (task.couplings.length === 0) {
|
|
16574
18417
|
applyAddCargoTask(projected, task);
|
|
16575
18418
|
}
|
|
16576
18419
|
}
|
|
@@ -16581,12 +18424,8 @@ function applyCraftTask(projected, task) {
|
|
|
16581
18424
|
for (let i = 0; i < task.cargo.length - 1; i++) {
|
|
16582
18425
|
removeCargoItem(projected, task.cargo[i]);
|
|
16583
18426
|
}
|
|
16584
|
-
|
|
16585
|
-
|
|
16586
|
-
function applyDeployTask(projected, task) {
|
|
16587
|
-
applyEnergyCost(projected, task);
|
|
16588
|
-
if (task.cargo.length > 0) {
|
|
16589
|
-
removeCargoItem(projected, task.cargo[0]);
|
|
18427
|
+
if (task.couplings.length === 0) {
|
|
18428
|
+
addCargoItem(projected, task.cargo[task.cargo.length - 1]);
|
|
16590
18429
|
}
|
|
16591
18430
|
}
|
|
16592
18431
|
function applyTask(projected, task) {
|
|
@@ -16612,9 +18451,6 @@ function applyTask(projected, task) {
|
|
|
16612
18451
|
case TaskType.CRAFT:
|
|
16613
18452
|
applyCraftTask(projected, task);
|
|
16614
18453
|
break;
|
|
16615
|
-
case TaskType.DEPLOY:
|
|
16616
|
-
applyDeployTask(projected, task);
|
|
16617
|
-
break;
|
|
16618
18454
|
case TaskType.UNDEPLOY:
|
|
16619
18455
|
case TaskType.DEMOLISH:
|
|
16620
18456
|
break;
|
|
@@ -16752,10 +18588,6 @@ function projectEntityAt(entity, now) {
|
|
|
16752
18588
|
if (taskComplete)
|
|
16753
18589
|
applyCraftTask(projected, task);
|
|
16754
18590
|
break;
|
|
16755
|
-
case TaskType.DEPLOY:
|
|
16756
|
-
if (taskComplete)
|
|
16757
|
-
applyDeployTask(projected, task);
|
|
16758
|
-
break;
|
|
16759
18591
|
case TaskType.UNDEPLOY:
|
|
16760
18592
|
case TaskType.DEMOLISH:
|
|
16761
18593
|
break;
|
|
@@ -16782,7 +18614,7 @@ function taskCargoChanges(task) {
|
|
|
16782
18614
|
case TaskType.UNWRAP:
|
|
16783
18615
|
return items.map((i) => toChange(i, 'in'));
|
|
16784
18616
|
case TaskType.GATHER:
|
|
16785
|
-
return task.
|
|
18617
|
+
return task.couplings.length > 0 ? [] : items.map((i) => toChange(i, 'in'));
|
|
16786
18618
|
case TaskType.UNLOAD:
|
|
16787
18619
|
return items.map((i) => toChange(i, 'out'));
|
|
16788
18620
|
case TaskType.CRAFT:
|
|
@@ -16795,6 +18627,49 @@ function taskCargoChanges(task) {
|
|
|
16795
18627
|
}
|
|
16796
18628
|
}
|
|
16797
18629
|
|
|
18630
|
+
const JOB_QUEUE_CAP = 25;
|
|
18631
|
+
function activeOn(jobs, socket, now) {
|
|
18632
|
+
return jobs
|
|
18633
|
+
.filter((j) => j.socket === socket && j.completesAt > now)
|
|
18634
|
+
.sort((a, b) => a.startsAt.getTime() - b.startsAt.getTime());
|
|
18635
|
+
}
|
|
18636
|
+
function jobsToLanes(jobs, socketCount, now) {
|
|
18637
|
+
const lanes = [];
|
|
18638
|
+
for (let socket = 0; socket < socketCount; socket++) {
|
|
18639
|
+
const entries = [];
|
|
18640
|
+
let cursor = null;
|
|
18641
|
+
for (const j of activeOn(jobs, socket, now)) {
|
|
18642
|
+
if (cursor && j.startsAt > cursor) {
|
|
18643
|
+
entries.push({ kind: 'idle', startsAt: cursor, completesAt: j.startsAt });
|
|
18644
|
+
}
|
|
18645
|
+
entries.push({ kind: 'job', startsAt: j.startsAt, completesAt: j.completesAt, job: j });
|
|
18646
|
+
cursor = j.completesAt;
|
|
18647
|
+
}
|
|
18648
|
+
lanes.push({ socket, entries });
|
|
18649
|
+
}
|
|
18650
|
+
return lanes;
|
|
18651
|
+
}
|
|
18652
|
+
function socketTail(jobs, socket, now) {
|
|
18653
|
+
const active = activeOn(jobs, socket, now);
|
|
18654
|
+
const last = active[active.length - 1];
|
|
18655
|
+
return last && last.completesAt > now ? last.completesAt : now;
|
|
18656
|
+
}
|
|
18657
|
+
function pickFabricator(jobs, sockets, durationBySocketMinutes, now) {
|
|
18658
|
+
let best = null;
|
|
18659
|
+
for (let slot = 0; slot < sockets.length; slot++) {
|
|
18660
|
+
if (!sockets[slot].open)
|
|
18661
|
+
continue;
|
|
18662
|
+
if (activeOn(jobs, slot, now).length >= JOB_QUEUE_CAP)
|
|
18663
|
+
continue;
|
|
18664
|
+
const startsAt = socketTail(jobs, slot, now);
|
|
18665
|
+
const completesAt = new Date(startsAt.getTime() + durationBySocketMinutes[slot] * 60000);
|
|
18666
|
+
if (!best || completesAt < best.completesAt) {
|
|
18667
|
+
best = { slot, startsAt, completesAt };
|
|
18668
|
+
}
|
|
18669
|
+
}
|
|
18670
|
+
return best;
|
|
18671
|
+
}
|
|
18672
|
+
|
|
16798
18673
|
function composeIdleResolve(blocker, action, actions, now, lookupCounterpart) {
|
|
16799
18674
|
const ids = [];
|
|
16800
18675
|
const seen = new Set();
|
|
@@ -16829,15 +18704,16 @@ function taskCargoEffect(task) {
|
|
|
16829
18704
|
case TaskType.UNLOAD:
|
|
16830
18705
|
return { added: [], removed: task.cargo };
|
|
16831
18706
|
case TaskType.GATHER:
|
|
16832
|
-
return task.
|
|
18707
|
+
return task.couplings.length > 0
|
|
18708
|
+
? { added: [], removed: [] }
|
|
18709
|
+
: { added: task.cargo, removed: [] };
|
|
16833
18710
|
case TaskType.CRAFT:
|
|
16834
18711
|
if (task.cargo.length === 0)
|
|
16835
18712
|
return { added: [], removed: [] };
|
|
16836
|
-
return {
|
|
16837
|
-
|
|
16838
|
-
|
|
16839
|
-
|
|
16840
|
-
: { added: [], removed: [] };
|
|
18713
|
+
return {
|
|
18714
|
+
added: task.couplings.length === 0 ? [task.cargo[task.cargo.length - 1]] : [],
|
|
18715
|
+
removed: task.cargo.slice(0, -1),
|
|
18716
|
+
};
|
|
16841
18717
|
default:
|
|
16842
18718
|
return { added: [], removed: [] };
|
|
16843
18719
|
}
|
|
@@ -17015,31 +18891,24 @@ function cancelEligibility(entity, laneKey, fromTaskIndex, input) {
|
|
|
17015
18891
|
effects.abandonsRunning = true;
|
|
17016
18892
|
if (t.energy_cost)
|
|
17017
18893
|
energyForfeited += t.energy_cost.toNumber();
|
|
17018
|
-
if (t.type.equals(TaskType.BUILDPLOT) && t.
|
|
17019
|
-
effects.keepsPlotDeposits = { plot: t.
|
|
17020
|
-
|
|
17021
|
-
const
|
|
17022
|
-
|
|
17023
|
-
|
|
17024
|
-
|
|
17025
|
-
const
|
|
17026
|
-
|
|
17027
|
-
|
|
17028
|
-
|
|
17029
|
-
|
|
17030
|
-
|
|
17031
|
-
|
|
17032
|
-
|
|
17033
|
-
|
|
17034
|
-
:
|
|
17035
|
-
|
|
17036
|
-
return {
|
|
17037
|
-
ok: false,
|
|
17038
|
-
blockedReason: CancelBlockReason.WOULD_OVERFILL,
|
|
17039
|
-
range,
|
|
17040
|
-
effects: { ...EMPTY_EFFECTS },
|
|
17041
|
-
};
|
|
17042
|
-
}
|
|
18894
|
+
if (t.type.equals(TaskType.BUILDPLOT) && t.couplings.length > 0)
|
|
18895
|
+
effects.keepsPlotDeposits = { plot: t.couplings[0].counterpart };
|
|
18896
|
+
for (const c of t.couplings) {
|
|
18897
|
+
const kind = c.kind.toNumber();
|
|
18898
|
+
effects.releasedHolds.push({ counterpart: c.counterpart, kind });
|
|
18899
|
+
if (kind === HoldKind.PULL) {
|
|
18900
|
+
effects.refunds.push({ giver: c.counterpart, cargo: t.cargo });
|
|
18901
|
+
const giver = input.counterparts?.get(c.counterpart.entity_id.toString());
|
|
18902
|
+
if (giver) {
|
|
18903
|
+
const returned = t.cargo.reduce((s, c) => s + calcCargoItemMass(c).toNumber(), 0);
|
|
18904
|
+
const cap = giver.capacity ? giver.capacity.toNumber() : Number.MAX_SAFE_INTEGER;
|
|
18905
|
+
if (giver.cargomass.toNumber() + returned > cap) {
|
|
18906
|
+
return {
|
|
18907
|
+
ok: false,
|
|
18908
|
+
blockedReason: CancelBlockReason.WOULD_OVERFILL,
|
|
18909
|
+
range,
|
|
18910
|
+
effects: { ...EMPTY_EFFECTS },
|
|
18911
|
+
};
|
|
17043
18912
|
}
|
|
17044
18913
|
}
|
|
17045
18914
|
}
|
|
@@ -17072,7 +18941,7 @@ function derivedLoaders(lanes) {
|
|
|
17072
18941
|
function acceleration(thrust, mass) {
|
|
17073
18942
|
if (mass <= 0)
|
|
17074
18943
|
return 0;
|
|
17075
|
-
return (thrust / mass) * PRECISION
|
|
18944
|
+
return (thrust / mass) * PRECISION;
|
|
17076
18945
|
}
|
|
17077
18946
|
function flightTime(distance, accel) {
|
|
17078
18947
|
if (accel <= 0 || distance <= 0)
|
|
@@ -17082,7 +18951,7 @@ function flightTime(distance, accel) {
|
|
|
17082
18951
|
function distance2d(ax, ay, bx, by) {
|
|
17083
18952
|
const dx = ax - bx;
|
|
17084
18953
|
const dy = ay - by;
|
|
17085
|
-
return Math.floor(Math.sqrt(dx * dx + dy * dy) * PRECISION
|
|
18954
|
+
return Math.floor(Math.sqrt(dx * dx + dy * dy) * PRECISION);
|
|
17086
18955
|
}
|
|
17087
18956
|
function unwrapTransitDuration(itemMass, origin, dest) {
|
|
17088
18957
|
if (itemMass <= 0)
|
|
@@ -17247,10 +19116,10 @@ function hasGatherer(e) {
|
|
|
17247
19116
|
function maxTravelDistance(entity) {
|
|
17248
19117
|
return UInt32.from(entity.generator.capacity)
|
|
17249
19118
|
.dividing(entity.engines.drain)
|
|
17250
|
-
.multiplying(PRECISION
|
|
19119
|
+
.multiplying(PRECISION);
|
|
17251
19120
|
}
|
|
17252
19121
|
function calcEnergyUsage(entity, distance) {
|
|
17253
|
-
return distance.
|
|
19122
|
+
return distance.multiplying(entity.engines.drain).dividing(PRECISION);
|
|
17254
19123
|
}
|
|
17255
19124
|
function energyPercent(entity) {
|
|
17256
19125
|
return (Number(entity.energy) / Number(entity.generator.capacity)) * 100;
|
|
@@ -17285,13 +19154,12 @@ function calc_gather_rate(gatherer, itemMass, stratum, richness) {
|
|
|
17285
19154
|
function calc_gather_energy(gatherer, duration) {
|
|
17286
19155
|
if (duration <= 0)
|
|
17287
19156
|
return UInt32.from(0);
|
|
17288
|
-
const raw = Math.floor((duration * gatherer.drain.toNumber()) / PRECISION
|
|
17289
|
-
return UInt32.from(Math.min(Math.max(raw,
|
|
19157
|
+
const raw = Math.floor((duration * gatherer.drain.toNumber()) / PRECISION);
|
|
19158
|
+
return UInt32.from(Math.min(Math.max(raw, 1000), 4294967295));
|
|
17290
19159
|
}
|
|
17291
19160
|
|
|
17292
19161
|
const BASE_HAUL_PENALTY_MILLI = 300;
|
|
17293
19162
|
const HAULER_EFFICIENCY_DENOM = 10000;
|
|
17294
|
-
const PRECISION = 10000;
|
|
17295
19163
|
function computeHaulPenalty(totalThrust, haulCount, avgEfficiency) {
|
|
17296
19164
|
if (haulCount === 0)
|
|
17297
19165
|
return totalThrust;
|
|
@@ -17300,9 +19168,6 @@ function computeHaulPenalty(totalThrust, haulCount, avgEfficiency) {
|
|
|
17300
19168
|
HAULER_EFFICIENCY_DENOM);
|
|
17301
19169
|
return Math.floor((totalThrust * 1000) / penaltyMilli);
|
|
17302
19170
|
}
|
|
17303
|
-
function computeHaulerDrain(distance, drain, haulCount) {
|
|
17304
|
-
return Math.floor(distance / PRECISION) * drain * haulCount;
|
|
17305
|
-
}
|
|
17306
19171
|
|
|
17307
19172
|
const categoryColors = {
|
|
17308
19173
|
ore: '#C26D3F',
|
|
@@ -17459,8 +19324,17 @@ const capabilityAttributes = [
|
|
|
17459
19324
|
attribute: 'capacity',
|
|
17460
19325
|
description: 'Cargo capacity added by hulls and installed Cargo Hold modules',
|
|
17461
19326
|
},
|
|
19327
|
+
{
|
|
19328
|
+
capability: 'Storage',
|
|
19329
|
+
attribute: 'drain',
|
|
19330
|
+
description: 'Fixed normal-travel drain contributed by an installed Cargo Hold',
|
|
19331
|
+
},
|
|
17462
19332
|
{ capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
|
|
17463
|
-
{
|
|
19333
|
+
{
|
|
19334
|
+
capability: 'Movement',
|
|
19335
|
+
attribute: 'drain',
|
|
19336
|
+
description: 'Total installed energy consumed per tile of normal travel',
|
|
19337
|
+
},
|
|
17464
19338
|
{
|
|
17465
19339
|
capability: 'Energy',
|
|
17466
19340
|
attribute: 'capacity',
|
|
@@ -17501,7 +19375,7 @@ const capabilityAttributes = [
|
|
|
17501
19375
|
{
|
|
17502
19376
|
capability: 'Hauling',
|
|
17503
19377
|
attribute: 'drain',
|
|
17504
|
-
description: '
|
|
19378
|
+
description: 'Fixed normal-travel drain contributed by an installed Tractor Beam',
|
|
17505
19379
|
},
|
|
17506
19380
|
];
|
|
17507
19381
|
const invertedAttributes = new Set(['drain', 'mass']);
|
|
@@ -17867,6 +19741,20 @@ function rollupCrafter(lanes) {
|
|
|
17867
19741
|
drain: UInt32.from(totalDrain),
|
|
17868
19742
|
};
|
|
17869
19743
|
}
|
|
19744
|
+
function rollupBuilder(lanes) {
|
|
19745
|
+
if (lanes.length === 0)
|
|
19746
|
+
return undefined;
|
|
19747
|
+
let totalSpeed = 0;
|
|
19748
|
+
let totalDrain = 0;
|
|
19749
|
+
for (const l of lanes) {
|
|
19750
|
+
totalSpeed += Number(l.speed);
|
|
19751
|
+
totalDrain += Number(l.drain);
|
|
19752
|
+
}
|
|
19753
|
+
return {
|
|
19754
|
+
speed: UInt16.from(Math.min(totalSpeed, 65535)),
|
|
19755
|
+
drain: UInt32.from(totalDrain),
|
|
19756
|
+
};
|
|
19757
|
+
}
|
|
17870
19758
|
function rollupLoaders(lanes) {
|
|
17871
19759
|
if (lanes.length === 0)
|
|
17872
19760
|
return undefined;
|
|
@@ -17970,8 +19858,8 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
17970
19858
|
return {
|
|
17971
19859
|
capability: 'Generator',
|
|
17972
19860
|
attributes: [
|
|
17973
|
-
{ label: 'Capacity', value: caps.capacity },
|
|
17974
|
-
{ label: 'Recharge', value: caps.recharge },
|
|
19861
|
+
{ label: 'Capacity', value: toWholeEnergy$1(caps.capacity) },
|
|
19862
|
+
{ label: 'Recharge', value: toWholeEnergy$1(caps.recharge) },
|
|
17975
19863
|
],
|
|
17976
19864
|
};
|
|
17977
19865
|
}
|
|
@@ -17981,7 +19869,7 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
17981
19869
|
capability: 'Gatherer',
|
|
17982
19870
|
attributes: [
|
|
17983
19871
|
{ label: 'Yield', value: caps.yield },
|
|
17984
|
-
{ label: 'Drain', value: caps.drain },
|
|
19872
|
+
{ label: 'Drain', value: toWholeEnergy$1(caps.drain) },
|
|
17985
19873
|
{ label: 'Depth', value: caps.depth },
|
|
17986
19874
|
],
|
|
17987
19875
|
};
|
|
@@ -18003,7 +19891,7 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
18003
19891
|
capability: 'Crafting',
|
|
18004
19892
|
attributes: [
|
|
18005
19893
|
{ label: 'Speed', value: caps.speed },
|
|
18006
|
-
{ label: 'Drain', value: caps.drain },
|
|
19894
|
+
{ label: 'Drain', value: toWholeEnergy$1(caps.drain) },
|
|
18007
19895
|
],
|
|
18008
19896
|
};
|
|
18009
19897
|
}
|
|
@@ -18014,12 +19902,12 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
18014
19902
|
attributes: [
|
|
18015
19903
|
{ label: 'Capacity', value: caps.capacity },
|
|
18016
19904
|
{ label: 'Efficiency', value: caps.efficiency },
|
|
18017
|
-
{ label: 'Drain', value: caps.drain },
|
|
19905
|
+
{ label: 'Drain', value: toWholeEnergy$1(caps.drain) },
|
|
18018
19906
|
],
|
|
18019
19907
|
};
|
|
18020
19908
|
}
|
|
18021
19909
|
case MODULE_STORAGE: {
|
|
18022
|
-
const caps = computeStorageCapabilities(stats);
|
|
19910
|
+
const caps = computeStorageCapabilities(stats, tier);
|
|
18023
19911
|
return {
|
|
18024
19912
|
capability: 'Storage',
|
|
18025
19913
|
attributes: [
|
|
@@ -18027,6 +19915,7 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
18027
19915
|
label: 'Cargo Capacity',
|
|
18028
19916
|
value: applySlotMultiplierUint32(caps.capacity, outputPct),
|
|
18029
19917
|
},
|
|
19918
|
+
{ label: 'Drain', value: toWholeEnergy$1(caps.drain) },
|
|
18030
19919
|
],
|
|
18031
19920
|
};
|
|
18032
19921
|
}
|
|
@@ -18037,7 +19926,7 @@ function computeCapabilityGroup(moduleType, stats, tier, outputPct = 100) {
|
|
|
18037
19926
|
attributes: [
|
|
18038
19927
|
{
|
|
18039
19928
|
label: 'Energy Capacity',
|
|
18040
|
-
value: applySlotMultiplierUint32(caps.capacity, outputPct),
|
|
19929
|
+
value: toWholeEnergy$1(applySlotMultiplierUint32(caps.capacity, outputPct)),
|
|
18041
19930
|
},
|
|
18042
19931
|
],
|
|
18043
19932
|
};
|
|
@@ -18079,10 +19968,19 @@ function resolveModule(id, stats) {
|
|
|
18079
19968
|
attributes,
|
|
18080
19969
|
};
|
|
18081
19970
|
}
|
|
18082
|
-
function hullCapsForEntity(itemId, decoded) {
|
|
19971
|
+
function hullCapsForEntity(itemId, decoded, packedStats) {
|
|
19972
|
+
const hullStats = getPackedEntityType(itemId)?.equals(ENTITY_SHIP)
|
|
19973
|
+
? {
|
|
19974
|
+
strength: decodeStat(packedStats, 0),
|
|
19975
|
+
hardness: decodeStat(packedStats, 1),
|
|
19976
|
+
plasticity: decodeStat(packedStats, 2),
|
|
19977
|
+
volatility: decodeStat(packedStats, 3),
|
|
19978
|
+
conductivity: decodeStat(packedStats, 4),
|
|
19979
|
+
}
|
|
19980
|
+
: decoded;
|
|
18083
19981
|
return {
|
|
18084
|
-
hullmass: computeBaseHullmass(
|
|
18085
|
-
capacity: computeBaseCapacity(itemId,
|
|
19982
|
+
hullmass: computeBaseHullmass(itemId, hullStats),
|
|
19983
|
+
capacity: computeBaseCapacity(itemId, hullStats),
|
|
18086
19984
|
};
|
|
18087
19985
|
}
|
|
18088
19986
|
function resolveEntity(id, stats, modules) {
|
|
@@ -18099,7 +19997,7 @@ function resolveEntity(id, stats, modules) {
|
|
|
18099
19997
|
decoded.density = decodeStat(bigStats, 1);
|
|
18100
19998
|
if (decoded.hardness === undefined)
|
|
18101
19999
|
decoded.hardness = decodeStat(bigStats, 2);
|
|
18102
|
-
const hullCaps = hullCapsForEntity(id, decoded);
|
|
20000
|
+
const hullCaps = hullCapsForEntity(id, decoded, bigStats);
|
|
18103
20001
|
attributes = [
|
|
18104
20002
|
{
|
|
18105
20003
|
capability: 'Hull',
|
|
@@ -18335,6 +20233,9 @@ function moduleSlotsForImmutable(modules) {
|
|
|
18335
20233
|
}));
|
|
18336
20234
|
}
|
|
18337
20235
|
const IMAGE_HOST_URL = 'https://item.shiploadgame.com/item';
|
|
20236
|
+
function toWholeEnergy(milli) {
|
|
20237
|
+
return Math.floor((milli + 500) / 1000);
|
|
20238
|
+
}
|
|
18338
20239
|
function bytesToBase64Url(bytes) {
|
|
18339
20240
|
let binary = '';
|
|
18340
20241
|
for (let i = 0; i < bytes.byteLength; i++)
|
|
@@ -18400,8 +20301,14 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18400
20301
|
const thm = decodeStat(stats, 1);
|
|
18401
20302
|
base.push({ first: 'volatility', second: ['uint16', vol] });
|
|
18402
20303
|
base.push({ first: 'thermal', second: ['uint16', thm] });
|
|
18403
|
-
base.push({
|
|
18404
|
-
|
|
20304
|
+
base.push({
|
|
20305
|
+
first: 'thrust',
|
|
20306
|
+
second: ['uint32', computeEngineThrust(computeEffectiveModuleStat(vol))],
|
|
20307
|
+
});
|
|
20308
|
+
base.push({
|
|
20309
|
+
first: 'drain',
|
|
20310
|
+
second: ['uint16', computeEngineDrain(computeEffectiveModuleStat(thm))],
|
|
20311
|
+
});
|
|
18405
20312
|
break;
|
|
18406
20313
|
}
|
|
18407
20314
|
case MODULE_GENERATOR: {
|
|
@@ -18409,8 +20316,20 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18409
20316
|
const ref = decodeStat(stats, 1);
|
|
18410
20317
|
base.push({ first: 'resonance', second: ['uint16', res] });
|
|
18411
20318
|
base.push({ first: 'reflectivity', second: ['uint16', ref] });
|
|
18412
|
-
base.push({
|
|
18413
|
-
|
|
20319
|
+
base.push({
|
|
20320
|
+
first: 'capacity',
|
|
20321
|
+
second: [
|
|
20322
|
+
'uint16',
|
|
20323
|
+
toWholeEnergy(computeGeneratorCap(computeEffectiveModuleStat(res))),
|
|
20324
|
+
],
|
|
20325
|
+
});
|
|
20326
|
+
base.push({
|
|
20327
|
+
first: 'recharge',
|
|
20328
|
+
second: [
|
|
20329
|
+
'uint16',
|
|
20330
|
+
toWholeEnergy(computeGeneratorRech(computeEffectiveModuleStat(ref))),
|
|
20331
|
+
],
|
|
20332
|
+
});
|
|
18414
20333
|
break;
|
|
18415
20334
|
}
|
|
18416
20335
|
case MODULE_GATHERER: {
|
|
@@ -18421,7 +20340,10 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18421
20340
|
base.push({ first: 'hardness', second: ['uint16', hrd] });
|
|
18422
20341
|
base.push({ first: 'saturation', second: ['uint16', sat] });
|
|
18423
20342
|
base.push({ first: 'yield', second: ['uint16', computeGathererYield(str)] });
|
|
18424
|
-
base.push({
|
|
20343
|
+
base.push({
|
|
20344
|
+
first: 'drain',
|
|
20345
|
+
second: ['uint16', toWholeEnergy(computeGathererDrain(sat))],
|
|
20346
|
+
});
|
|
18425
20347
|
base.push({ first: 'depth', second: ['uint16', computeGathererDepth(hrd, item.tier)] });
|
|
18426
20348
|
break;
|
|
18427
20349
|
}
|
|
@@ -18446,7 +20368,16 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18446
20368
|
base.push({ first: 'fineness', second: ['uint16', fin] });
|
|
18447
20369
|
base.push({ first: 'conductivity', second: ['uint16', con] });
|
|
18448
20370
|
base.push({ first: 'speed', second: ['uint16', computeCrafterSpeed(fin)] });
|
|
18449
|
-
base.push({ first: 'drain', second: ['uint16', computeCrafterDrain(con)] });
|
|
20371
|
+
base.push({ first: 'drain', second: ['uint16', toWholeEnergy(computeCrafterDrain(con))] });
|
|
20372
|
+
break;
|
|
20373
|
+
}
|
|
20374
|
+
case MODULE_BUILDER: {
|
|
20375
|
+
const coh = decodeStat(stats, 0);
|
|
20376
|
+
const tol = decodeStat(stats, 1);
|
|
20377
|
+
base.push({ first: 'cohesion', second: ['uint16', coh] });
|
|
20378
|
+
base.push({ first: 'tolerance', second: ['uint16', tol] });
|
|
20379
|
+
base.push({ first: 'speed', second: ['uint16', computeBuilderSpeed(coh)] });
|
|
20380
|
+
base.push({ first: 'drain', second: ['uint16', toWholeEnergy(computeBuilderDrain(tol))] });
|
|
18450
20381
|
break;
|
|
18451
20382
|
}
|
|
18452
20383
|
case MODULE_STORAGE: {
|
|
@@ -18460,7 +20391,11 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18460
20391
|
base.push({ first: 'cohesion', second: ['uint16', com] });
|
|
18461
20392
|
base.push({
|
|
18462
20393
|
first: 'capacity',
|
|
18463
|
-
second: ['uint32', computeCargoBayCapacity(str, den, hrd
|
|
20394
|
+
second: ['uint32', computeCargoBayCapacity(str, den, hrd)],
|
|
20395
|
+
});
|
|
20396
|
+
base.push({
|
|
20397
|
+
first: 'drain',
|
|
20398
|
+
second: ['uint16', toWholeEnergy(computeCargoBayDrain(com, item.tier))],
|
|
18464
20399
|
});
|
|
18465
20400
|
break;
|
|
18466
20401
|
}
|
|
@@ -18475,7 +20410,7 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18475
20410
|
base.push({ first: 'insulation', second: ['uint16', ins] });
|
|
18476
20411
|
base.push({
|
|
18477
20412
|
first: 'capacity',
|
|
18478
|
-
second: ['uint32', computeBatteryBankCapacity(vol, thm, pla, ins)],
|
|
20413
|
+
second: ['uint32', toWholeEnergy(computeBatteryBankCapacity(vol, thm, pla, ins))],
|
|
18479
20414
|
});
|
|
18480
20415
|
break;
|
|
18481
20416
|
}
|
|
@@ -18488,7 +20423,10 @@ function buildModuleImmutable(itemId, quantity, stats, originX, originY) {
|
|
|
18488
20423
|
base.push({ first: 'conductivity', second: ['uint16', con] });
|
|
18489
20424
|
base.push({ first: 'capacity', second: ['uint8', computeHaulerCapacity(res, item.tier)] });
|
|
18490
20425
|
base.push({ first: 'efficiency', second: ['uint16', computeHaulerEfficiency(pla)] });
|
|
18491
|
-
base.push({
|
|
20426
|
+
base.push({
|
|
20427
|
+
first: 'drain',
|
|
20428
|
+
second: ['uint16', toWholeEnergy(computeHaulerDrain(con, item.tier))],
|
|
20429
|
+
});
|
|
18492
20430
|
break;
|
|
18493
20431
|
}
|
|
18494
20432
|
}
|
|
@@ -18541,6 +20479,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
18541
20479
|
deserializeModule: deserializeModule,
|
|
18542
20480
|
deserializeEntity: deserializeEntity,
|
|
18543
20481
|
deserializeAsset: deserializeAsset,
|
|
20482
|
+
toWholeEnergy: toWholeEnergy$1,
|
|
18544
20483
|
computeBaseHullmass: computeBaseHullmass$1,
|
|
18545
20484
|
computeBaseCapacityShip: computeBaseCapacityShip,
|
|
18546
20485
|
computeBaseCapacityContainer: computeBaseCapacityContainer,
|
|
@@ -18560,9 +20499,13 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
18560
20499
|
computeLoaderThrust: computeLoaderThrust,
|
|
18561
20500
|
computeCrafterSpeed: computeCrafterSpeed,
|
|
18562
20501
|
computeCrafterDrain: computeCrafterDrain,
|
|
20502
|
+
computeBuilderSpeed: computeBuilderSpeed,
|
|
20503
|
+
computeBuilderDrain: computeBuilderDrain,
|
|
18563
20504
|
computeHaulerCapacity: computeHaulerCapacity,
|
|
18564
20505
|
computeHaulerEfficiency: computeHaulerEfficiency,
|
|
18565
|
-
|
|
20506
|
+
supportDrainTierPercent: supportDrainTierPercent,
|
|
20507
|
+
computeHaulerDrain: computeHaulerDrain,
|
|
20508
|
+
computeCargoBayDrain: computeCargoBayDrain,
|
|
18566
20509
|
computeWarpRange: computeWarpRange,
|
|
18567
20510
|
computeCargoBayCapacity: computeCargoBayCapacity,
|
|
18568
20511
|
computeBatteryBankCapacity: computeBatteryBankCapacity,
|
|
@@ -18808,5 +20751,5 @@ function planParallelTransfer(entity, target) {
|
|
|
18808
20751
|
return allocateProportional(laneWeights, requestedQty).filter((e) => e.quantity > 0);
|
|
18809
20752
|
}
|
|
18810
20753
|
|
|
18811
|
-
export { ALL_ENTITY_TYPES, ATOMICASSETS_ACCOUNT, ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CAPACITY_TIER_TABLE, CAP_DEMOLISH, CAP_MODULES, CAP_UNDEPLOY, CAP_WRAP, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, COMPONENT_TIER_PREFIXES, CONTAINER_NOT_FOUND, CONTAINER_Z, COORD_MAX, COORD_MIN, COORD_OFFSET, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, CancelBlockReason, ClusterManager, ConstructionManager, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENGINE_DRAIN_BASE, ENGINE_DRAIN_REF_THM, ENGINE_DRAIN_REF_THRUST, ENTITY_ALREADY_THERE, ENTITY_CAPACITY_EXCEEDED, ENTITY_CARGO_NOT_LOADED, ENTITY_CARGO_NOT_OWNED, ENTITY_CONTAINER, ENTITY_EXTRACTOR, ENTITY_FACTORY, ENTITY_HUB, ENTITY_INVALID_CARGO, ENTITY_INVALID_DESTINATION, ENTITY_INVALID_TRAVEL_DURATION, ENTITY_NEXUS, ENTITY_NOT_ENOUGH_ENERGY, ENTITY_NOT_ENOUGH_ENERGY_CAPACITY, ENTITY_NO_CRAFTER, ENTITY_SHIP, ENTITY_WAREHOUSE, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, Entity, EntityClass, EntityInventory, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHERER_DEPTH_MAX_TIER, GATHERER_DEPTH_TABLE, GATHER_EXCEEDS_ENERGY_CAPACITY, GATHER_MASS_DIVISOR, GATHER_NOT_ENOUGH_ENERGY, GROUP_DUPLICATE_ENTITY, GROUP_EMPTY, GROUP_ENTITY_NOT_MOVABLE, GROUP_HAUL_CAPACITY_EXCEEDED, GROUP_NOT_FOUND, GROUP_NOT_SAME_LOCATION, GROUP_NOT_SAME_OWNER, GROUP_NO_THRUST, GameState, HoldKind, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_BATTERY_T1, ITEM_BEAM, ITEM_BEAM_T2, ITEM_BIOMASS_T1, ITEM_BIOMASS_T10, ITEM_BIOMASS_T2, ITEM_BIOMASS_T3, ITEM_BIOMASS_T4, ITEM_BIOMASS_T5, ITEM_BIOMASS_T6, ITEM_BIOMASS_T7, ITEM_BIOMASS_T8, ITEM_BIOMASS_T9, ITEM_CERAMIC, ITEM_CERAMIC_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_CRAFTER_T1, ITEM_CRYSTAL_T1, ITEM_CRYSTAL_T10, ITEM_CRYSTAL_T2, ITEM_CRYSTAL_T3, ITEM_CRYSTAL_T4, ITEM_CRYSTAL_T5, ITEM_CRYSTAL_T6, ITEM_CRYSTAL_T7, ITEM_CRYSTAL_T8, ITEM_CRYSTAL_T9, ITEM_DOES_NOT_EXIST, ITEM_ENGINE_T1, ITEM_EXTRACTOR_T1_PACKED, ITEM_FACTORY_T1_PACKED, ITEM_FRAME, ITEM_FRAME_T2, ITEM_GAS_T1, ITEM_GAS_T10, ITEM_GAS_T2, ITEM_GAS_T3, ITEM_GAS_T4, ITEM_GAS_T5, ITEM_GAS_T6, ITEM_GAS_T7, ITEM_GAS_T8, ITEM_GAS_T9, ITEM_GATHERER_T1, ITEM_GATHERER_T2, ITEM_GENERATOR_T1, ITEM_HAULER_SHIP_T2_PACKED, ITEM_HAULER_T1, ITEM_HAULER_T2, ITEM_HUB_T1_PACKED, ITEM_LAUNCHER_T1, ITEM_LOADER_T1, ITEM_MASS_CATCHER_T1_PACKED, ITEM_MASS_DRIVER_T1_PACKED, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_NOT_DEPLOYABLE, ITEM_NOT_PACKED_ENTITY, ITEM_ORE_T1, ITEM_ORE_T10, ITEM_ORE_T2, ITEM_ORE_T3, ITEM_ORE_T4, ITEM_ORE_T5, ITEM_ORE_T6, ITEM_ORE_T7, ITEM_ORE_T8, ITEM_ORE_T9, ITEM_PLASMA_CELL, ITEM_PLASMA_CELL_T2, ITEM_PLATE, ITEM_PLATE_T2, ITEM_POLYMER, ITEM_POLYMER_T2, ITEM_PROSPECTOR_T2_PACKED, ITEM_REACTOR, ITEM_REACTOR_T2, ITEM_REGOLITH_T1, ITEM_REGOLITH_T10, ITEM_REGOLITH_T2, ITEM_REGOLITH_T3, ITEM_REGOLITH_T4, ITEM_REGOLITH_T5, ITEM_REGOLITH_T6, ITEM_REGOLITH_T7, ITEM_REGOLITH_T8, ITEM_REGOLITH_T9, ITEM_RESIN, ITEM_RESIN_T2, ITEM_RESONATOR, ITEM_RESONATOR_T2, ITEM_SENSOR, ITEM_SENSOR_T2, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LANE_BARRIER, LANE_MOBILITY, LOCAL_HALF, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_LEGS, MAX_ORBITAL_ALTITUDE, MAX_STARS_PER_STAT, MAX_STAR_RATING, MIN_ORBITAL_ALTITUDE, MIN_TRANSFER_DISTANCE_ORBITAL_VESSEL, MIN_TRANSFER_DISTANCE_PLANETARY_STRUCTURE, MODULE_ANY, MODULE_BATTERY, MODULE_CARGO_NOT_FOUND, MODULE_CRAFTER, MODULE_ENGINE, MODULE_ENTITY_BUSY, MODULE_GATHERER, MODULE_GENERATOR, MODULE_HAULER, MODULE_LAUNCHER, MODULE_LOADER, MODULE_NOT_MODULE, MODULE_SLOT_EMPTY, MODULE_SLOT_INVALID, MODULE_SLOT_OCCUPIED, MODULE_STORAGE, MODULE_TIER_PREFIXES, MODULE_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, NftManager, PLANETARY_STRUCTURE_Z, 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, PLAYER_NOT_JOINED, PRECISION$1 as PRECISION, platform as PlatformContract, Types$1 as PlatformTypes, Player, PlayersManager, RECIPE_INPUTS_EXCESS, RECIPE_INPUTS_INSUFFICIENT, RECIPE_INPUTS_INVALID, RECIPE_INPUTS_MIXED, RECIPE_NOT_FOUND, REGION_DIV, REGION_PER_AXIS, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, RESOURCE_TIER_ADJECTIVES, RESOURCE_TIER_MULT_TENTHS, SECTORS_PER_AXIS, SECTOR_DIV, SHIPLOAD_COLLECTION, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_NOT_ARRIVED, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, SLOT_FORMULAS, STAR_STEP, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Shipload, SubscriptionsManager, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_NOT_FOUND, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, WH, WOULD_OVERFILL, WOULD_STRAND, WebSocketConnection, YIELD_FRACTION_DEEP, YIELD_FRACTION_SHALLOW, addressFromCoordinates, allBuildableItems, allPlotBuildableItems, allocateProportional, applyCapacityTier, applyResourceTierMultiplier, availableBuildMethods, availableCapacity, availableCapacityFromMass, availableForItem, baseName, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildComponentImmutable, buildEntityDescription, buildEntityImmutable, buildGatherPlan, buildImmutableData, buildMintAssetAction, buildModuleImmutable, buildResourceImmutable, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_gather_rate, calc_loader_acceleration, calc_loader_flighttime, calc_onesided_duration, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calc_transit_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, cancelEligibility, candidateLaneCompletesAt, capabilityAttributes, capabilityNames, capacityTierMultiplier, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLauncher, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItem, cargoItemToStack, cargoReadyAt, cargoRef, cargoUtils, categoryColors, categoryFromIndex, categoryLabel, categoryLabelFromIndex, compareByStars, componentIcon, composeIdleResolve, computeBaseCapacity, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass$1 as computeBaseHullmass, computeBatteryCapabilities, computeComponentStats, computeContainerCapabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityCapabilities, computeEntityStats, computeFreeCells, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeGroupPerLegReach, computeHaulPenalty, computeHaulerCapabilities, computeHaulerCapacity, computeHaulerDrain, computeHaulerEfficiency, computeInputMass, computeLauncherCapabilities, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeNftImageUrl, computePerLegReach, computeShipHullCapabilities, computeStorageCapabilities, computeTravelDrain, computeWarehouseHullCapabilities, computeWarpCapabilities, computeWarpRange, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeAddress, decodeAtomicAsset, decodeCraftedItemStats, decodeRegion, decodeSector, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStatMappings, deriveStrata, deriveStratum, derivedLoaders, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeAtomicData, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, easeFlightProgress, eligibleUpgrades, encodeAddress, encodeAddressMemo, encodeGatheredCargoStats, encodeRegion, encodeSector, encodeStats, energyAtTime, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, estimateUnwrapDuration, feistel, feistelInv, fetchAtomicAssetsForOwner, fetchAtomicSchemas, filterByBuildMethod, findNearbyPlanets, flightSpeedFactor, formatLocation, formatMass, formatMassDelta, formatMassScaled, formatModuleLine, formatTier, gatherEnergyCost, gathererDepthForTier, getAllRecipes, getCapabilityAttributeRows, getCapabilityAttributes, getCategoryInfo, getComponentDemand, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEffectiveReserve, getEligibleResources, getEntityClass, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getInterpolatedPosition, getItem, getItems, getKindMeta, getLocationCandidates, getLocationKind, getLocationProfile, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPackedEntityType, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getProducersForAttribute, getRecipe, getRecipeConsumers, getResourceDemand, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, getTemplateMeta, hasEnergy, hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, incomingHoldMass, interpolateFlightPosition, isBuildable, isContainer, isCraftedItem, isExtractor, isFactory, isFull, isFullFromMass, isGatherableLocation, isHub, isInvertedAttribute, isLocationBuildable, isModuleItem, isNexus, isPlot, isPlotBuildable, isRelatedItem, isShip, isSubscriptionsDebugEnabled, isValidWormholePair, isWarehouse, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, kindCan, laneKeyForModule, lerp$1 as lerp, makeEntity, mapEntity, maxCraftable, maxQtyForCharge, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, nearbyWormholes, needsRecharge, normalizeDisplayName, parseWireEntity, partnerRegion, planParallelTransfer, planRoute, projectEntity, projectEntityAt, projectRemainingAt, projectedCargoAvailableAt, projectedPeakCargomass, rawScheduleEnd, readCommonBase, receiveFits, regionOf, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveLaneCrafter, resolveLaneGatherer, resolveLaneLoader, resolveLockedAmount, resolveStats, rollTier, rollWithinTier, rollupCrafter, rollupGatherer, rollupLoaders, rotation, schedule, sdkSystemGraph, selectGatherLane, setScanProvider, setSubscriptionsDebug, slotAcceptsModule, sourceLabelForOutput, splitCost, stackKey, stackToCargoItem, stacksEqual, starRating, starsForStat, statMagnitude, subtractFromStacks, taskCargoChanges, taskCargoEffect, tierAdjective, tierColors, tierOfReserve, toLocation, typeLabel, unwrapLoadDuration, unwrapTransitDuration, validateDisplayName, validateSchedule, workerLaneKey, wormholeAt, wormholeAtRegionEndpoint, yieldThresholdAt };
|
|
20754
|
+
export { ALL_ENTITY_TYPES, ATOMICASSETS_ACCOUNT, ActionsManager, BASE_HAUL_PENALTY_MILLI$1 as BASE_HAUL_PENALTY_MILLI, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CAPACITY_TIER_TABLE, CAP_DEMOLISH, CAP_MODULES, CAP_UNDEPLOY, CAP_WRAP, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, COMPONENT_TIER_PREFIXES, CONTAINER_NOT_FOUND, CONTAINER_Z, COORD_MAX, COORD_MIN, COORD_OFFSET, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, CancelBlockReason, ClusterManager, ConstructionManager, Coordinates, DEFAULT_BASE_HULLMASS, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENGINE_DRAIN_BASE, ENGINE_DRAIN_REF_THM, ENGINE_DRAIN_REF_THRUST, ENTITY_ALREADY_THERE, ENTITY_CAPACITY_EXCEEDED, ENTITY_CARGO_NOT_LOADED, ENTITY_CARGO_NOT_OWNED, ENTITY_CONTAINER, ENTITY_EXTRACTOR, ENTITY_FACTORY, ENTITY_HUB, ENTITY_INVALID_CARGO, ENTITY_INVALID_DESTINATION, ENTITY_INVALID_TRAVEL_DURATION, ENTITY_NEXUS, ENTITY_NOT_ENOUGH_ENERGY, ENTITY_NOT_ENOUGH_ENERGY_CAPACITY, ENTITY_NO_CRAFTER, ENTITY_SHIP, ENTITY_WAREHOUSE, ENTITY_WORKSHOP, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, Entity, EntityClass, EntityInventory, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHERER_DEPTH_MAX_TIER, GATHERER_DEPTH_TABLE, GATHER_EXCEEDS_ENERGY_CAPACITY, GATHER_MASS_DIVISOR, GATHER_NOT_ENOUGH_ENERGY, GROUP_DUPLICATE_ENTITY, GROUP_EMPTY, GROUP_ENTITY_NOT_MOVABLE, GROUP_HAUL_CAPACITY_EXCEEDED, GROUP_NOT_FOUND, GROUP_NOT_SAME_LOCATION, GROUP_NOT_SAME_OWNER, GROUP_NO_THRUST, GameState, HAULER_EFFICIENCY_DENOM$1 as HAULER_EFFICIENCY_DENOM, HoldKind, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, ITEM_BATTERY_T1, ITEM_BEAM, ITEM_BEAM_T2, ITEM_BIOMASS_T1, ITEM_BIOMASS_T10, ITEM_BIOMASS_T2, ITEM_BIOMASS_T3, ITEM_BIOMASS_T4, ITEM_BIOMASS_T5, ITEM_BIOMASS_T6, ITEM_BIOMASS_T7, ITEM_BIOMASS_T8, ITEM_BIOMASS_T9, ITEM_BUILDER_T1, ITEM_CERAMIC, ITEM_CERAMIC_T2, ITEM_CONTAINER_T1_PACKED, ITEM_CONTAINER_T2_PACKED, ITEM_CRAFTER_T1, ITEM_CRYSTAL_T1, ITEM_CRYSTAL_T10, ITEM_CRYSTAL_T2, ITEM_CRYSTAL_T3, ITEM_CRYSTAL_T4, ITEM_CRYSTAL_T5, ITEM_CRYSTAL_T6, ITEM_CRYSTAL_T7, ITEM_CRYSTAL_T8, ITEM_CRYSTAL_T9, ITEM_DOES_NOT_EXIST, ITEM_DREDGER_T1_PACKED, ITEM_ENGINE_T1, ITEM_EXTRACTOR_T1_PACKED, ITEM_FACTORY_T1_PACKED, ITEM_FRAME, ITEM_FRAME_T2, ITEM_GAS_T1, ITEM_GAS_T10, ITEM_GAS_T2, ITEM_GAS_T3, ITEM_GAS_T4, ITEM_GAS_T5, ITEM_GAS_T6, ITEM_GAS_T7, ITEM_GAS_T8, ITEM_GAS_T9, ITEM_GATHERER_T1, ITEM_GATHERER_T2, ITEM_GENERATOR_T1, ITEM_HAULER_SHIP_T2_PACKED, ITEM_HAULER_T1, ITEM_HAULER_T2, ITEM_HUB_T1_PACKED, ITEM_LAUNCHER_T1, ITEM_LOADER_T1, ITEM_MASS_CATCHER_T1_PACKED, ITEM_MASS_DRIVER_T1_PACKED, ITEM_NOT_AVAILABLE_AT_LOCATION, ITEM_NOT_DEPLOYABLE, ITEM_NOT_PACKED_ENTITY, ITEM_ORE_T1, ITEM_ORE_T10, ITEM_ORE_T2, ITEM_ORE_T3, ITEM_ORE_T4, ITEM_ORE_T5, ITEM_ORE_T6, ITEM_ORE_T7, ITEM_ORE_T8, ITEM_ORE_T9, ITEM_PLASMA_CELL, ITEM_PLASMA_CELL_T2, ITEM_PLATE, ITEM_PLATE_T2, ITEM_POLYMER, ITEM_POLYMER_T2, ITEM_PORTER_T1_PACKED, ITEM_PROSPECTOR_T1_PACKED, ITEM_PROSPECTOR_T2_PACKED, ITEM_REACTOR, ITEM_REACTOR_T2, ITEM_REGOLITH_T1, ITEM_REGOLITH_T10, ITEM_REGOLITH_T2, ITEM_REGOLITH_T3, ITEM_REGOLITH_T4, ITEM_REGOLITH_T5, ITEM_REGOLITH_T6, ITEM_REGOLITH_T7, ITEM_REGOLITH_T8, ITEM_REGOLITH_T9, ITEM_RESIN, ITEM_RESIN_T2, ITEM_RESONATOR, ITEM_RESONATOR_T2, ITEM_ROUSTABOUT_T1_PACKED, ITEM_SENSOR, ITEM_SENSOR_T2, ITEM_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_TENDER_T1_PACKED, ITEM_TUG_T1_PACKED, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, ITEM_WORKSHOP_T1_PACKED, ITEM_WRANGLER_T1_PACKED, ITEM_WRIGHT_T1_PACKED, InventoryAccessor, JOB_QUEUE_CAP, LANE_BARRIER, LANE_MOBILITY, LOCAL_HALF, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_LEGS, MAX_ORBITAL_ALTITUDE, MAX_STARS_PER_STAT, MAX_STAR_RATING, MIN_ORBITAL_ALTITUDE, MIN_TRANSFER_DISTANCE_ORBITAL_VESSEL, MIN_TRANSFER_DISTANCE_PLANETARY_STRUCTURE, MODULE_ANY, MODULE_BATTERY, MODULE_BUILDER, MODULE_CARGO_NOT_FOUND, MODULE_CRAFTER, MODULE_ENGINE, MODULE_ENTITY_BUSY, MODULE_GATHERER, MODULE_GENERATOR, MODULE_HAULER, MODULE_LAUNCHER, MODULE_LOADER, MODULE_NOT_MODULE, MODULE_SLOT_EMPTY, MODULE_SLOT_INVALID, MODULE_SLOT_OCCUPIED, MODULE_STAT_SCALING_ANCHOR, MODULE_STAT_SCALING_POST_ANCHOR_PERCENT, MODULE_STORAGE, MODULE_TIER_PREFIXES, MODULE_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, NftManager, PLANETARY_STRUCTURE_Z, 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, PLAYER_NOT_JOINED, PRECISION, platform as PlatformContract, Types$1 as PlatformTypes, Player, PlayersManager, RECIPE_INPUTS_EXCESS, RECIPE_INPUTS_INSUFFICIENT, RECIPE_INPUTS_INVALID, RECIPE_INPUTS_MIXED, RECIPE_NOT_FOUND, REGION_DIV, REGION_PER_AXIS, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, RESOURCE_TIER_ADJECTIVES, RESOURCE_TIER_MULT_TENTHS, SECTORS_PER_AXIS, SECTOR_DIV, SHIPLOAD_COLLECTION, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_NOT_ARRIVED, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, SLOT_FORMULAS, STAR_STEP, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Shipload, SubscriptionsManager, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_NOT_FOUND, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, WH, WOULD_OVERFILL, WOULD_STRAND, WebSocketConnection, YIELD_FRACTION_DEEP, YIELD_FRACTION_SHALLOW, addressFromCoordinates, allBuildableItems, allPlotBuildableItems, allocateProportional, applyCapacityTier, applyResourceTierMultiplier, availableBuildMethods, availableCapacity, availableCapacityFromMass, availableForItem, baseName, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildComponentImmutable, buildEntityDescription, buildEntityImmutable, buildGatherPlan, buildImmutableData, buildMintAssetAction, buildModuleImmutable, buildResourceImmutable, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcStacksMass, calc_acceleration, calc_build_duration, calc_build_energy, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_gather_rate, calc_group_flighttime, calc_loader_acceleration, calc_loader_flighttime, calc_onesided_duration, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calc_transit_duration, calc_travel_flighttime, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, cancelEligibility, candidateLaneCompletesAt, capabilityAttributes, capabilityNames, capacityTierMultiplier, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLauncher, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItem, cargoItemToStack, cargoReadyAt, cargoRef, cargoUtils, categoryColors, categoryFromIndex, categoryLabel, categoryLabelFromIndex, compareByStars, componentIcon, composeIdleResolve, computeBaseCapacity, computeBaseCapacityContainer, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass$1 as computeBaseHullmass, computeBatteryCapabilities, computeBuilderCapabilities, computeBuilderDrain, computeBuilderSpeed, computeComponentStats, computeContainerCapabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEffectiveModuleStat, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityCapabilities, computeEntityStats, computeFreeCells, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeGroupPerLegReach, computeHaulPenalty, computeHaulerCapabilities, computeHaulerCapacity, computeHaulerEfficiency, computeInputMass, computeLauncherCapabilities, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeNftImageUrl, computePerLegReach, computeShipHullCapabilities, computeStorageCapabilities, computeTravelDrain, computeWarehouseHullCapabilities, computeWarpCapabilities, computeWarpRange, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeAddress, decodeAtomicAsset, decodeCraftedItemStats, decodeRegion, decodeSector, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStatMappings, deriveStrata, deriveStratum, derivedLoaders, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeAtomicData, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, easeFlightProgress, eligibleUpgrades, encodeAddress, encodeAddressMemo, encodeGatheredCargoStats, encodeRegion, encodeSector, encodeStats, energyAtTime, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, estimateUnwrapDuration, feistel, feistelInv, fetchAtomicAssetsForOwner, fetchAtomicSchemas, filterByBuildMethod, findNearbyPlanets, flightSpeedFactor, formatLocation, formatMass, formatMassDelta, formatMassScaled, formatModuleLine, formatTier, gatherEnergyCost, gathererDepthForTier, getAllRecipes, getBaseHullmassFor, getCapabilityAttributeRows, getCapabilityAttributes, getCategoryInfo, getComponentDemand, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEffectiveReserve, getEligibleResources, getEntityClass, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getInterpolatedPosition, getItem, getItems, getKindMeta, getLocationCandidates, getLocationKind, getLocationProfile, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPackedEntityType, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getProducersForAttribute, getRecipe, getRecipeConsumers, getResourceDemand, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, getTemplateMeta, hasEnergy, hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, incomingHoldMass, interpolateFlightPosition, isBuildable, isContainer, isCraftedItem, isExtractor, isFactory, isFull, isFullFromMass, isGatherableLocation, isHub, isInvertedAttribute, isLocationBuildable, isModuleItem, isNexus, isPlot, isPlotBuildable, isRelatedItem, isShip, isSubscriptionsDebugEnabled, isValidWormholePair, isWarehouse, isWorkshop, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, jobsToLanes, kindCan, laneKeyForModule, lerp$1 as lerp, makeEntity, mapEntity, maxCraftable, maxQtyForCharge, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, nearbyWormholes, needsRecharge, normalizeDisplayName, parseWireEntity, partnerRegion, pickFabricator, planParallelTransfer, planRoute, projectEntity, projectEntityAt, projectRemainingAt, projectedCargoAvailableAt, projectedPeakCargomass, rawScheduleEnd, readCommonBase, receiveFits, regionOf, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveLaneBuilder, resolveLaneCrafter, resolveLaneGatherer, resolveLaneLoader, resolveLockedAmount, resolveStats, rollTier, rollWithinTier, rollupBuilder, rollupCrafter, rollupGatherer, rollupLoaders, rotation, schedule, sdkSystemGraph, selectGatherLane, setSubscriptionsDebug, simulateRoute, slotAcceptsModule, socketTail, sourceLabelForOutput, splitCost, stackKey, stackToCargoItem, stacksEqual, starRating, starsForStat, statMagnitude, subtractFromStacks, taskCargoChanges, taskCargoEffect, tierAdjective, tierColors, tierOfReserve, toLocation, typeLabel, unwrapLoadDuration, unwrapTransitDuration, validateDisplayName, validateSchedule, workerLaneKey, wormholeAt, wormholeAtRegionEndpoint, yieldThresholdAt };
|
|
18812
20755
|
//# sourceMappingURL=shipload.m.js.map
|