@shipload/sdk 1.0.0-next.3 → 1.0.0-next.5

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.m.js CHANGED
@@ -205,7 +205,7 @@ var platform = /*#__PURE__*/Object.freeze({
205
205
  Contract: Contract$1
206
206
  });
207
207
 
208
- const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDiEAQlhZGRtb2R1bGUABQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4D21vZHVsZV9jYXJnb19pZAZ1aW50NjQPdGFyZ2V0X2NhcmdvX2lkBnVpbnQ2NAhhZGRuZXh1cwADCm5leHVzX25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAdhZHZhbmNlAAIGcmV2ZWFsBnN0cmluZwZjb21taXQLY2hlY2tzdW0yNTYFYmxlbmQAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAZpbnB1dHMMY2FyZ29faXRlbVtdBmNhbmNlbAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50BnVpbnQ2NA5jYW5jZWxfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ9jYW5jZWxsZWRfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwpjYXJnb19pdGVtAAQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCWNhcmdvX3JvdwAGAmlkBnVpbnQ2NAllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQpjYXJnb192aWV3AAUHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdAmlkBnVpbnQ2NAxjbGFpbXN0YXJ0ZXIAAwdhY2NvdW50BG5hbWUBeAVpbnQ2NAF5BWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAIAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8LY29vcmRpbmF0ZXMAAwF4BWludDY0AXkFaW50NjQBegd1aW50MTY/BWNyYWZ0AAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQJcmVjaXBlX2lkBnVpbnQxNghxdWFudGl0eQZ1aW50MzIGaW5wdXRzDGNhcmdvX2l0ZW1bXQ1jcmFmdGVyX3N0YXRzAAIFc3BlZWQGdWludDE2BWRyYWluBnVpbnQxNgxjcmVhdGVlbnRpdHkABQVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWULZW50aXR5X25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAZkZXBsb3kABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NA5wYWNrZWRfaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0CmRlc2NlbnRpdHkABAdpdGVtX2lkBnVpbnQxNgpodWxsX3N0YXRzBnVpbnQ2NAxtb2R1bGVfaXRlbXMIdWludDE2W10MbW9kdWxlX3N0YXRzCHVpbnQ2NFtdBmVuYWJsZQABB2VuYWJsZWQEYm9vbAxlbmVyZ3lfc3RhdHMAAghjYXBhY2l0eQZ1aW50MTYIcmVjaGFyZ2UGdWludDE2FGVudGl0eV9jdXJyZW50X3N0YXRlAAILY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMGZW5lcmd5BnVpbnQxNg9lbnRpdHlfZGVmYXVsdHMAAgt3YXJlaG91c2VfegZ1aW50MTYLY29udGFpbmVyX3oGdWludDE2C2VudGl0eV9pbmZvABkEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwljYXJnb21hc3MGdWludDMyBWNhcmdvDGNhcmdvX3ZpZXdbXQdsb2FkZXJzDWxvYWRlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQZlbmVyZ3kHdWludDE2PwhodWxsbWFzcwd1aW50MzI/B2VuZ2luZXMPbW92ZW1lbnRfc3RhdHM/CWdlbmVyYXRvcg1lbmVyZ3lfc3RhdHM/CGNhcGFjaXR5B3VpbnQzMj8IZ2F0aGVyZXIPZ2F0aGVyZXJfc3RhdHM/BmhhdWxlcg1oYXVsZXJfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwdpc19pZGxlBGJvb2wMY3VycmVudF90YXNrBXRhc2s/FGN1cnJlbnRfdGFza19lbGFwc2VkBnVpbnQzMhZjdXJyZW50X3Rhc2tfcmVtYWluaW5nBnVpbnQzMg1wZW5kaW5nX3Rhc2tzBnRhc2tbXQdpZGxlX2F0C3RpbWVfcG9pbnQ/CHNjaGVkdWxlCXNjaGVkdWxlPw1lbnRpdHlfbGF5b3V0AAIOZW50aXR5X2l0ZW1faWQGdWludDE2BXNsb3RzCnNsb3RfZGVmW10VZW50aXR5X2xheW91dHNfcmVzdWx0AAEIZW50aXRpZXMPZW50aXR5X2xheW91dFtdCmVudGl0eV9yZWYAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQOZW50aXR5X3N1bW1hcnkACAR0eXBlBG5hbWUCaWQGdWludDY0BW93bmVyBG5hbWULZW50aXR5X25hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzB2lzX2lkbGUEYm9vbA5yZXNvbHZlZF9jb3VudAZ1aW50MzINcGVuZGluZ19jb3VudAZ1aW50MzIQZW50aXR5X3Rhc2tfaW5mbwAECWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQp0YXNrX2NvdW50BXVpbnQ4EHNjaGVkdWxlX3N0YXJ0ZWQKdGltZV9wb2ludA9lbnRpdHlncm91cF9yb3cAAgJpZAZ1aW50NjQMcGFydGljaXBhbnRzDGVudGl0eV9yZWZbXQtlbnVtX21lbWJlcgACBXZhbHVlBXVpbnQ4BG5hbWUGc3RyaW5nC2VudW1fcmVzdWx0AAEHbWVtYmVycw1lbnVtX21lbWJlcltdC2dhbWVfY29uZmlnAAMHdmVyc2lvbgZ1aW50MzIIZGVmYXVsdHMPZW50aXR5X2RlZmF1bHRzBWl0ZW1zCml0ZW1fZGVmW10GZ2F0aGVyAAQGc291cmNlCmVudGl0eV9yZWYLZGVzdGluYXRpb24KZW50aXR5X3JlZgdzdHJhdHVtBnVpbnQxNghxdWFudGl0eQZ1aW50MzIOZ2F0aGVyZXJfc3RhdHMABAV5aWVsZAZ1aW50MTYFZHJhaW4GdWludDE2BWRlcHRoBnVpbnQxNgVzcGVlZAZ1aW50MTYJZ2V0Y29uZmlnAAALZ2V0ZW50aXRpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/CWdldGVudGl0eQACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAtnZXRpdGVtZGF0YQAACmdldGl0ZW1pZHMAAAhnZXRpdGVtcwAADGdldGl0ZW10eXBlcwAAC2dldGxvY2F0aW9uAAIBeAVpbnQ2NAF5BWludDY0CmdldGxvY2RhdGEAAgF4BWludDY0AXkFaW50NjQLZ2V0bW9kdHlwZXMAAApnZXRtb2R1bGVzAAAJZ2V0bmVhcmJ5AAMLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CHJlY2hhcmdlBGJvb2wKZ2V0bmZ0aW5mbwAACWdldHBsYXllcgABB2FjY291bnQEbmFtZQlnZXRyZWNpcGUAAQ5vdXRwdXRfaXRlbV9pZAZ1aW50MTYKZ2V0cmVjaXBlcwACC2xvd2VyX2JvdW5kBnVpbnQxNgVsaW1pdAV1aW50OApnZXRyZXNjYXRzAAALZ2V0cmVzZXJ2ZXMAAgF4BWludDY0AXkFaW50NjQMZ2V0cmVzb3VyY2VzAAAIZ2V0c2xvdHMAAApnZXRzdHJhdHVtAAMBeAVpbnQ2NAF5BWludDY0B3N0cmF0dW0GdWludDE2DGdldHN1bW1hcmllcwACBW93bmVyBG5hbWULZW50aXR5X3R5cGUFbmFtZT8LZ3JvdXB0cmF2ZWwABAhlbnRpdGllcwxlbnRpdHlfcmVmW10BeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wEaGFzaAABBXZhbHVlBnN0cmluZwdoYXNoNTEyAAEFdmFsdWUGc3RyaW5nDGhhdWxlcl9zdGF0cwADCGNhcGFjaXR5BXVpbnQ4CmVmZmljaWVuY3kGdWludDE2BWRyYWluBnVpbnQxNgRpbml0AAEEc2VlZAtjaGVja3N1bTI1NghpdGVtX2RlZgAFAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgR0eXBlBXVpbnQ4B3N1YnR5cGUFdWludDgEdGllcgV1aW50OAxpdGVtX2lkX3BhaXIAAgJpZAZ1aW50MTYEbmFtZQZzdHJpbmcPaXRlbV9pZHNfcmVzdWx0AAEFaXRlbXMOaXRlbV9pZF9wYWlyW10PaXRlbWRhdGFfcmVzdWx0AAIFaXRlbXMKaXRlbV9kZWZbXQdyZWNpcGVzDnJlY2lwZXNfcmVzdWx0Cml0ZW1zX2luZm8AAQVpdGVtcwppdGVtX2RlZltdBGpvaW4AAQdhY2NvdW50BG5hbWUMbG9hZGVyX3N0YXRzAAMEbWFzcwZ1aW50MzIGdGhydXN0BnVpbnQxNghxdWFudGl0eQV1aW50OBBsb2NhdGlvbl9kZXJpdmVkAAMMc3RhdGljX3Byb3BzD2xvY2F0aW9uX3N0YXRpYwtlcG9jaF9wcm9wcw5sb2NhdGlvbl9lcG9jaARzaXplBnVpbnQxNg5sb2NhdGlvbl9lcG9jaAADBmFjdGl2ZQRib29sBXNlZWQwBXVpbnQ4BXNlZWQxBXVpbnQ4DWxvY2F0aW9uX2luZm8AAgZjb29yZHMLY29vcmRpbmF0ZXMJaXNfc3lzdGVtBGJvb2wMbG9jYXRpb25fcm93AAYCaWQGdWludDY0BW93bmVyBG5hbWULY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb19pdGVtW10Ic2NoZWR1bGUJc2NoZWR1bGU/D2xvY2F0aW9uX3N0YXRpYwAFBmNvb3Jkcwtjb29yZGluYXRlcwR0eXBlDWxvY2F0aW9uX3R5cGUHc3VidHlwZQV1aW50OAVzZWVkMAV1aW50OAVzZWVkMQV1aW50OAxtb2R1bGVfZW50cnkAAgR0eXBlBXVpbnQ4CWluc3RhbGxlZA5wYWNrZWRfbW9kdWxlPwttb2R1bGVfaW5mbwAEAmlkBnVpbnQxNgRtYXNzBnVpbnQzMgttb2R1bGVfdHlwZQV1aW50OAR0aWVyBXVpbnQ4Dm1vZHVsZXNfcmVzdWx0AAEHbW9kdWxlcw1tb2R1bGVfaW5mb1tdDm1vdmVtZW50X3N0YXRzAAIGdGhydXN0BnVpbnQzMgVkcmFpbgZ1aW50MTYLbmVhcmJ5X2luZm8ABQpjYW5fdHJhdmVsBGJvb2wHY3VycmVudBRlbnRpdHlfY3VycmVudF9zdGF0ZQlwcm9qZWN0ZWQUZW50aXR5X2N1cnJlbnRfc3RhdGUKbWF4X2VuZXJneQZ1aW50MTYHc3lzdGVtcw9uZWFyYnlfc3lzdGVtW10NbmVhcmJ5X3N5c3RlbQAECGRpc3RhbmNlBnVpbnQ2NAtlbmVyZ3lfY29zdAZ1aW50NjQLZmxpZ2h0X3RpbWUGdWludDMyCGxvY2F0aW9uDWxvY2F0aW9uX2luZm8JbmV4dXNfcm93AAQCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMObmZ0X3NjaGVtYV9kZWYAAgtzY2hlbWFfbmFtZQRuYW1lBmZpZWxkcw5zY2hlbWFfZmllbGRbXRBuZnRfdGVtcGxhdGVfZGVmAAIHaXRlbV9pZAZ1aW50MTYLc2NoZW1hX25hbWUEbmFtZQ1uZnRjb25maWdfcm93AAMHaXRlbV9pZAZ1aW50MTYLdGVtcGxhdGVfaWQFaW50MzILc2NoZW1hX25hbWUEbmFtZQ5uZnRpbmZvX3Jlc3VsdAACB3NjaGVtYXMQbmZ0X3NjaGVtYV9kZWZbXQl0ZW1wbGF0ZXMSbmZ0X3RlbXBsYXRlX2RlZltdBm5vdGlmeQABBWV2ZW50CnRhc2tfZXZlbnQNcGFja2VkX21vZHVsZQACB2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAtwbGF5ZXJfaW5mbwAGBW93bmVyBG5hbWUJaXNfcGxheWVyBGJvb2wMY29tcGFueV9uYW1lBnN0cmluZwpzaGlwX2NvdW50BnVpbnQ2NA93YXJlaG91c2VfY291bnQGdWludDY0D2NvbnRhaW5lcl9jb3VudAZ1aW50NjQKcGxheWVyX3JvdwABBW93bmVyBG5hbWUIcmVjaGFyZ2UAAgtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAxyZWNpcGVfaW5wdXQABAdpdGVtX2lkBnVpbnQxNghjYXRlZ29yeQV1aW50OAR0aWVyBXVpbnQ4CHF1YW50aXR5BnVpbnQzMhByZWNpcGVfaXRlbV9pbmZvAAICaWQGdWludDE2BG1hc3MGdWludDMyD3JlY2lwZV9yZXNwb25zZQAHDm91dHB1dF9pdGVtX2lkBnVpbnQxNgtvdXRwdXRfbWFzcwZ1aW50MzIGaW5wdXRzDnJlY2lwZV9pbnB1dFtdCnN0YXRfc2xvdHMUc3RhdF9zbG90X3Jlc3BvbnNlW10NYmxlbmRfd2VpZ2h0cwVieXRlcwtvdXRwdXRfaXRlbRByZWNpcGVfaXRlbV9pbmZvC2lucHV0X2l0ZW1zEnJlY2lwZV9pdGVtX2luZm9bXQ5yZWNpcGVzX3Jlc3VsdAABB3JlY2lwZXMRcmVjaXBlX3Jlc3BvbnNlW10LcmVzZXJ2ZV9yb3cABAJpZAZ1aW50NjQIY29vcmRfaWQGdWludDY0B3N0cmF0dW0GdWludDE2CXJlbWFpbmluZwZ1aW50MzIHcmVzb2x2ZQADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50B3VpbnQ2ND8PcmVzb2x2ZV9yZXN1bHRzAAYJZW50aXR5X2lkBnVpbnQ2NAtlbnRpdHlfdHlwZQRuYW1lDnJlc29sdmVkX2NvdW50BXVpbnQ4FG5ld19zY2hlZHVsZV9zdGFydGVkC3RpbWVfcG9pbnQ/C2VudGl0eWdyb3VwB3VpbnQ2ND8NZ3JvdXBfbWVtYmVycxZCX3ZlY3Rvcl9lbnRpdHlfcmVmX0U/DXJlc291cmNlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzIIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OA5yZXNvdXJjZV9zdGF0cwADBXN0YXQxBnVpbnQxNgVzdGF0MgZ1aW50MTYFc3RhdDMGdWludDE2EHJlc291cmNlc19yZXN1bHQAAQlyZXNvdXJjZXMPcmVzb3VyY2VfaW5mb1tdCHJtbW9kdWxlAAQLZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DG1vZHVsZV9pbmRleAV1aW50OA90YXJnZXRfY2FyZ29faWQGdWludDY0CHJtbmZ0Y2ZnAAEHaXRlbV9pZAZ1aW50MTYEc2FsdAABBHNhbHQGdWludDY0CHNjaGVkdWxlAAIHc3RhcnRlZAp0aW1lX3BvaW50BXRhc2tzBnRhc2tbXQxzY2hlbWFfZmllbGQAAgRuYW1lBnN0cmluZwpmaWVsZF90eXBlBnN0cmluZwxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQJc2V0bmZ0Y2ZnAAMHaXRlbV9pZAZ1aW50MTYLdGVtcGxhdGVfaWQFaW50MzILc2NoZW1hX25hbWUEbmFtZQhzaGlwX3JvdwASAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBXN0YXRzBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8GZW5lcmd5B3VpbnQxNj8JY2FyZ29tYXNzBnVpbnQzMgdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwdsb2FkZXJzDWxvYWRlcl9zdGF0cz8IZ2F0aGVyZXIPZ2F0aGVyZXJfc3RhdHM/BHdhcnALd2FycF9zdGF0cz8HY3JhZnRlcg5jcmFmdGVyX3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPwdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCHNjaGVkdWxlCXNjaGVkdWxlPwhzbG90X2RlZgABBHR5cGUFdWludDgKc3Bhd25jYXJnbwADCWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0C3NwYXducGFja2VkAAQJZW50aXR5X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQxNgpodWxsX3N0YXRzBnVpbnQ2NAlpbnN0YWxsZWQPcGFja2VkX21vZHVsZVtdC3NwYXduc2VlZGVkAAQJZW50aXR5X2lkBnVpbnQ2NAdpdGVtX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQFc3RhdHMGdWludDY0EnN0YXRfc2xvdF9yZXNwb25zZQABB3NvdXJjZXMNc3RhdF9zb3VyY2VbXQtzdGF0X3NvdXJjZQACC2lucHV0X2luZGV4BXVpbnQ4EGlucHV0X3N0YXRfaW5kZXgFdWludDgJc3RhdGVfcm93AAYHZW5hYmxlZARib29sBWVwb2NoBnVpbnQzMgRzYWx0BnVpbnQ2NAVzaGlwcwZ1aW50MzIEc2VlZAtjaGVja3N1bTI1NgZjb21taXQLY2hlY2tzdW0yNTYMc3RyYXR1bV9kYXRhAAIHc3RyYXR1bQxzdHJhdHVtX2luZm8Fc3RhdHMOcmVzb3VyY2Vfc3RhdHMMc3RyYXR1bV9pbmZvAAUHaXRlbV9pZAZ1aW50MTYEc2VlZAZ1aW50NjQIcmljaG5lc3MGdWludDE2B3Jlc2VydmUGdWludDMyC3Jlc2VydmVfbWF4BnVpbnQzMhFzdHJhdHVtX3JlbWFpbmluZwACB3N0cmF0dW0GdWludDE2CXJlbWFpbmluZwZ1aW50MzIEdGFzawAIBHR5cGUFdWludDgIZHVyYXRpb24GdWludDMyCmNhbmNlbGFibGUFdWludDgLY29vcmRpbmF0ZXMMY29vcmRpbmF0ZXM/BWNhcmdvDGNhcmdvX2l0ZW1bXQxlbnRpdHl0YXJnZXQLZW50aXR5X3JlZj8LZW50aXR5Z3JvdXAHdWludDY0PwtlbmVyZ3lfY29zdAd1aW50MTY/CnRhc2tfZXZlbnQACQpldmVudF90eXBlBXVpbnQ4BW93bmVyBG5hbWULZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CnRhc2tfaW5kZXgFdWludDgEdGFzawR0YXNrCXN0YXJ0c19hdAp0aW1lX3BvaW50DGNvbXBsZXRlc19hdAp0aW1lX3BvaW50Cm5ld19lbmVyZ3kHdWludDE2Pwx0YXNrX3Jlc3VsdHMAAQhlbnRpdGllcxJlbnRpdHlfdGFza19pbmZvW10IdHJhbnNmZXIABwtzb3VyY2VfdHlwZQRuYW1lCXNvdXJjZV9pZAZ1aW50NjQJZGVzdF90eXBlBG5hbWUHZGVzdF9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYFc3RhdHMGdWludDY0CHF1YW50aXR5BnVpbnQzMgZ0cmF2ZWwABQtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQIcmVjaGFyZ2UEYm9vbAl0eXBlc19yb3cABAJpZAZ1aW50NjQTZW50aXR5X3N1bW1hcnlfdHlwZQ5lbnRpdHlfc3VtbWFyeRBnYW1lX2NvbmZpZ190eXBlC2dhbWVfY29uZmlnFnN0cmF0dW1fcmVtYWluaW5nX3R5cGURc3RyYXR1bV9yZW1haW5pbmcNd2FyZWhvdXNlX3JvdwALAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nBXN0YXRzBnVpbnQ2NAtjb29yZGluYXRlcwtjb29yZGluYXRlcwhodWxsbWFzcwd1aW50MzI/CGNhcGFjaXR5B3VpbnQzMj8JY2FyZ29tYXNzBnVpbnQzMgdsb2FkZXJzDWxvYWRlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8Ed2FycAAEC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0AXgFaW50NjQBeQVpbnQ2NAp3YXJwX3N0YXRzAAEFcmFuZ2UGdWludDMyBHdpcGUAAAx3aXBlc2VxdWVuY2UAAAR3cmFwAAUFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQIY2FyZ29faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NDsAAFBRJypTMglhZGRtb2R1bGXHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRtb2R1bGUKc3VtbWFyeTogJ0luc3RhbGwgYSBtb2R1bGUgaW50byBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluc3RhbGwgYSBtb2R1bGUgZnJvbSBjYXJnbyBpbnRvIGEgbW9kdWxlIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldCBzbG90IHR5cGUuIFRoZSBtb2R1bGUgaXRlbSBpcyByZW1vdmVkIGZyb20gY2FyZ28gdXBvbiBpbnN0YWxsYXRpb24uAAAAWHc1UzIIYWRkbmV4dXOnAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRuZXh1cwpzdW1tYXJ5OiAnQWRkIGEgbmV4dXMgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNyZWF0ZSBhIG5ldyBuZXh1cyBlbnRpdHkgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLiBOZXh1c2VzIGFyZSBvd25lZCBieSB0aGUgY29udHJhY3QgYW5kIHNlcnZlIGFzIGZpeGVkIGdhdGhlcmluZyBwb2ludHMgd2hlcmUgcGxheWVycyBjYW4gd3JhcCwgdW53cmFwLCBkZXBsb3ksIGFuZCBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBORlQtYmFja2VkIGFzc2V0cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAEChaXYyB2FkdmFuY2XTAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZHZhbmNlCnN1bW1hcnk6ICdBZHZhbmNlIHR1cm4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkdmFuY2UgdGhlIGdhbWUgdG8gdGhlIG5leHQgdHVybi4AAAAAgDRVPAVibGVuZPwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJsZW5kCnN1bW1hcnk6ICdCbGVuZCBjYXJnbyBzdGFja3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbWJpbmUgbXVsdGlwbGUgY2FyZ28gc3RhY2tzIG9mIHRoZSBzYW1lIGl0ZW0gdHlwZSBpbnRvIGEgc2luZ2xlIHN0YWNrIHdpdGggbmV3IGJsZW5kZWQgc3RhdHMuIEFsbCBpbnB1dCBzdGFja3MgbXVzdCBzaGFyZSB0aGUgc2FtZSBpdGVtIGlkLiBUaGUgb3V0cHV0IHN0YWNrIGhhcyB0aGUgY29tYmluZWQgcXVhbnRpdHkgb2YgYWxsIGlucHV0cy4AAAAARIWmQQZjYW5jZWzCAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjYW5jZWwKc3VtbWFyeTogJ0NhbmNlbCBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbmNlbCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0YXNrcyBmcm9tIHRoZSBlbmQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUuIFRhc2tzIHRoYXQgYXJlIGltbXV0YWJsZSBhbmQgaW4gcHJvZ3Jlc3MgY2Fubm90IGJlIGNhbmNlbGxlZC5wVb4mY+lMRAxjbGFpbXN0YXJ0ZXKFBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGFpbXN0YXJ0ZXIKc3VtbWFyeTogJ0RFQlVHOiBjbGFpbSBhIHN0YXJ0ZXIgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU3Bhd24gYSBwcmUta2l0dGVkIFQxIHN0YXJ0ZXIgc2hpcCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgZm9yIGEgcmVnaXN0ZXJlZCBwbGF5ZXIuIEF2YWlsYWJsZSBvbmx5IG9uIHRlc3QgZGVwbG95bWVudHMgd2hlcmUgbm8gaW4tZ2FtZSBzaGlwIGVjb25vbXkgeWV0IGV4aXN0cy4gUmVxdWlyZXMgdGhlIGNhbGxlciB0byBiZSBhIGpvaW5lZCBwbGF5ZXIgd2l0aCBubyBleGlzdGluZyBzaGlwczsgdGhlIHJlc3VsdGluZyBzaGlwIGlzIGZpdHRlZCB3aXRoIGEgZ2VuZXJhdG9yLCBlbmdpbmUsIGdhdGhlcmVyLCBjcmFmdGVyLCBhbmQgaGF1bGVyIG1vZHVsZS4AAKgb32lURAljbGVhbnJzdnDsAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhbnJzdnAKc3VtbWFyeTogJ0NsZWFuIHVwIHBhc3QgZXBvY2ggcmVzZXJ2ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVyYXNlIHJlc2VydmUgdGFibGUgcm93cyBmcm9tIGEgcGFzdCBlcG9jaC4gQ2Fubm90IGNsZWFuIHRoZSBjdXJyZW50IG9yIGZ1dHVyZSBlcG9jaHMuIFRoZSBtYXhfcm93cyBwYXJhbWV0ZXIgY2FwcyB0aGUgbnVtYmVyIG9mIHJvd3MgZXJhc2VkIHBlciBjYWxsIHRvIGxpbWl0IENQVSB1c2FnZS4AgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl07AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgAAYDQytyZFCWNvbmZpZ2xvZ90CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbmZpZ2xvZwpzdW1tYXJ5OiAnTG9nIGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIHRoYXQgbG9ncyB0aGUgY3VycmVudCBnYW1lIGNvbmZpZ3VyYXRpb24uIENhbGxlZCBpbmxpbmUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gdG8gYnJvYWRjYXN0IGNvbmZpZyB2aWEgYWN0aW9uIHRyYWNlcy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAACAvMxFBWNyYWZ0yAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY3JhZnQKc3VtbWFyeTogJ0NyYWZ0IGl0ZW1zIGZyb20gYSByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZm9ybSBjYXJnbyBpdGVtcyBpbnRvIGEgbmV3IGl0ZW0gdXNpbmcgYSByZWNpcGUuIFRoZSBlbnRpdHkgbXVzdCBoYXZlIGEgY3JhZnRlciBtb2R1bGUgaW5zdGFsbGVkLiBDb25zdW1lcyBlbmVyZ3kgYW5kIHNjaGVkdWxlcyBhIGNyYWZ0aW5nIHRhc2sgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiB0b3RhbCBpbnB1dCBtYXNzIGFuZCBjcmFmdGVyIHNwZWVkLiBJbnB1dCBxdWFudGl0aWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgcmVjaXBlIHJlcXVpcmVtZW50cy7gs8tTqWzURQxjcmVhdGVlbnRpdHm/AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmVhdGVlbnRpdHkKc3VtbWFyeTogJ0RFQlVHOiBjcmVhdGUgYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAHgaq0oGZGVwbG957AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVwbG95CnN1bW1hcnk6ICdEZXBsb3kgYSBwYWNrZWQgZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpVbnBhY2sgYSBwYWNrZWQgZW50aXR5IGl0ZW0gKHBhY2tlZCBzaGlwIG9yIHBhY2tlZCBjb250YWluZXIpIGZyb20gY2FyZ28sIHNjaGVkdWxpbmcgYSBkZXBsb3kgdGFzayB0aGF0IGNyZWF0ZXMgdGhlIG5ldyBlbnRpdHkgYXQgdGhlIGRlcGxveWluZyBlbnRpdHkncyBsb2NhdGlvbiB1cG9uIHJlc29sdXRpb24uAIDPLk+FsEoKZGVzY2VudGl0eckDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlc2NlbnRpdHkKc3VtbWFyeTogJ0Rlc2NyaWJlIGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBzdHJpbmcgZm9yIGEgcGFja2VkIGVudGl0eSwgZGVyaXZlZCBmcm9tIHRoZSBlbnRpdHkgaXRlbSBpZCwgaHVsbCBzdGF0cywgYW5kIHRoZSBsaXN0IG9mIGluc3RhbGxlZCBtb2R1bGUgaXRlbSBpZHMgYW5kIHN0YXRzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGRpc3BsYXkgcGFja2VkIGVudGl0aWVzLgAAAACoeMxUBmVuYWJsZd0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4AAAAAXNWyYQZnYXRoZXKXAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnYXRoZXIKc3VtbWFyeTogJ0dhdGhlciByZXNvdXJjZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkdhdGhlciByZXNvdXJjZXMgYXQgdGhlIHNoaXAncyBjdXJyZW50IGxvY2F0aW9uLiBPbmx5IHdvcmtzIGF0IGdhdGhlcmFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhIGdhdGhlciB0YXNrIHRoYXQgY29uc3VtZXMgZW5lcmd5IGFuZCB5aWVsZHMgY2FyZ28gYmFzZWQgb24gdGhlIHNoaXAncyBnYXRoZXJlciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAABgbk2KsmIJZ2V0Y29uZmlnygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Y29uZmlnCnN1bW1hcnk6ICdHZXQgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBnYW1lIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGRlZmF1bHQgZW50aXR5IHN0YXRzIGZvciB3YXJlaG91c2VzIGFuZCBjb250YWluZXJzLCBhbmQgdGhlIGZ1bGwgaXRlbSBkZWZpbml0aW9ucyB0YWJsZS4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4ATDZJquyyYgtnZXRpdGVtZGF0YagDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1kYXRhCnN1bW1hcnk6ICdHZXQgZnVsbCBpdGVtIGNhdGFsb2cnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBjb21wbGV0ZSBpdGVtIGNhdGFsb2cgYXMgdGhlIGNvbnRyYWN0IHNlZXMgaXQsIGluY2x1ZGluZyB0eXBlLCBzdWJ0eXBlLCB0aWVyLCBtYXNzLCBhbmQgb3RoZXIgc3RhdGljIG1ldGFkYXRhLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBjbGllbnRzIHRvIG1pcnJvciB0aGUgY29udHJhY3QncyBpdGVtIGRlZmluaXRpb25zLgAATk6q7LJiCmdldGl0ZW1pZHOGAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtaWRzCnN1bW1hcnk6ICdHZXQgaXRlbSBpZCB0byBuYW1lIG1hcHBpbmdzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBtYXBwaW5nIG9mIGl0ZW0gaWQgY29uc3RhbnRzIHRvIHRoZWlyIGNhbm9uaWNhbCBzdHJpbmcgbmFtZXMuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gcmVzb2x2ZSBudW1lcmljIGl0ZW0gaWRzIHRvIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXJzLgAAAFiq7LJiCGdldGl0ZW1zmgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgaXRlbXMgaW4gdGhlIGdhbWUgaW5jbHVkaW5nIHRoZWlyIGlkLCBiYXNlIHByaWNlLCBhbmQgbWFzcy6AVfVZquyyYgxnZXRpdGVtdHlwZXOIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtdHlwZXMKc3VtbWFyeTogJ0dldCBpdGVtIHR5cGUgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBpdGVtIHR5cGUgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAocmVzb3VyY2UsIGNvbXBvbmVudCwgbW9kdWxlLCBlbnRpdHkpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBpdGVtIHR5cGUgaWRlbnRpZmllcnMuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggaXRlbTogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgCAySYhGrNiCmdldGxvY2RhdGH+Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NkYXRhCnN1bW1hcnk6ICdHZXQgZGVyaXZlZCBsb2NhdGlvbiBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGRlcml2ZWQgbG9jYXRpb24gZGF0YSBpbmNsdWRpbmcgc3RhdGljIHByb3BlcnRpZXMgKHR5cGUsIGRpZmZpY3VsdHksIHNlZWRzKSBmcm9tIHRoZSBnYW1lIHNlZWQgYW5kIGVwb2NoLXNwZWNpZmljIHByb3BlcnRpZXMgKGFjdGl2ZSwgc2VlZHMpIGZyb20gdGhlIGN1cnJlbnQgZXBvY2ggc2VlZC4AsKo+JyqzYgtnZXRtb2R0eXBlc9YDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG1vZHR5cGVzCnN1bW1hcnk6ICdHZXQgbW9kdWxlIHR5cGUgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBtb2R1bGUgdHlwZSBlbnVtIHZhbHVlcyBhbmQgdGhlaXIgc3RyaW5nIG5hbWVzIChhbnksIGVuZ2luZSwgZ2VuZXJhdG9yLCBnYXRoZXJlciwgbG9hZGVyLCB3YXJwLCBjcmFmdGVyLCBsYXVuY2hlciwgc3RvcmFnZSwgaGF1bGVyKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgbW9kdWxlIHN1YnR5cGUgaWRlbnRpZmllcnMgYW5kIHNsb3QgY29tcGF0aWJpbGl0eS4AAFZRJyqzYgpnZXRtb2R1bGVzgAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bW9kdWxlcwpzdW1tYXJ5OiAnR2V0IGFsbCBtb2R1bGUgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBzdWJzZXQgb2YgaXRlbXMgY2xhc3NpZmllZCBhcyBtb2R1bGVzLCBpbmNsdWRpbmcgZWFjaCBtb2R1bGUncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGluc3RhbGxhYmxlIGVxdWlwbWVudC4AAPDnGjWzYglnZXRuZWFyYnneAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZWFyYnkKc3VtbWFyeTogJ0dldCBuZWFyYnkgcmVhY2hhYmxlIHN5c3RlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgbmVhcmJ5IHN5c3RlbXMgcmVhY2hhYmxlIGJ5IGFuIGVudGl0eSBmcm9tIGl0cyBwcm9qZWN0ZWQgbG9jYXRpb24uIFJldHVybnMgY3VycmVudCBzdGF0ZSAod2l0aCBjb21wbGV0ZWQgdGFza3MgcmVzb2x2ZWQpLCBwcm9qZWN0ZWQgc3RhdGUgKGFmdGVyIGFsbCBzY2hlZHVsZWQgdGFza3MpLCBhbmQgYSBsaXN0IG9mIHJlYWNoYWJsZSBzeXN0ZW1zIHdpdGggZGlzdGFuY2UsIGVuZXJneSBjb3N0LCBmbGlnaHQgdGltZSwgYW5kIG1hcmtldCBpbmZvcm1hdGlvbi4AAF3T5TWzYgpnZXRuZnRpbmZv8AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmZ0aW5mbwpzdW1tYXJ5OiAnR2V0IE5GVCBzY2hlbWEgYW5kIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBBdG9taWNBc3NldHMgc2NoZW1hcyBhbmQgdGVtcGxhdGVzIHRoZSBnYW1lIGNvbnRyYWN0IGV4cGVjdHMsIHBsdXMgdGhlIGN1cnJlbnQgYGl0ZW1faWQg4oaSICh0ZW1wbGF0ZV9pZCwgc2NoZW1hX25hbWUpYCBtYXBwaW5nIHN0b3JlZCBpbiB0aGUgYG5mdGNvbmZpZ2AgdGFibGUuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gc3luYyBhdG9taWNhc3NldHMgc3RhdGUgd2l0aCB0aGUgY29udHJhY3QuAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AAFDVIXWzYglnZXRyZWNpcGWmAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGUKc3VtbWFyeTogJ0dldCBhIHNpbmdsZSBjcmFmdGluZyByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSByZWNpcGUgd2hvc2Ugb3V0cHV0IG1hdGNoZXMgdGhlIGdpdmVuIGl0ZW0gaWQsIGluY2x1ZGluZyBpdHMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGlzcGxheSBjcmFmdGluZyByZXF1aXJlbWVudHMuAABW1SF1s2IKZ2V0cmVjaXBlc6wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlY2lwZXMKc3VtbWFyeTogJ0xpc3QgY3JhZnRpbmcgcmVjaXBlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBjcmFmdGluZyByZWNpcGVzIHN0YXJ0aW5nIGF0IHRoZSBwcm92aWRlZCBsb3dlciBib3VuZCBvdXRwdXQgaXRlbSBpZCwgdXAgdG8gdGhlIHNwZWNpZmllZCBsaW1pdC4gRWFjaCBlbnRyeSBpbmNsdWRlcyBpbnB1dHMsIGJsZW5kIHdlaWdodHMsIHN0YXQgc2xvdHMsIGFuZCByZXNvbHZlZCBpdGVtIG1hc3MgaW5mby4AAM4GYXWzYgpnZXRyZXNjYXRzngMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzY2F0cwpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcmVzb3VyY2UgY2F0ZWdvcnkgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAob3JlLCBnYXMsIHJlZ29saXRoLCBiaW9tYXNzLCBjcnlzdGFsKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgcmVzb3VyY2Ugc3VidHlwZSBpZGVudGlmaWVycy4AsNpXYXWzYgtnZXRyZXNlcnZlc/wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2VydmVzCnN1bW1hcnk6ICdHZXQgY3VycmVudCByZXNlcnZlIG1vZGlmaWNhdGlvbnMgYXQgYSBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgY2hhaW4ncyBtb2RpZmljYXRpb25zIHRvIGRlcml2ZWQgcmVzZXJ2ZXMgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGUgZm9yIHRoZSBjdXJyZW50IGVwb2NoIGFzIGEgbGlzdCBvZiB7c3RyYXR1bSwgcmVtYWluaW5nfSBwYWlycy4gU3RyYXRhIG5vdCBwcmVzZW50IGluIHRoZSByZXNwb25zZSB1c2UgdGhlaXIgZGVyaXZlZCBpbml0aWFsIHJlc2VydmUuIENvbXBvc2Ugd2l0aCBTREsgZGVyaXZhdGlvbiB0byBnZXQgdGhlIGZ1bGwgcGVyLWxvY2F0aW9uIHN0cmF0YSB2aWV3LoAVuppidbNiDGdldHJlc291cmNlc4cDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc291cmNlcwpzdW1tYXJ5OiAnR2V0IGFsbCByZXNvdXJjZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIHJlc291cmNlcywgaW5jbHVkaW5nIGVhY2ggcmVzb3VyY2UncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGdhdGhlcmFibGUgbWF0ZXJpYWxzLgAAADjTiLNiCGdldHNsb3RzuwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c2xvdHMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc2xvdCBsYXlvdXRzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgbW9kdWxlIHNsb3QgbGF5b3V0IGZvciBldmVyeSBlbnRpdHkgaXRlbSB0eXBlLCBsaXN0aW5nIHRoZSBvcmRlcmVkIHNsb3QgdHlwZXMgYXZhaWxhYmxlIGZvciBtb2R1bGUgaW5zdGFsbGF0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRldGVybWluZSB3aGljaCBtb2R1bGUgdHlwZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBhIGdpdmVuIGVudGl0eSBodWxsLgCA1NncjLNiCmdldHN0cmF0dW3SAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdHJhdHVtCnN1bW1hcnk6ICdHZXQgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHJlc291cmNlIHN0cmF0dW0gZGF0YSBmb3IgYSBzcGVjaWZpYyBkZXB0aCBsYXllciBhdCBhIGNvb3JkaW5hdGUsIGluY2x1ZGluZyB0aGUgc3RyYXR1bSBzZWVkIGluZm8gYW5kIGRlcml2ZWQgcmVzb3VyY2Ugc3RhdHMugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4Aotrm5qrpZQtncm91cHRyYXZlbJoELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdyb3VwdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIG11bHRpcGxlIGVudGl0aWVzIHRvZ2V0aGVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSBncm91cCB0cmF2ZWwgZm9yIG11bHRpcGxlIGVudGl0aWVzIHRvIGEgZGVzdGluYXRpb24uIEFsbCBlbnRpdGllcyBtdXN0IGJlIGF0IHRoZSBzYW1lIGxvY2F0aW9uIGFuZCBvd25lZCBieSB0aGUgY2FsbGVyLiBBdCBsZWFzdCBvbmUgZW50aXR5IHdpdGggZW5naW5lcyBpcyByZXF1aXJlZCB0byBwcm92aWRlIHRocnVzdC4gRmxpZ2h0IGR1cmF0aW9uIGlzIGNhbGN1bGF0ZWQgZnJvbSBjb21iaW5lZCB0aHJ1c3QgYW5kIHRvdGFsIG1hc3Mgb2YgYWxsIGVudGl0aWVzLiBDcmVhdGVzIGFuIGVudGl0eWdyb3VwIGZvciBhdG9taWMgcmVzb2x1dGlvbiBhbmQgY2FuY2VsbGF0aW9uLgAAAAAA0LBpBGhhc2j4AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhMjU2IGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTI1NiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbsQBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAIpd05C6CHJlY2hhcmdlzQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4AAABA7UixugdyZXNvbHZl0AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVzb2x2ZQpzdW1tYXJ5OiAnQ29tcGxldGUgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXNvbHZlIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4gSWYgY291bnQgaXMgc3BlY2lmaWVkLCByZXNvbHZlIGV4YWN0bHkgdGhhdCBtYW55IHRhc2tzOyBvdGhlcndpc2UgcmVzb2x2ZSBhbGwgY29tcGxldGVkIHRhc2tzLiBGYWlscyBpZiBjb3VudCBleGNlZWRzIHRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRhc2tzLgAAACrqRKW8CHJtbW9kdWxlvAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcm1tb2R1bGUKc3VtbWFyeTogJ1JlbW92ZSBhIG1vZHVsZSBmcm9tIGEgc2xvdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVtb3ZlIGFuIGluc3RhbGxlZCBtb2R1bGUgZnJvbSBhIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIGlzIHJldHVybmVkIHRvIGNhcmdvLiBGYWlscyBpZiB0aGUgZW50aXR5IGRvZXMgbm90IGhhdmUgZW5vdWdoIGNhcmdvIGNhcGFjaXR5IHRvIGhvbGQgdGhlIHJldHVybmVkIG1vZHVsZS4AAABsobymvAhybW5mdGNmZ6EDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJtbmZ0Y2ZnCnN1bW1hcnk6ICdSZW1vdmUgTkZUIHRlbXBsYXRlIG1hcHBpbmcgZm9yIGFuIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlbW92ZSB0aGUgQXRvbWljQXNzZXRzIHRlbXBsYXRlIG1hcHBpbmcgZm9yIHRoZSBzcGVjaWZpZWQgaXRlbSBpZCBmcm9tIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gQWZ0ZXIgcmVtb3ZhbCB0aGUgaXRlbSBjYW4gbm8gbG9uZ2VyIGJlIHdyYXBwZWQgb3IgdW53cmFwcGVkIHVudGlsIGEgbmV3IG1hcHBpbmcgaXMgc2V0LiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAACQo8EEc2FsdNgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNhbHQKc3VtbWFyeTogJ0FwcGVuZCBTYWx0JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZGQgYWRkaXRpb25hbCBzYWx0IHRvIHRoZSBuZXh0IGVwb2NoIHNlZWQuAABgC+U1s8IJc2V0bmZ0Y2ZnxAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2V0bmZ0Y2ZnCnN1bW1hcnk6ICdTZXQgTkZUIHRlbXBsYXRlIG1hcHBpbmcgZm9yIGFuIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJpbmQgYW4gaXRlbSBpZCB0byBhbiBBdG9taWNBc3NldHMgdGVtcGxhdGUgaWQgYW5kIHNjaGVtYSBuYW1lLiBVc2VkIHRvIGNvbmZpZ3VyZSBob3cgdGhlIGNvbnRyYWN0IG1pbnRzIGFuZCByZWNvZ25pemVzIE5GVHMgZm9yIGEgZ2l2ZW4gaXRlbS4gSW5zZXJ0cyBhIG5ldyBtYXBwaW5nIGlmIG9uZSBkb2VzIG5vdCBleGlzdCwgb3IgdXBkYXRlcyB0aGUgZXhpc3RpbmcgbWFwcGluZy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAZdegyU3FCnNwYXduY2FyZ2/FAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzcGF3bmNhcmdvCnN1bW1hcnk6ICdERUJVRzogc3Bhd24gY2FyZ28gb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAJKCyNTJTcULc3Bhd25wYWNrZWTnAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzcGF3bnBhY2tlZApzdW1tYXJ5OiAnREVCVUc6IHNwYXduIGEgcGFja2VkIGVudGl0eSB3aXRoIGluc3RhbGxlZCBtb2R1bGVzIG9uIGFuIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQCSSkrhyU3FC3NwYXduc2VlZGVkzQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Bhd25zZWVkZWQKc3VtbWFyeTogJ0RFQlVHOiBzcGF3biBzZWVkZWQgY2FyZ28gb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbPsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4AAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAFDN5QR3cmFw/gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd3JhcApzdW1tYXJ5OiAnV3JhcCBjYXJnbyBpbnRvIGFuIE5GVCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKV3JhcCBhIHF1YW50aXR5IG9mIGNhcmdvIGZyb20gYW4gZW50aXR5IGludG8gYW4gQXRvbWljQXNzZXRzIE5GVCBtaW50ZWQgdG8gdGhlIHNwZWNpZmllZCBvd25lci4gVGhlIGVudGl0eSBtdXN0IGJlIGF0IGEgbmV4dXMsIGhhdmUgbG9hZGVycywgYW5kIGNvbnRhaW4gZW5vdWdoIG9mIHRoZSByZXF1ZXN0ZWQgY2FyZ28uIFNjaGVkdWxlcyBhIHdyYXAgdGFzayB0aGF0LCBvbiByZXNvbHV0aW9uLCByZW1vdmVzIHRoZSBjYXJnbyBmcm9tIHRoZSBlbnRpdHkgYW5kIG1pbnRzIHRoZSBORlQgdXNpbmcgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyZWQgZm9yIHRoYXQgaXRlbSBpZC4NAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAC4ajqTJ0UDaTY0AAANY29udGFpbmVyX3JvdwCqppf57PJUA2k2NAAAD2VudGl0eWdyb3VwX3JvdwAAAJO6bBCNA2k2NAAADGxvY2F0aW9uX3JvdwAAAAAArLuaA2k2NAAACW5leHVzX3JvdwAAYG5NivKaA2k2NAAADW5mdGNvbmZpZ19yb3cAAAAAXOVNrANpNjQAAApwbGF5ZXJfcm93AAAAQO2rsLoDaTY0AAALcmVzZXJ2ZV9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAAAArKrPA2k2NAAACXR5cGVzX3JvdwAAUFjTpq7hA2k2NAAADXdhcmVob3VzZV9yb3cBEVNoaXBsb2FkIChTZXJ2ZXIpEVNoaXBsb2FkIChTZXJ2ZXIpAAAAJAAAAABEhaZBDmNhbmNlbF9yZXN1bHRzAAAAAIC8zEUMdGFza19yZXN1bHRzAAAAAHgaq0oMdGFza19yZXN1bHRzAIDPLk+FsEoGc3RyaW5nAAAAAFzVsmEMdGFza19yZXN1bHRzAABgbk2KsmILZ2FtZV9jb25maWcAsHLZ5amyYg1lbnRpdHlfaW5mb1tdAADw2eWpsmILZW50aXR5X2luZm8ATDZJquyyYg9pdGVtZGF0YV9yZXN1bHQAAE5OquyyYg9pdGVtX2lkc19yZXN1bHQAAABYquyyYgppdGVtc19pbmZvgFX1WarssmILZW51bV9yZXN1bHQAJnXZIBqzYg1sb2NhdGlvbl9pbmZvAIDJJiEas2IQbG9jYXRpb25fZGVyaXZlZACwqj4nKrNiC2VudW1fcmVzdWx0AABWUScqs2IObW9kdWxlc19yZXN1bHQAAPDnGjWzYgtuZWFyYnlfaW5mbwAAXdPlNbNiDm5mdGluZm9fcmVzdWx0AAC4yptYs2ILcGxheWVyX2luZm8AAFDVIXWzYg5yZWNpcGVzX3Jlc3VsdAAAVtUhdbNiDnJlY2lwZXNfcmVzdWx0AADOBmF1s2ILZW51bV9yZXN1bHQAsNpXYXWzYhNzdHJhdHVtX3JlbWFpbmluZ1tdgBW6mmJ1s2IQcmVzb3VyY2VzX3Jlc3VsdAAAADjTiLNiFWVudGl0eV9sYXlvdXRzX3Jlc3VsdACA1NncjLNiDHN0cmF0dW1fZGF0YYCVu0ZKjbNiEGVudGl0eV9zdW1tYXJ5W10Aotrm5qrpZQx0YXNrX3Jlc3VsdHMAAAAAANCwaQtjaGVja3N1bTI1NgAAAECE0rBpC2NoZWNrc3VtNTEyAAAAil3TkLoMdGFza19yZXN1bHRzAAAAQO1IsboPcmVzb2x2ZV9yZXN1bHRzAAAAVy08zc0MdGFza19yZXN1bHRzAAAAAES1zc0MdGFza19yZXN1bHRzAAAAAABQr+EMdGFza19yZXN1bHRzAAAAAABQzeUMdGFza19yZXN1bHRz');
208
+ const abiBlob = Blob.from('DmVvc2lvOjphYmkvMS4yAhVCX3ZlY3Rvcl9lbnRpdHlfcmVmX0UMZW50aXR5X3JlZltdDWxvY2F0aW9uX3R5cGUFdWludDiHAQlhZGRtb2R1bGUABQtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQMbW9kdWxlX2luZGV4BXVpbnQ4D21vZHVsZV9jYXJnb19pZAZ1aW50NjQPdGFyZ2V0X2NhcmdvX2lkBnVpbnQ2NAhhZGRuZXh1cwADCm5leHVzX25hbWUGc3RyaW5nAXgFaW50NjQBeQVpbnQ2NAdhZHZhbmNlAAIGcmV2ZWFsBnN0cmluZwZjb21taXQLY2hlY2tzdW0yNTYFYmxlbmQAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAZpbnB1dHMMY2FyZ29faXRlbVtdBmNhbmNlbAADC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0BWNvdW50BnVpbnQ2NA5jYW5jZWxfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ9jYW5jZWxsZWRfY291bnQFdWludDgQc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPwpjYXJnb19pdGVtAAQHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdCWNhcmdvX3JvdwAGAmlkBnVpbnQ2NAllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAVzdGF0cwZ1aW50NjQHbW9kdWxlcw5tb2R1bGVfZW50cnlbXQpjYXJnb192aWV3AAUHaXRlbV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBXN0YXRzBnVpbnQ2NAdtb2R1bGVzDm1vZHVsZV9lbnRyeVtdAmlkBnVpbnQ2NAxjbGFpbXN0YXJ0ZXIAAwdhY2NvdW50BG5hbWUBeAVpbnQ2NAF5BWludDY0CWNsZWFucnN2cAACBWVwb2NoBnVpbnQ2NAhtYXhfcm93cwZ1aW50NjQKY2xlYXJ0YWJsZQADCnRhYmxlX25hbWUEbmFtZQVzY29wZQVuYW1lPwhtYXhfcm93cwd1aW50NjQ/BmNvbW1pdAABBmNvbW1pdAtjaGVja3N1bTI1Ngljb25maWdsb2cAAQZjb25maWcLZ2FtZV9jb25maWcNY29udGFpbmVyX3JvdwAKAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCGh1bGxtYXNzBnVpbnQzMghjYXBhY2l0eQZ1aW50MzIJY2FyZ29tYXNzBnVpbnQzMghzY2hlZHVsZQlzY2hlZHVsZT8Fc3RhdHMGdWludDY0B2l0ZW1faWQGdWludDE2C2Nvb3JkaW5hdGVzAAMBeAVpbnQ2NAF5BWludDY0AXoHdWludDE2PwVjcmFmdAAFC2VudGl0eV90eXBlBG5hbWUCaWQGdWludDY0CXJlY2lwZV9pZAZ1aW50MTYIcXVhbnRpdHkGdWludDMyBmlucHV0cwxjYXJnb19pdGVtW10NY3JhZnRlcl9zdGF0cwACBXNwZWVkBnVpbnQxNgVkcmFpbgZ1aW50MTYMY3JlYXRlZW50aXR5AAUFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwF4BWludDY0AXkFaW50NjQIZGVtb2xpc2gAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQGZGVwbG95AAQLZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQOcGFja2VkX2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NApkZXNjZW50aXR5AAQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQMbW9kdWxlX2l0ZW1zCHVpbnQxNltdDG1vZHVsZV9zdGF0cwh1aW50NjRbXQZlbmFibGUAAQdlbmFibGVkBGJvb2wMZW5lcmd5X3N0YXRzAAIIY2FwYWNpdHkGdWludDE2CHJlY2hhcmdlBnVpbnQxNhRlbnRpdHlfY3VycmVudF9zdGF0ZQACC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzBmVuZXJneQZ1aW50MTYPZW50aXR5X2RlZmF1bHRzAAILd2FyZWhvdXNlX3oGdWludDE2C2NvbnRhaW5lcl96BnVpbnQxNgtlbnRpdHlfaW5mbwAZBHR5cGUEbmFtZQJpZAZ1aW50NjQFb3duZXIEbmFtZQtlbnRpdHlfbmFtZQZzdHJpbmcLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMJY2FyZ29tYXNzBnVpbnQzMgVjYXJnbwxjYXJnb192aWV3W10HbG9hZGVycw1sb2FkZXJfc3RhdHM/B21vZHVsZXMObW9kdWxlX2VudHJ5W10GZW5lcmd5B3VpbnQxNj8IaHVsbG1hc3MHdWludDMyPwdlbmdpbmVzD21vdmVtZW50X3N0YXRzPwlnZW5lcmF0b3INZW5lcmd5X3N0YXRzPwhjYXBhY2l0eQd1aW50MzI/CGdhdGhlcmVyD2dhdGhlcmVyX3N0YXRzPwZoYXVsZXINaGF1bGVyX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8HaXNfaWRsZQRib29sDGN1cnJlbnRfdGFzawV0YXNrPxRjdXJyZW50X3Rhc2tfZWxhcHNlZAZ1aW50MzIWY3VycmVudF90YXNrX3JlbWFpbmluZwZ1aW50MzINcGVuZGluZ190YXNrcwZ0YXNrW10HaWRsZV9hdAt0aW1lX3BvaW50PwhzY2hlZHVsZQlzY2hlZHVsZT8NZW50aXR5X2xheW91dAACDmVudGl0eV9pdGVtX2lkBnVpbnQxNgVzbG90cwpzbG90X2RlZltdFWVudGl0eV9sYXlvdXRzX3Jlc3VsdAABCGVudGl0aWVzD2VudGl0eV9sYXlvdXRbXQplbnRpdHlfcmVmAAILZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0DmVudGl0eV9zdW1tYXJ5AAgEdHlwZQRuYW1lAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2VudGl0eV9uYW1lBnN0cmluZwtjb29yZGluYXRlcwtjb29yZGluYXRlcwdpc19pZGxlBGJvb2wOcmVzb2x2ZWRfY291bnQGdWludDMyDXBlbmRpbmdfY291bnQGdWludDMyEGVudGl0eV90YXNrX2luZm8ABAllbnRpdHlfaWQGdWludDY0C2VudGl0eV90eXBlBG5hbWUKdGFza19jb3VudAV1aW50OBBzY2hlZHVsZV9zdGFydGVkCnRpbWVfcG9pbnQPZW50aXR5Z3JvdXBfcm93AAICaWQGdWludDY0DHBhcnRpY2lwYW50cwxlbnRpdHlfcmVmW10LZW51bV9tZW1iZXIAAgV2YWx1ZQV1aW50OARuYW1lBnN0cmluZwtlbnVtX3Jlc3VsdAABB21lbWJlcnMNZW51bV9tZW1iZXJbXQtnYW1lX2NvbmZpZwADB3ZlcnNpb24GdWludDMyCGRlZmF1bHRzD2VudGl0eV9kZWZhdWx0cwVpdGVtcwppdGVtX2RlZltdBmdhdGhlcgAEBnNvdXJjZQplbnRpdHlfcmVmC2Rlc3RpbmF0aW9uCmVudGl0eV9yZWYHc3RyYXR1bQZ1aW50MTYIcXVhbnRpdHkGdWludDMyDmdhdGhlcmVyX3N0YXRzAAQFeWllbGQGdWludDE2BWRyYWluBnVpbnQxNgVkZXB0aAZ1aW50MTYFc3BlZWQGdWludDE2CWdldGNvbmZpZwAAC2dldGVudGl0aWVzAAIFb3duZXIEbmFtZQtlbnRpdHlfdHlwZQVuYW1lPwlnZXRlbnRpdHkAAgtlbnRpdHlfdHlwZQRuYW1lCWVudGl0eV9pZAZ1aW50NjQLZ2V0aXRlbWRhdGEAAApnZXRpdGVtaWRzAAAIZ2V0aXRlbXMAAAxnZXRpdGVtdHlwZXMAAAtnZXRsb2NhdGlvbgACAXgFaW50NjQBeQVpbnQ2NApnZXRsb2NkYXRhAAIBeAVpbnQ2NAF5BWludDY0C2dldG1vZHR5cGVzAAAKZ2V0bW9kdWxlcwAACWdldG5lYXJieQADC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAhyZWNoYXJnZQRib29sCmdldG5mdGluZm8AAAlnZXRwbGF5ZXIAAQdhY2NvdW50BG5hbWUJZ2V0cmVjaXBlAAEOb3V0cHV0X2l0ZW1faWQGdWludDE2CmdldHJlY2lwZXMAAgtsb3dlcl9ib3VuZAZ1aW50MTYFbGltaXQFdWludDgKZ2V0cmVzY2F0cwAAC2dldHJlc2VydmVzAAIBeAVpbnQ2NAF5BWludDY0DGdldHJlc291cmNlcwAACGdldHNsb3RzAAAKZ2V0c3RyYXR1bQADAXgFaW50NjQBeQVpbnQ2NAdzdHJhdHVtBnVpbnQxNgxnZXRzdW1tYXJpZXMAAgVvd25lcgRuYW1lC2VudGl0eV90eXBlBW5hbWU/C2dyb3VwdHJhdmVsAAQIZW50aXRpZXMMZW50aXR5X3JlZltdAXgFaW50NjQBeQVpbnQ2NAhyZWNoYXJnZQRib29sBGhhc2gAAQV2YWx1ZQZzdHJpbmcHaGFzaDUxMgABBXZhbHVlBnN0cmluZwxoYXVsZXJfc3RhdHMAAwhjYXBhY2l0eQV1aW50OAplZmZpY2llbmN5BnVpbnQxNgVkcmFpbgZ1aW50MTYEaW5pdAABBHNlZWQLY2hlY2tzdW0yNTYIaXRlbV9kZWYABQJpZAZ1aW50MTYEbWFzcwZ1aW50MzIEdHlwZQV1aW50OAdzdWJ0eXBlBXVpbnQ4BHRpZXIFdWludDgMaXRlbV9pZF9wYWlyAAICaWQGdWludDE2BG5hbWUGc3RyaW5nD2l0ZW1faWRzX3Jlc3VsdAABBWl0ZW1zDml0ZW1faWRfcGFpcltdD2l0ZW1kYXRhX3Jlc3VsdAACBWl0ZW1zCml0ZW1fZGVmW10HcmVjaXBlcw5yZWNpcGVzX3Jlc3VsdAppdGVtc19pbmZvAAEFaXRlbXMKaXRlbV9kZWZbXQRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwADBG1hc3MGdWludDMyBnRocnVzdAZ1aW50MTYIcXVhbnRpdHkFdWludDgQbG9jYXRpb25fZGVyaXZlZAADDHN0YXRpY19wcm9wcw9sb2NhdGlvbl9zdGF0aWMLZXBvY2hfcHJvcHMObG9jYXRpb25fZXBvY2gEc2l6ZQZ1aW50MTYObG9jYXRpb25fZXBvY2gAAwZhY3RpdmUEYm9vbAVzZWVkMAV1aW50OAVzZWVkMQV1aW50OA1sb2NhdGlvbl9pbmZvAAIGY29vcmRzC2Nvb3JkaW5hdGVzCWlzX3N5c3RlbQRib29sDGxvY2F0aW9uX3JvdwAGAmlkBnVpbnQ2NAVvd25lcgRuYW1lC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzCWNhcmdvbWFzcwZ1aW50MzIFY2FyZ28MY2FyZ29faXRlbVtdCHNjaGVkdWxlCXNjaGVkdWxlPw9sb2NhdGlvbl9zdGF0aWMABQZjb29yZHMLY29vcmRpbmF0ZXMEdHlwZQ1sb2NhdGlvbl90eXBlB3N1YnR5cGUFdWludDgFc2VlZDAFdWludDgFc2VlZDEFdWludDgMbW9kdWxlX2VudHJ5AAIEdHlwZQV1aW50OAlpbnN0YWxsZWQOcGFja2VkX21vZHVsZT8LbW9kdWxlX2luZm8ABAJpZAZ1aW50MTYEbWFzcwZ1aW50MzILbW9kdWxlX3R5cGUFdWludDgEdGllcgV1aW50OA5tb2R1bGVzX3Jlc3VsdAABB21vZHVsZXMNbW9kdWxlX2luZm9bXQ5tb3ZlbWVudF9zdGF0cwACBnRocnVzdAZ1aW50MzIFZHJhaW4GdWludDE2C25lYXJieV9pbmZvAAUKY2FuX3RyYXZlbARib29sB2N1cnJlbnQUZW50aXR5X2N1cnJlbnRfc3RhdGUJcHJvamVjdGVkFGVudGl0eV9jdXJyZW50X3N0YXRlCm1heF9lbmVyZ3kGdWludDE2B3N5c3RlbXMPbmVhcmJ5X3N5c3RlbVtdDW5lYXJieV9zeXN0ZW0ABAhkaXN0YW5jZQZ1aW50NjQLZW5lcmd5X2Nvc3QGdWludDY0C2ZsaWdodF90aW1lBnVpbnQzMghsb2NhdGlvbg1sb2NhdGlvbl9pbmZvCW5leHVzX3JvdwAEAmlkBnVpbnQ2NAVvd25lcgRuYW1lBG5hbWUGc3RyaW5nC2Nvb3JkaW5hdGVzC2Nvb3JkaW5hdGVzDm5mdF9zY2hlbWFfZGVmAAILc2NoZW1hX25hbWUEbmFtZQZmaWVsZHMOc2NoZW1hX2ZpZWxkW10QbmZ0X3RlbXBsYXRlX2RlZgACB2l0ZW1faWQGdWludDE2C3NjaGVtYV9uYW1lBG5hbWUNbmZ0Y29uZmlnX3JvdwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUObmZ0aW5mb19yZXN1bHQAAgdzY2hlbWFzEG5mdF9zY2hlbWFfZGVmW10JdGVtcGxhdGVzEm5mdF90ZW1wbGF0ZV9kZWZbXQZub3RpZnkAAQVldmVudAp0YXNrX2V2ZW50DXBhY2tlZF9tb2R1bGUAAgdpdGVtX2lkBnVpbnQxNgVzdGF0cwZ1aW50NjQLcGxheWVyX2luZm8ABgVvd25lcgRuYW1lCWlzX3BsYXllcgRib29sDGNvbXBhbnlfbmFtZQZzdHJpbmcKc2hpcF9jb3VudAZ1aW50NjQPd2FyZWhvdXNlX2NvdW50BnVpbnQ2NA9jb250YWluZXJfY291bnQGdWludDY0CnBsYXllcl9yb3cAAQVvd25lcgRuYW1lCHJlY2hhcmdlAAILZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQMcmVjaXBlX2lucHV0AAQHaXRlbV9pZAZ1aW50MTYIY2F0ZWdvcnkFdWludDgEdGllcgV1aW50OAhxdWFudGl0eQZ1aW50MzIQcmVjaXBlX2l0ZW1faW5mbwACAmlkBnVpbnQxNgRtYXNzBnVpbnQzMg9yZWNpcGVfcmVzcG9uc2UABw5vdXRwdXRfaXRlbV9pZAZ1aW50MTYLb3V0cHV0X21hc3MGdWludDMyBmlucHV0cw5yZWNpcGVfaW5wdXRbXQpzdGF0X3Nsb3RzFHN0YXRfc2xvdF9yZXNwb25zZVtdDWJsZW5kX3dlaWdodHMFYnl0ZXMLb3V0cHV0X2l0ZW0QcmVjaXBlX2l0ZW1faW5mbwtpbnB1dF9pdGVtcxJyZWNpcGVfaXRlbV9pbmZvW10OcmVjaXBlc19yZXN1bHQAAQdyZWNpcGVzEXJlY2lwZV9yZXNwb25zZVtdC3Jlc2VydmVfcm93AAQCaWQGdWludDY0CGNvb3JkX2lkBnVpbnQ2NAdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyB3Jlc29sdmUAAwtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAVjb3VudAd1aW50NjQ/D3Jlc29sdmVfcmVzdWx0cwAGCWVudGl0eV9pZAZ1aW50NjQLZW50aXR5X3R5cGUEbmFtZQ5yZXNvbHZlZF9jb3VudAV1aW50OBRuZXdfc2NoZWR1bGVfc3RhcnRlZAt0aW1lX3BvaW50PwtlbnRpdHlncm91cAd1aW50NjQ/DWdyb3VwX21lbWJlcnMWQl92ZWN0b3JfZW50aXR5X3JlZl9FPw1yZXNvdXJjZV9pbmZvAAQCaWQGdWludDE2BG1hc3MGdWludDMyCGNhdGVnb3J5BXVpbnQ4BHRpZXIFdWludDgOcmVzb3VyY2Vfc3RhdHMAAwVzdGF0MQZ1aW50MTYFc3RhdDIGdWludDE2BXN0YXQzBnVpbnQxNhByZXNvdXJjZXNfcmVzdWx0AAEJcmVzb3VyY2VzD3Jlc291cmNlX2luZm9bXQhybW1vZHVsZQAEC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAxtb2R1bGVfaW5kZXgFdWludDgPdGFyZ2V0X2NhcmdvX2lkBnVpbnQ2NAhybW5mdGNmZwABB2l0ZW1faWQGdWludDE2BHNhbHQAAQRzYWx0BnVpbnQ2NAhzY2hlZHVsZQACB3N0YXJ0ZWQKdGltZV9wb2ludAV0YXNrcwZ0YXNrW10Mc2NoZW1hX2ZpZWxkAAIEbmFtZQZzdHJpbmcKZmllbGRfdHlwZQZzdHJpbmcMc2VxdWVuY2Vfcm93AAIDa2V5BG5hbWUFdmFsdWUGdWludDY0CXNldG5mdGNmZwADB2l0ZW1faWQGdWludDE2C3RlbXBsYXRlX2lkBWludDMyC3NjaGVtYV9uYW1lBG5hbWUIc2hpcF9yb3cAEwJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwVzdGF0cwZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MHdWludDMyPwhjYXBhY2l0eQd1aW50MzI/BmVuZXJneQd1aW50MTY/CWNhcmdvbWFzcwZ1aW50MzIHZW5naW5lcw9tb3ZlbWVudF9zdGF0cz8JZ2VuZXJhdG9yDWVuZXJneV9zdGF0cz8HbG9hZGVycw1sb2FkZXJfc3RhdHM/CGdhdGhlcmVyD2dhdGhlcmVyX3N0YXRzPwR3YXJwC3dhcnBfc3RhdHM/B2NyYWZ0ZXIOY3JhZnRlcl9zdGF0cz8GaGF1bGVyDWhhdWxlcl9zdGF0cz8HbW9kdWxlcw5tb2R1bGVfZW50cnlbXQhzY2hlZHVsZQlzY2hlZHVsZT8HaXRlbV9pZAZ1aW50MTYIc2xvdF9kZWYAAQR0eXBlBXVpbnQ4CnNwYXduY2FyZ28AAwllbnRpdHlfaWQGdWludDY0B2l0ZW1faWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAtzcGF3bnBhY2tlZAAECWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50MTYKaHVsbF9zdGF0cwZ1aW50NjQJaW5zdGFsbGVkD3BhY2tlZF9tb2R1bGVbXQtzcGF3bnNlZWRlZAAECWVudGl0eV9pZAZ1aW50NjQHaXRlbV9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0BXN0YXRzBnVpbnQ2NBJzdGF0X3Nsb3RfcmVzcG9uc2UAAQdzb3VyY2VzDXN0YXRfc291cmNlW10Lc3RhdF9zb3VyY2UAAgtpbnB1dF9pbmRleAV1aW50OBBpbnB1dF9zdGF0X2luZGV4BXVpbnQ4CXN0YXRlX3JvdwAGB2VuYWJsZWQEYm9vbAVlcG9jaAZ1aW50MzIEc2FsdAZ1aW50NjQFc2hpcHMGdWludDMyBHNlZWQLY2hlY2tzdW0yNTYGY29tbWl0C2NoZWNrc3VtMjU2DHN0cmF0dW1fZGF0YQACB3N0cmF0dW0Mc3RyYXR1bV9pbmZvBXN0YXRzDnJlc291cmNlX3N0YXRzDHN0cmF0dW1faW5mbwAFB2l0ZW1faWQGdWludDE2BHNlZWQGdWludDY0CHJpY2huZXNzBnVpbnQxNgdyZXNlcnZlBnVpbnQzMgtyZXNlcnZlX21heAZ1aW50MzIRc3RyYXR1bV9yZW1haW5pbmcAAgdzdHJhdHVtBnVpbnQxNglyZW1haW5pbmcGdWludDMyBHRhc2sACAR0eXBlBXVpbnQ4CGR1cmF0aW9uBnVpbnQzMgpjYW5jZWxhYmxlBXVpbnQ4C2Nvb3JkaW5hdGVzDGNvb3JkaW5hdGVzPwVjYXJnbwxjYXJnb19pdGVtW10MZW50aXR5dGFyZ2V0C2VudGl0eV9yZWY/C2VudGl0eWdyb3VwB3VpbnQ2ND8LZW5lcmd5X2Nvc3QHdWludDE2Pwp0YXNrX2V2ZW50AAkKZXZlbnRfdHlwZQV1aW50OAVvd25lcgRuYW1lC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2NAp0YXNrX2luZGV4BXVpbnQ4BHRhc2sEdGFzawlzdGFydHNfYXQKdGltZV9wb2ludAxjb21wbGV0ZXNfYXQKdGltZV9wb2ludApuZXdfZW5lcmd5B3VpbnQxNj8MdGFza19yZXN1bHRzAAEIZW50aXRpZXMSZW50aXR5X3Rhc2tfaW5mb1tdCHRyYW5zZmVyAAcLc291cmNlX3R5cGUEbmFtZQlzb3VyY2VfaWQGdWludDY0CWRlc3RfdHlwZQRuYW1lB2Rlc3RfaWQGdWludDY0B2l0ZW1faWQGdWludDE2BXN0YXRzBnVpbnQ2NAhxdWFudGl0eQZ1aW50MzIGdHJhdmVsAAULZW50aXR5X3R5cGUEbmFtZQJpZAZ1aW50NjQBeAVpbnQ2NAF5BWludDY0CHJlY2hhcmdlBGJvb2wJdHlwZXNfcm93AAQCaWQGdWludDY0E2VudGl0eV9zdW1tYXJ5X3R5cGUOZW50aXR5X3N1bW1hcnkQZ2FtZV9jb25maWdfdHlwZQtnYW1lX2NvbmZpZxZzdHJhdHVtX3JlbWFpbmluZ190eXBlEXN0cmF0dW1fcmVtYWluaW5nCHVuZGVwbG95AAQJaG9zdF90eXBlBG5hbWUHaG9zdF9pZAZ1aW50NjQLdGFyZ2V0X3R5cGUEbmFtZQl0YXJnZXRfaWQGdWludDY0DXdhcmVob3VzZV9yb3cADAJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwVzdGF0cwZ1aW50NjQLY29vcmRpbmF0ZXMLY29vcmRpbmF0ZXMIaHVsbG1hc3MHdWludDMyPwhjYXBhY2l0eQd1aW50MzI/CWNhcmdvbWFzcwZ1aW50MzIHbG9hZGVycw1sb2FkZXJfc3RhdHM/B21vZHVsZXMObW9kdWxlX2VudHJ5W10Ic2NoZWR1bGUJc2NoZWR1bGU/B2l0ZW1faWQGdWludDE2BHdhcnAABAtlbnRpdHlfdHlwZQRuYW1lAmlkBnVpbnQ2NAF4BWludDY0AXkFaW50NjQKd2FycF9zdGF0cwABBXJhbmdlBnVpbnQzMgR3aXBlAAAMd2lwZXNlcXVlbmNlAAAEd3JhcAAFBW93bmVyBG5hbWULZW50aXR5X3R5cGUEbmFtZQllbnRpdHlfaWQGdWludDY0CGNhcmdvX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQKd3JhcGVudGl0eQACC2VudGl0eV90eXBlBG5hbWUJZW50aXR5X2lkBnVpbnQ2ND4AAFBRJypTMglhZGRtb2R1bGXHAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRtb2R1bGUKc3VtbWFyeTogJ0luc3RhbGwgYSBtb2R1bGUgaW50byBhIHNsb3QnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluc3RhbGwgYSBtb2R1bGUgZnJvbSBjYXJnbyBpbnRvIGEgbW9kdWxlIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIHR5cGUgbXVzdCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHRhcmdldCBzbG90IHR5cGUuIFRoZSBtb2R1bGUgaXRlbSBpcyByZW1vdmVkIGZyb20gY2FyZ28gdXBvbiBpbnN0YWxsYXRpb24uAAAAWHc1UzIIYWRkbmV4dXOnAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZGRuZXh1cwpzdW1tYXJ5OiAnQWRkIGEgbmV4dXMgbG9jYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNyZWF0ZSBhIG5ldyBuZXh1cyBlbnRpdHkgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGVzLiBOZXh1c2VzIGFyZSBvd25lZCBieSB0aGUgY29udHJhY3QgYW5kIHNlcnZlIGFzIGZpeGVkIGdhdGhlcmluZyBwb2ludHMgd2hlcmUgcGxheWVycyBjYW4gd3JhcCwgdW53cmFwLCBkZXBsb3ksIGFuZCBvdGhlcndpc2UgaW50ZXJhY3Qgd2l0aCBORlQtYmFja2VkIGFzc2V0cy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAEChaXYyB2FkdmFuY2XTAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBhZHZhbmNlCnN1bW1hcnk6ICdBZHZhbmNlIHR1cm4nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkFkdmFuY2UgdGhlIGdhbWUgdG8gdGhlIG5leHQgdHVybi4AAAAAgDRVPAVibGVuZPwCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGJsZW5kCnN1bW1hcnk6ICdCbGVuZCBjYXJnbyBzdGFja3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbWJpbmUgbXVsdGlwbGUgY2FyZ28gc3RhY2tzIG9mIHRoZSBzYW1lIGl0ZW0gdHlwZSBpbnRvIGEgc2luZ2xlIHN0YWNrIHdpdGggbmV3IGJsZW5kZWQgc3RhdHMuIEFsbCBpbnB1dCBzdGFja3MgbXVzdCBzaGFyZSB0aGUgc2FtZSBpdGVtIGlkLiBUaGUgb3V0cHV0IHN0YWNrIGhhcyB0aGUgY29tYmluZWQgcXVhbnRpdHkgb2YgYWxsIGlucHV0cy4AAAAARIWmQQZjYW5jZWzCAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjYW5jZWwKc3VtbWFyeTogJ0NhbmNlbCBzY2hlZHVsZWQgdGFza3MnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbmNlbCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiB0YXNrcyBmcm9tIHRoZSBlbmQgb2YgYW4gZW50aXR5J3Mgc2NoZWR1bGUuIFRhc2tzIHRoYXQgYXJlIGltbXV0YWJsZSBhbmQgaW4gcHJvZ3Jlc3MgY2Fubm90IGJlIGNhbmNlbGxlZC5wVb4mY+lMRAxjbGFpbXN0YXJ0ZXKFBC0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGFpbXN0YXJ0ZXIKc3VtbWFyeTogJ0RFQlVHOiBjbGFpbSBhIHN0YXJ0ZXIgc2hpcCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU3Bhd24gYSBwcmUta2l0dGVkIFQxIHN0YXJ0ZXIgc2hpcCBhdCB0aGUgZ2l2ZW4gY29vcmRpbmF0ZXMgZm9yIGEgcmVnaXN0ZXJlZCBwbGF5ZXIuIEF2YWlsYWJsZSBvbmx5IG9uIHRlc3QgZGVwbG95bWVudHMgd2hlcmUgbm8gaW4tZ2FtZSBzaGlwIGVjb25vbXkgeWV0IGV4aXN0cy4gUmVxdWlyZXMgdGhlIGNhbGxlciB0byBiZSBhIGpvaW5lZCBwbGF5ZXIgd2l0aCBubyBleGlzdGluZyBzaGlwczsgdGhlIHJlc3VsdGluZyBzaGlwIGlzIGZpdHRlZCB3aXRoIGEgZ2VuZXJhdG9yLCBlbmdpbmUsIGdhdGhlcmVyLCBjcmFmdGVyLCBhbmQgaGF1bGVyIG1vZHVsZS4AAKgb32lURAljbGVhbnJzdnDsAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjbGVhbnJzdnAKc3VtbWFyeTogJ0NsZWFuIHVwIHBhc3QgZXBvY2ggcmVzZXJ2ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVyYXNlIHJlc2VydmUgdGFibGUgcm93cyBmcm9tIGEgcGFzdCBlcG9jaC4gQ2Fubm90IGNsZWFuIHRoZSBjdXJyZW50IG9yIGZ1dHVyZSBlcG9jaHMuIFRoZSBtYXhfcm93cyBwYXJhbWV0ZXIgY2FwcyB0aGUgbnVtYmVyIG9mIHJvd3MgZXJhc2VkIHBlciBjYWxsIHRvIGxpbWl0IENQVSB1c2FnZS4AgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAGQnJUUGY29tbWl07AEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY29tbWl0CnN1bW1hcnk6ICdTZXQgY29tbWl0IHZhbHVlJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTZXQgdGhlIGluaXRpYWwgY29tbWl0IHZhbHVlIGR1cmluZyBnYW1lIGluaXRpYWxpemF0aW9uLgAAYDQytyZFCWNvbmZpZ2xvZ90CLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNvbmZpZ2xvZwpzdW1tYXJ5OiAnTG9nIGdhbWUgY29uZmlndXJhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW50ZXJuYWwgYWN0aW9uIHRoYXQgbG9ncyB0aGUgY3VycmVudCBnYW1lIGNvbmZpZ3VyYXRpb24uIENhbGxlZCBpbmxpbmUgYWZ0ZXIgaW5pdGlhbGl6YXRpb24gdG8gYnJvYWRjYXN0IGNvbmZpZyB2aWEgYWN0aW9uIHRyYWNlcy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAAACAvMxFBWNyYWZ0yAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY3JhZnQKc3VtbWFyeTogJ0NyYWZ0IGl0ZW1zIGZyb20gYSByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRyYW5zZm9ybSBjYXJnbyBpdGVtcyBpbnRvIGEgbmV3IGl0ZW0gdXNpbmcgYSByZWNpcGUuIFRoZSBlbnRpdHkgbXVzdCBoYXZlIGEgY3JhZnRlciBtb2R1bGUgaW5zdGFsbGVkLiBDb25zdW1lcyBlbmVyZ3kgYW5kIHNjaGVkdWxlcyBhIGNyYWZ0aW5nIHRhc2sgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiB0b3RhbCBpbnB1dCBtYXNzIGFuZCBjcmFmdGVyIHNwZWVkLiBJbnB1dCBxdWFudGl0aWVzIG11c3QgZXhhY3RseSBtYXRjaCB0aGUgcmVjaXBlIHJlcXVpcmVtZW50cy7gs8tTqWzURQxjcmVhdGVlbnRpdHm/AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBjcmVhdGVlbnRpdHkKc3VtbWFyeTogJ0RFQlVHOiBjcmVhdGUgYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAADbtIpUoIZGVtb2xpc2gAAAAAAHgaq0oGZGVwbG957AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZGVwbG95CnN1bW1hcnk6ICdEZXBsb3kgYSBwYWNrZWQgZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpVbnBhY2sgYSBwYWNrZWQgZW50aXR5IGl0ZW0gKHBhY2tlZCBzaGlwIG9yIHBhY2tlZCBjb250YWluZXIpIGZyb20gY2FyZ28sIHNjaGVkdWxpbmcgYSBkZXBsb3kgdGFzayB0aGF0IGNyZWF0ZXMgdGhlIG5ldyBlbnRpdHkgYXQgdGhlIGRlcGxveWluZyBlbnRpdHkncyBsb2NhdGlvbiB1cG9uIHJlc29sdXRpb24uAIDPLk+FsEoKZGVzY2VudGl0eckDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGRlc2NlbnRpdHkKc3VtbWFyeTogJ0Rlc2NyaWJlIGEgcGFja2VkIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBodW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBzdHJpbmcgZm9yIGEgcGFja2VkIGVudGl0eSwgZGVyaXZlZCBmcm9tIHRoZSBlbnRpdHkgaXRlbSBpZCwgaHVsbCBzdGF0cywgYW5kIHRoZSBsaXN0IG9mIGluc3RhbGxlZCBtb2R1bGUgaXRlbSBpZHMgYW5kIHN0YXRzLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBORlQgcmVuZGVyZXJzIHRvIGRpc3BsYXkgcGFja2VkIGVudGl0aWVzLgAAAACoeMxUBmVuYWJsZd0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4AAAAAXNWyYQZnYXRoZXKXAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnYXRoZXIKc3VtbWFyeTogJ0dhdGhlciByZXNvdXJjZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkdhdGhlciByZXNvdXJjZXMgYXQgdGhlIHNoaXAncyBjdXJyZW50IGxvY2F0aW9uLiBPbmx5IHdvcmtzIGF0IGdhdGhlcmFibGUgbG9jYXRpb24gdHlwZXMuIFNjaGVkdWxlcyBhIGdhdGhlciB0YXNrIHRoYXQgY29uc3VtZXMgZW5lcmd5IGFuZCB5aWVsZHMgY2FyZ28gYmFzZWQgb24gdGhlIHNoaXAncyBnYXRoZXJlciBzdGF0cyBhbmQgdGhlIGxvY2F0aW9uJ3MgcmVzb3VyY2UgY29tcG9zaXRpb24uAABgbk2KsmIJZ2V0Y29uZmlnygItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0Y29uZmlnCnN1bW1hcnk6ICdHZXQgZ2FtZSBjb25maWd1cmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHRoZSBnYW1lIGNvbmZpZ3VyYXRpb24gaW5jbHVkaW5nIGRlZmF1bHQgZW50aXR5IHN0YXRzIGZvciB3YXJlaG91c2VzIGFuZCBjb250YWluZXJzLCBhbmQgdGhlIGZ1bGwgaXRlbSBkZWZpbml0aW9ucyB0YWJsZS4AsHLZ5amyYgtnZXRlbnRpdGllc6QCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0aWVzCnN1bW1hcnk6ICdHZXQgYWxsIGVudGl0aWVzIGZvciBhIHBsYXllcicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyBmdWxsIGVudGl0eSBpbmZvIGZvciBhbGwgZW50aXRpZXMgb3duZWQgYnkgYSBwbGF5ZXIuIE9wdGlvbmFsbHkgZmlsdGVyIGJ5IGVudGl0eSB0eXBlLgAA8NnlqbJiCWdldGVudGl0eaICLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGVudGl0eQpzdW1tYXJ5OiAnR2V0IGVudGl0eSBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmV0dXJucyB0aGUgY3VycmVudCBzdGF0ZSBvZiBhbiBlbnRpdHkgaW5jbHVkaW5nIGlkZW50aXR5LCBjYXJnbywgc2NoZWR1bGUgc3RhdGUsIGFuZCB0eXBlLXNwZWNpZmljIGZpZWxkcy4ATDZJquyyYgtnZXRpdGVtZGF0YagDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldGl0ZW1kYXRhCnN1bW1hcnk6ICdHZXQgZnVsbCBpdGVtIGNhdGFsb2cnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBjb21wbGV0ZSBpdGVtIGNhdGFsb2cgYXMgdGhlIGNvbnRyYWN0IHNlZXMgaXQsIGluY2x1ZGluZyB0eXBlLCBzdWJ0eXBlLCB0aWVyLCBtYXNzLCBhbmQgb3RoZXIgc3RhdGljIG1ldGFkYXRhLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIGFuZCBjbGllbnRzIHRvIG1pcnJvciB0aGUgY29udHJhY3QncyBpdGVtIGRlZmluaXRpb25zLgAATk6q7LJiCmdldGl0ZW1pZHOGAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtaWRzCnN1bW1hcnk6ICdHZXQgaXRlbSBpZCB0byBuYW1lIG1hcHBpbmdzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBtYXBwaW5nIG9mIGl0ZW0gaWQgY29uc3RhbnRzIHRvIHRoZWlyIGNhbm9uaWNhbCBzdHJpbmcgbmFtZXMuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gcmVzb2x2ZSBudW1lcmljIGl0ZW0gaWRzIHRvIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXJzLgAAAFiq7LJiCGdldGl0ZW1zmgItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0aXRlbXMKc3VtbWFyeTogJ0dldCBhbGwgYXZhaWxhYmxlIGl0ZW1zJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgaXRlbXMgaW4gdGhlIGdhbWUgaW5jbHVkaW5nIHRoZWlyIGlkLCBiYXNlIHByaWNlLCBhbmQgbWFzcy6AVfVZquyyYgxnZXRpdGVtdHlwZXOIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRpdGVtdHlwZXMKc3VtbWFyeTogJ0dldCBpdGVtIHR5cGUgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBpdGVtIHR5cGUgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAocmVzb3VyY2UsIGNvbXBvbmVudCwgbW9kdWxlLCBlbnRpdHkpLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRlY29kZSBpdGVtIHR5cGUgaWRlbnRpZmllcnMuACZ12SAas2ILZ2V0bG9jYXRpb27iAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NhdGlvbgpzdW1tYXJ5OiAnR2V0IGxvY2F0aW9uIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgbG9jYXRpb24gaW5jbHVkaW5nIHdoZXRoZXIgYSBzeXN0ZW0gZXhpc3RzLCBhbmQgZm9yIGVhY2ggaXRlbTogcHJpY2UsIHN1cHBseSwgcmFyaXR5IG11bHRpcGxpZXIsIGFuZCBsb2NhdGlvbiBtdWx0aXBsaWVyLgCAySYhGrNiCmdldGxvY2RhdGH+Ai0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRsb2NkYXRhCnN1bW1hcnk6ICdHZXQgZGVyaXZlZCBsb2NhdGlvbiBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGRlcml2ZWQgbG9jYXRpb24gZGF0YSBpbmNsdWRpbmcgc3RhdGljIHByb3BlcnRpZXMgKHR5cGUsIGRpZmZpY3VsdHksIHNlZWRzKSBmcm9tIHRoZSBnYW1lIHNlZWQgYW5kIGVwb2NoLXNwZWNpZmljIHByb3BlcnRpZXMgKGFjdGl2ZSwgc2VlZHMpIGZyb20gdGhlIGN1cnJlbnQgZXBvY2ggc2VlZC4AsKo+JyqzYgtnZXRtb2R0eXBlc9YDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldG1vZHR5cGVzCnN1bW1hcnk6ICdHZXQgbW9kdWxlIHR5cGUgZW51bSB2YWx1ZXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBtb2R1bGUgdHlwZSBlbnVtIHZhbHVlcyBhbmQgdGhlaXIgc3RyaW5nIG5hbWVzIChhbnksIGVuZ2luZSwgZ2VuZXJhdG9yLCBnYXRoZXJlciwgbG9hZGVyLCB3YXJwLCBjcmFmdGVyLCBsYXVuY2hlciwgc3RvcmFnZSwgaGF1bGVyKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgbW9kdWxlIHN1YnR5cGUgaWRlbnRpZmllcnMgYW5kIHNsb3QgY29tcGF0aWJpbGl0eS4AAFZRJyqzYgpnZXRtb2R1bGVzgAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bW9kdWxlcwpzdW1tYXJ5OiAnR2V0IGFsbCBtb2R1bGUgaXRlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBzdWJzZXQgb2YgaXRlbXMgY2xhc3NpZmllZCBhcyBtb2R1bGVzLCBpbmNsdWRpbmcgZWFjaCBtb2R1bGUncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGluc3RhbGxhYmxlIGVxdWlwbWVudC4AAPDnGjWzYglnZXRuZWFyYnneAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRuZWFyYnkKc3VtbWFyeTogJ0dldCBuZWFyYnkgcmVhY2hhYmxlIHN5c3RlbXMnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgYWN0aW9uIHJldHVybnMgbmVhcmJ5IHN5c3RlbXMgcmVhY2hhYmxlIGJ5IGFuIGVudGl0eSBmcm9tIGl0cyBwcm9qZWN0ZWQgbG9jYXRpb24uIFJldHVybnMgY3VycmVudCBzdGF0ZSAod2l0aCBjb21wbGV0ZWQgdGFza3MgcmVzb2x2ZWQpLCBwcm9qZWN0ZWQgc3RhdGUgKGFmdGVyIGFsbCBzY2hlZHVsZWQgdGFza3MpLCBhbmQgYSBsaXN0IG9mIHJlYWNoYWJsZSBzeXN0ZW1zIHdpdGggZGlzdGFuY2UsIGVuZXJneSBjb3N0LCBmbGlnaHQgdGltZSwgYW5kIG1hcmtldCBpbmZvcm1hdGlvbi4AAF3T5TWzYgpnZXRuZnRpbmZv8AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0bmZ0aW5mbwpzdW1tYXJ5OiAnR2V0IE5GVCBzY2hlbWEgYW5kIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHNldCBvZiBBdG9taWNBc3NldHMgc2NoZW1hcyBhbmQgdGVtcGxhdGVzIHRoZSBnYW1lIGNvbnRyYWN0IGV4cGVjdHMsIHBsdXMgdGhlIGN1cnJlbnQgYGl0ZW1faWQg4oaSICh0ZW1wbGF0ZV9pZCwgc2NoZW1hX25hbWUpYCBtYXBwaW5nIHN0b3JlZCBpbiB0aGUgYG5mdGNvbmZpZ2AgdGFibGUuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gc3luYyBhdG9taWNhc3NldHMgc3RhdGUgd2l0aCB0aGUgY29udHJhY3QuAAC4yptYs2IJZ2V0cGxheWVy/QItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cGxheWVyCnN1bW1hcnk6ICdHZXQgcGxheWVyIGluZm9ybWF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGEgcGxheWVyIGluY2x1ZGluZyBiYWxhbmNlLCBkZWJ0LCBuZXR3b3J0aCwgZW50aXR5IGNvdW50cywgYW5kIHByaWNpbmcgZm9yIG5leHQgcHVyY2hhc2VzLiBSZXR1cm5zIGlzX3BsYXllcj1mYWxzZSBpZiB0aGUgYWNjb3VudCBoYXMgbm90IGpvaW5lZCB0aGUgZ2FtZS4AAFDVIXWzYglnZXRyZWNpcGWmAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRyZWNpcGUKc3VtbWFyeTogJ0dldCBhIHNpbmdsZSBjcmFmdGluZyByZWNpcGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClRoaXMgaXMgYSByZWFkLW9ubHkgcXVlcnkgdGhhdCByZXR1cm5zIHRoZSByZWNpcGUgd2hvc2Ugb3V0cHV0IG1hdGNoZXMgdGhlIGdpdmVuIGl0ZW0gaWQsIGluY2x1ZGluZyBpdHMgaW5wdXRzLCBibGVuZCB3ZWlnaHRzLCBzdGF0IHNsb3RzLCBhbmQgcmVzb2x2ZWQgaXRlbSBtYXNzIGluZm8uIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZGlzcGxheSBjcmFmdGluZyByZXF1aXJlbWVudHMuAABW1SF1s2IKZ2V0cmVjaXBlc6wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlY2lwZXMKc3VtbWFyeTogJ0xpc3QgY3JhZnRpbmcgcmVjaXBlcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgYSBwYWdpbmF0ZWQgbGlzdCBvZiBjcmFmdGluZyByZWNpcGVzIHN0YXJ0aW5nIGF0IHRoZSBwcm92aWRlZCBsb3dlciBib3VuZCBvdXRwdXQgaXRlbSBpZCwgdXAgdG8gdGhlIHNwZWNpZmllZCBsaW1pdC4gRWFjaCBlbnRyeSBpbmNsdWRlcyBpbnB1dHMsIGJsZW5kIHdlaWdodHMsIHN0YXQgc2xvdHMsIGFuZCByZXNvbHZlZCBpdGVtIG1hc3MgaW5mby4AAM4GYXWzYgpnZXRyZXNjYXRzngMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0cmVzY2F0cwpzdW1tYXJ5OiAnR2V0IHJlc291cmNlIGNhdGVnb3J5IGVudW0gdmFsdWVzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgZnVsbCBzZXQgb2YgcmVzb3VyY2UgY2F0ZWdvcnkgZW51bSB2YWx1ZXMgYW5kIHRoZWlyIHN0cmluZyBuYW1lcyAob3JlLCBnYXMsIHJlZ29saXRoLCBiaW9tYXNzLCBjcnlzdGFsKS4gVXNlZCBieSBvZmYtY2hhaW4gdG9vbGluZyB0byBkZWNvZGUgcmVzb3VyY2Ugc3VidHlwZSBpZGVudGlmaWVycy4AsNpXYXWzYgtnZXRyZXNlcnZlc/wDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc2VydmVzCnN1bW1hcnk6ICdHZXQgY3VycmVudCByZXNlcnZlIG1vZGlmaWNhdGlvbnMgYXQgYSBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gcmV0dXJucyB0aGUgY2hhaW4ncyBtb2RpZmljYXRpb25zIHRvIGRlcml2ZWQgcmVzZXJ2ZXMgYXQgdGhlIGdpdmVuIGNvb3JkaW5hdGUgZm9yIHRoZSBjdXJyZW50IGVwb2NoIGFzIGEgbGlzdCBvZiB7c3RyYXR1bSwgcmVtYWluaW5nfSBwYWlycy4gU3RyYXRhIG5vdCBwcmVzZW50IGluIHRoZSByZXNwb25zZSB1c2UgdGhlaXIgZGVyaXZlZCBpbml0aWFsIHJlc2VydmUuIENvbXBvc2Ugd2l0aCBTREsgZGVyaXZhdGlvbiB0byBnZXQgdGhlIGZ1bGwgcGVyLWxvY2F0aW9uIHN0cmF0YSB2aWV3LoAVuppidbNiDGdldHJlc291cmNlc4cDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdldHJlc291cmNlcwpzdW1tYXJ5OiAnR2V0IGFsbCByZXNvdXJjZSBpdGVtcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBpcyBhIHJlYWQtb25seSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIHN1YnNldCBvZiBpdGVtcyBjbGFzc2lmaWVkIGFzIHJlc291cmNlcywgaW5jbHVkaW5nIGVhY2ggcmVzb3VyY2UncyBpZCwgbWFzcywgc3VidHlwZSwgYW5kIHRpZXIuIFVzZWQgYnkgb2ZmLWNoYWluIHRvb2xpbmcgdG8gZW51bWVyYXRlIGdhdGhlcmFibGUgbWF0ZXJpYWxzLgAAADjTiLNiCGdldHNsb3RzuwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c2xvdHMKc3VtbWFyeTogJ0dldCBlbnRpdHkgc2xvdCBsYXlvdXRzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGlzIGEgcmVhZC1vbmx5IHF1ZXJ5IHRoYXQgcmV0dXJucyB0aGUgbW9kdWxlIHNsb3QgbGF5b3V0IGZvciBldmVyeSBlbnRpdHkgaXRlbSB0eXBlLCBsaXN0aW5nIHRoZSBvcmRlcmVkIHNsb3QgdHlwZXMgYXZhaWxhYmxlIGZvciBtb2R1bGUgaW5zdGFsbGF0aW9uLiBVc2VkIGJ5IG9mZi1jaGFpbiB0b29saW5nIHRvIGRldGVybWluZSB3aGljaCBtb2R1bGUgdHlwZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBhIGdpdmVuIGVudGl0eSBodWxsLgCA1NncjLNiCmdldHN0cmF0dW3SAi0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBnZXRzdHJhdHVtCnN1bW1hcnk6ICdHZXQgcmVzb3VyY2Ugc3RyYXR1bSBkYXRhJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpUaGlzIGFjdGlvbiByZXR1cm5zIHJlc291cmNlIHN0cmF0dW0gZGF0YSBmb3IgYSBzcGVjaWZpYyBkZXB0aCBsYXllciBhdCBhIGNvb3JkaW5hdGUsIGluY2x1ZGluZyB0aGUgc3RyYXR1bSBzZWVkIGluZm8gYW5kIGRlcml2ZWQgcmVzb3VyY2Ugc3RhdHMugJW7RkqNs2IMZ2V0c3VtbWFyaWVz6AItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZ2V0c3VtbWFyaWVzCnN1bW1hcnk6ICdHZXQgZW50aXR5IHN1bW1hcmllcyBmb3IgYSBwbGF5ZXInCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJldHVybnMgbGlnaHR3ZWlnaHQgc3VtbWFyaWVzIG9mIGFsbCBlbnRpdGllcyBvd25lZCBieSBhIHBsYXllciBpbmNsdWRpbmcgdHlwZSwgaWQsIG93bmVyLCBuYW1lLCBsb2NhdGlvbiwgYW5kIGlkbGUgc3RhdHVzLiBPcHRpb25hbGx5IGZpbHRlciBieSBlbnRpdHkgdHlwZS4Aotrm5qrpZQtncm91cHRyYXZlbJoELS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGdyb3VwdHJhdmVsCnN1bW1hcnk6ICdNb3ZlIG11bHRpcGxlIGVudGl0aWVzIHRvZ2V0aGVyJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbml0aWF0ZSBncm91cCB0cmF2ZWwgZm9yIG11bHRpcGxlIGVudGl0aWVzIHRvIGEgZGVzdGluYXRpb24uIEFsbCBlbnRpdGllcyBtdXN0IGJlIGF0IHRoZSBzYW1lIGxvY2F0aW9uIGFuZCBvd25lZCBieSB0aGUgY2FsbGVyLiBBdCBsZWFzdCBvbmUgZW50aXR5IHdpdGggZW5naW5lcyBpcyByZXF1aXJlZCB0byBwcm92aWRlIHRocnVzdC4gRmxpZ2h0IGR1cmF0aW9uIGlzIGNhbGN1bGF0ZWQgZnJvbSBjb21iaW5lZCB0aHJ1c3QgYW5kIHRvdGFsIG1hc3Mgb2YgYWxsIGVudGl0aWVzLiBDcmVhdGVzIGFuIGVudGl0eWdyb3VwIGZvciBhdG9taWMgcmVzb2x1dGlvbiBhbmQgY2FuY2VsbGF0aW9uLgAAAAAA0LBpBGhhc2j4AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoCnN1bW1hcnk6ICdDYWxjdWxhdGUgc2hhMjU2IGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIHNoYTI1NiBoYXNoIG9mIGEgc3RyaW5nIGJhc2VkIHVzaW5nIHRoZSBnYW1lIHNlZWQuAAAAQITSsGkHaGFzaDUxMvsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGhhc2g1MTIKc3VtbWFyeTogJ0NhbGN1bGF0ZSBzaGE1MTIgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgc2hhNTEyIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0+gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgc2VlZCB2YWx1ZXMgdG8gYm9vdHN0cmFwIGdhbWUgc3RhdGUuAAAAAAAwHX0Eam9pbsQBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGpvaW4Kc3VtbWFyeTogJ0pvaW4gYSBnYW1lJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpKb2luIGEgZ2FtZSBvZiBTaGlwbG9hZAAAAAD45TKdBm5vdGlmeYoDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG5vdGlmeQpzdW1tYXJ5OiAnVGFzayBsaWZlY3ljbGUgbm90aWZpY2F0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnRlcm5hbCBhY3Rpb24gdGhhdCBub3RpZmllcyBlbnRpdHkgb3duZXJzIG9mIHRhc2sgbGlmZWN5Y2xlIGV2ZW50cyAocmVzb2x2ZWQsIGNhbmNlbGxlZCkuIENhbGxlZCBpbmxpbmUgd2hlbiB0YXNrcyBjaGFuZ2Ugc3RhdGUuIFVzZXMgcmVxdWlyZV9yZWNpcGllbnQgdG8gZW5hYmxlIG9mZi1jaGFpbiBtb25pdG9yaW5nIHZpYSBhY3Rpb24gdHJhY2VzLgAAAIpd05C6CHJlY2hhcmdlzQItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVjaGFyZ2UKc3VtbWFyeTogJ1JlY2hhcmdlIHNoaXAgZW5lcmd5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpTY2hlZHVsZSBhIHJlY2hhcmdlIHRhc2sgZm9yIGFuIGVudGl0eSB0byByZXN0b3JlIGVuZXJneSB0byBmdWxsIGNhcGFjaXR5LiBUaGUgcmVjaGFyZ2UgZHVyYXRpb24gZGVwZW5kcyBvbiBjdXJyZW50IGVuZXJneSBsZXZlbCBhbmQgcmVjaGFyZ2UgcmF0ZS4AAABA7UixugdyZXNvbHZl0AMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcmVzb2x2ZQpzdW1tYXJ5OiAnQ29tcGxldGUgc2NoZWR1bGVkIHRhc2tzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpSZXNvbHZlIGNvbXBsZXRlZCB0YXNrcyBpbiBhbiBlbnRpdHkncyBzY2hlZHVsZSwgYXBwbHlpbmcgdGhlaXIgZWZmZWN0cyAocmVjaGFyZ2UgZW5lcmd5LCB1cGRhdGUgbG9jYXRpb24sIGxvYWQvdW5sb2FkIGNhcmdvKS4gSWYgY291bnQgaXMgc3BlY2lmaWVkLCByZXNvbHZlIGV4YWN0bHkgdGhhdCBtYW55IHRhc2tzOyBvdGhlcndpc2UgcmVzb2x2ZSBhbGwgY29tcGxldGVkIHRhc2tzLiBGYWlscyBpZiBjb3VudCBleGNlZWRzIHRoZSBudW1iZXIgb2YgY29tcGxldGVkIHRhc2tzLgAAACrqRKW8CHJtbW9kdWxlvAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogcm1tb2R1bGUKc3VtbWFyeTogJ1JlbW92ZSBhIG1vZHVsZSBmcm9tIGEgc2xvdCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKUmVtb3ZlIGFuIGluc3RhbGxlZCBtb2R1bGUgZnJvbSBhIHNsb3Qgb24gYSBsaXZlIGVudGl0eSBvciBhIHBhY2tlZCBlbnRpdHkgaW4gY2FyZ28uIFRoZSBlbnRpdHkgbXVzdCBiZSBpZGxlIHdpdGggbm8gc2NoZWR1bGVkIHRhc2tzLiBUaGUgbW9kdWxlIGlzIHJldHVybmVkIHRvIGNhcmdvLiBGYWlscyBpZiB0aGUgZW50aXR5IGRvZXMgbm90IGhhdmUgZW5vdWdoIGNhcmdvIGNhcGFjaXR5IHRvIGhvbGQgdGhlIHJldHVybmVkIG1vZHVsZS4AAABsobymvAhybW5mdGNmZ6EDLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHJtbmZ0Y2ZnCnN1bW1hcnk6ICdSZW1vdmUgTkZUIHRlbXBsYXRlIG1hcHBpbmcgZm9yIGFuIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KClJlbW92ZSB0aGUgQXRvbWljQXNzZXRzIHRlbXBsYXRlIG1hcHBpbmcgZm9yIHRoZSBzcGVjaWZpZWQgaXRlbSBpZCBmcm9tIHRoZSBgbmZ0Y29uZmlnYCB0YWJsZS4gQWZ0ZXIgcmVtb3ZhbCB0aGUgaXRlbSBjYW4gbm8gbG9uZ2VyIGJlIHdyYXBwZWQgb3IgdW53cmFwcGVkIHVudGlsIGEgbmV3IG1hcHBpbmcgaXMgc2V0LiBSZXF1aXJlcyBjb250cmFjdCBhdXRob3JpdHkuAAAAAACQo8EEc2FsdNgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNhbHQKc3VtbWFyeTogJ0FwcGVuZCBTYWx0JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZGQgYWRkaXRpb25hbCBzYWx0IHRvIHRoZSBuZXh0IGVwb2NoIHNlZWQuAABgC+U1s8IJc2V0bmZ0Y2ZnxAMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc2V0bmZ0Y2ZnCnN1bW1hcnk6ICdTZXQgTkZUIHRlbXBsYXRlIG1hcHBpbmcgZm9yIGFuIGl0ZW0nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkJpbmQgYW4gaXRlbSBpZCB0byBhbiBBdG9taWNBc3NldHMgdGVtcGxhdGUgaWQgYW5kIHNjaGVtYSBuYW1lLiBVc2VkIHRvIGNvbmZpZ3VyZSBob3cgdGhlIGNvbnRyYWN0IG1pbnRzIGFuZCByZWNvZ25pemVzIE5GVHMgZm9yIGEgZ2l2ZW4gaXRlbS4gSW5zZXJ0cyBhIG5ldyBtYXBwaW5nIGlmIG9uZSBkb2VzIG5vdCBleGlzdCwgb3IgdXBkYXRlcyB0aGUgZXhpc3RpbmcgbWFwcGluZy4gUmVxdWlyZXMgY29udHJhY3QgYXV0aG9yaXR5LgAAZdegyU3FCnNwYXduY2FyZ2/FAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzcGF3bmNhcmdvCnN1bW1hcnk6ICdERUJVRzogc3Bhd24gY2FyZ28gb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAJKCyNTJTcULc3Bhd25wYWNrZWTnAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBzcGF3bnBhY2tlZApzdW1tYXJ5OiAnREVCVUc6IHNwYXduIGEgcGFja2VkIGVudGl0eSB3aXRoIGluc3RhbGxlZCBtb2R1bGVzIG9uIGFuIGVudGl0eScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQCSSkrhyU3FC3NwYXduc2VlZGVkzQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogc3Bhd25zZWVkZWQKc3VtbWFyeTogJ0RFQlVHOiBzcGF3biBzZWVkZWQgY2FyZ28gb24gYW4gZW50aXR5JwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAVy08zc0IdHJhbnNmZXLIAy0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB0cmFuc2ZlcgpzdW1tYXJ5OiAnVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiBlbnRpdGllcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVHJhbnNmZXIgY2FyZ28gYmV0d2VlbiB0d28gZW50aXRpZXMgYXQgdGhlIHNhbWUgbG9jYXRpb24uIEJvdGggZW50aXRpZXMgbXVzdCBiZSBvd25lZCBieSB0aGUgY2FsbGVyIGFuZCBhdCBsZWFzdCBvbmUgbXVzdCBoYXZlIGxvYWRlcnMuIENyZWF0ZXMgbG9hZCBhbmQgdW5sb2FkIHRhc2tzIG9uIGJvdGggZW50aXRpZXMgd2l0aCBkdXJhdGlvbiBiYXNlZCBvbiBjb21iaW5lZCBsb2FkZXIgY2FwYWNpdHkgYW5kIFotZGlzdGFuY2UgYmV0d2VlbiB0aGVtLgAAAABEtc3NBnRyYXZlbPsBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhbiBlbnRpdHkgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4AAACexqrS1Ah1bmRlcGxveQAAAAAAAFCv4QR3YXJwnwMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2FycApzdW1tYXJ5OiAnV2FycCB0byBhIGRlc3RpbmF0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpJbnN0YW50bHkgdGVsZXBvcnQgYW4gZW50aXR5IHRvIGEgZGVzdGluYXRpb24gc3lzdGVtLiBSZXF1aXJlcyB3YXJwIGNhcGFiaWxpdHksIGZ1bGwgZW5lcmd5LCBlbXB0eSBjYXJnbywgYW5kIGFuIGVtcHR5IHNjaGVkdWxlLiBUaGUgZGVzdGluYXRpb24gbXVzdCBiZSBhIHZhbGlkIHN5c3RlbSB3aXRoaW4gd2FycCByYW5nZS4gUmVzb2x2ZXMgaW1tZWRpYXRlbHkgYXMgYSB6ZXJvLWR1cmF0aW9uIHRhc2suAAAAAACgquMEd2lwZbIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGUKc3VtbWFyeTogJ0RFQlVHOiB3aXBlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLaDQVNoqrKrjDHdpcGVzZXF1ZW5jZcIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHdpcGVzZXF1ZW5jZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGVzZXF1ZW5jZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0AAAAAAFDN5QR3cmFw/gMtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd3JhcApzdW1tYXJ5OiAnV3JhcCBjYXJnbyBpbnRvIGFuIE5GVCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKV3JhcCBhIHF1YW50aXR5IG9mIGNhcmdvIGZyb20gYW4gZW50aXR5IGludG8gYW4gQXRvbWljQXNzZXRzIE5GVCBtaW50ZWQgdG8gdGhlIHNwZWNpZmllZCBvd25lci4gVGhlIGVudGl0eSBtdXN0IGJlIGF0IGEgbmV4dXMsIGhhdmUgbG9hZGVycywgYW5kIGNvbnRhaW4gZW5vdWdoIG9mIHRoZSByZXF1ZXN0ZWQgY2FyZ28uIFNjaGVkdWxlcyBhIHdyYXAgdGFzayB0aGF0LCBvbiByZXNvbHV0aW9uLCByZW1vdmVzIHRoZSBjYXJnbyBmcm9tIHRoZSBlbnRpdHkgYW5kIG1pbnRzIHRoZSBORlQgdXNpbmcgdGhlIHRlbXBsYXRlIGNvbmZpZ3VyZWQgZm9yIHRoYXQgaXRlbSBpZC4AgM8uT1XN5Qp3cmFwZW50aXR5AA0AAAAAAMquQQNpNjQAAAljYXJnb19yb3cAALhqOpMnRQNpNjQAAA1jb250YWluZXJfcm93AKqml/ns8lQDaTY0AAAPZW50aXR5Z3JvdXBfcm93AAAAk7psEI0DaTY0AAAMbG9jYXRpb25fcm93AAAAAACsu5oDaTY0AAAJbmV4dXNfcm93AABgbk2K8poDaTY0AAANbmZ0Y29uZmlnX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAABA7auwugNpNjQAAAtyZXNlcnZlX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAAACsqs8DaTY0AAAJdHlwZXNfcm93AABQWNOmruEDaTY0AAANd2FyZWhvdXNlX3JvdwERU2hpcGxvYWQgKFNlcnZlcikRU2hpcGxvYWQgKFNlcnZlcikAAAAnAAAAAESFpkEOY2FuY2VsX3Jlc3VsdHMAAAAAgLzMRQx0YXNrX3Jlc3VsdHMAAAANu0ilSgx0YXNrX3Jlc3VsdHMAAAAAeBqrSgx0YXNrX3Jlc3VsdHMAgM8uT4WwSgZzdHJpbmcAAAAAXNWyYQx0YXNrX3Jlc3VsdHMAAGBuTYqyYgtnYW1lX2NvbmZpZwCwctnlqbJiDWVudGl0eV9pbmZvW10AAPDZ5amyYgtlbnRpdHlfaW5mbwBMNkmq7LJiD2l0ZW1kYXRhX3Jlc3VsdAAATk6q7LJiD2l0ZW1faWRzX3Jlc3VsdAAAAFiq7LJiCml0ZW1zX2luZm+AVfVZquyyYgtlbnVtX3Jlc3VsdAAmddkgGrNiDWxvY2F0aW9uX2luZm8AgMkmIRqzYhBsb2NhdGlvbl9kZXJpdmVkALCqPicqs2ILZW51bV9yZXN1bHQAAFZRJyqzYg5tb2R1bGVzX3Jlc3VsdAAA8OcaNbNiC25lYXJieV9pbmZvAABd0+U1s2IObmZ0aW5mb19yZXN1bHQAALjKm1izYgtwbGF5ZXJfaW5mbwAAUNUhdbNiDnJlY2lwZXNfcmVzdWx0AABW1SF1s2IOcmVjaXBlc19yZXN1bHQAAM4GYXWzYgtlbnVtX3Jlc3VsdACw2ldhdbNiE3N0cmF0dW1fcmVtYWluaW5nW12AFbqaYnWzYhByZXNvdXJjZXNfcmVzdWx0AAAAONOIs2IVZW50aXR5X2xheW91dHNfcmVzdWx0AIDU2dyMs2IMc3RyYXR1bV9kYXRhgJW7RkqNs2IQZW50aXR5X3N1bW1hcnlbXQCi2ubmqullDHRhc2tfcmVzdWx0cwAAAAAA0LBpC2NoZWNrc3VtMjU2AAAAQITSsGkLY2hlY2tzdW01MTIAAACKXdOQugx0YXNrX3Jlc3VsdHMAAABA7Uixug9yZXNvbHZlX3Jlc3VsdHMAAABXLTzNzQx0YXNrX3Jlc3VsdHMAAAAARLXNzQx0YXNrX3Jlc3VsdHMAAACexqrS1Ax0YXNrX3Jlc3VsdHMAAAAAAFCv4Qx0YXNrX3Jlc3VsdHMAAAAAAFDN5Qx0YXNrX3Jlc3VsdHMAgM8uT1XN5Qx0YXNrX3Jlc3VsdHM=');
209
209
  const abi = ABI.from(abiBlob);
210
210
  var Types;
211
211
  (function (Types) {
@@ -601,6 +601,12 @@ var Types;
601
601
  __decorate([
602
602
  Struct.field(schedule, { optional: true })
603
603
  ], container_row.prototype, "schedule", void 0);
604
+ __decorate([
605
+ Struct.field(UInt64)
606
+ ], container_row.prototype, "stats", void 0);
607
+ __decorate([
608
+ Struct.field(UInt16)
609
+ ], container_row.prototype, "item_id", void 0);
604
610
  container_row = __decorate([
605
611
  Struct.type('container_row')
606
612
  ], container_row);
@@ -659,6 +665,18 @@ var Types;
659
665
  Struct.type('createentity')
660
666
  ], createentity);
661
667
  Types.createentity = createentity;
668
+ let demolish = class demolish extends Struct {
669
+ };
670
+ __decorate([
671
+ Struct.field(Name)
672
+ ], demolish.prototype, "entity_type", void 0);
673
+ __decorate([
674
+ Struct.field(UInt64)
675
+ ], demolish.prototype, "entity_id", void 0);
676
+ demolish = __decorate([
677
+ Struct.type('demolish')
678
+ ], demolish);
679
+ Types.demolish = demolish;
662
680
  let deploy = class deploy extends Struct {
663
681
  };
664
682
  __decorate([
@@ -1927,6 +1945,9 @@ var Types;
1927
1945
  __decorate([
1928
1946
  Struct.field(schedule, { optional: true })
1929
1947
  ], ship_row.prototype, "schedule", void 0);
1948
+ __decorate([
1949
+ Struct.field(UInt16)
1950
+ ], ship_row.prototype, "item_id", void 0);
1930
1951
  ship_row = __decorate([
1931
1952
  Struct.type('ship_row')
1932
1953
  ], ship_row);
@@ -2126,6 +2147,24 @@ var Types;
2126
2147
  Struct.type('types_row')
2127
2148
  ], types_row);
2128
2149
  Types.types_row = types_row;
2150
+ let undeploy = class undeploy extends Struct {
2151
+ };
2152
+ __decorate([
2153
+ Struct.field(Name)
2154
+ ], undeploy.prototype, "host_type", void 0);
2155
+ __decorate([
2156
+ Struct.field(UInt64)
2157
+ ], undeploy.prototype, "host_id", void 0);
2158
+ __decorate([
2159
+ Struct.field(Name)
2160
+ ], undeploy.prototype, "target_type", void 0);
2161
+ __decorate([
2162
+ Struct.field(UInt64)
2163
+ ], undeploy.prototype, "target_id", void 0);
2164
+ undeploy = __decorate([
2165
+ Struct.type('undeploy')
2166
+ ], undeploy);
2167
+ Types.undeploy = undeploy;
2129
2168
  let warehouse_row = class warehouse_row extends Struct {
2130
2169
  };
2131
2170
  __decorate([
@@ -2161,6 +2200,9 @@ var Types;
2161
2200
  __decorate([
2162
2201
  Struct.field(schedule, { optional: true })
2163
2202
  ], warehouse_row.prototype, "schedule", void 0);
2203
+ __decorate([
2204
+ Struct.field(UInt16)
2205
+ ], warehouse_row.prototype, "item_id", void 0);
2164
2206
  warehouse_row = __decorate([
2165
2207
  Struct.type('warehouse_row')
2166
2208
  ], warehouse_row);
@@ -2216,6 +2258,18 @@ var Types;
2216
2258
  Struct.type('wrap')
2217
2259
  ], wrap);
2218
2260
  Types.wrap = wrap;
2261
+ let wrapentity = class wrapentity extends Struct {
2262
+ };
2263
+ __decorate([
2264
+ Struct.field(Name)
2265
+ ], wrapentity.prototype, "entity_type", void 0);
2266
+ __decorate([
2267
+ Struct.field(UInt64)
2268
+ ], wrapentity.prototype, "entity_id", void 0);
2269
+ wrapentity = __decorate([
2270
+ Struct.type('wrapentity')
2271
+ ], wrapentity);
2272
+ Types.wrapentity = wrapentity;
2219
2273
  })(Types || (Types = {}));
2220
2274
  const TableMap = {
2221
2275
  cargo: Types.cargo_row,
@@ -2371,6 +2425,9 @@ var TaskType;
2371
2425
  TaskType[TaskType["DEPLOY"] = 8] = "DEPLOY";
2372
2426
  TaskType[TaskType["WRAP"] = 9] = "WRAP";
2373
2427
  TaskType[TaskType["UNWRAP"] = 10] = "UNWRAP";
2428
+ TaskType[TaskType["UNDEPLOY"] = 11] = "UNDEPLOY";
2429
+ TaskType[TaskType["WRAP_ENTITY"] = 12] = "WRAP_ENTITY";
2430
+ TaskType[TaskType["DEMOLISH"] = 13] = "DEMOLISH";
2374
2431
  })(TaskType || (TaskType = {}));
2375
2432
  var LocationType;
2376
2433
  (function (LocationType) {
@@ -2530,6 +2587,55 @@ var items = [
2530
2587
  tier: 3,
2531
2588
  category: "ore"
2532
2589
  },
2590
+ {
2591
+ id: 104,
2592
+ mass: 71000,
2593
+ type: "resource",
2594
+ tier: 4,
2595
+ category: "ore"
2596
+ },
2597
+ {
2598
+ id: 105,
2599
+ mass: 78000,
2600
+ type: "resource",
2601
+ tier: 5,
2602
+ category: "ore"
2603
+ },
2604
+ {
2605
+ id: 106,
2606
+ mass: 87000,
2607
+ type: "resource",
2608
+ tier: 6,
2609
+ category: "ore"
2610
+ },
2611
+ {
2612
+ id: 107,
2613
+ mass: 96000,
2614
+ type: "resource",
2615
+ tier: 7,
2616
+ category: "ore"
2617
+ },
2618
+ {
2619
+ id: 108,
2620
+ mass: 107000,
2621
+ type: "resource",
2622
+ tier: 8,
2623
+ category: "ore"
2624
+ },
2625
+ {
2626
+ id: 109,
2627
+ mass: 118000,
2628
+ type: "resource",
2629
+ tier: 9,
2630
+ category: "ore"
2631
+ },
2632
+ {
2633
+ id: 110,
2634
+ mass: 130000,
2635
+ type: "resource",
2636
+ tier: 10,
2637
+ category: "ore"
2638
+ },
2533
2639
  {
2534
2640
  id: 201,
2535
2641
  mass: 35000,
@@ -2551,6 +2657,55 @@ var items = [
2551
2657
  tier: 3,
2552
2658
  category: "crystal"
2553
2659
  },
2660
+ {
2661
+ id: 204,
2662
+ mass: 35000,
2663
+ type: "resource",
2664
+ tier: 4,
2665
+ category: "crystal"
2666
+ },
2667
+ {
2668
+ id: 205,
2669
+ mass: 35000,
2670
+ type: "resource",
2671
+ tier: 5,
2672
+ category: "crystal"
2673
+ },
2674
+ {
2675
+ id: 206,
2676
+ mass: 35000,
2677
+ type: "resource",
2678
+ tier: 6,
2679
+ category: "crystal"
2680
+ },
2681
+ {
2682
+ id: 207,
2683
+ mass: 35000,
2684
+ type: "resource",
2685
+ tier: 7,
2686
+ category: "crystal"
2687
+ },
2688
+ {
2689
+ id: 208,
2690
+ mass: 35000,
2691
+ type: "resource",
2692
+ tier: 8,
2693
+ category: "crystal"
2694
+ },
2695
+ {
2696
+ id: 209,
2697
+ mass: 35000,
2698
+ type: "resource",
2699
+ tier: 9,
2700
+ category: "crystal"
2701
+ },
2702
+ {
2703
+ id: 210,
2704
+ mass: 35000,
2705
+ type: "resource",
2706
+ tier: 10,
2707
+ category: "crystal"
2708
+ },
2554
2709
  {
2555
2710
  id: 301,
2556
2711
  mass: 15000,
@@ -2572,6 +2727,55 @@ var items = [
2572
2727
  tier: 3,
2573
2728
  category: "gas"
2574
2729
  },
2730
+ {
2731
+ id: 304,
2732
+ mass: 11000,
2733
+ type: "resource",
2734
+ tier: 4,
2735
+ category: "gas"
2736
+ },
2737
+ {
2738
+ id: 305,
2739
+ mass: 10000,
2740
+ type: "resource",
2741
+ tier: 5,
2742
+ category: "gas"
2743
+ },
2744
+ {
2745
+ id: 306,
2746
+ mass: 9000,
2747
+ type: "resource",
2748
+ tier: 6,
2749
+ category: "gas"
2750
+ },
2751
+ {
2752
+ id: 307,
2753
+ mass: 8000,
2754
+ type: "resource",
2755
+ tier: 7,
2756
+ category: "gas"
2757
+ },
2758
+ {
2759
+ id: 308,
2760
+ mass: 7500,
2761
+ type: "resource",
2762
+ tier: 8,
2763
+ category: "gas"
2764
+ },
2765
+ {
2766
+ id: 309,
2767
+ mass: 6500,
2768
+ type: "resource",
2769
+ tier: 9,
2770
+ category: "gas"
2771
+ },
2772
+ {
2773
+ id: 310,
2774
+ mass: 6000,
2775
+ type: "resource",
2776
+ tier: 10,
2777
+ category: "gas"
2778
+ },
2575
2779
  {
2576
2780
  id: 401,
2577
2781
  mass: 22000,
@@ -2593,6 +2797,55 @@ var items = [
2593
2797
  tier: 3,
2594
2798
  category: "regolith"
2595
2799
  },
2800
+ {
2801
+ id: 404,
2802
+ mass: 32000,
2803
+ type: "resource",
2804
+ tier: 4,
2805
+ category: "regolith"
2806
+ },
2807
+ {
2808
+ id: 405,
2809
+ mass: 36000,
2810
+ type: "resource",
2811
+ tier: 5,
2812
+ category: "regolith"
2813
+ },
2814
+ {
2815
+ id: 406,
2816
+ mass: 40500,
2817
+ type: "resource",
2818
+ tier: 6,
2819
+ category: "regolith"
2820
+ },
2821
+ {
2822
+ id: 407,
2823
+ mass: 46000,
2824
+ type: "resource",
2825
+ tier: 7,
2826
+ category: "regolith"
2827
+ },
2828
+ {
2829
+ id: 408,
2830
+ mass: 52000,
2831
+ type: "resource",
2832
+ tier: 8,
2833
+ category: "regolith"
2834
+ },
2835
+ {
2836
+ id: 409,
2837
+ mass: 58500,
2838
+ type: "resource",
2839
+ tier: 9,
2840
+ category: "regolith"
2841
+ },
2842
+ {
2843
+ id: 410,
2844
+ mass: 66000,
2845
+ type: "resource",
2846
+ tier: 10,
2847
+ category: "regolith"
2848
+ },
2596
2849
  {
2597
2850
  id: 501,
2598
2851
  mass: 42000,
@@ -2614,6 +2867,55 @@ var items = [
2614
2867
  tier: 3,
2615
2868
  category: "biomass"
2616
2869
  },
2870
+ {
2871
+ id: 504,
2872
+ mass: 29000,
2873
+ type: "resource",
2874
+ tier: 4,
2875
+ category: "biomass"
2876
+ },
2877
+ {
2878
+ id: 505,
2879
+ mass: 26000,
2880
+ type: "resource",
2881
+ tier: 5,
2882
+ category: "biomass"
2883
+ },
2884
+ {
2885
+ id: 506,
2886
+ mass: 23000,
2887
+ type: "resource",
2888
+ tier: 6,
2889
+ category: "biomass"
2890
+ },
2891
+ {
2892
+ id: 507,
2893
+ mass: 20000,
2894
+ type: "resource",
2895
+ tier: 7,
2896
+ category: "biomass"
2897
+ },
2898
+ {
2899
+ id: 508,
2900
+ mass: 18000,
2901
+ type: "resource",
2902
+ tier: 8,
2903
+ category: "biomass"
2904
+ },
2905
+ {
2906
+ id: 509,
2907
+ mass: 16000,
2908
+ type: "resource",
2909
+ tier: 9,
2910
+ category: "biomass"
2911
+ },
2912
+ {
2913
+ id: 510,
2914
+ mass: 14000,
2915
+ type: "resource",
2916
+ tier: 10,
2917
+ category: "biomass"
2918
+ },
2617
2919
  {
2618
2920
  id: 10001,
2619
2921
  mass: 50000,
@@ -3176,10 +3478,6 @@ var recipes = [
3176
3478
  },
3177
3479
  {
3178
3480
  sources: [
3179
- {
3180
- inputIndex: 1,
3181
- statIndex: 1
3182
- }
3183
3481
  ]
3184
3482
  },
3185
3483
  {
@@ -3219,8 +3517,8 @@ var recipes = [
3219
3517
  {
3220
3518
  sources: [
3221
3519
  {
3222
- inputIndex: 0,
3223
- statIndex: 0
3520
+ inputIndex: 1,
3521
+ statIndex: 1
3224
3522
  }
3225
3523
  ]
3226
3524
  },
@@ -3338,7 +3636,7 @@ var recipes = [
3338
3636
  sources: [
3339
3637
  {
3340
3638
  inputIndex: 0,
3341
- statIndex: 0
3639
+ statIndex: 1
3342
3640
  }
3343
3641
  ]
3344
3642
  },
@@ -3354,16 +3652,12 @@ var recipes = [
3354
3652
  sources: [
3355
3653
  {
3356
3654
  inputIndex: 0,
3357
- statIndex: 1
3655
+ statIndex: 0
3358
3656
  }
3359
3657
  ]
3360
3658
  },
3361
3659
  {
3362
3660
  sources: [
3363
- {
3364
- inputIndex: 1,
3365
- statIndex: 1
3366
- }
3367
3661
  ]
3368
3662
  }
3369
3663
  ],
@@ -3817,6 +4111,7 @@ const itemAbbreviations = {
3817
4111
  10103: 'LD',
3818
4112
  10104: 'MF',
3819
4113
  10105: 'ST',
4114
+ 10106: 'HL',
3820
4115
  10107: 'WP',
3821
4116
  10200: 'CT',
3822
4117
  10201: 'SH',
@@ -3834,6 +4129,13 @@ const itemMetadata = {
3834
4129
  description: 'High-grade metallic ore with exceptional density.',
3835
4130
  color: '#C26D3F',
3836
4131
  },
4132
+ 104: { name: 'Ore', description: '', color: '#C26D3F' },
4133
+ 105: { name: 'Ore', description: '', color: '#C26D3F' },
4134
+ 106: { name: 'Ore', description: '', color: '#C26D3F' },
4135
+ 107: { name: 'Ore', description: '', color: '#C26D3F' },
4136
+ 108: { name: 'Ore', description: '', color: '#C26D3F' },
4137
+ 109: { name: 'Ore', description: '', color: '#C26D3F' },
4138
+ 110: { name: 'Ore', description: '', color: '#C26D3F' },
3837
4139
  201: { name: 'Crystal', description: 'Raw resonant crystal.', color: '#4ADBFF' },
3838
4140
  202: {
3839
4141
  name: 'Crystal',
@@ -3845,6 +4147,13 @@ const itemMetadata = {
3845
4147
  description: 'High-grade resonant crystal with exceptional purity.',
3846
4148
  color: '#4ADBFF',
3847
4149
  },
4150
+ 204: { name: 'Crystal', description: '', color: '#4ADBFF' },
4151
+ 205: { name: 'Crystal', description: '', color: '#4ADBFF' },
4152
+ 206: { name: 'Crystal', description: '', color: '#4ADBFF' },
4153
+ 207: { name: 'Crystal', description: '', color: '#4ADBFF' },
4154
+ 208: { name: 'Crystal', description: '', color: '#4ADBFF' },
4155
+ 209: { name: 'Crystal', description: '', color: '#4ADBFF' },
4156
+ 210: { name: 'Crystal', description: '', color: '#4ADBFF' },
3848
4157
  301: { name: 'Gas', description: 'Raw volatile gas.', color: '#B8E4A0' },
3849
4158
  302: {
3850
4159
  name: 'Gas',
@@ -3856,6 +4165,13 @@ const itemMetadata = {
3856
4165
  description: 'High-grade volatile gas with exceptional energy density.',
3857
4166
  color: '#B8E4A0',
3858
4167
  },
4168
+ 304: { name: 'Gas', description: '', color: '#B8E4A0' },
4169
+ 305: { name: 'Gas', description: '', color: '#B8E4A0' },
4170
+ 306: { name: 'Gas', description: '', color: '#B8E4A0' },
4171
+ 307: { name: 'Gas', description: '', color: '#B8E4A0' },
4172
+ 308: { name: 'Gas', description: '', color: '#B8E4A0' },
4173
+ 309: { name: 'Gas', description: '', color: '#B8E4A0' },
4174
+ 310: { name: 'Gas', description: '', color: '#B8E4A0' },
3859
4175
  401: { name: 'Regolith', description: 'Crude regolith dust.', color: '#C4A57B' },
3860
4176
  402: {
3861
4177
  name: 'Regolith',
@@ -3867,6 +4183,13 @@ const itemMetadata = {
3867
4183
  description: 'High-grade regolith with exceptional uniformity.',
3868
4184
  color: '#C4A57B',
3869
4185
  },
4186
+ 404: { name: 'Regolith', description: '', color: '#C4A57B' },
4187
+ 405: { name: 'Regolith', description: '', color: '#C4A57B' },
4188
+ 406: { name: 'Regolith', description: '', color: '#C4A57B' },
4189
+ 407: { name: 'Regolith', description: '', color: '#C4A57B' },
4190
+ 408: { name: 'Regolith', description: '', color: '#C4A57B' },
4191
+ 409: { name: 'Regolith', description: '', color: '#C4A57B' },
4192
+ 410: { name: 'Regolith', description: '', color: '#C4A57B' },
3870
4193
  501: { name: 'Biomass', description: 'Crude organic biomass.', color: '#5A8B3E' },
3871
4194
  502: {
3872
4195
  name: 'Biomass',
@@ -3878,6 +4201,13 @@ const itemMetadata = {
3878
4201
  description: 'High-grade biomass with exceptional saturation.',
3879
4202
  color: '#5A8B3E',
3880
4203
  },
4204
+ 504: { name: 'Biomass', description: '', color: '#5A8B3E' },
4205
+ 505: { name: 'Biomass', description: '', color: '#5A8B3E' },
4206
+ 506: { name: 'Biomass', description: '', color: '#5A8B3E' },
4207
+ 507: { name: 'Biomass', description: '', color: '#5A8B3E' },
4208
+ 508: { name: 'Biomass', description: '', color: '#5A8B3E' },
4209
+ 509: { name: 'Biomass', description: '', color: '#5A8B3E' },
4210
+ 510: { name: 'Biomass', description: '', color: '#5A8B3E' },
3881
4211
  10001: {
3882
4212
  name: 'Hull Plates',
3883
4213
  description: 'Structural plating formed from ore. Used in hulls, containers, and frames.',
@@ -4172,10 +4502,15 @@ function hash512(seed, string) {
4172
4502
  }
4173
4503
 
4174
4504
  const DEPTH_THRESHOLD_T1 = 0;
4175
- const DEPTH_THRESHOLD_T2 = 2000;
4176
- const DEPTH_THRESHOLD_T3 = 10000;
4177
- const DEPTH_THRESHOLD_T4 = 30000;
4178
- const DEPTH_THRESHOLD_T5 = 55000;
4505
+ const DEPTH_THRESHOLD_T2 = 1500;
4506
+ const DEPTH_THRESHOLD_T3 = 5000;
4507
+ const DEPTH_THRESHOLD_T4 = 12000;
4508
+ const DEPTH_THRESHOLD_T5 = 22000;
4509
+ const DEPTH_THRESHOLD_T6 = 32000;
4510
+ const DEPTH_THRESHOLD_T7 = 42000;
4511
+ const DEPTH_THRESHOLD_T8 = 50000;
4512
+ const DEPTH_THRESHOLD_T9 = 57000;
4513
+ const DEPTH_THRESHOLD_T10 = 63000;
4179
4514
  const LOCATION_MIN_DEPTH = 500;
4180
4515
  const LOCATION_MAX_DEPTH = 65535;
4181
4516
  const YIELD_THRESHOLD = Math.floor(0.001 * 0xffffffff);
@@ -4185,19 +4520,22 @@ const PLANET_SUBTYPE_TERRESTRIAL = 2;
4185
4520
  const PLANET_SUBTYPE_ICY = 3;
4186
4521
  const PLANET_SUBTYPE_OCEAN = 4;
4187
4522
  const PLANET_SUBTYPE_INDUSTRIAL = 5;
4523
+ const DEPTH_THRESHOLD_TABLE = [
4524
+ DEPTH_THRESHOLD_T1,
4525
+ DEPTH_THRESHOLD_T2,
4526
+ DEPTH_THRESHOLD_T3,
4527
+ DEPTH_THRESHOLD_T4,
4528
+ DEPTH_THRESHOLD_T5,
4529
+ DEPTH_THRESHOLD_T6,
4530
+ DEPTH_THRESHOLD_T7,
4531
+ DEPTH_THRESHOLD_T8,
4532
+ DEPTH_THRESHOLD_T9,
4533
+ DEPTH_THRESHOLD_T10,
4534
+ ];
4188
4535
  function getDepthThreshold(tier) {
4189
- switch (tier) {
4190
- case 1:
4191
- return DEPTH_THRESHOLD_T1;
4192
- case 2:
4193
- return DEPTH_THRESHOLD_T2;
4194
- case 3:
4195
- return DEPTH_THRESHOLD_T3;
4196
- case 4:
4197
- return DEPTH_THRESHOLD_T4;
4198
- default:
4199
- return DEPTH_THRESHOLD_T5;
4200
- }
4536
+ if (tier < 1 || tier > 10)
4537
+ return 65535;
4538
+ return DEPTH_THRESHOLD_TABLE[tier - 1];
4201
4539
  }
4202
4540
  function getResourceTier(itemId) {
4203
4541
  return getItem(itemId).tier;
@@ -4210,11 +4548,11 @@ function getResourceWeight(itemId, stratum) {
4210
4548
  const depthAbove = stratum - threshold;
4211
4549
  switch (tier) {
4212
4550
  case 1:
4213
- if (stratum < 2000)
4551
+ if (stratum < DEPTH_THRESHOLD_T2)
4214
4552
  return 100;
4215
- if (stratum < 10000)
4553
+ if (stratum < DEPTH_THRESHOLD_T3)
4216
4554
  return 80;
4217
- if (stratum < 30000)
4555
+ if (stratum < DEPTH_THRESHOLD_T4)
4218
4556
  return 50;
4219
4557
  return 30;
4220
4558
  case 2:
@@ -6689,6 +7027,40 @@ function lerp$1(origin, destination, time) {
6689
7027
  y: (1 - time) * Number(origin.y) + time * Number(destination.y),
6690
7028
  };
6691
7029
  }
7030
+ function easeFlightProgress(t) {
7031
+ if (t <= 0)
7032
+ return 0;
7033
+ if (t >= 1)
7034
+ return 1;
7035
+ return t < 0.5 ? 2 * t * t : 1 - 2 * (1 - t) * (1 - t);
7036
+ }
7037
+ function flightSpeedFactor(t) {
7038
+ if (t <= 0 || t >= 1)
7039
+ return 0;
7040
+ return t < 0.5 ? 4 * t : 4 * (1 - t);
7041
+ }
7042
+ function interpolateFlightPosition(origin, destination, taskProgress, options) {
7043
+ const t = options?.easing === 'linear' ? taskProgress : easeFlightProgress(taskProgress);
7044
+ return {
7045
+ x: (1 - t) * Number(origin.x) + t * Number(destination.x),
7046
+ y: (1 - t) * Number(origin.y) + t * Number(destination.y),
7047
+ };
7048
+ }
7049
+ function getInterpolatedPosition(entity, taskIndex, taskProgress) {
7050
+ if (!entity.schedule || entity.schedule.tasks.length === 0) {
7051
+ return { x: Number(entity.coordinates.x), y: Number(entity.coordinates.y) };
7052
+ }
7053
+ if (taskIndex < 0) {
7054
+ const settled = getFlightOrigin(entity, entity.schedule.tasks.length);
7055
+ return { x: Number(settled.x), y: Number(settled.y) };
7056
+ }
7057
+ const task = entity.schedule.tasks[taskIndex];
7058
+ if (!task.type.equals(TaskType.TRAVEL) || !task.coordinates) {
7059
+ const origin = getFlightOrigin(entity, taskIndex);
7060
+ return { x: Number(origin.x), y: Number(origin.y) };
7061
+ }
7062
+ return interpolateFlightPosition(getFlightOrigin(entity, taskIndex), task.coordinates, taskProgress);
7063
+ }
6692
7064
  function rotation(origin, destination) {
6693
7065
  return Math.atan2(destination.y - origin.y, destination.x - origin.x) * (180 / Math.PI) + 90;
6694
7066
  }
@@ -6898,9 +7270,12 @@ function getDestinationLocation(entity) {
6898
7270
  return undefined;
6899
7271
  }
6900
7272
  function getPositionAt(entity, taskIndex, taskProgress) {
6901
- if (!entity.schedule || entity.schedule.tasks.length === 0 || taskIndex < 0) {
7273
+ if (!entity.schedule || entity.schedule.tasks.length === 0) {
6902
7274
  return entity.coordinates;
6903
7275
  }
7276
+ if (taskIndex < 0) {
7277
+ return getFlightOrigin(entity, entity.schedule.tasks.length);
7278
+ }
6904
7279
  const task = entity.schedule.tasks[taskIndex];
6905
7280
  if (!task.type.equals(TaskType.TRAVEL) || !task.coordinates) {
6906
7281
  return getFlightOrigin(entity, taskIndex);
@@ -7129,7 +7504,7 @@ function currentTaskIndex(entity, now) {
7129
7504
  }
7130
7505
  timeAccum += taskDuration;
7131
7506
  }
7132
- return entity.schedule.tasks.length - 1;
7507
+ return -1;
7133
7508
  }
7134
7509
  function currentTask(entity, now) {
7135
7510
  const index = currentTaskIndex(entity, now);
@@ -7195,6 +7570,23 @@ function currentTaskProgress(entity, now) {
7195
7570
  return 1;
7196
7571
  return Math.min(1, elapsed / duration);
7197
7572
  }
7573
+ function currentTaskProgressFloat(entity, now) {
7574
+ if (!entity.schedule || entity.schedule.tasks.length === 0)
7575
+ return 0;
7576
+ const index = currentTaskIndex(entity, now);
7577
+ if (index < 0)
7578
+ return 0;
7579
+ const task = entity.schedule.tasks[index];
7580
+ const durationMs = task.duration.toNumber() * 1000;
7581
+ if (durationMs === 0)
7582
+ return 1;
7583
+ const startedMs = entity.schedule.started.toDate().getTime();
7584
+ const taskStartMs = startedMs + getTaskStartTime(entity, index) * 1000;
7585
+ const elapsedMs = now.getTime() - taskStartMs;
7586
+ if (elapsedMs <= 0)
7587
+ return 0;
7588
+ return Math.min(1, elapsedMs / durationMs);
7589
+ }
7198
7590
  function scheduleProgress(entity, now) {
7199
7591
  const duration = scheduleDuration(entity);
7200
7592
  if (duration === 0)
@@ -7239,6 +7631,7 @@ var schedule = /*#__PURE__*/Object.freeze({
7239
7631
  isTaskComplete: isTaskComplete,
7240
7632
  isTaskInProgress: isTaskInProgress,
7241
7633
  currentTaskProgress: currentTaskProgress,
7634
+ currentTaskProgressFloat: currentTaskProgressFloat,
7242
7635
  scheduleProgress: scheduleProgress,
7243
7636
  isTaskType: isTaskType,
7244
7637
  isInFlight: isInFlight,
@@ -7419,6 +7812,10 @@ function applyTask(projected, task) {
7419
7812
  case TaskType.DEPLOY:
7420
7813
  applyDeployTask(projected, task);
7421
7814
  break;
7815
+ case TaskType.UNDEPLOY:
7816
+ case TaskType.WRAP_ENTITY:
7817
+ case TaskType.DEMOLISH:
7818
+ break;
7422
7819
  }
7423
7820
  }
7424
7821
  function projectEntity(entity, options) {
@@ -7584,6 +7981,10 @@ function projectEntityAt(entity, now) {
7584
7981
  if (taskComplete)
7585
7982
  applyDeployTask(projected, task);
7586
7983
  break;
7984
+ case TaskType.UNDEPLOY:
7985
+ case TaskType.WRAP_ENTITY:
7986
+ case TaskType.DEMOLISH:
7987
+ break;
7587
7988
  }
7588
7989
  }
7589
7990
  return projected;
@@ -7687,6 +8088,9 @@ class ScheduleAccessor {
7687
8088
  currentTaskProgress(now) {
7688
8089
  return currentTaskProgress(this.entity, now);
7689
8090
  }
8091
+ currentTaskProgressFloat(now) {
8092
+ return currentTaskProgressFloat(this.entity, now);
8093
+ }
7690
8094
  progress(now) {
7691
8095
  return scheduleProgress(this.entity, now);
7692
8096
  }
@@ -7775,6 +8179,12 @@ class Ship extends Types.entity_info {
7775
8179
  get name() {
7776
8180
  return this.entity_name;
7777
8181
  }
8182
+ get entityClass() {
8183
+ return 'mobile';
8184
+ }
8185
+ get canUndeploy() {
8186
+ return true;
8187
+ }
7778
8188
  get inv() {
7779
8189
  this._inv ?? (this._inv = new InventoryAccessor(this));
7780
8190
  return this._inv;
@@ -7806,6 +8216,11 @@ class Ship extends Types.entity_info {
7806
8216
  const progress = this.sched.currentTaskProgress(now);
7807
8217
  return Coordinates.from(getPositionAt(this, taskIndex, progress));
7808
8218
  }
8219
+ interpolatedPositionAt(now) {
8220
+ const taskIndex = this.sched.currentTaskIndex(now);
8221
+ const progress = this.sched.currentTaskProgressFloat(now);
8222
+ return getInterpolatedPosition(this, taskIndex, progress);
8223
+ }
7809
8224
  isInFlight(now) {
7810
8225
  return isInFlight(this, now);
7811
8226
  }
@@ -8491,10 +8906,10 @@ function moduleSlotTypeToCode(slotType) {
8491
8906
  }
8492
8907
 
8493
8908
  function computeShipHullCapabilities(stats) {
8494
- const density = stats.density ?? 500;
8495
- const strength = stats.strength ?? 500;
8496
- const hardness = stats.hardness ?? 500;
8497
- const saturation = stats.saturation ?? 500;
8909
+ const density = stats.density;
8910
+ const strength = stats.strength;
8911
+ const hardness = stats.hardness;
8912
+ const saturation = stats.saturation;
8498
8913
  const hullmass = 25000 + 75 * density;
8499
8914
  const statSum = strength + hardness + saturation;
8500
8915
  const exponent = statSum / 2997.0;
@@ -8502,73 +8917,94 @@ function computeShipHullCapabilities(stats) {
8502
8917
  return { hullmass, capacity };
8503
8918
  }
8504
8919
  function computeEngineCapabilities(stats) {
8505
- const vol = stats.volatility ?? 500;
8506
- const thm = stats.thermal ?? 500;
8920
+ const vol = stats.volatility;
8921
+ const thm = stats.thermal;
8507
8922
  return {
8508
8923
  thrust: 400 + Math.floor((vol * 3) / 4),
8509
8924
  drain: Math.max(30, 50 - Math.floor(thm / 70)),
8510
8925
  };
8511
8926
  }
8512
8927
  function computeGeneratorCapabilities(stats) {
8513
- const res = stats.resonance ?? 500;
8514
- const ref = stats.reflectivity ?? 500;
8928
+ const com = stats.composition;
8929
+ const fin = stats.fineness;
8515
8930
  return {
8516
- capacity: 300 + Math.floor(res / 6),
8517
- recharge: 1 + Math.floor((ref * 3) / 1000),
8518
- };
8519
- }
8520
- function computeGathererCapabilities(stats) {
8521
- const str = stats.strength ?? 500;
8522
- const con = stats.conductivity ?? 500;
8523
- const ref = stats.reflectivity ?? 500;
8524
- const tol = stats.tolerance ?? 500;
8931
+ capacity: 300 + Math.floor(com / 6),
8932
+ recharge: 1 + Math.floor((fin * 3) / 1000),
8933
+ };
8934
+ }
8935
+ const GATHERER_DEPTH_TABLE = [
8936
+ { floor: 500, slope: 5 },
8937
+ { floor: 2000, slope: 11 },
8938
+ { floor: 7000, slope: 16 },
8939
+ { floor: 15000, slope: 18 },
8940
+ { floor: 25000, slope: 19 },
8941
+ { floor: 35000, slope: 16 },
8942
+ { floor: 46000, slope: 12 },
8943
+ { floor: 53500, slope: 10 },
8944
+ { floor: 60000, slope: 5 },
8945
+ { floor: 63500, slope: 2 },
8946
+ ];
8947
+ const GATHERER_DEPTH_MAX_TIER = 10;
8948
+ function gathererDepthForTier(tol, tier) {
8949
+ if (tier < 1 || tier > GATHERER_DEPTH_MAX_TIER) {
8950
+ throw new Error(`gatherer tier out of range: ${tier}`);
8951
+ }
8952
+ const p = GATHERER_DEPTH_TABLE[tier - 1];
8953
+ return p.floor + tol * p.slope;
8954
+ }
8955
+ function computeGathererCapabilities(stats, tier) {
8956
+ const str = stats.strength;
8957
+ const con = stats.conductivity;
8958
+ const ref = stats.reflectivity;
8959
+ const tol = stats.tolerance;
8525
8960
  return {
8526
8961
  yield: 200 + str,
8527
8962
  drain: Math.max(250, 1250 - Math.floor((con * 25) / 20)),
8528
- depth: 200 + Math.floor((tol * 3) / 2),
8963
+ depth: gathererDepthForTier(tol, tier),
8529
8964
  speed: 100 + Math.floor((ref * 4) / 5),
8530
8965
  };
8531
8966
  }
8532
8967
  function computeLoaderCapabilities(stats) {
8533
- const hrd = stats.hardness ?? 500;
8534
- const pla = stats.plasticity ?? 500;
8968
+ const insulation = stats.insulation;
8969
+ const plasticity = stats.plasticity;
8535
8970
  return {
8536
- mass: Math.max(200, 2000 - Math.floor(hrd * 2)),
8537
- thrust: 1 + Math.floor(pla / 500),
8971
+ mass: Math.max(200, 2000 - Math.floor(insulation * 2)),
8972
+ thrust: 1 + Math.floor(plasticity / 500),
8538
8973
  quantity: 1,
8539
8974
  };
8540
8975
  }
8541
8976
  function computeCrafterCapabilities(stats) {
8542
- const rea = stats.reactivity ?? 500;
8543
- const com = stats.composition ?? 500;
8977
+ const rea = stats.reactivity;
8978
+ const fin = stats.fineness;
8544
8979
  return {
8545
8980
  speed: 100 + Math.floor((rea * 4) / 5),
8546
- drain: Math.max(5, 30 - Math.floor(com / 33)),
8981
+ drain: Math.max(5, 30 - Math.floor(fin / 33)),
8547
8982
  };
8548
8983
  }
8549
8984
  function computeHaulerCapabilities(stats) {
8550
- const res = stats.resonance ?? 500;
8551
- const con = stats.conductivity ?? 500;
8552
- const ref = stats.reflectivity ?? 500;
8985
+ const fineness = stats.fineness;
8986
+ const conductivity = stats.conductivity;
8987
+ const composition = stats.composition;
8553
8988
  return {
8554
- capacity: Math.max(1, 1 + Math.floor(res / 400)),
8555
- efficiency: 2000 + con * 6,
8556
- drain: Math.max(3, 15 - Math.floor(ref / 80)),
8989
+ capacity: Math.max(1, 1 + Math.floor(fineness / 400)),
8990
+ efficiency: 2000 + conductivity * 6,
8991
+ drain: Math.max(3, 15 - Math.floor(composition / 80)),
8557
8992
  };
8558
8993
  }
8559
8994
  function computeStorageCapabilities(stats, baseCapacity) {
8560
- const strength = stats.strength ?? 500;
8561
- const hardness = stats.hardness ?? 500;
8562
- const saturation = stats.saturation ?? 500;
8563
- const statSum = strength + hardness + saturation;
8995
+ const strength = stats.strength;
8996
+ const density = stats.density;
8997
+ const hardness = stats.hardness;
8998
+ const saturation = stats.saturation;
8999
+ const statSum = strength + density + hardness + saturation;
8564
9000
  const capacityBonus = Math.floor((baseCapacity * (10 + Math.floor((statSum * 10) / 2997))) / 100);
8565
9001
  return { capacityBonus };
8566
9002
  }
8567
9003
  function computeWarehouseHullCapabilities(stats) {
8568
- const density = stats.density ?? 500;
8569
- const strength = stats.strength ?? 500;
8570
- const hardness = stats.hardness ?? 500;
8571
- const saturation = stats.saturation ?? 500;
9004
+ const density = stats.density;
9005
+ const strength = stats.strength;
9006
+ const hardness = stats.hardness;
9007
+ const saturation = stats.saturation;
8572
9008
  const hullmass = 25000 + 75 * density;
8573
9009
  const statSum = strength + hardness + saturation;
8574
9010
  const exponent = statSum / 2997.0;
@@ -8603,16 +9039,18 @@ function computeShipCapabilities(modules) {
8603
9039
  if (gathererModules.length > 0) {
8604
9040
  let totalYield = 0;
8605
9041
  let totalDrain = 0;
8606
- let totalDepth = 0;
9042
+ let maxDepth = 0;
8607
9043
  let totalSpeed = 0;
8608
9044
  for (const m of gathererModules) {
8609
- const caps = computeGathererCapabilities(decodeCraftedItemStats(m.itemId, m.stats));
9045
+ const tier = getItem(m.itemId).tier;
9046
+ const caps = computeGathererCapabilities(decodeCraftedItemStats(m.itemId, m.stats), tier);
8610
9047
  totalYield += caps.yield;
8611
9048
  totalDrain += caps.drain;
8612
- totalDepth += caps.depth;
9049
+ if (caps.depth > maxDepth)
9050
+ maxDepth = caps.depth;
8613
9051
  totalSpeed += caps.speed;
8614
9052
  }
8615
- ship.gatherer = { yield: totalYield, drain: totalDrain, depth: totalDepth, speed: totalSpeed };
9053
+ ship.gatherer = { yield: totalYield, drain: totalDrain, depth: maxDepth, speed: totalSpeed };
8616
9054
  }
8617
9055
  const haulerModules = modules.filter((m) => getModuleCapabilityType(m.itemId) === MODULE_HAULER);
8618
9056
  if (haulerModules.length > 0) {
@@ -8662,6 +9100,12 @@ class Warehouse extends Types.entity_info {
8662
9100
  get name() {
8663
9101
  return this.entity_name;
8664
9102
  }
9103
+ get entityClass() {
9104
+ return 'building';
9105
+ }
9106
+ get canDemolish() {
9107
+ return true;
9108
+ }
8665
9109
  get inv() {
8666
9110
  this._inv ?? (this._inv = new InventoryAccessor(this));
8667
9111
  return this._inv;
@@ -8734,6 +9178,12 @@ class Container extends Types.entity_info {
8734
9178
  get name() {
8735
9179
  return this.entity_name;
8736
9180
  }
9181
+ get entityClass() {
9182
+ return 'mobile';
9183
+ }
9184
+ get canUndeploy() {
9185
+ return true;
9186
+ }
8737
9187
  get sched() {
8738
9188
  this._sched ?? (this._sched = new ScheduleAccessor(this));
8739
9189
  return this._sched;
@@ -8741,6 +9191,11 @@ class Container extends Types.entity_info {
8741
9191
  get isIdle() {
8742
9192
  return this.is_idle;
8743
9193
  }
9194
+ interpolatedPositionAt(now) {
9195
+ const taskIndex = this.sched.currentTaskIndex(now);
9196
+ const progress = this.sched.currentTaskProgressFloat(now);
9197
+ return getInterpolatedPosition(this, taskIndex, progress);
9198
+ }
8744
9199
  isLoading(now) {
8745
9200
  return isLoading(this, now);
8746
9201
  }
@@ -8771,10 +9226,10 @@ class Container extends Types.entity_info {
8771
9226
  }
8772
9227
  }
8773
9228
  function computeContainerCapabilities(stats) {
8774
- const density = stats['density'] ?? 500;
8775
- const strength = stats['strength'] ?? 500;
8776
- const hardness = stats['hardness'] ?? 500;
8777
- const saturation = stats['saturation'] ?? 500;
9229
+ const density = stats.density;
9230
+ const strength = stats.strength;
9231
+ const hardness = stats.hardness;
9232
+ const saturation = stats.saturation;
8778
9233
  const hullmass = 25000 + 75 * density;
8779
9234
  const statSum = strength + hardness + saturation;
8780
9235
  const exponent = statSum / 2997;
@@ -8782,10 +9237,10 @@ function computeContainerCapabilities(stats) {
8782
9237
  return { hullmass, capacity };
8783
9238
  }
8784
9239
  function computeContainerT2Capabilities(stats) {
8785
- const strength = stats['strength'] ?? 0;
8786
- const density = stats['density'] ?? 0;
8787
- const hardness = stats['hardness'] ?? 0;
8788
- const saturation = stats['saturation'] ?? 0;
9240
+ const strength = stats.strength;
9241
+ const density = stats.density;
9242
+ const hardness = stats.hardness;
9243
+ const saturation = stats.saturation;
8789
9244
  const hullmass = 20000 + 50 * density;
8790
9245
  const statSum = strength + hardness + saturation;
8791
9246
  const exponent = statSum / 2500;
@@ -9138,6 +9593,26 @@ class ActionsManager extends BaseManager {
9138
9593
  quantity: UInt64.from(quantity),
9139
9594
  });
9140
9595
  }
9596
+ undeploy(host, target) {
9597
+ return this.server.action('undeploy', {
9598
+ host_type: Name.from(host.entityType),
9599
+ host_id: UInt64.from(host.entityId),
9600
+ target_type: Name.from(target.entityType),
9601
+ target_id: UInt64.from(target.entityId),
9602
+ });
9603
+ }
9604
+ wrapEntity(entity) {
9605
+ return this.server.action('wrapentity', {
9606
+ entity_type: Name.from(entity.entityType),
9607
+ entity_id: UInt64.from(entity.entityId),
9608
+ });
9609
+ }
9610
+ demolish(entity) {
9611
+ return this.server.action('demolish', {
9612
+ entity_type: Name.from(entity.entityType),
9613
+ entity_id: UInt64.from(entity.entityId),
9614
+ });
9615
+ }
9141
9616
  joinGame(account, companyName) {
9142
9617
  return [this.foundCompany(account, companyName), this.join(account)];
9143
9618
  }
@@ -9413,6 +9888,29 @@ class SubscriptionsManager {
9413
9888
  this.sendMessage(msg);
9414
9889
  return handle;
9415
9890
  }
9891
+ subscribeOwner(owner, handlers = {}) {
9892
+ const subId = this.generateSubID('own');
9893
+ const msg = {
9894
+ type: 'subscribe',
9895
+ sub_id: subId,
9896
+ owner,
9897
+ };
9898
+ const handle = {
9899
+ subId,
9900
+ unsubscribe: () => this.unsubscribeBounds(subId),
9901
+ current: new Map(),
9902
+ };
9903
+ this.boundsSubs.set(subId, {
9904
+ bounds: undefined,
9905
+ owner,
9906
+ prioritizeOwner: undefined,
9907
+ onSnapshot: handlers.onSnapshot,
9908
+ onUpdate: handlers.onUpdate,
9909
+ handle,
9910
+ });
9911
+ this.sendMessage(msg);
9912
+ return handle;
9913
+ }
9416
9914
  unsubscribeBounds(subId) {
9417
9915
  this.boundsSubs.delete(subId);
9418
9916
  this.sendMessage({ type: 'unsubscribe', sub_id: subId });
@@ -9972,7 +10470,7 @@ function computeHaulPenalty(totalThrust, haulCount, avgEfficiency) {
9972
10470
  HAULER_EFFICIENCY_DENOM);
9973
10471
  return Math.floor((totalThrust * 1000) / penaltyMilli);
9974
10472
  }
9975
- function computeHaulerDrain(distance, drain, haulCount) {
10473
+ function computeHaulerDrain$1(distance, drain, haulCount) {
9976
10474
  return Math.floor(distance / PRECISION) * drain * haulCount;
9977
10475
  }
9978
10476
 
@@ -10122,6 +10620,11 @@ const capabilityNames = [
10122
10620
  const capabilityAttributes = [
10123
10621
  { capability: 'Hull', attribute: 'mass', description: 'Total mass of the hull' },
10124
10622
  { capability: 'Storage', attribute: 'capacity', description: 'Maximum mass that can be stored' },
10623
+ {
10624
+ capability: 'Storage',
10625
+ attribute: 'bonus',
10626
+ description: 'Capacity bonus added by an installed Storage module',
10627
+ },
10125
10628
  { capability: 'Movement', attribute: 'thrust', description: 'Propulsion force' },
10126
10629
  { capability: 'Movement', attribute: 'drain', description: 'Energy consumed per movement' },
10127
10630
  { capability: 'Energy', attribute: 'capacity', description: 'Maximum energy storage' },
@@ -10159,338 +10662,149 @@ const capabilityAttributes = [
10159
10662
  description: 'Energy consumed per target during haul-beam operation',
10160
10663
  },
10161
10664
  ];
10162
- const statMappings = [
10163
- {
10164
- stat: 'Strength',
10165
- capability: 'Gathering',
10166
- attribute: 'yield',
10167
- rationale: 'Raw mechanical force drives faster gathering',
10168
- },
10169
- {
10170
- stat: 'Strength',
10171
- capability: 'Storage',
10172
- attribute: 'capacity',
10173
- rationale: 'Stronger walls hold more capacity per mass',
10174
- },
10175
- {
10176
- stat: 'Strength',
10177
- capability: 'Launch',
10178
- attribute: 'capacity',
10179
- rationale: 'Stronger housing handles larger launch loads',
10180
- },
10181
- {
10182
- stat: 'Tolerance',
10183
- capability: 'Movement',
10184
- attribute: 'thrust',
10185
- rationale: 'Engine components that tolerate more can push harder',
10186
- },
10187
- {
10188
- stat: 'Tolerance',
10189
- capability: 'Energy',
10190
- attribute: 'recharge',
10191
- rationale: 'Generator housing withstands stress for faster recharge',
10192
- },
10193
- {
10194
- stat: 'Tolerance',
10195
- capability: 'Gathering',
10196
- attribute: 'depth',
10197
- rationale: 'Housing withstands pressure/heat at extreme depths',
10198
- },
10199
- {
10200
- stat: 'Tolerance',
10201
- capability: 'Warp',
10202
- attribute: 'range',
10203
- rationale: 'Warp drive housing withstands extreme forces',
10204
- },
10205
- {
10206
- stat: 'Density',
10207
- capability: 'Hull',
10208
- attribute: 'mass',
10209
- rationale: 'Lighter metal = lighter hull',
10210
- },
10211
- {
10212
- stat: 'Density',
10213
- capability: 'Loader',
10214
- attribute: 'mass',
10215
- rationale: 'Lighter metal = lighter loader units',
10216
- },
10217
- {
10218
- stat: 'Density',
10219
- capability: 'Movement',
10220
- attribute: 'drain',
10221
- rationale: 'Lighter components require less energy to move',
10222
- },
10223
- {
10224
- stat: 'Conductivity',
10225
- capability: 'Movement',
10226
- attribute: 'drain',
10227
- rationale: 'Efficient energy transfer reduces movement energy cost',
10228
- },
10229
- {
10230
- stat: 'Conductivity',
10231
- capability: 'Gathering',
10232
- attribute: 'drain',
10233
- rationale: 'Efficient energy transfer reduces gathering energy cost',
10234
- },
10235
- {
10236
- stat: 'Conductivity',
10237
- capability: 'Crafter',
10238
- attribute: 'drain',
10239
- rationale: 'Efficient energy transfer reduces crafting energy cost',
10240
- },
10241
- {
10242
- stat: 'Conductivity',
10243
- capability: 'Energy',
10244
- attribute: 'recharge',
10245
- rationale: 'Better conductivity speeds energy flow during recharge',
10246
- },
10247
- {
10248
- stat: 'Ductility',
10249
- capability: 'Crafter',
10250
- attribute: 'quality',
10251
- rationale: 'Precise shaping enables tighter crafting tolerances',
10252
- },
10253
- {
10254
- stat: 'Ductility',
10255
- capability: 'Gathering',
10256
- attribute: 'yield',
10257
- rationale: 'Precisely shaped conduit components gather faster',
10258
- },
10259
- {
10260
- stat: 'Ductility',
10261
- capability: 'Storage',
10262
- attribute: 'capacity',
10263
- rationale: 'Precision-formed container walls maximize volume',
10264
- },
10265
- {
10266
- stat: 'Ductility',
10267
- capability: 'Loader',
10268
- attribute: 'mass',
10269
- rationale: 'Precision-formed precious metal reduces loader unit mass',
10270
- },
10271
- {
10272
- stat: 'Reflectivity',
10273
- capability: 'Gathering',
10274
- attribute: 'depth',
10275
- rationale: 'Reflective heat shielding protects equipment at depth',
10276
- },
10277
- {
10278
- stat: 'Reflectivity',
10279
- capability: 'Launch',
10280
- attribute: 'range',
10281
- rationale: 'Reflective surfaces focus electromagnetic launch energy',
10282
- },
10283
- {
10284
- stat: 'Volatility',
10285
- capability: 'Gathering',
10286
- attribute: 'yield',
10287
- rationale: 'Energy release powers faster gathering',
10288
- },
10289
- {
10290
- stat: 'Volatility',
10291
- capability: 'Movement',
10292
- attribute: 'thrust',
10293
- rationale: 'Energy release drives propulsion force',
10294
- },
10295
- {
10296
- stat: 'Volatility',
10297
- capability: 'Loader',
10298
- attribute: 'thrust',
10299
- rationale: 'Energy release powers loader motors',
10300
- },
10301
- {
10302
- stat: 'Volatility',
10303
- capability: 'Launch',
10304
- attribute: 'capacity',
10305
- rationale: 'Energy release enables launching heavier payloads',
10306
- },
10307
- {
10308
- stat: 'Reactivity',
10309
- capability: 'Crafter',
10310
- attribute: 'speed',
10311
- rationale: 'Reactive gases accelerate chemical/thermal processing',
10312
- },
10313
- {
10314
- stat: 'Reactivity',
10315
- capability: 'Gathering',
10316
- attribute: 'speed',
10317
- rationale: 'Reactive gases manage heat/friction during gathering',
10318
- },
10319
- {
10320
- stat: 'Reactivity',
10321
- capability: 'Launch',
10322
- attribute: 'drain',
10323
- rationale: 'Reactive gas medium reduces electromagnetic resistance',
10324
- },
10325
- {
10326
- stat: 'Thermal',
10327
- capability: 'Crafter',
10328
- attribute: 'quality',
10329
- rationale: 'Precise thermal control during fabrication',
10330
- },
10331
- {
10332
- stat: 'Thermal',
10333
- capability: 'Gathering',
10334
- attribute: 'drain',
10335
- rationale: 'Thermal management reduces energy waste during gathering',
10336
- },
10337
- {
10338
- stat: 'Thermal',
10339
- capability: 'Energy',
10340
- attribute: 'capacity',
10341
- rationale: 'Thermal management enables denser energy storage',
10342
- },
10343
- {
10344
- stat: 'Resonance',
10345
- capability: 'Energy',
10346
- attribute: 'capacity',
10347
- rationale: 'Resonating crystals store energy in fields',
10348
- },
10349
- {
10350
- stat: 'Resonance',
10351
- capability: 'Warp',
10352
- attribute: 'range',
10353
- rationale: 'Resonant crystals amplify warp field projection',
10354
- },
10355
- {
10356
- stat: 'Resonance',
10357
- capability: 'Launch',
10358
- attribute: 'range',
10359
- rationale: 'Resonant crystals focus electromagnetic launch field',
10360
- },
10361
- {
10362
- stat: 'Resonance',
10363
- capability: 'Launch',
10364
- attribute: 'capacity',
10365
- rationale: 'Stronger resonant field launches heavier payloads',
10366
- },
10367
- {
10368
- stat: 'Hardness',
10369
- capability: 'Crafter',
10370
- attribute: 'speed',
10371
- rationale: 'Hard tooling surfaces cut and shape materials faster',
10372
- },
10373
- {
10374
- stat: 'Hardness',
10375
- capability: 'Launch',
10376
- attribute: 'drain',
10377
- rationale: 'Hard rail surfaces reduce friction, less energy wasted',
10378
- },
10379
- {
10380
- stat: 'Clarity',
10381
- capability: 'Energy',
10382
- attribute: 'recharge',
10383
- rationale: 'Flawless crystals enable smoother energy flow during recharge',
10384
- },
10385
- {
10386
- stat: 'Clarity',
10387
- capability: 'Crafter',
10388
- attribute: 'quality',
10389
- rationale: 'Precision optics for calibration during fabrication',
10390
- },
10391
- {
10392
- stat: 'Clarity',
10393
- capability: 'Crafter',
10394
- attribute: 'drain',
10395
- rationale: 'Precision computing optimizes energy routing in factory',
10396
- },
10397
- {
10398
- stat: 'Plasticity',
10399
- capability: 'Crafter',
10400
- attribute: 'speed',
10401
- rationale: 'Easily reshaped materials speed up processing',
10402
- },
10403
- {
10404
- stat: 'Plasticity',
10405
- capability: 'Movement',
10406
- attribute: 'thrust',
10407
- rationale: 'Flexible polymer seals reduce friction in propulsion',
10408
- },
10409
- {
10410
- stat: 'Plasticity',
10411
- capability: 'Loader',
10412
- attribute: 'thrust',
10413
- rationale: 'Flexible joints improve loader force transfer',
10414
- },
10415
- {
10416
- stat: 'Insulation',
10417
- capability: 'Movement',
10418
- attribute: 'drain',
10419
- rationale: 'Better insulation reduces energy loss during movement',
10420
- },
10421
- {
10422
- stat: 'Insulation',
10423
- capability: 'Gathering',
10424
- attribute: 'drain',
10425
- rationale: 'Better insulation reduces energy loss during gathering',
10426
- },
10427
- {
10428
- stat: 'Insulation',
10429
- capability: 'Crafter',
10430
- attribute: 'drain',
10431
- rationale: 'Better insulation reduces energy loss during crafting',
10665
+ const invertedAttributes = new Set(['drain', 'mass']);
10666
+ function isInvertedAttribute(attribute) {
10667
+ return invertedAttributes.has(attribute);
10668
+ }
10669
+ function getCapabilityAttributes(capability) {
10670
+ if (capability) {
10671
+ return capabilityAttributes.filter((a) => a.capability === capability);
10672
+ }
10673
+ return capabilityAttributes;
10674
+ }
10675
+
10676
+ const ENTITY_HULL_SLOTS = {
10677
+ 0: { capability: 'Storage', attribute: 'capacity' },
10678
+ 1: { capability: 'Hull', attribute: 'mass' },
10679
+ 2: { capability: 'Storage', attribute: 'capacity' },
10680
+ 3: { capability: 'Storage', attribute: 'capacity' },
10681
+ };
10682
+ const SLOT_FORMULAS = {
10683
+ engine: {
10684
+ 0: { capability: 'Movement', attribute: 'thrust' },
10685
+ 1: { capability: 'Movement', attribute: 'drain' },
10432
10686
  },
10433
- {
10434
- stat: 'Insulation',
10435
- capability: 'Launch',
10436
- attribute: 'drain',
10437
- rationale: 'Better insulation reduces energy loss during launch',
10687
+ generator: {
10688
+ 0: { capability: 'Energy', attribute: 'capacity' },
10689
+ 1: { capability: 'Energy', attribute: 'recharge' },
10438
10690
  },
10439
- {
10440
- stat: 'Purity',
10441
- capability: 'Storage',
10442
- attribute: 'capacity',
10443
- rationale: 'Purer composites make better containers',
10691
+ gatherer: {
10692
+ 0: { capability: 'Gathering', attribute: 'yield' },
10693
+ 1: { capability: 'Gathering', attribute: 'depth' },
10694
+ 3: { capability: 'Gathering', attribute: 'drain' },
10695
+ 4: { capability: 'Gathering', attribute: 'speed' },
10444
10696
  },
10445
- {
10446
- stat: 'Purity',
10447
- capability: 'Gathering',
10448
- attribute: 'speed',
10449
- rationale: 'Purer bio-lubricants reduce friction during gathering',
10697
+ loader: {
10698
+ 0: { capability: 'Loader', attribute: 'mass' },
10699
+ 1: { capability: 'Loader', attribute: 'thrust' },
10450
10700
  },
10451
- {
10452
- stat: 'Purity',
10453
- capability: 'Energy',
10454
- attribute: 'capacity',
10455
- rationale: 'Purer organic electrolytes store more charge',
10701
+ crafter: {
10702
+ 0: { capability: 'Crafter', attribute: 'speed' },
10703
+ 1: { capability: 'Crafter', attribute: 'drain' },
10456
10704
  },
10457
- {
10458
- stat: 'Resonance',
10459
- capability: 'Hauler',
10460
- attribute: 'capacity',
10461
- rationale: 'Resonant field strength determines how many targets the haul beam can lock onto simultaneously.',
10705
+ storage: {
10706
+ 0: { capability: 'Storage', attribute: 'bonus' },
10707
+ 1: { capability: 'Storage', attribute: 'bonus' },
10708
+ 2: { capability: 'Storage', attribute: 'bonus' },
10709
+ 3: { capability: 'Storage', attribute: 'bonus' },
10462
10710
  },
10463
- {
10464
- stat: 'Conductivity',
10465
- capability: 'Hauler',
10466
- attribute: 'efficiency',
10467
- rationale: 'Energy-transfer efficiency reduces the thrust penalty from each hauled target.',
10711
+ hauler: {
10712
+ 0: { capability: 'Hauler', attribute: 'capacity' },
10713
+ 1: { capability: 'Hauler', attribute: 'efficiency' },
10714
+ 2: { capability: 'Hauler', attribute: 'drain' },
10468
10715
  },
10469
- {
10470
- stat: 'Clarity',
10471
- capability: 'Hauler',
10472
- attribute: 'drain',
10473
- rationale: 'Clarity-focused energy routing reduces per-target drain during haul-beam operation.',
10716
+ warp: {
10717
+ 0: { capability: 'Warp', attribute: 'range' },
10474
10718
  },
10475
- ];
10476
- const invertedAttributes = new Set(['drain', 'mass']);
10477
- function isInvertedAttribute(attribute) {
10478
- return invertedAttributes.has(attribute);
10719
+ 'ship-t1': ENTITY_HULL_SLOTS,
10720
+ 'container-t1': ENTITY_HULL_SLOTS,
10721
+ 'warehouse-t1': ENTITY_HULL_SLOTS,
10722
+ 'container-t2': ENTITY_HULL_SLOTS,
10723
+ };
10724
+
10725
+ const KIND_TO_ITEM_ID = {
10726
+ engine: ITEM_ENGINE_T1,
10727
+ generator: ITEM_GENERATOR_T1,
10728
+ gatherer: ITEM_GATHERER_T1,
10729
+ loader: ITEM_LOADER_T1,
10730
+ crafter: ITEM_CRAFTER_T1,
10731
+ storage: ITEM_STORAGE_T1,
10732
+ hauler: ITEM_HAULER_T1,
10733
+ warp: ITEM_WARP_T1,
10734
+ 'ship-t1': ITEM_SHIP_T1_PACKED,
10735
+ 'container-t1': ITEM_CONTAINER_T1_PACKED,
10736
+ 'warehouse-t1': ITEM_WAREHOUSE_T1_PACKED,
10737
+ 'container-t2': ITEM_CONTAINER_T2_PACKED,
10738
+ };
10739
+ function isCategoryInput(input) {
10740
+ return 'category' in input;
10479
10741
  }
10480
- function getCapabilityAttributes(capability) {
10481
- if (capability) {
10482
- return capabilityAttributes.filter((a) => a.capability === capability);
10742
+ function traceToRawCategoryStat(recipe, source, visited = new Set()) {
10743
+ const input = recipe.inputs[source.inputIndex];
10744
+ if (!input)
10745
+ return undefined;
10746
+ if (isCategoryInput(input)) {
10747
+ const defs = getStatDefinitions(input.category);
10748
+ return defs[source.statIndex];
10483
10749
  }
10484
- return capabilityAttributes;
10750
+ if (visited.has(input.itemId))
10751
+ return undefined;
10752
+ const subRecipe = getRecipe(input.itemId);
10753
+ if (!subRecipe)
10754
+ return undefined;
10755
+ const subSlot = subRecipe.statSlots[source.statIndex];
10756
+ if (!subSlot)
10757
+ return undefined;
10758
+ const subSource = subSlot.sources[0];
10759
+ if (!subSource)
10760
+ return undefined;
10761
+ const nextVisited = new Set(visited);
10762
+ nextVisited.add(input.itemId);
10763
+ return traceToRawCategoryStat(subRecipe, subSource, nextVisited);
10764
+ }
10765
+ let cached;
10766
+ function deriveStatMappings() {
10767
+ if (cached)
10768
+ return cached;
10769
+ const out = [];
10770
+ const seen = new Set();
10771
+ for (const [kind, slots] of Object.entries(SLOT_FORMULAS)) {
10772
+ const itemId = KIND_TO_ITEM_ID[kind];
10773
+ const recipe = getRecipe(itemId);
10774
+ if (!recipe)
10775
+ continue;
10776
+ for (const [slotIdxStr, consumer] of Object.entries(slots)) {
10777
+ const slotIdx = Number(slotIdxStr);
10778
+ const slot = recipe.statSlots[slotIdx];
10779
+ if (!slot)
10780
+ continue;
10781
+ for (const source of slot.sources) {
10782
+ const stat = traceToRawCategoryStat(recipe, source);
10783
+ if (!stat)
10784
+ continue;
10785
+ const key = `${stat.label}|${consumer.capability}|${consumer.attribute}`;
10786
+ if (seen.has(key))
10787
+ continue;
10788
+ seen.add(key);
10789
+ out.push({
10790
+ stat: stat.label,
10791
+ capability: consumer.capability,
10792
+ attribute: consumer.attribute,
10793
+ });
10794
+ }
10795
+ }
10796
+ }
10797
+ cached = out;
10798
+ return out;
10485
10799
  }
10486
10800
  function getStatMappings() {
10487
- return statMappings;
10801
+ return deriveStatMappings();
10488
10802
  }
10489
10803
  function getStatMappingsForStat(stat) {
10490
- return statMappings.filter((m) => m.stat === stat);
10804
+ return deriveStatMappings().filter((m) => m.stat === stat);
10491
10805
  }
10492
10806
  function getStatMappingsForCapability(capability) {
10493
- return statMappings.filter((m) => m.capability === capability);
10807
+ return deriveStatMappings().filter((m) => m.capability === capability);
10494
10808
  }
10495
10809
 
10496
10810
  function toNum(v) {
@@ -10562,7 +10876,7 @@ function resolveComponent(id, stats) {
10562
10876
  stats: resolvedStats,
10563
10877
  };
10564
10878
  }
10565
- function computeCapabilityGroup(moduleType, stats) {
10879
+ function computeCapabilityGroup(moduleType, stats, tier) {
10566
10880
  switch (moduleType) {
10567
10881
  case MODULE_ENGINE: {
10568
10882
  const caps = computeEngineCapabilities(stats);
@@ -10585,7 +10899,7 @@ function computeCapabilityGroup(moduleType, stats) {
10585
10899
  };
10586
10900
  }
10587
10901
  case MODULE_GATHERER: {
10588
- const caps = computeGathererCapabilities(stats);
10902
+ const caps = computeGathererCapabilities(stats, tier);
10589
10903
  return {
10590
10904
  capability: 'Gatherer',
10591
10905
  attributes: [
@@ -10629,10 +10943,11 @@ function computeCapabilityGroup(moduleType, stats) {
10629
10943
  };
10630
10944
  }
10631
10945
  case MODULE_STORAGE: {
10632
- const str = stats.strength ?? 500;
10633
- const hrd = stats.hardness ?? 500;
10634
- const sat = stats.saturation ?? 500;
10635
- const statSum = str + hrd + sat;
10946
+ const str = stats.strength;
10947
+ const den = stats.density;
10948
+ const hrd = stats.hardness;
10949
+ const sat = stats.saturation;
10950
+ const statSum = str + den + hrd + sat;
10636
10951
  const pct = 10 + Math.floor((statSum * 10) / 2997);
10637
10952
  return { capability: 'Storage', attributes: [{ label: 'Capacity Bonus', value: pct }] };
10638
10953
  }
@@ -10646,7 +10961,7 @@ function resolveModule(id, stats) {
10646
10961
  if (stats !== undefined) {
10647
10962
  const decoded = decodeCraftedItemStats(id, toBigStats(stats));
10648
10963
  const modType = getModuleCapabilityType(id);
10649
- const group = computeCapabilityGroup(modType, decoded);
10964
+ const group = computeCapabilityGroup(modType, decoded, item.tier);
10650
10965
  if (group)
10651
10966
  attributes = [group];
10652
10967
  }
@@ -10702,14 +11017,17 @@ function resolveEntity(id, stats, modules) {
10702
11017
  const modStats = BigInt(mod.installed.stats.toString());
10703
11018
  const decodedStats = decodeCraftedItemStats(modItemId, modStats);
10704
11019
  const modType = getModuleCapabilityType(modItemId);
10705
- const group = computeCapabilityGroup(modType, decodedStats);
10706
11020
  let modName = 'Module';
11021
+ let modTier = 1;
10707
11022
  try {
10708
- modName = getItem(modItemId).name;
11023
+ const modItem = getItem(modItemId);
11024
+ modName = modItem.name;
11025
+ modTier = modItem.tier;
10709
11026
  }
10710
11027
  catch {
10711
11028
  modName = itemMetadata[modItemId]?.name ?? 'Module';
10712
11029
  }
11030
+ const group = computeCapabilityGroup(modType, decodedStats, modTier);
10713
11031
  return {
10714
11032
  name: modName,
10715
11033
  installed: true,
@@ -10937,16 +11255,19 @@ function computeBaseCapacityWarehouse(stats) {
10937
11255
  }
10938
11256
  const computeEngineThrust = (vol) => 400 + idiv(vol * 3, 4);
10939
11257
  const computeEngineDrain = (thm) => Math.max(30, 50 - idiv(thm, 70));
10940
- const computeGeneratorCap = (res) => 300 + idiv(res, 6);
10941
- const computeGeneratorRech = (ref) => 1 + idiv(ref * 3, 1000);
11258
+ const computeGeneratorCap = (com) => 300 + idiv(com, 6);
11259
+ const computeGeneratorRech = (fin) => 1 + idiv(fin * 3, 1000);
10942
11260
  const computeGathererYield = (str) => 200 + str;
10943
11261
  const computeGathererDrain = (con) => Math.max(250, 1250 - idiv(con * 25, 20));
10944
- const computeGathererDepth = (tol) => 200 + idiv(tol * 3, 2);
11262
+ const computeGathererDepth = (tol, tier) => gathererDepthForTier(tol, tier);
10945
11263
  const computeGathererSpeed = (ref) => 100 + idiv(ref * 4, 5);
10946
- const computeLoaderMass = (fin) => Math.max(200, 2000 - fin * 2);
11264
+ const computeLoaderMass = (ins) => Math.max(200, 2000 - ins * 2);
10947
11265
  const computeLoaderThrust = (pla) => 1 + idiv(pla, 500);
10948
11266
  const computeCrafterSpeed = (rea) => 100 + idiv(rea * 4, 5);
10949
- const computeCrafterDrain = (com) => Math.max(5, 30 - idiv(com, 33));
11267
+ const computeCrafterDrain = (fin) => Math.max(5, 30 - idiv(fin, 33));
11268
+ const computeHaulerCapacity = (fin) => Math.max(1, 1 + idiv(fin, 400));
11269
+ const computeHaulerEfficiency = (con) => 2000 + con * 6;
11270
+ const computeHaulerDrain = (com) => Math.max(3, 15 - idiv(com, 80));
10950
11271
  const computeWarpRange = (stat) => 100 + stat * 3;
10951
11272
  function entityDisplayName(itemId) {
10952
11273
  switch (itemId) {
@@ -10976,6 +11297,8 @@ function moduleDisplayName(itemId) {
10976
11297
  return 'Crafter';
10977
11298
  case ITEM_STORAGE_T1:
10978
11299
  return 'Storage';
11300
+ case ITEM_HAULER_T1:
11301
+ return 'Hauler';
10979
11302
  case ITEM_WARP_T1:
10980
11303
  return 'Warp';
10981
11304
  default:
@@ -11008,7 +11331,8 @@ function formatModuleLine(slot, itemId, stats) {
11008
11331
  const tol = decodeStat(stats, 1);
11009
11332
  const con = decodeStat(stats, 3);
11010
11333
  const ref = decodeStat(stats, 4);
11011
- out += ` Yield ${computeGathererYield(str)} Depth ${computeGathererDepth(tol)} Speed ${computeGathererSpeed(ref)} Drain ${computeGathererDrain(con)}`;
11334
+ const tier = getItem(itemId).tier;
11335
+ out += ` Yield ${computeGathererYield(str)} Depth ${computeGathererDepth(tol, tier)} Speed ${computeGathererSpeed(ref)} Drain ${computeGathererDrain(con)}`;
11012
11336
  break;
11013
11337
  }
11014
11338
  case MODULE_LOADER: {
@@ -11032,6 +11356,13 @@ function formatModuleLine(slot, itemId, stats) {
11032
11356
  out += ` +${pct}% capacity`;
11033
11357
  break;
11034
11358
  }
11359
+ case MODULE_HAULER: {
11360
+ const fin = decodeStat(stats, 0);
11361
+ const con = decodeStat(stats, 1);
11362
+ const com = decodeStat(stats, 2);
11363
+ out += ` Capacity ${computeHaulerCapacity(fin)} Efficiency ${computeHaulerEfficiency(con)} Drain ${computeHaulerDrain(com)}`;
11364
+ break;
11365
+ }
11035
11366
  case MODULE_WARP: {
11036
11367
  const stat = decodeStat(stats, 0);
11037
11368
  out += ` Range ${computeWarpRange(stat)}`;
@@ -11086,6 +11417,9 @@ var index = /*#__PURE__*/Object.freeze({
11086
11417
  computeLoaderThrust: computeLoaderThrust,
11087
11418
  computeCrafterSpeed: computeCrafterSpeed,
11088
11419
  computeCrafterDrain: computeCrafterDrain,
11420
+ computeHaulerCapacity: computeHaulerCapacity,
11421
+ computeHaulerEfficiency: computeHaulerEfficiency,
11422
+ computeHaulerDrain: computeHaulerDrain,
11089
11423
  computeWarpRange: computeWarpRange,
11090
11424
  entityDisplayName: entityDisplayName,
11091
11425
  moduleDisplayName: moduleDisplayName,
@@ -11127,5 +11461,5 @@ function describeItem(resolved, opts) {
11127
11461
  return `${tier} ${resolved.name} · ${mass}`;
11128
11462
  }
11129
11463
 
11130
- export { ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CANCEL_PAIRED_HAS_PENDING, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_CAPACITY_EXCEEDED, CONTAINER_NOT_FOUND, CONTAINER_Z, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, Container, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENTITY_CAPACITY_EXCEEDED, ENTITY_NO_CRAFTER, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHER_EXCEEDS_ENERGY_CAPACITY, 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, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, 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_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_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_FOCUSING_ARRAY, 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_GENERATOR_T1, ITEM_HAULER_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MATTER_CONDUIT, 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_POWER_CELL, ITEM_REACTION_CHAMBER, 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_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_SURVEY_PROBE, ITEM_THRUSTER_CORE, ITEM_TOOL_BIT, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, 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_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, 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, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CAPACITY_EXCEEDED, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, STARTER_ALREADY_CLAIMED, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Ship, Shipload, SubscriptionsManager, TIER_ADJECTIVES, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, Warehouse, WebSocketConnection, availableCapacity$1 as availableCapacity, availableCapacityFromMass, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildEntityDescription, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcLoadDuration, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItemToStack, cargoUtils, categoryColors, categoryFromIndex, categoryIconShapes, categoryIcons, categoryLabel, categoryLabelFromIndex, componentIcon, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererSpeed, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerDrain, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeShipCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseCapabilities, computeWarehouseHullCapabilities, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStrata, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, encodeGatheredCargoStats, encodeStats, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, findItemByCategoryAndTier, findNearbyPlanets, formatMass, formatMassDelta, formatModuleLine, formatTier, getCapabilityAttributes, getCategoryInfo, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getItem, getItems, getLocationCandidates, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getRecipe, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, isCraftedItem, isFull$1 as isFull, isFullFromMass, isGatherableLocation, isInvertedAttribute, isModuleItem, isRelatedItem, isSubscriptionsDebugEnabled, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, lerp$1 as lerp, makeContainer, makeShip, makeWarehouse, mapEntity, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, needsRecharge, parseWireEntity, projectEntity, projectEntityAt, projectFromCurrentState, projectFromCurrentStateAt, readCommonBase, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveStats, rollTier, rollWithinTier, rotation, schedule, setSubscriptionsDebug, stackKey, stackToCargoItem, stacksEqual, statMappings, tierColors, tierLabel, tierLabels, toLocation, typeLabel, validateSchedule };
11464
+ export { ActionsManager, BASE_ORBITAL_MASS, BLEND_INPUTS_MUST_MATCH, BLEND_REQUIRES_MULTIPLE, BLEND_STAT_LESS_NOT_SUPPORTED, CANCEL_CONTAINS_GROUPED_TASK, CANCEL_PAIRED_HAS_PENDING, CATEGORY_LABELS, COMMIT_ALREADY_SET, COMMIT_CANNOT_MATCH, COMMIT_NOT_SET, COMPANY_NOT_FOUND, CONTAINER_CAPACITY_EXCEEDED, CONTAINER_NOT_FOUND, CONTAINER_Z, CRAFT_ENERGY_DIVISOR, CRAFT_EXCEEDS_ENERGY_CAPACITY, CRAFT_NOT_ENOUGH_ENERGY, Container, Coordinates, DEPLOY_ENTITY_HAS_SCHEDULE, DEPTH_THRESHOLD_T1, DEPTH_THRESHOLD_T2, DEPTH_THRESHOLD_T3, DEPTH_THRESHOLD_T4, DEPTH_THRESHOLD_T5, DESTINATION_CAPACITY_EXCEEDED, ENTITY_CAPACITY_EXCEEDED, ENTITY_NO_CRAFTER, EPOCH_NON_ZERO, EPOCH_NOT_READY, ERROR_SYSTEM_ALREADY_INITIALIZED, ERROR_SYSTEM_DISABLED, ERROR_SYSTEM_NOT_INITIALIZED, EntitiesManager, EntityInventory, EntityType, EpochsManager, GAME_NOT_FOUND, GAME_SEED_NOT_SET, GATHERER_DEPTH_MAX_TIER, GATHERER_DEPTH_TABLE, GATHER_EXCEEDS_ENERGY_CAPACITY, 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, INSUFFICIENT_BALANCE, INSUFFICIENT_ITEM_QUANTITY, INSUFFICIENT_ITEM_SUPPLY, INVALID_AMOUNT, 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_CARGO_ARM, ITEM_CARGO_LINING, ITEM_CARGO_LINING_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_FOCUSING_ARRAY, 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_GENERATOR_T1, ITEM_HAULER_T1, ITEM_HULL_PLATES, ITEM_HULL_PLATES_T2, ITEM_LOADER_T1, ITEM_MATTER_CONDUIT, 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_POWER_CELL, ITEM_REACTION_CHAMBER, 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_SHIP_T1_PACKED, ITEM_STORAGE_T1, ITEM_SURVEY_PROBE, ITEM_THRUSTER_CORE, ITEM_TOOL_BIT, ITEM_TYPE_COMPONENT, ITEM_TYPE_ENTITY, ITEM_TYPE_MODULE, ITEM_TYPE_RESOURCE, ITEM_WAREHOUSE_T1_PACKED, ITEM_WARP_T1, InventoryAccessor, LOCATION_MAX_DEPTH, LOCATION_MIN_DEPTH, Location, LocationType, LocationsManager, MAX_ORBITAL_ALTITUDE, MIN_ORBITAL_ALTITUDE, MODULE_ANY, 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_TYPE_MISMATCH, MODULE_WARP, index as NFT, NO_SCHEDULE, PLANET_SUBTYPE_GAS_GIANT, PLANET_SUBTYPE_ICY, PLANET_SUBTYPE_INDUSTRIAL, PLANET_SUBTYPE_OCEAN, PLANET_SUBTYPE_ROCKY, PLANET_SUBTYPE_TERRESTRIAL, PLAYER_ALREADY_JOINED, PLAYER_NOT_FOUND, 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, REQUIRES_MORE_THAN_ONE, REQUIRES_POSITIVE_VALUE, RESERVE_TIERS, RESOLVE_COUNT_EXCEEDS_COMPLETED, SHIP_ALREADY_THERE, SHIP_ALREADY_TRAVELING, SHIP_CANNOT_BUY_TRAVELING, SHIP_CANNOT_CANCEL_TASK, SHIP_CANNOT_UPDATE_TRAVELING, SHIP_CAPACITY_EXCEEDED, SHIP_CARGO_NOT_LOADED, SHIP_CARGO_NOT_OWNED, SHIP_INVALID_CARGO, SHIP_INVALID_DESTINATION, SHIP_INVALID_TRAVEL_DURATION, SHIP_NOT_ARRIVED, SHIP_NOT_ENOUGH_ENERGY, SHIP_NOT_ENOUGH_ENERGY_CAPACITY, SHIP_NOT_FOUND, SHIP_NOT_IDLE, SHIP_NOT_OWNED, SHIP_NO_COMPLETED_TASKS, SHIP_NO_TASKS_TO_CANCEL, SLOT_FORMULAS, STARTER_ALREADY_CLAIMED, ScheduleAccessor, server as ServerContract, Types as ServerTypes, Ship, Shipload, SubscriptionsManager, TIER_ADJECTIVES, TIER_ROLL_MAX, TRAVEL_MAX_DURATION, TaskCancelable, TaskType, WAREHOUSE_ALREADY_AT_LOCATION, WAREHOUSE_CAPACITY_EXCEEDED, WAREHOUSE_NOT_FOUND, WAREHOUSE_Z, WARP_HAS_CARGO, WARP_HAS_SCHEDULE, WARP_NOT_FULL_ENERGY, WARP_NO_CAPABILITY, WARP_OUT_OF_RANGE, Warehouse, WebSocketConnection, availableCapacity$1 as availableCapacity, availableCapacityFromMass, blendCargoStacks, blendComponentStacks, blendCrossGroup, blendStacks, buildEntityDescription, calcCargoItemMass, calcCargoMass, calcEnergyUsage, calcLoadDuration, calcStacksMass, calc_acceleration, calc_craft_duration, calc_craft_energy, calc_energyusage, calc_flighttime, calc_gather_duration, calc_gather_energy, calc_loader_acceleration, calc_loader_flighttime, calc_orbital_altitude, calc_rechargetime, calc_ship_acceleration, calc_ship_flighttime, calc_ship_mass, calc_ship_rechargetime, calc_transfer_duration, calculateFlightTime, calculateLoadTimeBreakdown, calculateRefuelingTime, calculateTransferTime, canMove, capabilityAttributes, capabilityNames, capsHasCrafter, capsHasGatherer, capsHasHauler, capsHasLoaders, capsHasMass, capsHasMovement, capsHasStorage, cargoItemToStack, cargoUtils, categoryColors, categoryFromIndex, categoryIconShapes, categoryIcons, categoryLabel, categoryLabelFromIndex, componentIcon, computeBaseCapacityShip, computeBaseCapacityWarehouse, computeBaseHullmass, computeComponentStats, computeContainerCapabilities, computeContainerT2Capabilities, computeCraftedOutputStats, computeCrafterCapabilities, computeCrafterDrain, computeCrafterSpeed, computeEngineCapabilities, computeEngineDrain, computeEngineThrust, computeEntityStats, computeGathererCapabilities, computeGathererDepth, computeGathererDrain, computeGathererSpeed, computeGathererYield, computeGeneratorCap, computeGeneratorCapabilities, computeGeneratorRech, computeHaulPenalty, computeHaulerCapabilities, computeHaulerDrain$1 as computeHaulerDrain, computeInputMass, computeLoaderCapabilities, computeLoaderMass, computeLoaderThrust, computeShipCapabilities, computeShipHullCapabilities, computeStorageCapabilities, computeWarehouseCapabilities, computeWarehouseHullCapabilities, computeWarpRange, coordsToLocationId, createInventoryAccessor, createProjectedEntity, createScheduleAccessor, decodeCraftedItemStats, decodeStat, decodeStats, Shipload as default, deriveLocation, deriveLocationEpoch, deriveLocationSize, deriveLocationStatic, deriveResourceStats, deriveStatMappings, deriveStrata, deriveStratum, describeItem, describeModule, describeModuleForItem, describeModuleForSlot, deserializeAsset, deserializeComponent, deserializeEntity, deserializeModule, deserializeResource, displayName, distanceBetweenCoordinates, distanceBetweenPoints, easeFlightProgress, encodeGatheredCargoStats, encodeStats, energyPercent, entityDisplayName, estimateDealTravelTime, estimateTravelTime, findItemByCategoryAndTier, findNearbyPlanets, flightSpeedFactor, formatMass, formatMassDelta, formatModuleLine, formatTier, gathererDepthForTier, getCapabilityAttributes, getCategoryInfo, getComponents, getCurrentEpoch, getDepthThreshold, getDestinationLocation, getEligibleResources, getEntityItems, getEntityLayout, getEpochInfo, getFlightOrigin, getInterpolatedPosition, getItem, getItems, getLocationCandidates, getLocationType, getLocationTypeName, getModuleCapabilityType, getModules, getPlanetSubtype, getPlanetSubtypes, getPositionAt, getRecipe, getResourceTier, getResourceWeight, getResources, getStatDefinitions, getStatMappings, getStatMappingsForCapability, getStatMappingsForStat, getStatName, getSystemName, hasEnergy, hasEnergyForDistance$1 as hasEnergyForDistance, hasGatherer, hasLoaders, hasMass, hasSchedule, hasSpace$1 as hasSpace, hasSpaceForMass, hasStorage, hasSystem, hash, hash512, interpolateFlightPosition, isCraftedItem, isFull$1 as isFull, isFullFromMass, isGatherableLocation, isInvertedAttribute, isModuleItem, isRelatedItem, isSubscriptionsDebugEnabled, itemAbbreviations, itemCategory, itemIds, itemOffset, itemTier, itemTypeCode, lerp$1 as lerp, makeContainer, makeShip, makeWarehouse, mapEntity, maxTravelDistance, mergeStacks, moduleAccepts, moduleDisplayName, moduleIcon, moduleSlotTypeToCode, needsRecharge, parseWireEntity, projectEntity, projectEntityAt, projectFromCurrentState, projectFromCurrentStateAt, readCommonBase, removeFromStacks, renderDescription, resolveItem, resolveItemCategory, resolveStats, rollTier, rollWithinTier, rotation, schedule, setSubscriptionsDebug, stackKey, stackToCargoItem, stacksEqual, tierColors, tierLabel, tierLabels, toLocation, typeLabel, validateSchedule };
11131
11465
  //# sourceMappingURL=shipload.m.js.map