@sbb-esta/lyne-elements-experimental 4.10.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +2 -1
  2. package/custom-elements.json +240 -240
  3. package/development/autocomplete-grid/autocomplete-grid/autocomplete-grid.component.js +3 -2
  4. package/development/date-helper-qNdwgC9O.js +1 -1
  5. package/development/format-DFx4997p.js +1 -1
  6. package/development/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  7. package/development/{pearl-chain-vertical-item.component-DcmH13Vb.js → pearl-chain-vertical-item.component-D4clzjjQ.js} +2 -2
  8. package/development/pearl-chain-vertical-item.js +1 -1
  9. package/development/pearl-chain-vertical-item.pure.js +1 -1
  10. package/development/pearl-chain.component-oQZUzsyW.js +1 -1
  11. package/development/seat-reservation/seat-reservation/seat-reservation-base-element.js +1 -1
  12. package/development/seat-reservation/seat-reservation-graphic/seat-reservation-assets.js +1 -1
  13. package/development/seat-reservation-place-control.component-CM9efId7.js +1 -1
  14. package/development/seat-reservation.component-DFJVFmrI.js +1 -1
  15. package/development/svgs-kDpBCto5.js +1 -1
  16. package/development/timetable-row.component-Dko8laRT.js +1 -1
  17. package/development/toDate-DOFAOjP-.js +1 -1
  18. package/{format-CM5exOsN.js → format-DbUuNYFU.js} +1 -1
  19. package/journey-summary/journey-summary.component.js +1 -1
  20. package/{journey-summary.component-DC7-qPHY.js → journey-summary.component-OFYXlkzg.js} +1 -1
  21. package/journey-summary.js +1 -1
  22. package/journey-summary.pure.js +1 -1
  23. package/{mapper-DkiDDseD.js → mapper-Cqie5ivY.js} +1 -1
  24. package/package.json +2 -2
  25. package/pearl-chain-time/pearl-chain-time.component.js +1 -1
  26. package/{pearl-chain-time.component-CkKsrbgQ.js → pearl-chain-time.component-CNKsGfIp.js} +1 -1
  27. package/pearl-chain-time.js +1 -1
  28. package/pearl-chain-time.pure.js +1 -1
  29. package/pearl-chain-vertical-item/pearl-chain-vertical-item.component.js +1 -1
  30. package/{pearl-chain-vertical-item.component-BUqZ-3Ay.js → pearl-chain-vertical-item.component-CGYNzFlK.js} +1 -1
  31. package/pearl-chain-vertical-item.js +1 -1
  32. package/pearl-chain-vertical-item.pure.js +1 -1
  33. package/seat-reservation/common/mapper/mapper.js +1 -1
  34. package/seat-reservation/common/mapper.js +1 -1
  35. package/seat-reservation/common.js +1 -1
  36. package/seat-reservation.js +1 -1
  37. package/seat-reservation.pure.js +1 -1
  38. package/timetable-row/timetable-row.component.js +1 -1
  39. package/{timetable-row.component-DbzBCpKR.js → timetable-row.component-Cd_7Pu_E.js} +1 -1
  40. package/timetable-row.js +1 -1
  41. package/timetable-row.pure.js +1 -1
@@ -303,4 +303,4 @@ var assetsTemplate = html`
303
303
  //#endregion
304
304
  export { assetsTemplate, svgImageByOSDMCode };
305
305
 
306
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hc3NldHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy9zZWF0LXJlc2VydmF0aW9uLWFzc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBodG1sLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5cbmltcG9ydCB7IG1hcEljb25Ub1N2ZyB9IGZyb20gJy4uL2NvbW1vbi9tYXBwZXIudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEvc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IFNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMuY29tcG9uZW50LnRzJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy90YWJsZS5qcyc7XG5cblNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50LmRlZmluZSgpO1xuU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQuZGVmaW5lKCk7XG5cbmNvbnN0IHN2Z0ltYWdlID0gKHNyYzogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgPT4ge1xuICByZXR1cm4gaHRtbGBcbiAgICA8ZGl2IGNsYXNzPVwic3RvcnktYXNzZXRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYXNzZXRfX3ByZXZpZXdcIj4ke3Vuc2FmZUhUTUwoc3JjKX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIGA7XG59O1xuXG4vKipcbiAqIHN2Z0ltYWdlQnlPU0RNQ29kZSBGdW5jdGlvbiByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHN2ZyBpbWFnZSBieSBPU0RNIENvZGVcbiAqIEBwYXJhbSBvc2RtQ29kZVxuICogQHJldHVybnMgVGhlIFNWRyBJbWFnZSBhcyBUZW1wbGF0ZVJlc3VsdCBpZiBpdCBtYXRjaGVzIHRoZSBPU0RNIGNvZGUsIG9yIG51bGwgaWYgaXQncyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBjb25zdCBzdmdJbWFnZUJ5T1NETUNvZGUgPSAob3NkbUNvZGU6IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCA9PiB7XG4gIHJldHVybiBtYXBJY29uVG9Tdmdbb3NkbUNvZGVdPy5zdmdcbiAgICA/IHN2Z0ltYWdlKG1hcEljb25Ub1N2Z1tvc2RtQ29kZV0uc3ZnKVxuICAgIDogbWFwSWNvblRvU3ZnW29zZG1Db2RlXT8uc3ZnTmFtZVxuICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPVwiJHttYXBJY29uVG9Tdmdbb3NkbUNvZGVdLnN2Z05hbWV9XCI+PC9zYmItaWNvbj5gXG4gICAgICA6IG51bGw7XG59O1xuXG5jb25zdCBpbnRlcmlvclRhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+Q29kZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX0ZSRUUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBBdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX0ZSRUU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX1NFTEVDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtQmlrZTogU2VsZWN0ZWQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX1NFTEVDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfQklDWUNMRV9BTExPQ0FURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBVbmF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfQUxMT0NBVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfQklDWUNMRV9SRVNUUklDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtQmlrZTogTm90IGJvb2thYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfQklDWUNMRV9SRVNUUklDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9GUkVFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogQXZhaWxhYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9GUkVFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9TRUxFQ1RFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLVNlYXQ6IFNlbGVjdGVkPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9TRUxFQ1RFRDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX1NFQVRfQUxMT0NBVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogVW5hdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX0FMTE9DQVRFRDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX1NFQVRfUkVTVFJJQ1RFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLVNlYXQ6IE5vdCBib29rYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX1NFQVRfUkVTVFJJQ1RFRDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuY29uc3QgbGF5b3V0SXRlbXNUYWJsZSA9IGh0bWxgXG4gIDxzYmItdGFibGUtd3JhcHBlcj5cbiAgICA8dGFibGUgY2xhc3M9XCJzYmItdGFibGVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlNWRzwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RmlnbWE8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk9TRE0gQ29kZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFQVNZX0FDQ0VTU19BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RWFzeSBBY2Nlc3MgQXJlYTwvdGQ+XG4gICAgICAgICAgPHRkPkVBU1lfQUNDRVNTX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFTlRSWV9FWElUJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RW50cmFuY2U8L3RkPlxuICAgICAgICAgIDx0ZD5FTlRSWV9FWElUPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTFVHR0FHRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+THVnZ2FnZTwvdGQ+XG4gICAgICAgICAgPHRkPkxVR0dBR0VfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ01VTFRJX0ZVTkNUSU9OX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5NdWx0aSBGdW5jdGlvbiBBcmVhPC90ZD5cbiAgICAgICAgICA8dGQ+TVVMVElfRlVOQ1RJT05fQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQVlHUk9VTkRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYXlncm91bmQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFZR1JPVU5EX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQUkFNX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QcmFtPC90ZD5cbiAgICAgICAgICA8dGQ+UFJBTV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU0tJX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ta2k8L3RkPlxuICAgICAgICAgIDx0ZD5TS0lfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1NUQUlSX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5TdGFpcjwvdGQ+XG4gICAgICAgICAgPHRkPlNUQUlSX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX1dIRUVMQ0hBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldC1IYW5kaWNhcDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9XSEVFTENIQUlSX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdXQVJEUk9CRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2FyZHJvYmU8L3RkPlxuICAgICAgICAgIDx0ZD5XQVJEUk9CRV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5jb25zdCBzZXJ2aWNlSWNvblRhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBhcmlhLWxhYmVsPVwiQXZhaWxhYmxlIFNlcnZpY2UgSWNvbnNcIiBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0JJU1RSTycpfTwvdGQ+XG4gICAgICAgICAgPHRkPkJpc3RybzwvdGQ+XG4gICAgICAgICAgPHRkPkJJU1RSTzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0JVU0lORVNTJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+QnVzaW5lc3M8L3RkPlxuICAgICAgICAgIDx0ZD5CVVNJTkVTUzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQVlHUk9VTkRfSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkZhbWlseTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQVlHUk9VTkRfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0xVR0dBR0VfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkx1Z2dhZ2U8L3RkPlxuICAgICAgICAgIDx0ZD5MVUdHQUdFX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQUkFNX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5QcmFtPC90ZD5cbiAgICAgICAgICA8dGQ+UFJBTV9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRUFTWV9BQ0NFU1NfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkVhc3kgQWNjZXNzIEFyZWE8L3RkPlxuICAgICAgICAgIDx0ZD5FQVNZX0FDQ0VTU19BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUkVTVEFVUkFOVF9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UmVzdGF1cmFudDwvdGQ+XG4gICAgICAgICAgPHRkPlJFU1RBVVJBTlRfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1NJTEVOQ0VfQVJFQV9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+U2lsZW5jZTwvdGQ+XG4gICAgICAgICAgPHRkPlNJTEVOQ0VfQVJFQV9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ub2lsZXQ8L3RkPlxuICAgICAgICAgIDx0ZD5UT0lMRVRfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RPSUxFVF9XSEVFTENIQUlSX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ub2lsZXQtUFJNPC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX1dIRUVMQ0hBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dIRUVMQ0hBSVJfSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPldoZWVsY2hhaXI8L3RkPlxuICAgICAgICAgIDx0ZD5XSEVFTENIQUlSX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdXSUZJJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2lmaTwvdGQ+XG4gICAgICAgICAgPHRkPldJRkk8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L3NiYi10YWJsZS13cmFwcGVyPlxuYDtcbmNvbnN0IGNoYXNzaXNUYWJsZSA9IGh0bWxgXG4gIDxzYmItdGFibGUtd3JhcHBlcj5cbiAgICA8dGFibGUgY2xhc3M9XCJzYmItdGFibGVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlNWRzwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RmlnbWE8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk9TRE0gQ29kZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdEUklWRVJfQVJFQV9UUkFJTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkRyaXZlciBBcmVhPGJyIC8+KERlcGVuZGVudCBvbiBWZWhpY2xlLVR5cGU6IFRSQUlOKTwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfQlVTJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RHJpdmVyIEFyZWE8YnIgLz4oRGVwZW5kZW50IG9uIFZlaGljbGUtVHlwZTogQlVTKTwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Q29tcGFydG1lbnQgUGFzc2FnZSBIaWdoPC90ZD5cbiAgICAgICAgICA8dGQ+Q09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkNvbXBhcnRtZW50IFBhc3NhZ2U8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9QQVNTQUdFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9MT1cnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Db21wYXJ0bWVudCBQYXNzYWdlIExvdzwvdGQ+XG4gICAgICAgICAgPHRkPkNPTVBBUlRNRU5UX1BBU1NBR0VfTE9XPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfUEFTU0FHRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkNvYWNoIFBhc3NhZ2U8L3RkPlxuICAgICAgICAgIDx0ZD5DT0FDSF9QQVNTQUdFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfV0FMTCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPkNvbXBhcnRtZW50IFdhbGw8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9XQUxMPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhXG4gICAgICAgICAgICAgIHN0eWxlPVwiLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoOiAxMDA7IC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS1oZWlnaHQ6IDUwOyBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2JiLWNvbG9yLW1pbGspXCJcbiAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWE+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+VGFibGUgUmVzdGF1cmFudDxiciAvPihXaWxsIGJlIHJlbmRlcmVkIGFzIENTUyk8L3RkPlxuICAgICAgICAgIDx0ZD5UQUJMRV9SRVNUQVVSQU5UPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Q29hY2ggV2FsbCBObyBQYXNzYWdlPC90ZD5cbiAgICAgICAgICA8dGQ+Q09BQ0hfV0FMTF9OT19QQVNTQUdFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5cbmV4cG9ydCBjb25zdCBhc3NldHNUZW1wbGF0ZTogVGVtcGxhdGVSZXN1bHQgPSBodG1sYFxuICA8c3R5bGU+XG4gICAgLnN0b3J5LWFzc2V0IHtcbiAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1jb2xvci13aGl0ZSk7XG4gICAgfVxuICA8L3N0eWxlPlxuICA8aDE+TGlzdCBvZiBhbGwgY3VycmVudGx5IGF2YWlsYWJsZSBhc3NldHMuPC9oMT5cbiAgPGgyPkludGVyaW9yPC9oMj5cbiAgJHtpbnRlcmlvclRhYmxlfVxuICA8aDI+TGF5b3V0PC9oMj5cbiAgJHtsYXlvdXRJdGVtc1RhYmxlfVxuICA8aDI+U2VydmljZSBJY29uczwvaDI+XG4gICR7c2VydmljZUljb25UYWJsZX1cbiAgPGgyPkNoYXNzaXM8L2gyPlxuICAke2NoYXNzaXNUYWJsZX1cbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQSxpQ0FBaUMsUUFBUTtBQUN6Qyw4QkFBOEIsUUFBUTtBQUV0QyxJQUFNLFlBQVksUUFBK0I7QUFDL0MsUUFBTyxJQUFJOzsyQ0FFOEIsV0FBVyxJQUFJLENBQUE7Ozs7Ozs7OztBQVUxRCxJQUFhLHNCQUFzQixhQUEyQztBQUM1RSxRQUFPLGFBQWEsV0FBVyxNQUMzQixTQUFTLGFBQWEsVUFBVSxJQUFJLEdBQ3BDLGFBQWEsV0FBVyxVQUN0QixJQUFJLG1CQUFtQixhQUFhLFVBQVUsUUFBTyxpQkFDckQ7O0FBNlFSLElBQWEsaUJBQWlDLElBQUk7Ozs7Ozs7OztJQTFRNUIsSUFBSTs7Ozs7Ozs7Ozs7O2dCQVlWLG1CQUFtQixxQkFBcUIsQ0FBQTs7Ozs7Z0JBS3hDLG1CQUFtQix5QkFBeUIsQ0FBQTs7Ozs7Z0JBSzVDLG1CQUFtQiwwQkFBMEIsQ0FBQTs7Ozs7Z0JBSzdDLG1CQUFtQiwyQkFBMkIsQ0FBQTs7Ozs7Z0JBSzlDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQixzQkFBc0IsQ0FBQTs7Ozs7Z0JBS3pDLG1CQUFtQix1QkFBdUIsQ0FBQTs7Ozs7Z0JBSzFDLG1CQUFtQix3QkFBd0IsQ0FBQTs7Ozs7OztFQW9PdkQ7O0lBNU5xQixJQUFJOzs7Ozs7Ozs7Ozs7Z0JBWWIsbUJBQW1CLG1CQUFtQixDQUFBOzs7OztnQkFLdEMsbUJBQW1CLGFBQWEsQ0FBQTs7Ozs7Z0JBS2hDLG1CQUFtQixlQUFlLENBQUE7Ozs7O2dCQUtsQyxtQkFBbUIsc0JBQXNCLENBQUE7Ozs7O2dCQUt6QyxtQkFBbUIsa0JBQWtCLENBQUE7Ozs7O2dCQUtyQyxtQkFBbUIsWUFBWSxDQUFBOzs7OztnQkFLL0IsbUJBQW1CLFdBQVcsQ0FBQTs7Ozs7Z0JBSzlCLG1CQUFtQixhQUFhLENBQUE7Ozs7O2dCQUtoQyxtQkFBbUIsY0FBYyxDQUFBOzs7OztnQkFLakMsbUJBQW1CLHlCQUF5QixDQUFBOzs7OztnQkFLNUMsbUJBQW1CLGdCQUFnQixDQUFBOzs7Ozs7O0VBZ0svQzs7SUF4SnFCLElBQUk7Ozs7Ozs7Ozs7OztnQkFZYixtQkFBbUIsU0FBUyxDQUFBOzs7OztnQkFLNUIsbUJBQW1CLFdBQVcsQ0FBQTs7Ozs7Z0JBSzlCLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQixlQUFlLENBQUE7Ozs7O2dCQUtsQyxtQkFBbUIsWUFBWSxDQUFBOzs7OztnQkFLL0IsbUJBQW1CLG1CQUFtQixDQUFBOzs7OztnQkFLdEMsbUJBQW1CLGtCQUFrQixDQUFBOzs7OztnQkFLckMsbUJBQW1CLG9CQUFvQixDQUFBOzs7OztnQkFLdkMsbUJBQW1CLGNBQWMsQ0FBQTs7Ozs7Z0JBS2pDLG1CQUFtQix5QkFBeUIsQ0FBQTs7Ozs7Z0JBSzVDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQixPQUFPLENBQUE7Ozs7Ozs7RUF1RnRDOztJQS9FaUIsSUFBSTs7Ozs7Ozs7Ozs7O2dCQVlULG1CQUFtQixvQkFBb0IsQ0FBQTs7Ozs7Z0JBS3ZDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQiwyQkFBMkIsQ0FBQTs7Ozs7Z0JBSzlDLG1CQUFtQixzQkFBc0IsQ0FBQTs7Ozs7Z0JBS3pDLG1CQUFtQiwwQkFBMEIsQ0FBQTs7Ozs7Z0JBSzdDLG1CQUFtQixnQkFBZ0IsQ0FBQTs7Ozs7Z0JBS25DLG1CQUFtQixtQkFBbUIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O2dCQWV0QyxtQkFBbUIsd0JBQXdCLENBQUE7Ozs7Ozs7RUF3QnZEIn0=
306
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1hc3NldHMuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy9zZWF0LXJlc2VydmF0aW9uLWFzc2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBodG1sLCB0eXBlIFRlbXBsYXRlUmVzdWx0IH0gZnJvbSAnbGl0JztcbmltcG9ydCB7IHVuc2FmZUhUTUwgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy91bnNhZmUtaHRtbC5qcyc7XG5cbmltcG9ydCB7IG1hcEljb25Ub1N2ZyB9IGZyb20gJy4uL2NvbW1vbi9tYXBwZXIudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEvc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IFNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMuY29tcG9uZW50LnRzJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy90YWJsZS5qcyc7XG5cblNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50LmRlZmluZSgpO1xuU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQuZGVmaW5lKCk7XG5cbmNvbnN0IHN2Z0ltYWdlID0gKHNyYzogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgPT4ge1xuICByZXR1cm4gaHRtbGBcbiAgICA8ZGl2IGNsYXNzPVwic3RvcnktYXNzZXRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwic3RvcnktYXNzZXRfX3ByZXZpZXdcIj4ke3Vuc2FmZUhUTUwoc3JjKX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIGA7XG59O1xuXG4vKipcbiAqIHN2Z0ltYWdlQnlPU0RNQ29kZSBGdW5jdGlvbiByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHN2ZyBpbWFnZSBieSBPU0RNIENvZGVcbiAqIEBwYXJhbSBvc2RtQ29kZVxuICogQHJldHVybnMgVGhlIFNWRyBJbWFnZSBhcyBUZW1wbGF0ZVJlc3VsdCBpZiBpdCBtYXRjaGVzIHRoZSBPU0RNIGNvZGUsIG9yIG51bGwgaWYgaXQncyBub3QgZm91bmQuXG4gKi9cbmV4cG9ydCBjb25zdCBzdmdJbWFnZUJ5T1NETUNvZGUgPSAob3NkbUNvZGU6IHN0cmluZyk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCA9PiB7XG4gIHJldHVybiBtYXBJY29uVG9Tdmdbb3NkbUNvZGVdPy5zdmdcbiAgICA/IHN2Z0ltYWdlKG1hcEljb25Ub1N2Z1tvc2RtQ29kZV0uc3ZnKVxuICAgIDogbWFwSWNvblRvU3ZnW29zZG1Db2RlXT8uc3ZnTmFtZVxuICAgICAgPyBodG1sYDxzYmItaWNvbiBuYW1lPVwiJHttYXBJY29uVG9Tdmdbb3NkbUNvZGVdLnN2Z05hbWV9XCI+PC9zYmItaWNvbj5gXG4gICAgICA6IG51bGw7XG59O1xuXG5jb25zdCBpbnRlcmlvclRhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+Q29kZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX0ZSRUUnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBBdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX0ZSRUU8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQTEFDRV9CSUNZQ0xFX1NFTEVDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtQmlrZTogU2VsZWN0ZWQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9CSUNZQ0xFX1NFTEVDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfQklDWUNMRV9BTExPQ0FURUQnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QbGFjZS1CaWtlOiBVbmF2YWlsYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX0JJQ1lDTEVfQUxMT0NBVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfQklDWUNMRV9SRVNUUklDVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtQmlrZTogTm90IGJvb2thYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfQklDWUNMRV9SRVNUUklDVEVEPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9GUkVFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogQXZhaWxhYmxlPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9GUkVFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUExBQ0VfU0VBVF9TRUxFQ1RFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLVNlYXQ6IFNlbGVjdGVkPC90ZD5cbiAgICAgICAgICA8dGQ+UExBQ0VfU0VBVF9TRUxFQ1RFRDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX1NFQVRfQUxMT0NBVEVEJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UGxhY2UtU2VhdDogVW5hdmFpbGFibGU8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFDRV9TRUFUX0FMTE9DQVRFRDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQUNFX1NFQVRfUkVTVFJJQ1RFRCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYWNlLVNlYXQ6IE5vdCBib29rYWJsZTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQUNFX1NFQVRfUkVTVFJJQ1RFRDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvc2JiLXRhYmxlLXdyYXBwZXI+XG5gO1xuY29uc3QgbGF5b3V0SXRlbXNUYWJsZSA9IGh0bWxgXG4gIDxzYmItdGFibGUtd3JhcHBlcj5cbiAgICA8dGFibGUgY2xhc3M9XCJzYmItdGFibGVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlNWRzwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RmlnbWE8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk9TRE0gQ29kZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFQVNZX0FDQ0VTU19BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RWFzeSBBY2Nlc3MgQXJlYTwvdGQ+XG4gICAgICAgICAgPHRkPkVBU1lfQUNDRVNTX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdFTlRSWV9FWElUJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RW50cmFuY2U8L3RkPlxuICAgICAgICAgIDx0ZD5FTlRSWV9FWElUPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnTFVHR0FHRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+THVnZ2FnZTwvdGQ+XG4gICAgICAgICAgPHRkPkxVR0dBR0VfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ01VTFRJX0ZVTkNUSU9OX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5NdWx0aSBGdW5jdGlvbiBBcmVhPC90ZD5cbiAgICAgICAgICA8dGQ+TVVMVElfRlVOQ1RJT05fQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQVlHUk9VTkRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlBsYXlncm91bmQ8L3RkPlxuICAgICAgICAgIDx0ZD5QTEFZR1JPVU5EX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQUkFNX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5QcmFtPC90ZD5cbiAgICAgICAgICA8dGQ+UFJBTV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnU0tJX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ta2k8L3RkPlxuICAgICAgICAgIDx0ZD5TS0lfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1NUQUlSX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5TdGFpcjwvdGQ+XG4gICAgICAgICAgPHRkPlNUQUlSX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdUT0lMRVRfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX1dIRUVMQ0hBSVJfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPlRvaWxldC1IYW5kaWNhcDwvdGQ+XG4gICAgICAgICAgPHRkPlRPSUxFVF9XSEVFTENIQUlSX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdXQVJEUk9CRV9BUkVBJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2FyZHJvYmU8L3RkPlxuICAgICAgICAgIDx0ZD5XQVJEUk9CRV9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5jb25zdCBzZXJ2aWNlSWNvblRhYmxlID0gaHRtbGBcbiAgPHNiYi10YWJsZS13cmFwcGVyPlxuICAgIDx0YWJsZSBhcmlhLWxhYmVsPVwiQXZhaWxhYmxlIFNlcnZpY2UgSWNvbnNcIiBjbGFzcz1cInNiYi10YWJsZVwiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+U1ZHPC90aD5cbiAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj5GaWdtYTwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+T1NETSBDb2RlPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0JJU1RSTycpfTwvdGQ+XG4gICAgICAgICAgPHRkPkJpc3RybzwvdGQ+XG4gICAgICAgICAgPHRkPkJJU1RSTzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0JVU0lORVNTJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+QnVzaW5lc3M8L3RkPlxuICAgICAgICAgIDx0ZD5CVVNJTkVTUzwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1BMQVlHUk9VTkRfSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkZhbWlseTwvdGQ+XG4gICAgICAgICAgPHRkPlBMQVlHUk9VTkRfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ0xVR0dBR0VfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkx1Z2dhZ2U8L3RkPlxuICAgICAgICAgIDx0ZD5MVUdHQUdFX0FSRUE8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdQUkFNX0lDT04nKX08L3RkPlxuICAgICAgICAgIDx0ZD5QcmFtPC90ZD5cbiAgICAgICAgICA8dGQ+UFJBTV9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRUFTWV9BQ0NFU1NfQVJFQScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkVhc3kgQWNjZXNzIEFyZWE8L3RkPlxuICAgICAgICAgIDx0ZD5FQVNZX0FDQ0VTU19BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnUkVTVEFVUkFOVF9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+UmVzdGF1cmFudDwvdGQ+XG4gICAgICAgICAgPHRkPlJFU1RBVVJBTlRfSUNPTjwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1NJTEVOQ0VfQVJFQV9JQ09OJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+U2lsZW5jZTwvdGQ+XG4gICAgICAgICAgPHRkPlNJTEVOQ0VfQVJFQV9JQ09OPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnVE9JTEVUX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ub2lsZXQ8L3RkPlxuICAgICAgICAgIDx0ZD5UT0lMRVRfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1RPSUxFVF9XSEVFTENIQUlSX0FSRUEnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Ub2lsZXQtUFJNPC90ZD5cbiAgICAgICAgICA8dGQ+VE9JTEVUX1dIRUVMQ0hBSVJfQVJFQTwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGQ+JHtzdmdJbWFnZUJ5T1NETUNvZGUoJ1dIRUVMQ0hBSVJfSUNPTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPldoZWVsY2hhaXI8L3RkPlxuICAgICAgICAgIDx0ZD5XSEVFTENIQUlSX0lDT048L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdXSUZJJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+V2lmaTwvdGQ+XG4gICAgICAgICAgPHRkPldJRkk8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L3NiYi10YWJsZS13cmFwcGVyPlxuYDtcbmNvbnN0IGNoYXNzaXNUYWJsZSA9IGh0bWxgXG4gIDxzYmItdGFibGUtd3JhcHBlcj5cbiAgICA8dGFibGUgY2xhc3M9XCJzYmItdGFibGVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPlNWRzwvdGg+XG4gICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+RmlnbWE8L3RoPlxuICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPk9TRE0gQ29kZTwvdGg+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRkPiR7c3ZnSW1hZ2VCeU9TRE1Db2RlKCdEUklWRVJfQVJFQV9UUkFJTicpfTwvdGQ+XG4gICAgICAgICAgPHRkPkRyaXZlciBBcmVhPGJyIC8+KERlcGVuZGVudCBvbiBWZWhpY2xlLVR5cGU6IFRSQUlOKTwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnRFJJVkVSX0FSRUFfQlVTJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+RHJpdmVyIEFyZWE8YnIgLz4oRGVwZW5kZW50IG9uIFZlaGljbGUtVHlwZTogQlVTKTwvdGQ+XG4gICAgICAgICAgPHRkPkRSSVZFUl9BUkVBPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Q29tcGFydG1lbnQgUGFzc2FnZSBIaWdoPC90ZD5cbiAgICAgICAgICA8dGQ+Q09NUEFSVE1FTlRfUEFTU0FHRV9ISUdIPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkNvbXBhcnRtZW50IFBhc3NhZ2U8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9QQVNTQUdFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfUEFTU0FHRV9MT1cnKX08L3RkPlxuICAgICAgICAgIDx0ZD5Db21wYXJ0bWVudCBQYXNzYWdlIExvdzwvdGQ+XG4gICAgICAgICAgPHRkPkNPTVBBUlRNRU5UX1BBU1NBR0VfTE9XPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfUEFTU0FHRScpfTwvdGQ+XG4gICAgICAgICAgPHRkPkNvYWNoIFBhc3NhZ2U8L3RkPlxuICAgICAgICAgIDx0ZD5DT0FDSF9QQVNTQUdFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09NUEFSVE1FTlRfV0FMTCcpfTwvdGQ+XG4gICAgICAgICAgPHRkPkNvbXBhcnRtZW50IFdhbGw8L3RkPlxuICAgICAgICAgIDx0ZD5DT01QQVJUTUVOVF9XQUxMPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhXG4gICAgICAgICAgICAgIHN0eWxlPVwiLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoOiAxMDA7IC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS1oZWlnaHQ6IDUwOyBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc2JiLWNvbG9yLW1pbGspXCJcbiAgICAgICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWE+XG4gICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8dGQ+VGFibGUgUmVzdGF1cmFudDxiciAvPihXaWxsIGJlIHJlbmRlcmVkIGFzIENTUyk8L3RkPlxuICAgICAgICAgIDx0ZD5UQUJMRV9SRVNUQVVSQU5UPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIDx0ZD4ke3N2Z0ltYWdlQnlPU0RNQ29kZSgnQ09BQ0hfV0FMTF9OT19QQVNTQUdFJyl9PC90ZD5cbiAgICAgICAgICA8dGQ+Q29hY2ggV2FsbCBObyBQYXNzYWdlPC90ZD5cbiAgICAgICAgICA8dGQ+Q09BQ0hfV0FMTF9OT19QQVNTQUdFPC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cbiAgPC9zYmItdGFibGUtd3JhcHBlcj5cbmA7XG5cbmV4cG9ydCBjb25zdCBhc3NldHNUZW1wbGF0ZTogVGVtcGxhdGVSZXN1bHQgPSBodG1sYFxuICA8c3R5bGU+XG4gICAgLnN0b3J5LWFzc2V0IHtcbiAgICAgIHdpZHRoOiBtYXgtY29udGVudDtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNiYi1jb2xvci13aGl0ZSk7XG4gICAgfVxuICA8L3N0eWxlPlxuICA8aDE+TGlzdCBvZiBhbGwgY3VycmVudGx5IGF2YWlsYWJsZSBhc3NldHMuPC9oMT5cbiAgPGgyPkludGVyaW9yPC9oMj5cbiAgJHtpbnRlcmlvclRhYmxlfVxuICA8aDI+TGF5b3V0PC9oMj5cbiAgJHtsYXlvdXRJdGVtc1RhYmxlfVxuICA8aDI+U2VydmljZSBJY29uczwvaDI+XG4gICR7c2VydmljZUljb25UYWJsZX1cbiAgPGgyPkNoYXNzaXM8L2gyPlxuICAke2NoYXNzaXNUYWJsZX1cbmA7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFVQSxpQ0FBaUMsUUFBUTtBQUN6Qyw4QkFBOEIsUUFBUTtBQUV0QyxJQUFNLFlBQVksUUFBK0I7QUFDL0MsUUFBTyxJQUFJOzsyQ0FFOEIsV0FBVyxJQUFJLENBQUE7Ozs7Ozs7OztBQVUxRCxJQUFhLHNCQUFzQixhQUEyQztBQUM1RSxRQUFPLGFBQWEsV0FBVyxNQUMzQixTQUFTLGFBQWEsVUFBVSxJQUFJLEdBQ3BDLGFBQWEsV0FBVyxVQUN0QixJQUFJLG1CQUFtQixhQUFhLFVBQVUsUUFBTyxpQkFDckQ7O0FBNlFSLElBQWEsaUJBQWlDLElBQUk7Ozs7Ozs7OztJQVM5QyxBQW5Sa0IsSUFBSTs7Ozs7Ozs7Ozs7O2dCQVlWLG1CQUFtQixxQkFBcUIsQ0FBQTs7Ozs7Z0JBS3hDLG1CQUFtQix5QkFBeUIsQ0FBQTs7Ozs7Z0JBSzVDLG1CQUFtQiwwQkFBMEIsQ0FBQTs7Ozs7Z0JBSzdDLG1CQUFtQiwyQkFBMkIsQ0FBQTs7Ozs7Z0JBSzlDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQixzQkFBc0IsQ0FBQTs7Ozs7Z0JBS3pDLG1CQUFtQix1QkFBdUIsQ0FBQTs7Ozs7Z0JBSzFDLG1CQUFtQix3QkFBd0IsQ0FBQTs7Ozs7OztFQW9PdkQ7O0lBRUEsQUE5TnFCLElBQUk7Ozs7Ozs7Ozs7OztnQkFZYixtQkFBbUIsbUJBQW1CLENBQUE7Ozs7O2dCQUt0QyxtQkFBbUIsYUFBYSxDQUFBOzs7OztnQkFLaEMsbUJBQW1CLGVBQWUsQ0FBQTs7Ozs7Z0JBS2xDLG1CQUFtQixzQkFBc0IsQ0FBQTs7Ozs7Z0JBS3pDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQixZQUFZLENBQUE7Ozs7O2dCQUsvQixtQkFBbUIsV0FBVyxDQUFBOzs7OztnQkFLOUIsbUJBQW1CLGFBQWEsQ0FBQTs7Ozs7Z0JBS2hDLG1CQUFtQixjQUFjLENBQUE7Ozs7O2dCQUtqQyxtQkFBbUIseUJBQXlCLENBQUE7Ozs7O2dCQUs1QyxtQkFBbUIsZ0JBQWdCLENBQUE7Ozs7Ozs7RUFnSy9DOztJQUVBLEFBMUpxQixJQUFJOzs7Ozs7Ozs7Ozs7Z0JBWWIsbUJBQW1CLFNBQVMsQ0FBQTs7Ozs7Z0JBSzVCLG1CQUFtQixXQUFXLENBQUE7Ozs7O2dCQUs5QixtQkFBbUIsa0JBQWtCLENBQUE7Ozs7O2dCQUtyQyxtQkFBbUIsZUFBZSxDQUFBOzs7OztnQkFLbEMsbUJBQW1CLFlBQVksQ0FBQTs7Ozs7Z0JBSy9CLG1CQUFtQixtQkFBbUIsQ0FBQTs7Ozs7Z0JBS3RDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQixvQkFBb0IsQ0FBQTs7Ozs7Z0JBS3ZDLG1CQUFtQixjQUFjLENBQUE7Ozs7O2dCQUtqQyxtQkFBbUIseUJBQXlCLENBQUE7Ozs7O2dCQUs1QyxtQkFBbUIsa0JBQWtCLENBQUE7Ozs7O2dCQUtyQyxtQkFBbUIsT0FBTyxDQUFBOzs7Ozs7O0VBdUZ0Qzs7SUFFQSxBQWpGaUIsSUFBSTs7Ozs7Ozs7Ozs7O2dCQVlULG1CQUFtQixvQkFBb0IsQ0FBQTs7Ozs7Z0JBS3ZDLG1CQUFtQixrQkFBa0IsQ0FBQTs7Ozs7Z0JBS3JDLG1CQUFtQiwyQkFBMkIsQ0FBQTs7Ozs7Z0JBSzlDLG1CQUFtQixzQkFBc0IsQ0FBQTs7Ozs7Z0JBS3pDLG1CQUFtQiwwQkFBMEIsQ0FBQTs7Ozs7Z0JBSzdDLG1CQUFtQixnQkFBZ0IsQ0FBQTs7Ozs7Z0JBS25DLG1CQUFtQixtQkFBbUIsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O2dCQWV0QyxtQkFBbUIsd0JBQXdCLENBQUE7Ozs7Ozs7RUF3QnZEIn0=
@@ -426,4 +426,4 @@ var SbbSeatReservationPlaceControlElement = (() => {
426
426
  //#endregion
427
427
  export { SbbSeatReservationPlaceControlElement as t };
428
428
 
429
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmNvbXBvbmVudC1DTTllZklkNy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL3NlYXQtcmVzZXJ2YXRpb24vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wvc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL3N0eWxlcycgYXMgc2JiO1xuQHVzZSAnLi4vY29tbW9uL3N0eWxlcy9zZWF0LXJlc2VydmF0aW9uLW1peGlucycgYXMgc2JiLXNyLW1peGlucztcbkB1c2UgJy4uL2NvbW1vbi9zdHlsZXMvc2VhdC1yZXNlcnZhdGlvbi1mdW5jdGlvbnMnIGFzIHNiYi1zci1mdW5jdGlvbnM7XG5cbi8vIERlcGVuZHMgb24gdGhlIHBsYWNlIHN0YXRlIGFuZCBjdXJyZW50IGV2ZW50IChob3Zlcnxmb2N1cyksIHRoZSBiYWNrZ3JvdW5kIGFuZCBmaWxsIGNvbG9ycyBvZiB0aGUgcGxhY2UsXG4vLyBiYWNrcmVzdCBvZiBwbGFjZSBhbmQgdGhlIHRleHQgY29sb3IgYXJlIGhhbmRsZWQgYnkgY29sb3JpemVQbGFjZSBmdW5jdGlvbi5cbkBtaXhpbiBjb2xvcml6ZVBsYWNlKCRzdGF0ZSwgJGV2ZW50KSB7XG4gIDo6cGFydChzdmctcGxhY2UpIHtcbiAgICBmaWxsOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS1iYWNrZ3JvdW5kLSN7JGV2ZW50fSk7XG4gIH1cblxuICA6OnBhcnQoc3ZnLWJhY2tyZXN0KSB7XG4gICAgZmlsbDogdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0jeyRzdGF0ZX0tYmFja3Jlc3QtYmFja2dyb3VuZC0jeyRldmVudH0pO1xuICB9XG5cbiAgLnNiYi1zci1wbGFjZS1jdHJsX190ZXh0IHtcbiAgICAvLyBkb250IHVzZSB0cmFuc3BhcmVudCBvciByZW1vdmUgYmFja2dyb3VuZCwgb3RoZXJ3aXNlIHRoZXJlIGFyZSBhMTF5IHZpb2xhdGlvbnMgcmVnYXJkaW5nXG4gICAgLy8gaW5zdWZmaWNpZW50IGNvbG9yIGNvbnRyYXN0XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0jeyRzdGF0ZX0tYmFja2dyb3VuZC0jeyRldmVudH0pO1xuICAgIGNvbG9yOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS10ZXh0KTtcbiAgfVxuXG4gIEBpZiAkc3RhdGUgIT0gJ3NlbGVjdGVkJyB7XG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgOjpwYXJ0KHN2Zy1wbGFjZSkge1xuICAgICAgICBmaWxsOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS1iYWNrZ3JvdW5kLWhpZ2gtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6OnBhcnQoc3ZnLWJhY2tyZXN0KSB7XG4gICAgICAgIGZpbGw6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtI3skc3RhdGV9LWJhY2tyZXN0LWhpZ2gtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6OnBhcnQoc3ZnLWljb24pIHtcbiAgICAgICAgZmlsbDogdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0jeyRzdGF0ZX0taWNvbi1oaWdoLWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOjpwYXJ0KHN2Zy1zZWF0bGluZSkge1xuICAgICAgICBzdHJva2U6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtI3skc3RhdGV9LWJhY2tyZXN0LWhpZ2gtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICAuc2JiLXNyLXBsYWNlLWN0cmxfX3RleHQge1xuICAgICAgICBmb3JjZWQtY29sb3ItYWRqdXN0OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoXG4gICAgICAgICAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS1iYWNrZ3JvdW5kLWhpZ2gtY29udHJhc3RcbiAgICAgICAgKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtI3skc3RhdGV9LXRleHQtaGlnaC1jb250cmFzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiRkaXNhYmxlZDogJy5zYmItcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0tZGlzYWJsZWQnO1xuXG46aG9zdCB7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlOiAxO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtd2lkdGg6IDE2O1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtaGVpZ2h0OiAxNjtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRvcDogMDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWxlZnQ6IDA7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1yb3RhdGlvbjogMDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtcm90YXRpb246IDA7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNpemU6IGNhbGMoXG4gICAgdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlLCAxKSAqIDAuNVxuICApO1xuXG4gIC8vIENvbG9yIGRlZmluaXRpb24gZm9yIHRleHRcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWRlZmF1bHQtdGV4dDogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItY29sb3ItYmxhY2spLFxuICAgIHZhcigtLXNiYi1jb2xvci13aGl0ZSlcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWhvdmVyLXRleHQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWlyb24pLFxuICAgIHZhcigtLXNiYi1jb2xvci1zaWx2ZXIpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mb2N1cy10ZXh0OiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSxcbiAgICB2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1hbGxvY2F0ZWQtdGV4dDogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItY29sb3Itc21va2UpLFxuICAgIHZhcigtLXNiYi1jb2xvci1tZXRhbClcbiAgKTtcblxuICAvLyBDb2xvciBiYWNrZ3JvdW5kIGRlZmluaXRpb24gZm9yIHBsYWNlIHdpdGggc3RhdGUgRlJFRVxuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrZ3JvdW5kLWRlZmF1bHQ6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTIpO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrZ3JvdW5kLWhvdmVyOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1jbG91ZCksXG4gICAgdmFyKC0tc2JiLWNvbG9yLW1pZG5pZ2h0KVxuICApO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrZ3JvdW5kLWZvY3VzOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1zaWx2ZXIpLFxuICAgIHZhcigtLXNiYi1jb2xvci1ibGFjaylcbiAgKTtcblxuICAvLyBDb2xvciBiYWNrZ3JvdW5kIGRlZmluaXRpb24gZm9yIGJhY2tyZXN0IHdpdGggc3RhdGUgRlJFRVxuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrcmVzdC1iYWNrZ3JvdW5kLWRlZmF1bHQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tyZXN0LWJhY2tncm91bmQtaG92ZXI6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tyZXN0LWJhY2tncm91bmQtZm9jdXM6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG5cbiAgLy8gQ29sb3IgYmFja2dyb3VuZCBkZWZpbml0aW9uIGZvciBwbGFjZSB3aXRoIHN0YXRlIFNFTEVDVEVEXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1zZWxlY3RlZC1iYWNrZ3JvdW5kLWRlZmF1bHQ6IHZhcigtLXNiYi1jb2xvci1wcmltYXJ5KTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tncm91bmQtaG92ZXI6IHZhcigtLXNiYi1jb2xvci1wcmltYXJ5MTI1KTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tncm91bmQtZm9jdXM6IHZhcigtLXNiYi1jb2xvci1wcmltYXJ5MTUwKTtcblxuICAvLyBDb2xvciBiYWNrZ3JvdW5kIGRlZmluaXRpb24gZm9yIGJhY2tyZXN0IHdpdGggc3RhdGUgU0VMRUNURURcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tyZXN0LWJhY2tncm91bmQtZGVmYXVsdDogdmFyKFxuICAgIC0tc2JiLWNvbG9yLXByaW1hcnkxNTBcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tyZXN0LWJhY2tncm91bmQtaG92ZXI6ICM3ZDAwMGY7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1zZWxlY3RlZC1iYWNrcmVzdC1iYWNrZ3JvdW5kLWZvY3VzOiAjNWEwMDBiO1xuXG4gIC8vIENvbG9yIGJhY2tncm91bmQgZGVmaW5pdGlvbiBmb3IgcGxhY2Ugd2l0aCBzdGF0ZSBBTExPQ0FURURcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC1iYWNrZ3JvdW5kLWRlZmF1bHQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLW1pbGspLFxuICAgIHZhcigtLXNiYi1jb2xvci1taWRuaWdodClcbiAgKTtcblxuICAvLyBDb2xvciBkZWZpbml0aW9ucyBmb3IgaGlnaCBjb250cmFzdCBtb2RlXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tyZXN0LWhpZ2gtY29udHJhc3Q6IENhbnZhc1RleHQ7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tncm91bmQtaGlnaC1jb250cmFzdDogQ2FudmFzO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS10ZXh0LWhpZ2gtY29udHJhc3Q6IEJ1dHRvblRleHQ7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWljb24taGlnaC1jb250cmFzdDogQ2FudmFzVGV4dDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC1iYWNrcmVzdC1oaWdoLWNvbnRyYXN0OiBHcmF5VGV4dDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC1iYWNrZ3JvdW5kLWhpZ2gtY29udHJhc3Q6IENhbnZhcztcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC10ZXh0LWhpZ2gtY29udHJhc3Q6IEdyYXlUZXh0O1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtYWxsb2NhdGVkLWljb24taGlnaC1jb250cmFzdDogR3JheVRleHQ7XG5cbiAgd2lkdGg6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtd2lkdGgpKTtcbiAgaGVpZ2h0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWhlaWdodCkpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRvcCkpO1xuICBpbnNldC1pbmxpbmUtc3RhcnQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtbGVmdCkpO1xuICBmb250LXdlaWdodDogMzAwO1xuICBjdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItcG9pbnRlcik7XG59XG5cbjpob3N0KDpob3Zlcikge1xuICAuc2JiLXNyLXBsYWNlLWN0cmwge1xuICAgICYtLXN0YXRlLWZyZWU6bm90KCN7JGRpc2FibGVkfSkge1xuICAgICAgQGluY2x1ZGUgY29sb3JpemVQbGFjZSgnZnJlZScsICdob3ZlcicpO1xuICAgIH1cblxuICAgICYtLXN0YXRlLXNlbGVjdGVkOm5vdCgjeyRkaXNhYmxlZH0pIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yaXplUGxhY2UoJ3NlbGVjdGVkJywgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbjpob3N0KDpmb2N1cy12aXNpYmxlKSB7XG4gIC5zYmItc3ItcGxhY2UtY3RybCB7XG4gICAgJi0tc3RhdGUtZnJlZTpub3QoI3skZGlzYWJsZWR9KSB7XG4gICAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdmcmVlJywgJ2ZvY3VzJyk7XG4gICAgfVxuICB9XG59XG5cbjpob3N0KDphY3RpdmUpIHtcbiAgLnNiYi1zci1wbGFjZS1jdHJsIHtcbiAgICAmLS1zdGF0ZS1zZWxlY3RlZDpub3QoI3skZGlzYWJsZWR9KSB7XG4gICAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdzZWxlY3RlZCcsICdmb2N1cycpO1xuICAgIH1cbiAgfVxufVxuXG4vLyByb3RhdGVzIHRoZSBET00tcGFydCBcInN2Zy1wbGFjZVwiIGJ5IDE4MCBkZWdyZWVzIGlmIHRoZSBob3N0IGlzIGluIFJUTCBtb2RlLlxuQGluY2x1ZGUgc2JiLXNyLW1peGlucy5yb3RhdGUtZG9tLXBhcnQoc3ZnLXBsYWNlKTtcblxuLnNiYi1zci1wbGFjZS1jdHJsIHtcbiAgJHJvb3Q6ICY7XG5cbiAgd2lkdGg6IG1heC1jb250ZW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0odmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNpemUpKTtcblxuICAmLS1zdGF0ZS1mcmVlIHtcbiAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdmcmVlJywgJ2RlZmF1bHQnKTtcbiAgfVxuXG4gICYtLXN0YXRlLXNlbGVjdGVkIHtcbiAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdzZWxlY3RlZCcsICdkZWZhdWx0Jyk7XG4gIH1cblxuICAmLS1zdGF0ZS1hbGxvY2F0ZWQsXG4gICYtLXN0YXRlLXJlc3RyaWN0ZWQge1xuICAgIEBpbmNsdWRlIGNvbG9yaXplUGxhY2UoJ2FsbG9jYXRlZCcsICdkZWZhdWx0Jyk7XG5cbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJl9fdGV4dCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldC1ibG9jay1zdGFydDogNTAlO1xuICAgIHRyYW5zbGF0ZTogLTUwJSAtNTAlO1xuICAgIHJvdGF0ZTogY2FsYyh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtcm90YXRpb24pICogMWRlZyk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXNiYi10eXBvLWZvbnQtZmFtaWx5KTtcblxuICAgIC8vIGRvbnQgdXNlIHNiYi5weC10by1yZW0gb3IgLS1zYmItdHlwby1zY2FsZS0wLTc1eDsgd2Ugd2FudCBcImVtXCIgaW4gdGhpcyBjYXNlIVxuICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xuXG4gICAgI3skcm9vdH0tLXN0YXRlLWZyZWUgJixcbiAgICAjeyRyb290fS0tc3RhdGUtYWxsb2NhdGVkICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgI3skcm9vdH0tLXR5cGUtYmljeWNsZSAmIHtcbiAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA2NSU7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUwJTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdHJhbnNmb3JtIG9yaWdpbiBwb2ludCBmb3IgYmljeWNsZSBwbGFjZXMgdGV4dCAobmVjZXNzYXJ5IGZvciByb3RhdGlvbiksXG4gICAgICAvLyBiZWNhdXNlIHRoZSBwb3NpdGlvbiBvZiBwbGFjZSBudW1iZXIgaXMgbm90IGNlbnRlcmVkIGluIHRoZSBwbGFjZSBhcmVhLlxuICAgICAgLy8gVGhlIHZhbHVlIDE2JSBpcyB0aGUgb3B0aW1hbCB2YWx1ZSBmb3IgdGhlIHJvdGF0aW9uIG9mZnNldCBvbiB0aGUgb3JpZ2luIHktYXhpcy5cbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAxNiU7XG5cbiAgICAgIC8vIHVzZSBhIHNtYWxsZXIgZm9udC1zaXplIHRvIGF2b2lkIGExMXkgdmlvbGF0aW9uXG4gICAgICBmb250LXNpemU6IDAuNjg3NWVtO1xuICAgIH1cblxuICAgIC8vIERlcGVuZGluZyBvbiB0aGUgcGxhY2Ugb3JpZW50YXRpb24sIG1pbm9yIHBvc2l0aW9uaW5nIGFkanVzdG1lbnRzIG1heSBuZWVkIHRvIGJlIG1hZGUgdG8gY2VudGVyIHRoZSB0ZXh0LFxuICAgIC8vIGJlY2F1c2Ugb2YgdGhlIHdpZHRoIG9mIHRoZSBTVkcgd2hpY2ggaXMgbm90IHNxdWFyZVxuICAgICN7JHJvb3R9LS1vcmllbnRhdGlvbi0wI3skcm9vdH0tLXR5cGUtc2VhdCAmIHtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogNDUlO1xuICAgIH1cblxuICAgICN7JHJvb3R9LS1vcmllbnRhdGlvbi05MCN7JHJvb3R9LS10eXBlLXNlYXQgJiB7XG4gICAgICBpbnNldC1ibG9jay1zdGFydDogNDYlO1xuICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XG4gICAgfVxuXG4gICAgI3skcm9vdH0tLW9yaWVudGF0aW9uLTE4MCN7JHJvb3R9LS10eXBlLXNlYXQgJiB7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDU1JTtcbiAgICB9XG5cbiAgICAjeyRyb290fS0tb3JpZW50YXRpb24tMjcwI3skcm9vdH0tLXR5cGUtc2VhdCAmIHtcbiAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA1MiU7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUyJTtcbiAgICB9XG4gIH1cbn1cblxuOmhvc3QoOmRpcihydGwpKSB7XG4gIC8vIEZvciBSVEwsIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSB0ZXh0IHBvc2l0aW9uIHRvIHRoZSByaWdodCBzaWRlXG4gIC5zYmItc3ItcGxhY2UtY3RybCB7XG4gICAgJi0tb3JpZW50YXRpb24tMCAuc2JiLXNyLXBsYWNlLWN0cmxfX3RleHQge1xuICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAzJTtcbiAgICB9XG5cbiAgICAmLS1vcmllbnRhdGlvbi05MCAuc2JiLXNyLXBsYWNlLWN0cmxfX3RleHQsXG4gICAgJi0tb3JpZW50YXRpb24tMTgwIC5zYmItc3ItcGxhY2UtY3RybF9fdGV4dCB7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwJTtcbiAgICB9XG5cbiAgICAmLS1vcmllbnRhdGlvbi0yNzAgLnNiYi1zci1wbGFjZS1jdHJsX190ZXh0IHtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogNSU7XG4gICAgfVxuXG4gICAgJi0tdHlwZS1iaWN5Y2xlIC5zYmItc3ItcGxhY2UtY3RybF9fdGV4dCB7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IC0xMCU7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBTYmJCdXR0b25CYXNlRWxlbWVudCB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL3N0eWxlcy5qcyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHN0eWxlTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvc3R5bGUtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi90cmFuc2xhdGlvbnMudHMnO1xuaW1wb3J0IHR5cGUgeyBQbGFjZVNlbGVjdGlvbiwgUGxhY2VTdGF0ZSwgUGxhY2VUeXBlLCBUcmF2ZWxEaXJlY3Rpb24gfSBmcm9tICcuLi9jb21tb24vdHlwZXMudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uR3JhcGhpY0VsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMvc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5zY3NzP2lubGluZSc7XG5cblNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50LmRlZmluZSgpO1xuXG50eXBlIFRyYXZlbERpcmVjdGlvbkkxOG5LZXkgPVxuICB8ICdUUkFWRUxfRElSRUNUSU9OX0lOX0RJUkVDVElPTidcbiAgfCAnVFJBVkVMX0RJUkVDVElPTl9JTl9PUFBPU0lURV9ESVJFQ1RJT04nXG4gIHwgJ1RSQVZFTF9ESVJFQ1RJT05fVFJBTlNWRVJTRUxZJztcblxuLyoqXG4gKiBPdXRwdXQgdGhlIGdyYXBoaWMgb2YgYSBzZWF0IG9yIGEgYmljeWNsZSBwbGFjZSBhcyBhIGNvbnRyb2wgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQgZXh0ZW5kcyBTYmJCdXR0b25CYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHNlbGVjdHBsYWNlOiAnc2VsZWN0cGxhY2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBwbGFjZVR5cGUgb2YgdGhlIHBsYWNlLCBlLmcuICdTRUFUJywgJ0JJQ1lDTEUnICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd0eXBlJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcGxhY2VUeXBlOiBQbGFjZVR5cGUgPSAnU0VBVCc7XG5cbiAgLyoqIHN0YXRlIG9mIHRoZSBwbGFjZSwgZS5nLiAnRlJFRScsICdTRUxFQ1RFRCcsICdCTE9DS0VEJyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc3RhdGUnLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzdGF0ZTogUGxhY2VTdGF0ZSA9ICdGUkVFJztcblxuICAvKiogZGlyZWN0aW9uIG9mIGEgd2hvbGUgdHJhaW4sIHVzZWQgdG8gY29tcHV0ZSBhbiBvcmllbnRhdGlvbiBvZiBhIHBsYWNlICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3RyYXZlbC1kaXJlY3Rpb24nIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB0cmF2ZWxEaXJlY3Rpb246IFRyYXZlbERpcmVjdGlvbiA9ICdOT05FJztcblxuICAvKiogcHJvcGVydHkgaWRzIG9mIHRoZSBwbGFjZSwgdG8gZGlzcGxheSBtb3JlIGluZm8gYWJvdXQgdGhlIHBsYWNlICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3Byb3BlcnR5SWRzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHByb3BlcnR5SWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBsYWJlbCBvZiB0aGUgcGxhY2UsIGUuZy4gJzFBJywgJzJCJyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGV4dCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIHRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBEZWNrIEluZGV4IFByb3AgdG8gaWRlbnRpZmllciB0aGUgcmlnaHQgcGxhY2UgdG8gZGVjayAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGVjay1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGVja0luZGV4OiBudW1iZXIgPSBudWxsITtcblxuICAvKiogQ29hY2ggSW5kZXggUHJvcCB0byBpZGVudGlmaWVyIHRoZSByaWdodCBwbGFjZSB0byBjb2FjaCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY29hY2gtaW5kZXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGNvYWNoSW5kZXg6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBQcmV2ZW50IGNsaWNrIHByb3AgcHJldmVudCBhbnkgcGxhY2UgYWN0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmV2ZW50LWNsaWNrJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcHJldmVudENsaWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNldCB0aGUgcGxhY2UgZm9jdXMgb3V0bGluZSBzdHlsZSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAna2V5Zm9jdXMnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBrZXlmb2N1czogc3RyaW5nID0gJ3VuZm9jdXMnO1xuXG4gIC8qKiBEaXNhYmxlIHRoZSBtb3VzZSBvdmVyIHRpdGxlIGluZm9ybWF0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCB1c2VEZWZhdWx0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzaG93VGl0bGVJbmZvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uYWxTY3JlZW5yZWFkZXJJbmZvOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMuX3NlbGVjdFBsYWNlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdrZXlmb2N1cycpKSB7XG4gICAgICBpZiAodGhpcy5rZXlmb2N1cyA9PT0gJ2ZvY3VzJykge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGl0bGUgd2FzIHNob3duIG9uY2UsIHdlIGNhbm5vdCB1bnNldCBpdCBjb21wbGV0ZWx5LCBidXQgdGhpc1xuICAgIC8vIGJlaGF2aW9yIHNob3VsZCBub3QgaGFwcGVuIHZlcnkgb2Z0ZW4gYXMgdGhlIHRpdGxlIHNob3VsZFxuICAgIC8vIG5vdCBzd2l0Y2ggZnJvbSBvbiB0byBvZmYgYW5kIG9uIGFnYWluXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2hvd1RpdGxlSW5mbycpKSB7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpdGxlSW5mbykge1xuICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgbmFtZTogc3RyaW5nID0gdGhpcy5fZ2V0UGxhY2VTdmcodGhpcy5wbGFjZVR5cGUsIHRoaXMuc3RhdGUpO1xuICAgIGNvbnN0IHR5cGU6IHN0cmluZyA9IHRoaXMudHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHN0YXRlOiBzdHJpbmcgPSB0aGlzLnN0YXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgdGV4dDogc3RyaW5nIHwgbnVsbCA9IHRoaXMudGV4dDtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC13aWR0aCcpO1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1oZWlnaHQnKTtcbiAgICBjb25zdCByb3RhdGlvbiA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1yb3RhdGlvbicpO1xuICAgIGNvbnN0IHRleHRSb3RhdGlvbiA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtcm90YXRpb24nLFxuICAgICk7XG4gICAgY29uc3QgaW52ZXJzZVJvdGF0aW9uUGxhY2VDaGVja0ljb24gPSBOdW1iZXIodGV4dFJvdGF0aW9uKSAtIE51bWJlcihyb3RhdGlvbik7XG4gICAgY29uc3QgZGlzYWJsZWRDbGFzcyA9IHRoaXMucHJldmVudENsaWNrID8gJ3NiYi1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLS1kaXNhYmxlZCcgOiBudWxsO1xuXG4gICAgLy8gb25seSBzZXQgdGl0bGUgdG8gdGhlIFNiYkJ1dHRvbkJhc2VFbGVtZW50IGlmIHJlcXVlc3RlZDsgb3RoZXJ3aXNlIHByb3ZpZGUgdGhlIHRpdGxlXG4gICAgLy8gaW5mb3JtYXRpb24gdG8gc2NyZWVuIHJlYWRlcnMgdmlhIGFuIGFkZGl0aW9uYWwgZWxlbWVudFxuICAgIGlmICh0aGlzLnNob3dUaXRsZUluZm8pIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uUGxhY2Uocm90YXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vcHRpb25hbFNjcmVlbnJlYWRlckluZm8gPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uUGxhY2Uocm90YXRpb24pO1xuICAgIH1cblxuICAgIHRoaXMudGFiSW5kZXggPSAtMTtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBwYXJ0PVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1wbGFjZS1jdHJsIHNiYi1zci1wbGFjZS1jdHJsLS1vcmllbnRhdGlvbi0ke3JvdGF0aW9ufSBzYmItc3ItcGxhY2UtY3RybC0tc3RhdGUtJHtzdGF0ZX0gc2JiLXNyLXBsYWNlLWN0cmwtLXR5cGUtJHt0eXBlfSAke2Rpc2FibGVkQ2xhc3N9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnOiB3aWR0aCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtaGVpZ2h0JzogaGVpZ2h0LFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1pbnZlcnNlLXJvdGF0aW9uJzogaW52ZXJzZVJvdGF0aW9uUGxhY2VDaGVja0ljb24sXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgLm5hbWU9JHtuYW1lfVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDxzcGFuICR7dGhpcy50ZXh0ID8/IG5vdGhpbmd9IGNsYXNzPVwic2JiLXNyLXBsYWNlLWN0cmxfX3RleHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID4ke3RleHR9PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgJHshdGhpcy5zaG93VGl0bGVJbmZvXG4gICAgICAgICAgPyBodG1sYDxzYmItc2NyZWVuLXJlYWRlci1vbmx5IGlkPVwiJHt0aGlzLmlkfVwiXG4gICAgICAgICAgICAgID4ke3RoaXMuX29wdGlvbmFsU2NyZWVucmVhZGVySW5mb308L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgID5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBsYWNlU3ZnKHR5cGU6IFBsYWNlVHlwZSwgc3RhdGU6IFBsYWNlU3RhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlIGFzIHN0cmluZztcbiAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0YXRlIGFzIHN0cmluZztcbiAgICByZXR1cm4gYFBMQUNFXyR7dHlwZVN0cmluZ31fJHtzdGF0ZVN0cmluZ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGl0bGVEZXNjcmlwdGlvblBsYWNlKHJvdGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gJ1BMQUNFX0NPTlRST0xfJyArIHRoaXMudHlwZSArICdfJyArIHRoaXMuc3RhdGU7XG4gICAgbGV0IGRlc2NyaXB0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbih0cmFuc2xhdGlvbktleSwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW3RoaXMudGV4dF0pO1xuXG4gICAgY29uc3QgcmVsYXRpdmVUcmF2ZWxEaXJlY3Rpb24gPSB0aGlzLl9nZXRSZWxhdGl2ZVRyYXZlbERpcmVjdGlvbihyb3RhdGlvbik7XG5cbiAgICBpZiAodGhpcy5wcm9wZXJ0eUlkcy5sZW5ndGggfHwgcmVsYXRpdmVUcmF2ZWxEaXJlY3Rpb24pIHtcbiAgICAgIGRlc2NyaXB0aW9uICs9XG4gICAgICAgICcuICcgKyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdQTEFDRV9QUk9QRVJUWScsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpLmNvbmNhdCgnOiAnKTtcblxuICAgICAgZGVzY3JpcHRpb24gKz0gW3JlbGF0aXZlVHJhdmVsRGlyZWN0aW9uLCAuLi50aGlzLnByb3BlcnR5SWRzXVxuICAgICAgICAubWFwKChwcm9wZXJ0eUlkKSA9PlxuICAgICAgICAgIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ1BMQUNFX1BST1BFUlRJRVMuJyArIHByb3BlcnR5SWQsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpLFxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVsYXRpdmVUcmF2ZWxEaXJlY3Rpb24oXG4gICAgcm90YXRpb25WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICApOiBUcmF2ZWxEaXJlY3Rpb25JMThuS2V5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy50cmF2ZWxEaXJlY3Rpb24gfHxcbiAgICAgIHRoaXMudHJhdmVsRGlyZWN0aW9uID09PSAnTk9ORScgfHxcbiAgICAgIHRoaXMucGxhY2VUeXBlICE9PSAnU0VBVCcgfHxcbiAgICAgICFyb3RhdGlvblZhbHVlXG4gICAgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCByb3RhdGlvbiA9IE51bWJlcihyb3RhdGlvblZhbHVlKTtcblxuICAgIGlmIChyb3RhdGlvbiA9PT0gOTAgfHwgcm90YXRpb24gPT09IDI3MCkge1xuICAgICAgcmV0dXJuICdUUkFWRUxfRElSRUNUSU9OX1RSQU5TVkVSU0VMWSc7XG4gICAgfVxuXG4gICAgY29uc3QgaW5EaXJlY3Rpb24gPVxuICAgICAgKHJvdGF0aW9uID09PSAwICYmIHRoaXMudHJhdmVsRGlyZWN0aW9uID09PSAnUklHSFQnKSB8fFxuICAgICAgKHJvdGF0aW9uID09PSAxODAgJiYgdGhpcy50cmF2ZWxEaXJlY3Rpb24gPT09ICdMRUZUJyk7XG5cbiAgICBpZiAoaW5EaXJlY3Rpb24pIHtcbiAgICAgIHJldHVybiAnVFJBVkVMX0RJUkVDVElPTl9JTl9ESVJFQ1RJT04nO1xuICAgIH0gZWxzZSBpZiAocm90YXRpb24gPT09IDAgfHwgcm90YXRpb24gPT09IDE4MCkge1xuICAgICAgcmV0dXJuICdUUkFWRUxfRElSRUNUSU9OX0lOX09QUE9TSVRFX0RJUkVDVElPTic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBJZiB0aGUgcGxhY2Ugc2VsZWN0YWJsZSwgd2UgZW1pdCB0aGUgcGxhY2VTZWxlY3Rpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGluZm9zIHRvIHRoZSBwbGFjZSBzdGF0ZSAqL1xuICBwcml2YXRlIF9zZWxlY3RQbGFjZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RhYmxlID0gKHRoaXMuc3RhdGUgPT09ICdGUkVFJyB8fCB0aGlzLnN0YXRlID09PSAnU0VMRUNURUQnKSAmJiAhdGhpcy5wcmV2ZW50Q2xpY2s7XG5cbiAgICBpZiAoc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgPT09ICdGUkVFJyA/ICdTRUxFQ1RFRCcgOiAnRlJFRSc7XG4gICAgICBjb25zdCBwbGFjZVNlbGVjdGlvbjogUGxhY2VTZWxlY3Rpb24gPSB7XG4gICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICBkZWNrSW5kZXg6IHRoaXMuZGVja0luZGV4LFxuICAgICAgICBjb2FjaEluZGV4OiB0aGlzLmNvYWNoSW5kZXgsXG4gICAgICAgIG51bWJlcjogdGhpcy50ZXh0LFxuICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgcGxhY2VUeXBlOiB0aGlzLnBsYWNlVHlwZSxcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogQHR5cGUge0N1c3RvbUV2ZW50PFBsYWNlU2VsZWN0aW9uPn1cbiAgICAgICAqIEVtaXRzIHdoZW4gYSBwbGFjZSB3YXMgc2VsZWN0ZWQgdmlhIHVzZXIgaW50ZXJhY3Rpb24gYW5kIHJldHVybnMgYVxuICAgICAgICogUGxhY2VTZWxlY3Rpb24gb2JqZWN0IHdpdGggbmVjZXNzYXJ5IHBsYWNlIGluZm9ybWF0aW9uLlxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDxQbGFjZVNlbGVjdGlvbj4oJ3NlbGVjdHBsYWNlJywge1xuICAgICAgICAgIGRldGFpbDogcGxhY2VTZWxlY3Rpb24sXG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbCc6IFNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUNxQkEsaUNBQWlDLFFBQVE7Ozs7SUFVNUIsK0NBQXFDO21CQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBQTlDLDhDQUE4QyxZQUFvQjs7OzRCQVE1RSxXQUFXLEVBQ1gsU0FBUyxFQUFFLFdBQVcsUUFBUSxDQUFDLENBQUE7d0JBSS9CLFdBQVcsRUFDWCxTQUFTO0lBQUUsV0FBVztJQUFTLFNBQVM7SUFBTSxDQUFDLENBQUE7a0NBSS9DLFNBQVMsRUFBRSxXQUFXLG9CQUFvQixDQUFDLENBQUE7OEJBSTNDLFNBQVM7SUFBRSxXQUFXO0lBQWUsTUFBTTtJQUFPLENBQUMsQ0FBQTt1QkFJbkQsV0FBVyxFQUNYLFNBQVMsRUFBRSxXQUFXLFFBQVEsQ0FBQyxDQUFBOzRCQUkvQixXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBYyxNQUFNO0lBQVEsQ0FBQyxDQUFBOzZCQUluRCxXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBZSxNQUFNO0lBQVEsQ0FBQyxDQUFBOytCQUlwRCxXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBaUIsTUFBTTtJQUFTLENBQUMsQ0FBQTsyQkFJdkQsV0FBVyxFQUNYLFNBQVMsRUFBRSxXQUFXLFlB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
429
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmNvbXBvbmVudC1DTTllZklkNy5qcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZWxlbWVudHMtZXhwZXJpbWVudGFsL3NlYXQtcmVzZXJ2YXRpb24vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wvc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL3N0eWxlcycgYXMgc2JiO1xuQHVzZSAnLi4vY29tbW9uL3N0eWxlcy9zZWF0LXJlc2VydmF0aW9uLW1peGlucycgYXMgc2JiLXNyLW1peGlucztcbkB1c2UgJy4uL2NvbW1vbi9zdHlsZXMvc2VhdC1yZXNlcnZhdGlvbi1mdW5jdGlvbnMnIGFzIHNiYi1zci1mdW5jdGlvbnM7XG5cbi8vIERlcGVuZHMgb24gdGhlIHBsYWNlIHN0YXRlIGFuZCBjdXJyZW50IGV2ZW50IChob3Zlcnxmb2N1cyksIHRoZSBiYWNrZ3JvdW5kIGFuZCBmaWxsIGNvbG9ycyBvZiB0aGUgcGxhY2UsXG4vLyBiYWNrcmVzdCBvZiBwbGFjZSBhbmQgdGhlIHRleHQgY29sb3IgYXJlIGhhbmRsZWQgYnkgY29sb3JpemVQbGFjZSBmdW5jdGlvbi5cbkBtaXhpbiBjb2xvcml6ZVBsYWNlKCRzdGF0ZSwgJGV2ZW50KSB7XG4gIDo6cGFydChzdmctcGxhY2UpIHtcbiAgICBmaWxsOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS1iYWNrZ3JvdW5kLSN7JGV2ZW50fSk7XG4gIH1cblxuICA6OnBhcnQoc3ZnLWJhY2tyZXN0KSB7XG4gICAgZmlsbDogdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0jeyRzdGF0ZX0tYmFja3Jlc3QtYmFja2dyb3VuZC0jeyRldmVudH0pO1xuICB9XG5cbiAgLnNiYi1zci1wbGFjZS1jdHJsX190ZXh0IHtcbiAgICAvLyBkb250IHVzZSB0cmFuc3BhcmVudCBvciByZW1vdmUgYmFja2dyb3VuZCwgb3RoZXJ3aXNlIHRoZXJlIGFyZSBhMTF5IHZpb2xhdGlvbnMgcmVnYXJkaW5nXG4gICAgLy8gaW5zdWZmaWNpZW50IGNvbG9yIGNvbnRyYXN0XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0jeyRzdGF0ZX0tYmFja2dyb3VuZC0jeyRldmVudH0pO1xuICAgIGNvbG9yOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS10ZXh0KTtcbiAgfVxuXG4gIEBpZiAkc3RhdGUgIT0gJ3NlbGVjdGVkJyB7XG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgOjpwYXJ0KHN2Zy1wbGFjZSkge1xuICAgICAgICBmaWxsOiB2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS1iYWNrZ3JvdW5kLWhpZ2gtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6OnBhcnQoc3ZnLWJhY2tyZXN0KSB7XG4gICAgICAgIGZpbGw6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtI3skc3RhdGV9LWJhY2tyZXN0LWhpZ2gtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICA6OnBhcnQoc3ZnLWljb24pIHtcbiAgICAgICAgZmlsbDogdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0jeyRzdGF0ZX0taWNvbi1oaWdoLWNvbnRyYXN0KTtcbiAgICAgIH1cblxuICAgICAgOjpwYXJ0KHN2Zy1zZWF0bGluZSkge1xuICAgICAgICBzdHJva2U6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtI3skc3RhdGV9LWJhY2tyZXN0LWhpZ2gtY29udHJhc3QpO1xuICAgICAgfVxuXG4gICAgICAuc2JiLXNyLXBsYWNlLWN0cmxfX3RleHQge1xuICAgICAgICBmb3JjZWQtY29sb3ItYWRqdXN0OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoXG4gICAgICAgICAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLSN7JHN0YXRlfS1iYWNrZ3JvdW5kLWhpZ2gtY29udHJhc3RcbiAgICAgICAgKTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtI3skc3RhdGV9LXRleHQtaGlnaC1jb250cmFzdCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbiRkaXNhYmxlZDogJy5zYmItcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC0tZGlzYWJsZWQnO1xuXG46aG9zdCB7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlOiAxO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtd2lkdGg6IDE2O1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtaGVpZ2h0OiAxNjtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRvcDogMDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWxlZnQ6IDA7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1yb3RhdGlvbjogMDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtcm90YXRpb246IDA7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNpemU6IGNhbGMoXG4gICAgdmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlLCAxKSAqIDAuNVxuICApO1xuXG4gIC8vIENvbG9yIGRlZmluaXRpb24gZm9yIHRleHRcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWRlZmF1bHQtdGV4dDogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItY29sb3ItYmxhY2spLFxuICAgIHZhcigtLXNiYi1jb2xvci13aGl0ZSlcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWhvdmVyLXRleHQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWlyb24pLFxuICAgIHZhcigtLXNiYi1jb2xvci1zaWx2ZXIpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mb2N1cy10ZXh0OiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1hbnRocmFjaXRlKSxcbiAgICB2YXIoLS1zYmItY29sb3ItZ3JhcGhpdGUpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1hbGxvY2F0ZWQtdGV4dDogbGlnaHQtZGFyayhcbiAgICB2YXIoLS1zYmItY29sb3Itc21va2UpLFxuICAgIHZhcigtLXNiYi1jb2xvci1tZXRhbClcbiAgKTtcblxuICAvLyBDb2xvciBiYWNrZ3JvdW5kIGRlZmluaXRpb24gZm9yIHBsYWNlIHdpdGggc3RhdGUgRlJFRVxuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrZ3JvdW5kLWRlZmF1bHQ6IHZhcigtLXNiYi1iYWNrZ3JvdW5kLWNvbG9yLTIpO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrZ3JvdW5kLWhvdmVyOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1jbG91ZCksXG4gICAgdmFyKC0tc2JiLWNvbG9yLW1pZG5pZ2h0KVxuICApO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrZ3JvdW5kLWZvY3VzOiBsaWdodC1kYXJrKFxuICAgIHZhcigtLXNiYi1jb2xvci1zaWx2ZXIpLFxuICAgIHZhcigtLXNiYi1jb2xvci1ibGFjaylcbiAgKTtcblxuICAvLyBDb2xvciBiYWNrZ3JvdW5kIGRlZmluaXRpb24gZm9yIGJhY2tyZXN0IHdpdGggc3RhdGUgRlJFRVxuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS1iYWNrcmVzdC1iYWNrZ3JvdW5kLWRlZmF1bHQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tyZXN0LWJhY2tncm91bmQtaG92ZXI6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tyZXN0LWJhY2tncm91bmQtZm9jdXM6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLWJsYWNrKSxcbiAgICB2YXIoLS1zYmItY29sb3Itd2hpdGUpXG4gICk7XG5cbiAgLy8gQ29sb3IgYmFja2dyb3VuZCBkZWZpbml0aW9uIGZvciBwbGFjZSB3aXRoIHN0YXRlIFNFTEVDVEVEXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1zZWxlY3RlZC1iYWNrZ3JvdW5kLWRlZmF1bHQ6IHZhcigtLXNiYi1jb2xvci1wcmltYXJ5KTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tncm91bmQtaG92ZXI6IHZhcigtLXNiYi1jb2xvci1wcmltYXJ5MTI1KTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tncm91bmQtZm9jdXM6IHZhcigtLXNiYi1jb2xvci1wcmltYXJ5MTUwKTtcblxuICAvLyBDb2xvciBiYWNrZ3JvdW5kIGRlZmluaXRpb24gZm9yIGJhY2tyZXN0IHdpdGggc3RhdGUgU0VMRUNURURcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tyZXN0LWJhY2tncm91bmQtZGVmYXVsdDogdmFyKFxuICAgIC0tc2JiLWNvbG9yLXByaW1hcnkxNTBcbiAgKTtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXNlbGVjdGVkLWJhY2tyZXN0LWJhY2tncm91bmQtaG92ZXI6ICM3ZDAwMGY7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1zZWxlY3RlZC1iYWNrcmVzdC1iYWNrZ3JvdW5kLWZvY3VzOiAjNWEwMDBiO1xuXG4gIC8vIENvbG9yIGJhY2tncm91bmQgZGVmaW5pdGlvbiBmb3IgcGxhY2Ugd2l0aCBzdGF0ZSBBTExPQ0FURURcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC1iYWNrZ3JvdW5kLWRlZmF1bHQ6IGxpZ2h0LWRhcmsoXG4gICAgdmFyKC0tc2JiLWNvbG9yLW1pbGspLFxuICAgIHZhcigtLXNiYi1jb2xvci1taWRuaWdodClcbiAgKTtcblxuICAvLyBDb2xvciBkZWZpbml0aW9ucyBmb3IgaGlnaCBjb250cmFzdCBtb2RlXG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tyZXN0LWhpZ2gtY29udHJhc3Q6IENhbnZhc1RleHQ7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWJhY2tncm91bmQtaGlnaC1jb250cmFzdDogQ2FudmFzO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtZnJlZS10ZXh0LWhpZ2gtY29udHJhc3Q6IEJ1dHRvblRleHQ7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1mcmVlLWljb24taGlnaC1jb250cmFzdDogQ2FudmFzVGV4dDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC1iYWNrcmVzdC1oaWdoLWNvbnRyYXN0OiBHcmF5VGV4dDtcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC1iYWNrZ3JvdW5kLWhpZ2gtY29udHJhc3Q6IENhbnZhcztcbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWFsbG9jYXRlZC10ZXh0LWhpZ2gtY29udHJhc3Q6IEdyYXlUZXh0O1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtYWxsb2NhdGVkLWljb24taGlnaC1jb250cmFzdDogR3JheVRleHQ7XG5cbiAgd2lkdGg6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtd2lkdGgpKTtcbiAgaGVpZ2h0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLWhlaWdodCkpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGluc2V0LWJsb2NrLXN0YXJ0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRvcCkpO1xuICBpbnNldC1pbmxpbmUtc3RhcnQ6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtbGVmdCkpO1xuICBmb250LXdlaWdodDogMzAwO1xuICBjdXJzb3I6IHZhcigtLXNiYi1jdXJzb3ItcG9pbnRlcik7XG59XG5cbjpob3N0KDpob3Zlcikge1xuICAuc2JiLXNyLXBsYWNlLWN0cmwge1xuICAgICYtLXN0YXRlLWZyZWU6bm90KCN7JGRpc2FibGVkfSkge1xuICAgICAgQGluY2x1ZGUgY29sb3JpemVQbGFjZSgnZnJlZScsICdob3ZlcicpO1xuICAgIH1cblxuICAgICYtLXN0YXRlLXNlbGVjdGVkOm5vdCgjeyRkaXNhYmxlZH0pIHtcbiAgICAgIEBpbmNsdWRlIGNvbG9yaXplUGxhY2UoJ3NlbGVjdGVkJywgJ2hvdmVyJyk7XG4gICAgfVxuICB9XG59XG5cbjpob3N0KDpmb2N1cy12aXNpYmxlKSB7XG4gIC5zYmItc3ItcGxhY2UtY3RybCB7XG4gICAgJi0tc3RhdGUtZnJlZTpub3QoI3skZGlzYWJsZWR9KSB7XG4gICAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdmcmVlJywgJ2ZvY3VzJyk7XG4gICAgfVxuICB9XG59XG5cbjpob3N0KDphY3RpdmUpIHtcbiAgLnNiYi1zci1wbGFjZS1jdHJsIHtcbiAgICAmLS1zdGF0ZS1zZWxlY3RlZDpub3QoI3skZGlzYWJsZWR9KSB7XG4gICAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdzZWxlY3RlZCcsICdmb2N1cycpO1xuICAgIH1cbiAgfVxufVxuXG4vLyByb3RhdGVzIHRoZSBET00tcGFydCBcInN2Zy1wbGFjZVwiIGJ5IDE4MCBkZWdyZWVzIGlmIHRoZSBob3N0IGlzIGluIFJUTCBtb2RlLlxuQGluY2x1ZGUgc2JiLXNyLW1peGlucy5yb3RhdGUtZG9tLXBhcnQoc3ZnLXBsYWNlKTtcblxuLnNiYi1zci1wbGFjZS1jdHJsIHtcbiAgJHJvb3Q6ICY7XG5cbiAgd2lkdGg6IG1heC1jb250ZW50O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0odmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNpemUpKTtcblxuICAmLS1zdGF0ZS1mcmVlIHtcbiAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdmcmVlJywgJ2RlZmF1bHQnKTtcbiAgfVxuXG4gICYtLXN0YXRlLXNlbGVjdGVkIHtcbiAgICBAaW5jbHVkZSBjb2xvcml6ZVBsYWNlKCdzZWxlY3RlZCcsICdkZWZhdWx0Jyk7XG4gIH1cblxuICAmLS1zdGF0ZS1hbGxvY2F0ZWQsXG4gICYtLXN0YXRlLXJlc3RyaWN0ZWQge1xuICAgIEBpbmNsdWRlIGNvbG9yaXplUGxhY2UoJ2FsbG9jYXRlZCcsICdkZWZhdWx0Jyk7XG5cbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJl9fdGV4dCB7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBpbnNldC1ibG9jay1zdGFydDogNTAlO1xuICAgIHRyYW5zbGF0ZTogLTUwJSAtNTAlO1xuICAgIHJvdGF0ZTogY2FsYyh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtcm90YXRpb24pICogMWRlZyk7XG4gICAgZm9udC1mYW1pbHk6IHZhcigtLXNiYi10eXBvLWZvbnQtZmFtaWx5KTtcblxuICAgIC8vIGRvbnQgdXNlIHNiYi5weC10by1yZW0gb3IgLS1zYmItdHlwby1zY2FsZS0wLTc1eDsgd2Ugd2FudCBcImVtXCIgaW4gdGhpcyBjYXNlIVxuICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xuXG4gICAgI3skcm9vdH0tLXN0YXRlLWZyZWUgJixcbiAgICAjeyRyb290fS0tc3RhdGUtYWxsb2NhdGVkICYge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuXG4gICAgI3skcm9vdH0tLXR5cGUtYmljeWNsZSAmIHtcbiAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA2NSU7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUwJTtcblxuICAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdHJhbnNmb3JtIG9yaWdpbiBwb2ludCBmb3IgYmljeWNsZSBwbGFjZXMgdGV4dCAobmVjZXNzYXJ5IGZvciByb3RhdGlvbiksXG4gICAgICAvLyBiZWNhdXNlIHRoZSBwb3NpdGlvbiBvZiBwbGFjZSBudW1iZXIgaXMgbm90IGNlbnRlcmVkIGluIHRoZSBwbGFjZSBhcmVhLlxuICAgICAgLy8gVGhlIHZhbHVlIDE2JSBpcyB0aGUgb3B0aW1hbCB2YWx1ZSBmb3IgdGhlIHJvdGF0aW9uIG9mZnNldCBvbiB0aGUgb3JpZ2luIHktYXhpcy5cbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciAxNiU7XG5cbiAgICAgIC8vIHVzZSBhIHNtYWxsZXIgZm9udC1zaXplIHRvIGF2b2lkIGExMXkgdmlvbGF0aW9uXG4gICAgICBmb250LXNpemU6IDAuNjg3NWVtO1xuICAgIH1cblxuICAgIC8vIERlcGVuZGluZyBvbiB0aGUgcGxhY2Ugb3JpZW50YXRpb24sIG1pbm9yIHBvc2l0aW9uaW5nIGFkanVzdG1lbnRzIG1heSBuZWVkIHRvIGJlIG1hZGUgdG8gY2VudGVyIHRoZSB0ZXh0LFxuICAgIC8vIGJlY2F1c2Ugb2YgdGhlIHdpZHRoIG9mIHRoZSBTVkcgd2hpY2ggaXMgbm90IHNxdWFyZVxuICAgICN7JHJvb3R9LS1vcmllbnRhdGlvbi0wI3skcm9vdH0tLXR5cGUtc2VhdCAmIHtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogNDUlO1xuICAgIH1cblxuICAgICN7JHJvb3R9LS1vcmllbnRhdGlvbi05MCN7JHJvb3R9LS10eXBlLXNlYXQgJiB7XG4gICAgICBpbnNldC1ibG9jay1zdGFydDogNDYlO1xuICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiA1MCU7XG4gICAgfVxuXG4gICAgI3skcm9vdH0tLW9yaWVudGF0aW9uLTE4MCN7JHJvb3R9LS10eXBlLXNlYXQgJiB7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDU1JTtcbiAgICB9XG5cbiAgICAjeyRyb290fS0tb3JpZW50YXRpb24tMjcwI3skcm9vdH0tLXR5cGUtc2VhdCAmIHtcbiAgICAgIGluc2V0LWJsb2NrLXN0YXJ0OiA1MiU7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDUyJTtcbiAgICB9XG4gIH1cbn1cblxuOmhvc3QoOmRpcihydGwpKSB7XG4gIC8vIEZvciBSVEwsIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSB0ZXh0IHBvc2l0aW9uIHRvIHRoZSByaWdodCBzaWRlXG4gIC5zYmItc3ItcGxhY2UtY3RybCB7XG4gICAgJi0tb3JpZW50YXRpb24tMCAuc2JiLXNyLXBsYWNlLWN0cmxfX3RleHQge1xuICAgICAgaW5zZXQtaW5saW5lLXN0YXJ0OiAzJTtcbiAgICB9XG5cbiAgICAmLS1vcmllbnRhdGlvbi05MCAuc2JiLXNyLXBsYWNlLWN0cmxfX3RleHQsXG4gICAgJi0tb3JpZW50YXRpb24tMTgwIC5zYmItc3ItcGxhY2UtY3RybF9fdGV4dCB7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IDEwJTtcbiAgICB9XG5cbiAgICAmLS1vcmllbnRhdGlvbi0yNzAgLnNiYi1zci1wbGFjZS1jdHJsX190ZXh0IHtcbiAgICAgIGluc2V0LWlubGluZS1zdGFydDogNSU7XG4gICAgfVxuXG4gICAgJi0tdHlwZS1iaWN5Y2xlIC5zYmItc3ItcGxhY2UtY3RybF9fdGV4dCB7XG4gICAgICBpbnNldC1pbmxpbmUtc3RhcnQ6IC0xMCU7XG4gICAgfVxuICB9XG59XG4iLCJpbXBvcnQgeyBTYmJCdXR0b25CYXNlRWxlbWVudCB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvYmFzZS1lbGVtZW50cy5qcyc7XG5pbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGZvcmNlVHlwZSB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvZGVjb3JhdG9ycy5qcyc7XG5pbXBvcnQgeyBib3hTaXppbmdTdHlsZXMgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL3N0eWxlcy5qcyc7XG5pbXBvcnQge1xuICB0eXBlIENTU1Jlc3VsdEdyb3VwLFxuICBodG1sLFxuICBub3RoaW5nLFxuICB0eXBlIFRlbXBsYXRlUmVzdWx0LFxuICB0eXBlIFByb3BlcnR5VmFsdWVzLFxuICB1bnNhZmVDU1MsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xpdC9kZWNvcmF0b3JzLmpzJztcbmltcG9ydCB7IHN0eWxlTWFwIH0gZnJvbSAnbGl0L2RpcmVjdGl2ZXMvc3R5bGUtbWFwLmpzJztcblxuaW1wb3J0IHsgZ2V0STE4blNlYXRSZXNlcnZhdGlvbiB9IGZyb20gJy4uL2NvbW1vbi90cmFuc2xhdGlvbnMudHMnO1xuaW1wb3J0IHR5cGUgeyBQbGFjZVNlbGVjdGlvbiwgUGxhY2VTdGF0ZSwgUGxhY2VUeXBlLCBUcmF2ZWxEaXJlY3Rpb24gfSBmcm9tICcuLi9jb21tb24vdHlwZXMudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uR3JhcGhpY0VsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMvc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCBzdHlsZSBmcm9tICcuL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5zY3NzP2lubGluZSc7XG5cblNiYlNlYXRSZXNlcnZhdGlvbkdyYXBoaWNFbGVtZW50LmRlZmluZSgpO1xuXG50eXBlIFRyYXZlbERpcmVjdGlvbkkxOG5LZXkgPVxuICB8ICdUUkFWRUxfRElSRUNUSU9OX0lOX0RJUkVDVElPTidcbiAgfCAnVFJBVkVMX0RJUkVDVElPTl9JTl9PUFBPU0lURV9ESVJFQ1RJT04nXG4gIHwgJ1RSQVZFTF9ESVJFQ1RJT05fVFJBTlNWRVJTRUxZJztcblxuLyoqXG4gKiBPdXRwdXQgdGhlIGdyYXBoaWMgb2YgYSBzZWF0IG9yIGEgYmljeWNsZSBwbGFjZSBhcyBhIGNvbnRyb2wgZWxlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQgZXh0ZW5kcyBTYmJCdXR0b25CYXNlRWxlbWVudCB7XG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgcmVhZG9ubHkgZWxlbWVudE5hbWU6IHN0cmluZyA9ICdzYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgZXZlbnRzID0ge1xuICAgIHNlbGVjdHBsYWNlOiAnc2VsZWN0cGxhY2UnLFxuICB9IGFzIGNvbnN0O1xuXG4gIC8qKiBwbGFjZVR5cGUgb2YgdGhlIHBsYWNlLCBlLmcuICdTRUFUJywgJ0JJQ1lDTEUnICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICd0eXBlJyB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcGxhY2VUeXBlOiBQbGFjZVR5cGUgPSAnU0VBVCc7XG5cbiAgLyoqIHN0YXRlIG9mIHRoZSBwbGFjZSwgZS5nLiAnRlJFRScsICdTRUxFQ1RFRCcsICdCTE9DS0VEJyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnc3RhdGUnLCByZWZsZWN0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzdGF0ZTogUGxhY2VTdGF0ZSA9ICdGUkVFJztcblxuICAvKiogZGlyZWN0aW9uIG9mIGEgd2hvbGUgdHJhaW4sIHVzZWQgdG8gY29tcHV0ZSBhbiBvcmllbnRhdGlvbiBvZiBhIHBsYWNlICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3RyYXZlbC1kaXJlY3Rpb24nIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciB0cmF2ZWxEaXJlY3Rpb246IFRyYXZlbERpcmVjdGlvbiA9ICdOT05FJztcblxuICAvKiogcHJvcGVydHkgaWRzIG9mIHRoZSBwbGFjZSwgdG8gZGlzcGxheSBtb3JlIGluZm8gYWJvdXQgdGhlIHBsYWNlICovXG4gIEBwcm9wZXJ0eSh7IGF0dHJpYnV0ZTogJ3Byb3BlcnR5SWRzJywgdHlwZTogQXJyYXkgfSlcbiAgcHVibGljIGFjY2Vzc29yIHByb3BlcnR5SWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBsYWJlbCBvZiB0aGUgcGxhY2UsIGUuZy4gJzFBJywgJzJCJyAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAndGV4dCcgfSlcbiAgcHVibGljIGFjY2Vzc29yIHRleHQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBEZWNrIEluZGV4IFByb3AgdG8gaWRlbnRpZmllciB0aGUgcmlnaHQgcGxhY2UgdG8gZGVjayAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnZGVjay1pbmRleCcsIHR5cGU6IE51bWJlciB9KVxuICBwdWJsaWMgYWNjZXNzb3IgZGVja0luZGV4OiBudW1iZXIgPSBudWxsITtcblxuICAvKiogQ29hY2ggSW5kZXggUHJvcCB0byBpZGVudGlmaWVyIHRoZSByaWdodCBwbGFjZSB0byBjb2FjaCAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAnY29hY2gtaW5kZXgnLCB0eXBlOiBOdW1iZXIgfSlcbiAgcHVibGljIGFjY2Vzc29yIGNvYWNoSW5kZXg6IG51bWJlciA9IG51bGwhO1xuXG4gIC8qKiBQcmV2ZW50IGNsaWNrIHByb3AgcHJldmVudCBhbnkgcGxhY2UgYWN0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyBhdHRyaWJ1dGU6ICdwcmV2ZW50LWNsaWNrJywgdHlwZTogQm9vbGVhbiB9KVxuICBwdWJsaWMgYWNjZXNzb3IgcHJldmVudENsaWNrOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFNldCB0aGUgcGxhY2UgZm9jdXMgb3V0bGluZSBzdHlsZSAqL1xuICBAZm9yY2VUeXBlKClcbiAgQHByb3BlcnR5KHsgYXR0cmlidXRlOiAna2V5Zm9jdXMnIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBrZXlmb2N1czogc3RyaW5nID0gJ3VuZm9jdXMnO1xuXG4gIC8qKiBEaXNhYmxlIHRoZSBtb3VzZSBvdmVyIHRpdGxlIGluZm9ybWF0aW9uICovXG4gIEBmb3JjZVR5cGUoKVxuICBAcHJvcGVydHkoeyB0eXBlOiBCb29sZWFuLCB1c2VEZWZhdWx0OiB0cnVlIH0pXG4gIHB1YmxpYyBhY2Nlc3NvciBzaG93VGl0bGVJbmZvOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfb3B0aW9uYWxTY3JlZW5yZWFkZXJJbmZvOiBzdHJpbmcgPSAnJztcblxuICBwcml2YXRlIF9sYW5ndWFnZSA9IG5ldyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIodGhpcyk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHRoaXMuX3NlbGVjdFBsYWNlKCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHdpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIud2lsbFVwZGF0ZShjaGFuZ2VkUHJvcGVydGllcyk7XG5cbiAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMuaGFzKCdrZXlmb2N1cycpKSB7XG4gICAgICBpZiAodGhpcy5rZXlmb2N1cyA9PT0gJ2ZvY3VzJykge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gaWYgdGl0bGUgd2FzIHNob3duIG9uY2UsIHdlIGNhbm5vdCB1bnNldCBpdCBjb21wbGV0ZWx5LCBidXQgdGhpc1xuICAgIC8vIGJlaGF2aW9yIHNob3VsZCBub3QgaGFwcGVuIHZlcnkgb2Z0ZW4gYXMgdGhlIHRpdGxlIHNob3VsZFxuICAgIC8vIG5vdCBzd2l0Y2ggZnJvbSBvbiB0byBvZmYgYW5kIG9uIGFnYWluXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnc2hvd1RpdGxlSW5mbycpKSB7XG4gICAgICBpZiAoIXRoaXMuc2hvd1RpdGxlSW5mbykge1xuICAgICAgICB0aGlzLnRpdGxlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG92ZXJyaWRlIHJlbmRlcigpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgbmFtZTogc3RyaW5nID0gdGhpcy5fZ2V0UGxhY2VTdmcodGhpcy5wbGFjZVR5cGUsIHRoaXMuc3RhdGUpO1xuICAgIGNvbnN0IHR5cGU6IHN0cmluZyA9IHRoaXMudHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IHN0YXRlOiBzdHJpbmcgPSB0aGlzLnN0YXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgdGV4dDogc3RyaW5nIHwgbnVsbCA9IHRoaXMudGV4dDtcbiAgICBjb25zdCB3aWR0aCA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC13aWR0aCcpO1xuICAgIGNvbnN0IGhlaWdodCA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1oZWlnaHQnKTtcbiAgICBjb25zdCByb3RhdGlvbiA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1yb3RhdGlvbicpO1xuICAgIGNvbnN0IHRleHRSb3RhdGlvbiA9IHRoaXMuc3R5bGU/LmdldFByb3BlcnR5VmFsdWUoXG4gICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXRleHQtcm90YXRpb24nLFxuICAgICk7XG4gICAgY29uc3QgaW52ZXJzZVJvdGF0aW9uUGxhY2VDaGVja0ljb24gPSBOdW1iZXIodGV4dFJvdGF0aW9uKSAtIE51bWJlcihyb3RhdGlvbik7XG4gICAgY29uc3QgZGlzYWJsZWRDbGFzcyA9IHRoaXMucHJldmVudENsaWNrID8gJ3NiYi1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLS1kaXNhYmxlZCcgOiBudWxsO1xuXG4gICAgLy8gb25seSBzZXQgdGl0bGUgdG8gdGhlIFNiYkJ1dHRvbkJhc2VFbGVtZW50IGlmIHJlcXVlc3RlZDsgb3RoZXJ3aXNlIHByb3ZpZGUgdGhlIHRpdGxlXG4gICAgLy8gaW5mb3JtYXRpb24gdG8gc2NyZWVuIHJlYWRlcnMgdmlhIGFuIGFkZGl0aW9uYWwgZWxlbWVudFxuICAgIGlmICh0aGlzLnNob3dUaXRsZUluZm8pIHtcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uUGxhY2Uocm90YXRpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vcHRpb25hbFNjcmVlbnJlYWRlckluZm8gPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uUGxhY2Uocm90YXRpb24pO1xuICAgIH1cblxuICAgIHRoaXMudGFiSW5kZXggPSAtMTtcblxuICAgIHJldHVybiBodG1sYFxuICAgICAgPGRpdlxuICAgICAgICBwYXJ0PVwic2JiLXNyLXBsYWNlLXBhcnRcIlxuICAgICAgICBjbGFzcz1cInNiYi1zci1wbGFjZS1jdHJsIHNiYi1zci1wbGFjZS1jdHJsLS1vcmllbnRhdGlvbi0ke3JvdGF0aW9ufSBzYmItc3ItcGxhY2UtY3RybC0tc3RhdGUtJHtzdGF0ZX0gc2JiLXNyLXBsYWNlLWN0cmwtLXR5cGUtJHt0eXBlfSAke2Rpc2FibGVkQ2xhc3N9XCJcbiAgICAgID5cbiAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnOiB3aWR0aCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtaGVpZ2h0JzogaGVpZ2h0LFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1pbnZlcnNlLXJvdGF0aW9uJzogaW52ZXJzZVJvdGF0aW9uUGxhY2VDaGVja0ljb24sXG4gICAgICAgICAgfSl9XG4gICAgICAgICAgLm5hbWU9JHtuYW1lfVxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+XG4gICAgICAgIDxzcGFuICR7dGhpcy50ZXh0ID8/IG5vdGhpbmd9IGNsYXNzPVwic2JiLXNyLXBsYWNlLWN0cmxfX3RleHRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgID4ke3RleHR9PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgJHshdGhpcy5zaG93VGl0bGVJbmZvXG4gICAgICAgICAgPyBodG1sYDxzYmItc2NyZWVuLXJlYWRlci1vbmx5IGlkPVwiJHt0aGlzLmlkfVwiXG4gICAgICAgICAgICAgID4ke3RoaXMuX29wdGlvbmFsU2NyZWVucmVhZGVySW5mb308L3NiYi1zY3JlZW4tcmVhZGVyLW9ubHlcbiAgICAgICAgICAgID5gXG4gICAgICAgICAgOiBub3RoaW5nfVxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBsYWNlU3ZnKHR5cGU6IFBsYWNlVHlwZSwgc3RhdGU6IFBsYWNlU3RhdGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlIGFzIHN0cmluZztcbiAgICBjb25zdCBzdGF0ZVN0cmluZyA9IHN0YXRlIGFzIHN0cmluZztcbiAgICByZXR1cm4gYFBMQUNFXyR7dHlwZVN0cmluZ31fJHtzdGF0ZVN0cmluZ31gO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VGl0bGVEZXNjcmlwdGlvblBsYWNlKHJvdGF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uS2V5ID0gJ1BMQUNFX0NPTlRST0xfJyArIHRoaXMudHlwZSArICdfJyArIHRoaXMuc3RhdGU7XG4gICAgbGV0IGRlc2NyaXB0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbih0cmFuc2xhdGlvbktleSwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCwgW3RoaXMudGV4dF0pO1xuXG4gICAgY29uc3QgcmVsYXRpdmVUcmF2ZWxEaXJlY3Rpb24gPSB0aGlzLl9nZXRSZWxhdGl2ZVRyYXZlbERpcmVjdGlvbihyb3RhdGlvbik7XG5cbiAgICBpZiAodGhpcy5wcm9wZXJ0eUlkcy5sZW5ndGggfHwgcmVsYXRpdmVUcmF2ZWxEaXJlY3Rpb24pIHtcbiAgICAgIGRlc2NyaXB0aW9uICs9XG4gICAgICAgICcuICcgKyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdQTEFDRV9QUk9QRVJUWScsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpLmNvbmNhdCgnOiAnKTtcblxuICAgICAgZGVzY3JpcHRpb24gKz0gW3JlbGF0aXZlVHJhdmVsRGlyZWN0aW9uLCAuLi50aGlzLnByb3BlcnR5SWRzXVxuICAgICAgICAubWFwKChwcm9wZXJ0eUlkKSA9PlxuICAgICAgICAgIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ1BMQUNFX1BST1BFUlRJRVMuJyArIHByb3BlcnR5SWQsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpLFxuICAgICAgICApXG4gICAgICAgIC5maWx0ZXIoKHZhbHVlKSA9PiB2YWx1ZSlcbiAgICAgICAgLmpvaW4oJywgJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVsYXRpdmVUcmF2ZWxEaXJlY3Rpb24oXG4gICAgcm90YXRpb25WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICApOiBUcmF2ZWxEaXJlY3Rpb25JMThuS2V5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy50cmF2ZWxEaXJlY3Rpb24gfHxcbiAgICAgIHRoaXMudHJhdmVsRGlyZWN0aW9uID09PSAnTk9ORScgfHxcbiAgICAgIHRoaXMucGxhY2VUeXBlICE9PSAnU0VBVCcgfHxcbiAgICAgICFyb3RhdGlvblZhbHVlXG4gICAgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBjb25zdCByb3RhdGlvbiA9IE51bWJlcihyb3RhdGlvblZhbHVlKTtcblxuICAgIGlmIChyb3RhdGlvbiA9PT0gOTAgfHwgcm90YXRpb24gPT09IDI3MCkge1xuICAgICAgcmV0dXJuICdUUkFWRUxfRElSRUNUSU9OX1RSQU5TVkVSU0VMWSc7XG4gICAgfVxuXG4gICAgY29uc3QgaW5EaXJlY3Rpb24gPVxuICAgICAgKHJvdGF0aW9uID09PSAwICYmIHRoaXMudHJhdmVsRGlyZWN0aW9uID09PSAnUklHSFQnKSB8fFxuICAgICAgKHJvdGF0aW9uID09PSAxODAgJiYgdGhpcy50cmF2ZWxEaXJlY3Rpb24gPT09ICdMRUZUJyk7XG5cbiAgICBpZiAoaW5EaXJlY3Rpb24pIHtcbiAgICAgIHJldHVybiAnVFJBVkVMX0RJUkVDVElPTl9JTl9ESVJFQ1RJT04nO1xuICAgIH0gZWxzZSBpZiAocm90YXRpb24gPT09IDAgfHwgcm90YXRpb24gPT09IDE4MCkge1xuICAgICAgcmV0dXJuICdUUkFWRUxfRElSRUNUSU9OX0lOX09QUE9TSVRFX0RJUkVDVElPTic7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBJZiB0aGUgcGxhY2Ugc2VsZWN0YWJsZSwgd2UgZW1pdCB0aGUgcGxhY2VTZWxlY3Rpb24gb2JqZWN0IHdoaWNoIGNvbnRhaW5zIGluZm9zIHRvIHRoZSBwbGFjZSBzdGF0ZSAqL1xuICBwcml2YXRlIF9zZWxlY3RQbGFjZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RhYmxlID0gKHRoaXMuc3RhdGUgPT09ICdGUkVFJyB8fCB0aGlzLnN0YXRlID09PSAnU0VMRUNURUQnKSAmJiAhdGhpcy5wcmV2ZW50Q2xpY2s7XG5cbiAgICBpZiAoc2VsZWN0YWJsZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMuc3RhdGUgPT09ICdGUkVFJyA/ICdTRUxFQ1RFRCcgOiAnRlJFRSc7XG4gICAgICBjb25zdCBwbGFjZVNlbGVjdGlvbjogUGxhY2VTZWxlY3Rpb24gPSB7XG4gICAgICAgIGlkOiB0aGlzLmlkLFxuICAgICAgICBkZWNrSW5kZXg6IHRoaXMuZGVja0luZGV4LFxuICAgICAgICBjb2FjaEluZGV4OiB0aGlzLmNvYWNoSW5kZXgsXG4gICAgICAgIG51bWJlcjogdGhpcy50ZXh0LFxuICAgICAgICBzdGF0ZTogdGhpcy5zdGF0ZSxcbiAgICAgICAgcGxhY2VUeXBlOiB0aGlzLnBsYWNlVHlwZSxcbiAgICAgIH07XG5cbiAgICAgIC8qKlxuICAgICAgICogQHR5cGUge0N1c3RvbUV2ZW50PFBsYWNlU2VsZWN0aW9uPn1cbiAgICAgICAqIEVtaXRzIHdoZW4gYSBwbGFjZSB3YXMgc2VsZWN0ZWQgdmlhIHVzZXIgaW50ZXJhY3Rpb24gYW5kIHJldHVybnMgYVxuICAgICAgICogUGxhY2VTZWxlY3Rpb24gb2JqZWN0IHdpdGggbmVjZXNzYXJ5IHBsYWNlIGluZm9ybWF0aW9uLlxuICAgICAgICovXG4gICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoXG4gICAgICAgIG5ldyBDdXN0b21FdmVudDxQbGFjZVNlbGVjdGlvbj4oJ3NlbGVjdHBsYWNlJywge1xuICAgICAgICAgIGRldGFpbDogcGxhY2VTZWxlY3Rpb24sXG4gICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbCc6IFNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQ7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUNxQkEsaUNBQWlDLFFBQVE7Ozs7SUFVNUIsK0NBQXFDO21CQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2NBQTlDLDhDQUE4QyxZQUFvQjs7OzRCQVE1RSxXQUFXLEVBQ1gsU0FBUyxFQUFFLFdBQVcsUUFBUSxDQUFDLENBQUE7d0JBSS9CLFdBQVcsRUFDWCxTQUFTO0lBQUUsV0FBVztJQUFTLFNBQVM7SUFBTSxDQUFDLENBQUE7a0NBSS9DLFNBQVMsRUFBRSxXQUFXLG9CQUFvQixDQUFDLENBQUE7OEJBSTNDLFNBQVM7SUFBRSxXQUFXO0lBQWUsTUFBTTtJQUFPLENBQUMsQ0FBQTt1QkFJbkQsV0FBVyxFQUNYLFNBQVMsRUFBRSxXQUFXLFFBQVEsQ0FBQyxDQUFBOzRCQUkvQixXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBYyxNQUFNO0lBQVEsQ0FBQyxDQUFBOzZCQUluRCxXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBZSxNQUFNO0lBQVEsQ0FBQyxDQUFBOytCQUlwRCxXQUFXLEVBQ1gsU0FBUztJQUFFLFdBQVc7SUFBaUIsTUFBTTtJQUFTLENBQUMsQ0FBQTsyQkFJdkQsV0FBVyxFQUNYLFNBQVMsRUFBRSxXQUFXLFlBQVksQ0FBQyxDQUFBO2dDQUluQyxXQUFXLEVBQ1gsU0FBUztJQUFFLE1BQU07SUFBUyxZQUFZO0lBQU0sQ0FBQyxDQUFBO0FBMUM5QyxnQkFBQSxNQUFBLE1BQUEsdUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxlQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQVMsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFULFlBQVM7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSx5QkFBQSw2QkFBQTtBQUt6QixnQkFBQSxNQUFBLE1BQUEsbUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxXQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQUssTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFMLFFBQUs7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSxxQkFBQSx5QkFBQTtBQUlyQixnQkFBQSxNQUFBLE1BQUEsNkJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxxQkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFlLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBZixrQkFBZTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLCtCQUFBLG1DQUFBO0FBSS9CLGdCQUFBLE1BQUEsTUFBQSx5QkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGlCQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQVcsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFYLGNBQVc7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSwyQkFBQSwrQkFBQTtBQUszQixnQkFBQSxNQUFBLE1BQUEsa0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxVQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQUksTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFKLE9BQUk7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSxvQkFBQSx3QkFBQTtBQUtwQixnQkFBQSxNQUFBLE1BQUEsdUJBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxlQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQVMsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFULFlBQVM7O0tBQUE7SUFBQSxVQUFBO0lBQUEsRUFBQSx5QkFBQSw2QkFBQTtBQUt6QixnQkFBQSxNQUFBLE1BQUEsd0JBQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLFFBQUE7SUFBQSxTQUFBO0lBQUEsUUFBQTtLQUFBLE1BQUEsUUFBQSxnQkFBQTtLQUFBLE1BQUEsUUFBQSxJQUFnQjtLQUFVLE1BQUEsS0FBQSxVQUFBO0FBQUEsVUFBVixhQUFVOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsMEJBQUEsOEJBQUE7QUFLMUIsZ0JBQUEsTUFBQSxNQUFBLDBCQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxRQUFBO0lBQUEsU0FBQTtJQUFBLFFBQUE7S0FBQSxNQUFBLFFBQUEsa0JBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBWSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVosZUFBWTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLDRCQUFBLGdDQUFBO0FBSzVCLGdCQUFBLE1BQUEsTUFBQSxzQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLGNBQUE7S0FBQSxNQUFBLFFBQUEsSUFBZ0I7S0FBUSxNQUFBLEtBQUEsVUFBQTtBQUFBLFVBQVIsV0FBUTs7S0FBQTtJQUFBLFVBQUE7SUFBQSxFQUFBLHdCQUFBLDRCQUFBO0FBS3hCLGdCQUFBLE1BQUEsTUFBQSwyQkFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsUUFBQTtJQUFBLFNBQUE7SUFBQSxRQUFBO0tBQUEsTUFBQSxRQUFBLG1CQUFBO0tBQUEsTUFBQSxRQUFBLElBQWdCO0tBQWEsTUFBQSxLQUFBLFVBQUE7QUFBQSxVQUFiLGdCQUFhOztLQUFBO0lBQUEsVUFBQTtJQUFBLEVBQUEsNkJBQUEsaUNBQUE7Ozs7Ozs7OztBQXBERyxRQUFBLGNBQXNCOzs7QUFDL0IsUUFBQSxTQUF5QixDQUFDLGlCQUFpQixVQUFVLHVDQUFNLENBQUM7OztBQUM1RCxRQUFBLFNBQVMsRUFDOUIsYUFBYSxlQUNMOztFQUtWOztFQUFBLElBQWdCLFlBQVM7QUFBQSxVQUFBLE1BQUE7O0VBQXpCLElBQWdCLFVBQVMsT0FBQTtBQUFBLFNBQUEsNkJBQUE7O0VBS3pCOztFQUFBLElBQWdCLFFBQUs7QUFBQSxVQUFBLE1BQUE7O0VBQXJCLElBQWdCLE1BQUssT0FBQTtBQUFBLFNBQUEseUJBQUE7O0VBSXJCOztFQUFBLElBQWdCLGtCQUFlO0FBQUEsVUFBQSxNQUFBOztFQUEvQixJQUFnQixnQkFBZSxPQUFBO0FBQUEsU0FBQSxtQ0FBQTs7RUFJL0I7O0VBQUEsSUFBZ0IsY0FBVztBQUFBLFVBQUEsTUFBQTs7RUFBM0IsSUFBZ0IsWUFBVyxPQUFBO0FBQUEsU0FBQSwrQkFBQTs7RUFLM0I7O0VBQUEsSUFBZ0IsT0FBSTtBQUFBLFVBQUEsTUFBQTs7RUFBcEIsSUFBZ0IsS0FBSSxPQUFBO0FBQUEsU0FBQSx3QkFBQTs7RUFLcEI7O0VBQUEsSUFBZ0IsWUFBUztBQUFBLFVBQUEsTUFBQTs7RUFBekIsSUFBZ0IsVUFBUyxPQUFBO0FBQUEsU0FBQSw2QkFBQTs7RUFLekI7O0VBQUEsSUFBZ0IsYUFBVTtBQUFBLFVBQUEsTUFBQTs7RUFBMUIsSUFBZ0IsV0FBVSxPQUFBO0FBQUEsU0FBQSw4QkFBQTs7RUFLMUI7O0VBQUEsSUFBZ0IsZUFBWTtBQUFBLFVBQUEsTUFBQTs7RUFBNUIsSUFBZ0IsYUFBWSxPQUFBO0FBQUEsU0FBQSxnQ0FBQTs7RUFLNUI7O0VBQUEsSUFBZ0IsV0FBUTtBQUFBLFVBQUEsTUFBQTs7RUFBeEIsSUFBZ0IsU0FBUSxPQUFBO0FBQUEsU0FBQSw0QkFBQTs7RUFLeEI7O0VBQUEsSUFBZ0IsZ0JBQWE7QUFBQSxVQUFBLE1BQUE7O0VBQTdCLElBQWdCLGNBQWEsT0FBQTtBQUFBLFNBQUEsaUNBQUE7O0VBTTdCLGNBQUE7QUFDRSxVQUFPO0FBbERPLFNBQUEsNkJBQUEsa0JBQUEsTUFBQSx5QkFBdUIsT0FBTTtBQUs3QixTQUFBLDBCQUFBLGtCQUFBLE1BQUEsNkJBQUEsRUFBQSxrQkFBQSxNQUFBLHFCQUFvQixPQUFNO0FBSTFCLFNBQUEsb0NBQUEsa0JBQUEsTUFBQSx5QkFBQSxFQUFBLGtCQUFBLE1BQUEsK0JBQW1DLE9BQU07QUFJekMsU0FBQSxnQ0FBQSxrQkFBQSxNQUFBLG1DQUFBLEVBQUEsa0JBQUEsTUFBQSwyQkFBd0IsRUFBRSxDQUFBO0FBSzFCLFNBQUEseUJBQUEsa0JBQUEsTUFBQSwrQkFBQSxFQUFBLGtCQUFBLE1BQUEsb0JBQWUsR0FBRTtBQUtqQixTQUFBLDhCQUFBLGtCQUFBLE1BQUEsd0JBQUEsRUFBQSxrQkFBQSxNQUFBLHlCQUFvQixLQUFLO0FBS3pCLFNBQUEsK0JBQUEsa0JBQUEsTUFBQSw2QkFBQSxFQUFBLGtCQUFBLE1BQUEsMEJBQXFCLEtBQUs7QUFLMUIsU0FBQSxpQ0FBQSxrQkFBQSxNQUFBLDhCQUFBLEVBQUEsa0JBQUEsTUFBQSw0QkFBd0IsTUFBSztBQUs3QixTQUFBLDZCQUFBLGtCQUFBLE1BQUEsZ0NBQUEsRUFBQSxrQkFBQSxNQUFBLHdCQUFtQixVQUFTO0FBSzVCLFNBQUEsa0NBQUEsa0JBQUEsTUFBQSw0QkFBQSxFQUFBLGtCQUFBLE1BQUEsNkJBQXlCLE1BQUs7QUFFdEMsUUFBQSw2QkFBeUIsa0JBQUEsTUFBQSxpQ0FBQSxFQUFXO0FBRXBDLFFBQUEsWUFBWSxJQUFJLHNCQUFzQixLQUFLO0FBSWpELFFBQUssaUJBQWlCLGVBQWUsS0FBSyxjQUFjLENBQUM7O0VBR3hDLFdBQVcsbUJBQXVDO0FBQ25FLFNBQU0sV0FBVyxrQkFBa0I7QUFFbkMsT0FBSSxrQkFBa0IsSUFBSSxXQUFXO1FBQy9CLEtBQUssYUFBYSxRQUNwQixNQUFLLE9BQU87O0FBT2hCLE9BQUksa0JBQWtCLElBQUksZ0JBQWdCO1FBQ3BDLENBQUMsS0FBSyxjQUNSLE1BQUssUUFBUTs7O0VBS0EsU0FBTTtHQUN2QixNQUFNLE9BQWUsS0FBSyxhQUFhLEtBQUssV0FBVyxLQUFLLE1BQU07R0FDbEUsTUFBTSxPQUFlLEtBQUssS0FBSyxhQUFhO0dBQzVDLE1BQU0sUUFBZ0IsS0FBSyxNQUFNLGFBQWE7R0FDOUMsTUFBTSxPQUFzQixLQUFLO0dBQ2pDLE1BQU0sUUFBUSxLQUFLLE9BQU8saUJBQWlCLDZDQUE2QztHQUN4RixNQUFNLFNBQVMsS0FBSyxPQUFPLGlCQUFpQiw4Q0FBOEM7R0FDMUYsTUFBTSxXQUFXLEtBQUssT0FBTyxpQkFBaUIsZ0RBQWdEO0dBQzlGLE1BQU0sZUFBZSxLQUFLLE9BQU8saUJBQy9CLHFEQUNEO0dBQ0QsTUFBTSxnQ0FBZ0MsT0FBTyxhQUFhLEdBQUcsT0FBTyxTQUFTO0dBQzdFLE1BQU0sZ0JBQWdCLEtBQUssZUFBZSw0Q0FBNEM7QUFJdEYsT0FBSSxLQUFLLGNBQ1AsTUFBSyxRQUFRLEtBQUssMEJBQTBCLFNBQVM7T0FFckQsTUFBSyw0QkFBNEIsS0FBSywwQkFBMEIsU0FBUztBQUczRSxRQUFLLFdBQVc7QUFFaEIsVUFBTyxJQUFJOzs7a0VBR21ELFNBQVEsNEJBQTZCLE1BQUssMkJBQTRCLEtBQUksR0FBSSxjQUFhOzs7a0JBRzNJLFNBQVM7SUFDZix3Q0FBd0M7SUFDeEMseUNBQXlDO0lBQ3pDLDJDQUEyQztJQUMzQyxtREFBbUQ7SUFDcEQsQ0FBQyxDQUFBO2tCQUNNLEtBQUE7OztnQkFHRixLQUFLLFFBQVEsUUFBTzthQUN2QixLQUFJOztVQUVQLENBQUMsS0FBSyxnQkFDSixJQUFJLCtCQUErQixLQUFLLEdBQUU7aUJBQ3JDLEtBQUssMEJBQXlCO2lCQUVuQyxRQUFBOzs7O0VBS0YsYUFBYSxNQUFpQixPQUFpQjtBQUdyRCxVQUFPLFNBQVMsS0FBVSxHQUFJOztFQUd4QiwwQkFBMEIsVUFBNEI7R0FFNUQsSUFBSSxjQUFjLHVCQURLLG1CQUFtQixLQUFLLE9BQU8sTUFBTSxLQUFLLE9BQ1IsS0FBSyxVQUFVLFNBQVMsQ0FBQyxLQUFLLEtBQUssQ0FBQztHQUU3RixNQUFNLDBCQUEwQixLQUFLLDRCQUE0QixTQUFTO0FBRTFFLE9BQUksS0FBSyxZQUFZLFVBQVUseUJBQXlCO0FBQ3RELG1CQUNFLE9BQU8sdUJBQXVCLGtCQUFrQixLQUFLLFVBQVUsUUFBUSxDQUFDLE9BQU8sS0FBSztBQUV0RixtQkFBZSxDQUFDLHlCQUF5QixHQUFHLEtBQUssWUFBWSxDQUMxRCxLQUFLLGVBQ0osdUJBQXVCLHNCQUFzQixZQUFZLEtBQUssVUFBVSxRQUFRLENBQ2pGLENBQ0EsUUFBUSxVQUFVLE1BQU0sQ0FDeEIsS0FBSyxLQUFLOztBQUdmLFVBQU87O0VBR0QsNEJBQ04sZUFBaUM7QUFFakMsT0FDRSxDQUFDLEtBQUssbUJBQ04sS0FBSyxvQkFBb0IsVUFDekIsS0FBSyxjQUFjLFVBQ25CLENBQUMsY0FFRCxRQUFPLEtBQUE7R0FDVCxNQUFNLFdBQVcsT0FBTyxjQUFjO0FBRXRDLE9BQUksYUFBYSxNQUFNLGFBQWEsSUFDbEMsUUFBTztBQU9ULE9BSEcsYUFBYSxLQUFLLEtBQUssb0JBQW9CLFdBQzNDLGFBQWEsT0FBTyxLQUFLLG9CQUFvQixPQUc5QyxRQUFPO1lBQ0UsYUFBYSxLQUFLLGFBQWEsSUFDeEMsUUFBTzs7O0VBT0gsZUFBWTtBQUdsQixRQUZvQixLQUFLLFVBQVUsVUFBVSxLQUFLLFVBQVUsZUFBZSxDQUFDLEtBQUssY0FFakU7QUFDZCxTQUFLLFFBQVEsS0FBSyxVQUFVLFNBQVMsYUFBYTtJQUNsRCxNQUFNLGlCQUFpQztLQUNyQyxJQUFJLEtBQUs7S0FDVCxXQUFXLEtBQUs7S0FDaEIsWUFBWSxLQUFLO0tBQ2pCLFFBQVEsS0FBSztLQUNiLE9BQU8sS0FBSztLQUNaLFdBQVcsS0FBSztLQUNqQjs7Ozs7O0FBT0QsU0FBSyxjQUNILElBQUksWUFBNEIsZUFBZTtLQUM3QyxRQUFRO0tBQ1IsU0FBUztLQUNULFVBQVU7S0FDWCxDQUFDLENBQ0gifQ==
@@ -507,4 +507,4 @@ var SbbSeatReservationElement = class extends SeatReservationBaseElement {
507
507
  //#endregion
508
508
  export { SbbSeatReservationElement as t };
509
509
 
510
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQtREZKVkZtckkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5AdXNlICcuLi9jb21tb24vc3R5bGVzL3NlYXQtcmVzZXJ2YXRpb24tbWl4aW5zJyBhcyBzYmItc3ItbWl4aW5zO1xuQHVzZSAnLi4vY29tbW9uL3N0eWxlcy9zZWF0LXJlc2VydmF0aW9uLWZ1bmN0aW9ucycgYXMgc2JiLXNyLWZ1bmN0aW9ucztcblxuLy8gTWF4aW11bSByZXNwb25zaXZlIG5hdmlnYXRpb24gd2lkdGgsIGNvbnNpc3RzIG9mIHRoZSBtYXhpbXVtIG5hdmlnYXRpb24gZXh0ZW50IG1pbnVzIDJ4IG5hdiBkaXJlY3Rpb24gYnV0dG9ucyA5NnB4IGFuZCA4cHggcGFkZGluZy5cbiRtYXgtY29hY2gtbmF2aWdhdGlvbi13aWR0aDogY2FsYyg5NjBweCAtIDk2cHggLSA4cHgpO1xuJHNjcm9sbGJhci1oZWlnaHQ6IDE2cHg7XG5cbjpob3N0IHtcbiAgLy8gTm90ZTogVGhlIHVzZSBvZiBweCBpcyBpbnRlbnRpb25hbCBoZXJlLCBiZWNhdXNlIG1hbnkgd2lkdGhzL2hlaWdodHMsIHJvdGF0aW9ucywgc2NhbGVzLCBldGMuIGRlcGVuZHMgb24gdGhpcy5cbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmlkLXNpemU6IDE2cHg7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24taGVpZ2h0OiAwO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLWRlY2tzOiAxO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IGluaGVyaXQ7XG5cbiAgOjpwYXJ0KGNvYWNoLWZsb29yKSB7XG4gICAgZmlsbDogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMik7XG5cbiAgICAvLyBJbiBIaWdoIENvbnRyYXN0IE1vZGUgd2Ugc2V0IGZsb29yIGNvbG9yIHRvIHRyYW5zcGFyZW50XG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgZmlsbDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIHJvdGF0ZXMgdGhlIERPTS1wYXJ0IFwiY29hY2gtZmxvb3JcIiBieSAxODAgZGVncmVlcyBpZiB0aGUgaG9zdCBpcyBpbiBSVEwgbW9kZS5cbkBpbmNsdWRlIHNiYi1zci1taXhpbnMucm90YXRlLWRvbS1wYXJ0KGNvYWNoLWZsb29yKTtcblxuW3BvcG92ZXJdOndoZXJlKHNiYi1wb3BvdmVyKSB7XG4gIEBpbmNsdWRlIHNiYi5wb3BvdmVyLXJlc2V0O1xuXG4gIC5zYmItc3ItcG9wb3ZlciB7XG4gICAgbWFyZ2luLWJsb2NrOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg0KTtcbiAgfVxufVxuXG4vLyBTVEFSVCAtIFZlcnRpY2FsIG1vZGVcbjpob3N0KFthbGlnbi12ZXJ0aWNhbF0pIHtcbiAgJGNvYWNoLW5hdmlnYXRpb24tcGFkZGluZzogNTtcbiAgJGNvYWNoLXNjcm9sbGJhci13aWR0aDogMjQ7XG4gICRjb2FjaC1ncmlkLXdpZHRoOiBjYWxjKHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLWhlaWdodCkgKyAkY29hY2gtc2Nyb2xsYmFyLXdpZHRoKTtcblxuICAuc2JiLXNyX19jb21wb25lbnQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMjIpO1xuICAgIGhlaWdodDogaW5oZXJpdDtcblxuICAgIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICAgIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNTQpO1xuICAgIH1cblxuICAgIG5hdi5zYmItc3ItbmF2aWdhdGlvbixcbiAgICB1bC5zYmItc3ItbmF2aWdhdGlvbl9fbGlzdC1jb2FjaGVzIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgbmF2LnNiYi1zci1uYXZpZ2F0aW9uIHtcbiAgICAgIHBhZGRpbmc6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDE2KSAwO1xuXG4gICAgICAuc2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uIHtcbiAgICAgICAgbGVmdDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMSk7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcm90YXRlOiA5MGRlZztcblxuICAgICAgICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgICAgICAgbGVmdDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVsLnNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXMge1xuICAgICAgICBtYXgtd2lkdGg6IGluaXRpYWw7XG5cbiAgICAgICAgLy8gUGFkZGluZyBuZWVkcyB0byB2aXN1YWwgZm9jdXMtdmlzaWJsZSBzdHlsZSBmb3IgbmF2IGJ1dHRvbiBpbnNpZGUgb3ZlcmZsb3cgY29udGVudCxcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGZvY3VzLXZpc2libGUgc3R5bGUgaXMgY3V0dGVkLlxuICAgICAgICBwYWRkaW5nOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgkY29hY2gtbmF2aWdhdGlvbi1wYWRkaW5nKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiBzY3JvbGw7XG5cbiAgICAgICAgLy8gaW4gdmVydGljYWwgbW9kZSwgdGhlIGxpIG11c3QgYmUgZmxleGVkOyBvdGhlcndpc2UgaXQgd291bGQgY2FsY3VsYXRlIHRoZSB3cm9uZyBoZWlnaHRcbiAgICAgICAgLy8gZHVlIHRvIHVzZXJhZ2VudCBzdHlsZSBzZXQgdG8gXCJsaXN0LWl0ZW1cIiBmb3IgZGlzcGxheVxuICAgICAgICBsaSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZFUlRJQ0FMIE1PREUgLSBMQUJFTE1VTFRJUExFIERFQ0tTIC0gTEFCRUxTXG4gIC5zYmItc3JfX3dyYXBwZXItY29hY2gtZGVja3Mge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAuc2JiLXNyX193cmFwcGVyLWRlY2stbGFiZWxzIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICAgIHdpZHRoOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgkY29hY2gtZ3JpZC13aWR0aCk7XG4gICAgICBoZWlnaHQ6IGluaXRpYWw7XG5cbiAgICAgIGIge1xuICAgICAgICBpbmxpbmUtc2l6ZTogY2FsYyg1MCUgLSBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgxNikpO1xuICAgICAgICBibG9jay1zaXplOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgyMCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDE2KTtcbiAgICAgICAgcm90YXRlOiBpbml0aWFsO1xuICAgICAgICB3cml0aW5nLW1vZGU6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVkVSVElDQUwgTU9ERSAtIFNFQVRNQVAgU0NST0xMIEFSRUFcbiAgLnNiYi1zcl9fd3JhcHBlci1zY3JvbGxhcmVhIHtcbiAgICB3aWR0aDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oJGNvYWNoLWdyaWQtd2lkdGgpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuIHNjcm9sbDtcblxuICAgIC5zYmItc3JfX3BhcmVudCB7XG4gICAgICByb3RhdGU6IDkwZGVnO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZFUlRJQ0FMIE1PREUgLSBUUkFWRUwtRElSRUNUSU9OXG4gIC5zYmItc3ItdHJhdmVsLWRpcmVjdGlvbi13cmFwcGVyIHtcbiAgICB3aWR0aDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0odmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24taGVpZ2h0KSk7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg0KTtcbiAgfVxufVxuXG4vLyBFTkQgLSBWZXJ0aWNhbCBtb2RlXG5cbi5zYmItc3ItbmF2aWdhdGlvbiB7XG4gIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMyk7XG59XG5cbi5zYmItc3ItbmF2aWdhdGlvbiAuc2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDIpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICB0b3A6IDA7XG4gIH1cbn1cblxuLnNiYi1zcl9fY29tcG9uZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiBjYWxjKHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDY0KSAtICRzY3JvbGxiYXItaGVpZ2h0KTtcbn1cblxuLy8gVFJBVkVMIERJUkVDVElPTlxuLnNiYi1zci10cmF2ZWwtZGlyZWN0aW9uLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sdW1uLWdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG4gIG1hcmdpbi1ibG9jazogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oOCkgc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXMpO1xuXG4gIC5zYmItc3JfX3RyYXZlbC1kaXJlY3Rpb24tLWFycm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cblxuLy8gTkFWSUdBVElPTiBORVdcbi5zYmItc3ItbmF2aWdhdGlvbi13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLnNiYi1zci1uYXZpZ2F0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWlubGluZTogMTZweDtcbn1cblxuLnNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXMge1xuICBAaW5jbHVkZSBzYmIubGlzdC1yZXNldDtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhcjtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgZ2FwOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg0KTtcbiAgcGFkZGluZzogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNikgc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNSkgMDtcbiAgbWF4LXdpZHRoOiAkbWF4LWNvYWNoLW5hdmlnYXRpb24td2lkdGg7XG5cbiAgLy8gU2V0IHNiYiBzY3JvbGxiYXIgdHJhbnNwYXJlbnQgYnkgZGVmYXVsdFxuICAtLXNiYi1zY3JvbGxiYXItY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIG92ZXJmbG93OiBzY3JvbGwgaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLSBTZWF0IFJlc2VydmF0aW9uIE1haW4gTmF2aWdhdGlvbiAtIEVORCAtLS0tLS0tLS0tLS0tLS0tXG5cbi8vIC0tLS0tLS0tLS0tLS0gU2VhdCBSZXNlcnZhdGlvbiBDb2FjaGVzIC0gU1RBUlQgLS0tLS0tLS0tLS0tLS0tLS1cbi5zYmItc3JfX3dyYXBwZXItY29hY2gtZGVja3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IGluaGVyaXQ7XG5cbiAgLnNiYi1zcl9fd3JhcHBlci1kZWNrLWxhYmVscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgaGVpZ2h0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1oZWlnaHQpKTtcbiAgICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyO1xuXG4gICAgYiB7XG4gICAgICBoZWlnaHQ6IGNhbGMoNTAlIC0gc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMTYpKTtcbiAgICAgIHdpZHRoOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgyMCk7XG4gICAgICBtYXJnaW4tYmxvY2stZW5kOiAxNnB4O1xuICAgICAgcm90YXRlOiAxODBkZWc7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMjApO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLXNyX193cmFwcGVyLXNjcm9sbGFyZWEge1xuICBAaW5jbHVkZSBzYmIuc2Nyb2xsYmFyO1xuXG4gIG92ZXJmbG93OiBzY3JvbGwgaGlkZGVuO1xuICBwYWRkaW5nLWJsb2NrOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4KSBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgxNik7XG5cbiAgLnNiYi1zcl9fcGFyZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG5cbi5zYmItc3JfX2xpc3QtZGVja3Mge1xuICBAaW5jbHVkZSBzYmIubGlzdC1yZXNldDtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uc2JiLXNyX19saXN0LWRlY2tzLS1nYXAge1xuICBnYXA6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDQ4KTtcbn1cblxuLnNiYi1zcl9fbGlzdC1pdGVtLWRlY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zYmItc3JfX2xpc3QtY29hY2hlcyB7XG4gIEBpbmNsdWRlIHNiYi5saXN0LXJlc2V0O1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG59XG5cbi8vIElmIHRoZXJlIGFyZSBvdmVyaGFuZ2luZyBlbGVtZW50cyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBnYXAgYmV0d2VlbiBjb2FjaGVzXG4uc2JiLXNyX19saXN0LWRlY2tzOmhhcyguc2JiLXNyLWNvYWNoLWhhcy1vdmVyaGFuZ2luZy1lbGVtZW50cykgLnNiYi1zcl9fbGlzdC1jb2FjaGVzIHtcbiAgZ2FwOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4KTtcbn1cblxuLnNiYi1zcl9faXRlbS1jb2FjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZSB7XG4gIG91dGxpbmU6IDA7XG59XG4iLCJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiUG9wb3ZlckVsZW1lbnQgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9wb3BvdmVyLmpzJztcbmltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB1bnNhZmVDU1MsXG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcC5qcyc7XG5pbXBvcnQgeyByZXBlYXQgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZXBlYXQuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uL3RyYW5zbGF0aW9ucy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvYWNoSXRlbSxcbiAgQ29hY2hJdGVtRGV0YWlscyxcbiAgUGxhY2UsXG4gIEVsZW1lbnREaW1lbnNpb24sXG4gIEJhc2VFbGVtZW50LFxuICBQbGFjZVNlbGVjdGlvbixcbiAgU2VhdFJlc2VydmF0aW9uLFxufSBmcm9tICcuLi9jb21tb24vdHlwZXMudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEvc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBTYmJTZWF0UmVzZXJ2YXRpb25HcmFwaGljRWxlbWVudCB9IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMuY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2gvc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBTYmJTZWF0UmVzZXJ2YXRpb25QbGFjZUNvbnRyb2xFbGVtZW50IH0gZnJvbSAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uU2NvcGVkRWxlbWVudCB9IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC50cyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9idXR0b24uanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9wb3BvdmVyLmpzJztcblxuU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQuZGVmaW5lKCk7XG5TYmJTZWF0UmVzZXJ2YXRpb25HcmFwaGljRWxlbWVudC5kZWZpbmUoKTtcblNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQuZGVmaW5lKCk7XG5TYmJTZWF0UmVzZXJ2YXRpb25OYXZpZ2F0aW9uQ29hY2hFbGVtZW50LmRlZmluZSgpO1xuU2JiU2VhdFJlc2VydmF0aW9uU2NvcGVkRWxlbWVudC5kZWZpbmUoKTtcblxuLyoqXG4gKiBNYWluIGNvbXBvbmVudCBmb3IgdGhlIHNlYXQgcmVzZXJ2YXRpb24uXG4gKlxuICovXG5leHBvcnQgY2xhc3MgU2JiU2VhdFJlc2VydmF0aW9uRWxlbWVudCBleHRlbmRzIFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zZWF0LXJlc2VydmF0aW9uJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9jb2FjaGVzSHRtbFRlbXBsYXRlPzogVGVtcGxhdGVSZXN1bHQ7XG5cbiAgLy8gQXJlYSBpY29ucyB0aGF0IHNob3VsZCBub3QgYmUgZml4ZWQgZHVyaW5nIHJvdGF0aW9uIHdoZW4gdmVydGljYWwgbW9kZSBpcyBzZWxlY3RlZFxuICBwcml2YXRlIF9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucyA9IFsnRU5UUllfRVhJVCddO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaGFzTmF2aWdhdGlvbicpKSB7XG4gICAgICBpZiAodGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMuc2hhZG93Um9vdFxuICAgICAgICAgID8ucXVlcnlTZWxlY3RvckFsbCgndGFibGUnKVxuICAgICAgICAgIC5mb3JFYWNoKCh0YWJsZSkgPT4gdGFibGUucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hhZG93Um9vdFxuICAgICAgICAgID8ucXVlcnlTZWxlY3RvckFsbCgndGFibGUnKVxuICAgICAgICAgIC5mb3JFYWNoKCh0YWJsZSkgPT4gdGFibGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgZmlyc3QgdXBkYXRlIGlzIGNvbXBsZXRlIHRvIGluaXQgZGlmZmVyZW50IEhUTUwgZWxlbWVudCBkaW1lbnNpb25zXG4gICAgdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdE5hdmlnYXRpb25TZWxlY3Rpb25CeVNjcm9sbEV2ZW50KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgdGhpcy5faW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy5fY29hY2hlc0h0bWxUZW1wbGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fY29hY2hlc0h0bWxUZW1wbGF0ZSA9IGh0bWxgXG4gICAgICAke3RoaXMuX3JlbmRlclRyYXZlbERpcmVjdGlvbigpfVxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fY29tcG9uZW50XCI+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyTmF2aWdhdGlvbigpfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzYmItc3JfX3dyYXBwZXItY29hY2gtZGVja3NcIlxuICAgICAgICAgIEBrZXlkb3duPSR7KGV2dDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5rZXlib2FyZFNlYXRtYXBFdmVudEhhbmRsaW5nKGV2dCl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyX193cmFwcGVyLWRlY2stbGFiZWxzXCI+JHt0aGlzLl9yZW5kZXJEZWNrTGFiZWxzKCl9PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQHNjcm9sbD0keygpID0+IHRoaXMuY29hY2hBcmVhU2Nyb2xsZW5kKCl9XG4gICAgICAgICAgICBpZD1cInNiYi1zcl9fd3JhcHBlci1zY3JvbGxhcmVhXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2JiLXNyX193cmFwcGVyLXNjcm9sbGFyZWFcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBpZD1cInNiYi1zcl9fcGFyZW50LWFyZWFcIiBjbGFzcz1cInNiYi1zcl9fcGFyZW50XCI+XG4gICAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgICAgICAgICAnc2JiLXNyX19saXN0LWRlY2tzJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICdzYmItc3JfX2xpc3QtZGVja3MtLWdhcCc6IHRoaXMuaGFzTXVsdGlwbGVEZWNrcyxcbiAgICAgICAgICAgICAgICB9KX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbnM/Lm1hcChcbiAgICAgICAgICAgICAgICAgIChzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbiwgY29hY2hEZWNrSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbGA8bGkgY2xhc3M9XCJzYmItc3JfX2xpc3QtaXRlbS1kZWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuX3JlbmRlckNvYWNoZXMoc2VhdFJlc2VydmF0aW9uLCBjb2FjaERlY2tJbmRleCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5gO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckRlY2tMYWJlbHMoKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghdGhpcy5oYXNNdWx0aXBsZURlY2tzKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLnNlYXRSZXNlcnZhdGlvbnMubWFwKChzZWF0UmVzZXJ2YXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlY2tEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgIHNlYXRSZXNlcnZhdGlvbi5kZWNrQ29hY2hMZXZlbCxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gaHRtbGA8YiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2RlY2tEZXNjcmlwdGlvbn08L2I+YDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck5hdmlnYXRpb25Db250cm9sQnV0dG9uKGJ0bkRpcmVjdGlvbjogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbiB8fCAhdGhpcy5zZWF0UmVzZXJ2YXRpb25zKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBidG5OYXZpZ2F0aW9uRGlyZWN0aW9uSWQgPVxuICAgICAgYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fUklHSFQnXG4gICAgICAgID8gJ3NiYi1zci1uYXZpZ2F0aW9uX193cmFwcGVyLWJ1dHRvbi1kaXJlY3Rpb24tLXJpZ2h0J1xuICAgICAgICA6ICdzYmItc3ItbmF2aWdhdGlvbl9fd3JhcHBlci1idXR0b24tZGlyZWN0aW9uLS1sZWZ0JztcbiAgICBjb25zdCBidG5JY29uID1cbiAgICAgIGJ0bkRpcmVjdGlvbiA9PSAnRElSRUNUSU9OX1JJR0hUJyA/ICdjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsJyA6ICdjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGwnO1xuICAgIGNvbnN0IGJ0bkFyaWFEZXNjcmlwdGlvbiA9XG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCdcbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogZ2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9CRUdJTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuICAgIGxldCBidG5EaXNhYmxlZCA9IHRydWU7XG5cbiAgICBpZiAoYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fTEVGVCcgJiYgdGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPiAwKSB7XG4gICAgICBidG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCcgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4IDwgdGhpcy5jb2FjaEl0ZW1EZXRhaWxzRWxlbWVudHMubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgYnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25fX3dyYXBwZXItYnV0dG9uLWRpcmVjdGlvblwiPlxuICAgICAgPHNiYi1zZWNvbmRhcnktYnV0dG9uXG4gICAgICAgIEBjbGljaz1cIiR7KCkgPT4gdGhpcy5uYXZpZ2F0ZUJ5RGlyZWN0aW9uQnRuKGJ0bkRpcmVjdGlvbil9XCJcbiAgICAgICAgQGZvY3VzPVwiJHsoKSA9PiB0aGlzLm9uRm9jdXNOYXZEaXJlY3Rpb25CdXR0b24oKX1cIlxuICAgICAgICBpZD1cIiR7YnRuTmF2aWdhdGlvbkRpcmVjdGlvbklkfVwiXG4gICAgICAgIGNsYXNzPVwic2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBpY29uLW5hbWU9XCIke2J0bkljb259XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCIke2J0bkFyaWFEZXNjcmlwdGlvbn1cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgLmRpc2FibGVkSW50ZXJhY3RpdmU9XCIke2J0bkRpc2FibGVkIHx8IG5vdGhpbmd9XCJcbiAgICAgICAgLmRpc2FibGVkPVwiJHtidG5EaXNhYmxlZCB8fCBub3RoaW5nfVwiXG4gICAgICA+PC9zYmItc2Vjb25kYXJ5LWJ1dHRvbj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVHJhdmVsRGlyZWN0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRyYXZlbERpcmVjdGlvbiB8fCB0aGlzLnRyYXZlbERpcmVjdGlvbiA9PT0gJ05PTkUnKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGxhYmVsVGV4dCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAnU0VBVF9SRVNFUlZBVElPTl9UUkFWRUxfRElSRUNUSU9OJyxcbiAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgKTtcblxuICAgIGNvbnN0IGFycm93RGlyZWN0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsXG4gICAgICA/IHRoaXMudHJhdmVsRGlyZWN0aW9uID09PSAnUklHSFQnXG4gICAgICAgID8gJ2Rvd24nXG4gICAgICAgIDogJ3VwJ1xuICAgICAgOiB0aGlzLnRyYXZlbERpcmVjdGlvbiA9PT0gJ1JJR0hUJ1xuICAgICAgICA/ICdyaWdodCdcbiAgICAgICAgOiAnbGVmdCc7XG5cbiAgICBjb25zdCBpY29uTmFtZSA9IGBhcnJvdy0ke2Fycm93RGlyZWN0aW9ufS1zbWFsbGA7XG5cbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLXRyYXZlbC1kaXJlY3Rpb24td3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fdHJhdmVsLWRpcmVjdGlvbi0tYXJyb3dcIj5cbiAgICAgICAgPHNiYi1pY29uIHNsb3Q9XCJpY29uXCIgbmFtZT1cIiR7aWNvbk5hbWV9XCI+PC9zYmItaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fdHJhdmVsLWRpcmVjdGlvbi0tbGFiZWxcIj4ke2xhYmVsVGV4dH08L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTmF2aWdhdGlvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGlmIChpc1NlcnZlciB8fCAhdGhpcy5oYXNOYXZpZ2F0aW9uIHx8ICF0aGlzLnNlYXRSZXNlcnZhdGlvbnMpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi13cmFwcGVyXCI+XG4gICAgICA8bmF2IGlkPVwic2JiLXNyLW5hdmlnYXRpb25cIiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uXCI+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyTmF2aWdhdGlvbkNvbnRyb2xCdXR0b24oJ0RJUkVDVElPTl9MRUZUJyl9XG4gICAgICAgIDx1bFxuICAgICAgICAgIGlkPVwic2JiLXNyX19uYXZpZ2F0aW9uLWxpc3QtY29hY2hlc1wiXG4gICAgICAgICAgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fbGlzdC1jb2FjaGVzXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAgICAgJ1NFQVRfUkVTRVJWQVRJT05fTkFWSUdBVElPTicsXG4gICAgICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICAgICl9XCJcbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5jb2FjaEl0ZW1EZXRhaWxzRWxlbWVudHMubWFwKFxuICAgICAgICAgICAgKGNvYWNoSXRlbURldGFpbHM6IENvYWNoSXRlbURldGFpbHMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgICBAc2VsZWN0Y29hY2g9JHsoZXZlbnQ6IEN1c3RvbUV2ZW50PG51bWJlcj4pID0+IHRoaXMuX29uU2VsZWN0TmF2Q29hY2goZXZlbnQpfVxuICAgICAgICAgICAgICAgICAgQGZvY3VzY29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICAgIEBrZXl1cD0keyhldnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25LZXlOYXZpZ2F0aW9uTmF2Q29hY2hCdXR0b24oZXZ0LCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3RlZD0ke3RoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgICAuaG92ZXJlZD0ke3RoaXMuaG92ZXJlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgICAgLm5hdGl2ZUZvY3VzQWN0aXZlPSR7dGhpcy5oYXNTZWF0UmVzZXJ2YXRpb25OYXRpdmVGb2N1c31cbiAgICAgICAgICAgICAgICAgIC5jb2FjaEl0ZW1EZXRhaWxzPVwiJHtjb2FjaEl0ZW1EZXRhaWxzfVwiXG4gICAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICAgICAgP3Nob3dUaXRsZUluZm89XCIke3RoaXMuc2hvd1RpdGxlSW5mb31cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2g+XG4gICAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKX1cbiAgICAgICAgPC91bD5cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uQ29udHJvbEJ1dHRvbignRElSRUNUSU9OX1JJR0hUJyl9XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5gO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBAcGFyYW0gc2VhdFJlc2VydmF0aW9uXG4gICAqIEBwYXJhbSBjb2FjaERlY2tJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hlcyhcbiAgICBzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgY29uc3QgY29hY2hlczogQ29hY2hJdGVtW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcykpO1xuXG4gICAgaWYgKCFjb2FjaGVzIHx8IGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvYWNoZXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoXG4gICAgICAgICAgICBjb2FjaEl0ZW0sXG4gICAgICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICAgICAgY29hY2hEZWNrSW5kZXgsXG4gICAgICAgICAgICBzZWF0UmVzZXJ2YXRpb24uZGVja0NvYWNoSW5kZXgsXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoXG4gICAgY29hY2hJdGVtOiBDb2FjaEl0ZW0sXG4gICAgY29hY2hJbmRleDogbnVtYmVyLFxuICAgIGNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICAgcGxhY2VDb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZC13aWR0aCc6IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi53LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQtaGVpZ2h0JzogY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uLmgsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29hY2hCb3JkZXJzKGNvYWNoSXRlbSwgY29hY2hJbmRleCl9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoXG4gICAgICAgIGNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHMgfHwgW10sXG4gICAgICAgIGNvYWNoSXRlbS5kaW1lbnNpb24sXG4gICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJbmRleCwgY29hY2hEZWNrSW5kZXgsIGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMpfVxuXG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGNvYWNoSW5kZXgpfVxuICAgICAgICBpZD1cInNiYi1zci1jb2FjaC0ke2NvYWNoSW5kZXh9XCJcbiAgICAgICAgY2xhc3M9XCJzYmItc3ItY29hY2gtd3JhcHBlcl9fdGFibGVcIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtjb2FjaEluZGV4fVwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8Y2FwdGlvbiBpZD1cInNiYi1zci1jb2FjaC1jYXB0aW9uLSR7Y29hY2hJbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBjb2FjaEluZGV4LCBjb2FjaERlY2tJbmRleCwgcGxhY2VDb2FjaERlY2tJbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgYm9yZGVyIGdyYXBoaWMgKENPQUNIX0JPUkRFUl9NSURETEUpIG9mIGEgY29hY2ggd2l0aCBjYWxjdWxhdGVkIGJvcmRlciBnYXAgYW5kIGNvYWNoIHdpZHRoLFxuICAgKiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29hY2ggaXMgd2l0aCBhIGRyaXZlciBhcmVhIG9yIHdpdGhvdXQuXG4gICAqL1xuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhcbiAgICBjb2FjaEl0ZW06IENvYWNoSXRlbSxcbiAgICBjb2FjaEluZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IENPQUNIX1BBU1NBR0VfV0lEVEggPSAxO1xuICAgIGNvbnN0IGRyaXZlckFyZWEgPSB0aGlzLmNvYWNoSXRlbURldGFpbHNFbGVtZW50c1tjb2FjaEluZGV4XT8uZHJpdmVyQXJlYUVsZW1lbnRzPy5kcml2ZXJBcmVhO1xuICAgIGNvbnN0IGRyaXZlckFyZWFOb1ZlcnRpY2FsV2FsbCA9XG4gICAgICB0aGlzLmNvYWNoSXRlbURldGFpbHNFbGVtZW50c1tjb2FjaEluZGV4XT8uZHJpdmVyQXJlYUVsZW1lbnRzPy5kcml2ZXJBcmVhTm9WZXJ0aWNhbFdhbGw7XG5cbiAgICBsZXQgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuXG4gICAgLy9tdWx0aXBseSB3aXRoIGJhc2UgZ3JpZCBzaXplIGFsd2F5cyBmb3IgYWxsIGtpbmQgb2YgYm9yZGVyV2lkdGhcbiAgICBib3JkZXJXaWR0aCAqPSB0aGlzLmJhc2VHcmlkU2l6ZTtcblxuICAgIGNvbnN0IGJvcmRlckhlaWdodCA9IChjb2FjaEl0ZW0uZGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogMikgKiB0aGlzLmJhc2VHcmlkU2l6ZTtcbiAgICBsZXQgYm9yZGVyT2Zmc2V0WCA9XG4gICAgICBkcml2ZXJBcmVhICYmIGRyaXZlckFyZWEucG9zaXRpb24ueCA9PT0gMFxuICAgICAgICA/IGRyaXZlckFyZWE/LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemVcbiAgICAgICAgOiB0aGlzLmJhc2VHcmlkU2l6ZTtcblxuICAgIC8vcmVjYWxjdWxhdGUgdGhlIGJvcmRlciB3aWR0aCBhbmQgb2Zmc2V0IGlmIHRoZXJlIGlzIGEgZHJpdmVyIGFyZWEgd2l0aG91dCB2ZXJ0aWNhbCB3YWxsIG9uIGJvdGggc2lkZXNcbiAgICBpZiAoZHJpdmVyQXJlYU5vVmVydGljYWxXYWxsKSB7XG4gICAgICBjb25zdCBjb2FjaFdpZHRoID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pLnc7XG5cbiAgICAgIC8vcmVjYWxjdWxhdGVkIGJvcmRlcldpZHRoID0gY29hY2hXaWR0aCAtIDIgKiBkcml2ZXIgYXJlYSB3aWR0aCwgc2luY2UgdGhlIGRyaXZlciBhcmVhIGlzIG9uIGJvdGggc2lkZXNcbiAgICAgIGJvcmRlcldpZHRoID0gY29hY2hXaWR0aCAtIDIgKiAoZHJpdmVyQXJlYU5vVmVydGljYWxXYWxsLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemUpO1xuXG4gICAgICAvL3JlY2FsY3VsYXRlZCBib3JkZXJPZmZzZXRYID0gZHJpdmVyIGFyZWEgd2lkdGgsIHNpbmNlIHRoZSBib3JkZXIgc3RhcnRzIGFmdGVyIHRoZSBkcml2ZXIgYXJlYSBvbiB0aGUgbGVmdCBzaWRlXG4gICAgICBib3JkZXJPZmZzZXRYID0gZHJpdmVyQXJlYU5vVmVydGljYWxXYWxsLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENvYWNoT3ZlcmxhcHBpbmdJbmZvID0gdGhpcy5vdmVySGFuZ2luZ0VsZW1lbnRJbmZvcm1hdGlvbi5maW5kKFxuICAgICAgKGVsKSA9PiBlbC5jb2FjaElkID09PSBjb2FjaEl0ZW0uaWQsXG4gICAgKTtcblxuICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBvdmVyaGFuZ2luZyBwbGFjZXMgb3IgZ3JhcGhpY2FsIGVsZW1lbnRzIHRvIGFkanVzdCB0aGUgYm9yZGVyIHdpZHRoIGFuZCBvZmZzZXQgKyBnYXBcbiAgICAvLyBXZSBkbyBub3QgZGlmZmVyZW50aWF0ZSB3aGV0aGVyIHRoZXJlIGlzIHNvbWV0aGluZyB0byBiZSBkb25lIG9uIGJvdGggc2lkZXMgYXMgdGhpcyB3b3VsZCBsZWFkIHRvIHVubmVjZXNzYXJ5XG4gICAgLy8gY29tcGxleGl0eS4gU28gaWYgdGhlcmUgaXMgc29tZXRoaW5nIG9uIG9uZSBzaWRlLCB3ZSBqdXN0IGluY3JlYXNlIHRoZSBjb2FjaC1ib3JkZXIgb24gYm90aCBzaWRlcy5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50Q29hY2hPdmVybGFwcGluZ0luZm8/Lm92ZXJoYW5naW5nUGxhY2VzIHx8XG4gICAgICBjdXJyZW50Q29hY2hPdmVybGFwcGluZ0luZm8/Lm92ZXJoYW5naW5nR3JhcGhpY0FyZWFzXG4gICAgKSB7XG4gICAgICBib3JkZXJXaWR0aCArPSAyICogdGhpcy5iYXNlR3JpZFNpemU7IC8vIHdlIGluY3JlYXNlIHRoZSB3aWR0aCBieSAyIGdyaWQgc2l6ZXMgdG8gaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIHByb3RydWRlZCBwbGFjZXMgb24gYm90aCBzaWRlc1xuICAgICAgYm9yZGVyT2Zmc2V0WCA9IDA7IC8vIHdlIHN0YXJ0IGF0IDAgdG8gaGF2ZSBlbm91Z2ggc3BhY2Ugb24gdGhlIGxlZnQgc2lkZSBhcyB3ZWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAgICdzYmItc3ItY29hY2gtaGFzLW92ZXJoYW5naW5nLWVsZW1lbnRzJzpcbiAgICAgICAgICAgIGN1cnJlbnRDb2FjaE92ZXJsYXBwaW5nSW5mbz8ub3ZlcmhhbmdpbmdQbGFjZXMgfHxcbiAgICAgICAgICAgIGN1cnJlbnRDb2FjaE92ZXJsYXBwaW5nSW5mbz8ub3ZlcmhhbmdpbmdHcmFwaGljQXJlYXMgfHxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICB9KX1cIlxuICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXdpZHRoJzogYm9yZGVyV2lkdGgsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnOiBib3JkZXJIZWlnaHQsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy10b3AnOiB0aGlzLmNvYWNoQm9yZGVyUGFkZGluZyAqIC0xLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbGVmdCc6IGJvcmRlck9mZnNldFgsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1wb3NpdGlvbic6ICdhYnNvbHV0ZScsXG4gICAgICAgIH0pfVxuICAgICAgICBuYW1lPVwiQ09BQ0hfQk9SREVSX01JRERMRVwiXG4gICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhcbiAgICBjb2FjaDogQ29hY2hJdGVtLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHBsYWNlQ29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghY29hY2gucGxhY2VzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHJvd3Mgd2l0aCB0aGUgcGxhY2VzIHRvIHJlbmRlciBhIHRhYmxlXG4gICAgY29uc3QgdGFibGVSb3dQbGFjZXM6IFJlY29yZDxudW1iZXIsIFBsYWNlW10+ID0ge307XG4gICAgZm9yIChjb25zdCBwbGFjZSBvZiBjb2FjaC5wbGFjZXMpIHtcbiAgICAgIGlmICghdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0pIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0gPSBbcGxhY2VdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0ucHVzaChwbGFjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFibGVSb3dQbGFjZXMpXG4gICAgICAubWFwKChyb3dQbGFjZXM6IFBsYWNlW10sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ciBpZD1cInJvdy0ke2NvYWNoSW5kZXh9LSR7cm93UGxhY2VzWzBdLnBvc2l0aW9uLnl9XCIgZGF0YS1yb3ctaW5kZXg9JHtpbmRleH0+XG4gICAgICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKFxuICAgICAgICAgICAgICByb3dQbGFjZXMsXG4gICAgICAgICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgICBwbGFjZUNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMoXG4gICAgcGxhY2VzOiBQbGFjZVtdLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBkZWNrSW5kZXg6IG51bWJlcixcbiAgICBwbGFjZUNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIC8vIEZvciByZW5kZXJpbmcgdGhlIHBsYWNlcyB3aXRoaW4gYSB0ZCBlbGVtZW50LCBoZXJlIHdlIHVzZSByZXBlYXQgZGlyZWN0aXZlIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgZm9yIHJldXNpbmcgZWxlbWVudHMgKHRyYWNrIGJ5IGlkKS5cbiAgICBjb25zdCB0cmFja1BsYWNlSWQgPSBjb2FjaEluZGV4ICsgJy0nICsgcGxhY2VDb2FjaERlY2tJbmRleDtcbiAgICByZXR1cm4gaHRtbGAke3JlcGVhdChcbiAgICAgIHBsYWNlcyxcbiAgICAgIChwbGFjZSkgPT4gdHJhY2tQbGFjZUlkICsgJy0nICsgcGxhY2UubnVtYmVyLFxuICAgICAgKHBsYWNlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKHBsYWNlLmRpbWVuc2lvbik7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHBsYWNlLnBvc2l0aW9uKTtcbiAgICAgICAgY29uc3Qgcm90YXRpb24gPSBwbGFjZS5yb3RhdGlvbiB8fCAwO1xuICAgICAgICBjb25zdCB0ZXh0Um90YXRpb24gPSB0aGlzLmFsaWduVmVydGljYWwgPyAtOTAgOiAwO1xuICAgICAgICBjb25zdCBwbGFjZUlkID0gdGhpcy5nZXRQbGFjZUVsZW1lbnRJZChkZWNrSW5kZXgsIGNvYWNoSW5kZXgsIHBsYWNlLm51bWJlcik7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgaWQ9XCJjZWxsLSR7ZGVja0luZGV4fS0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlJzogTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLncsXG4gICAgICAgICAgICAgICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLmgsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtdGV4dC1yb3RhdGlvbic6IHRleHRSb3RhdGlvbixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIEBzZWxlY3RwbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudDxQbGFjZVNlbGVjdGlvbj4pID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgICAgZXhwb3J0cGFydHM9XCJzYmItc3ItcGxhY2UtcGFydFwiXG4gICAgICAgICAgICAgIGlkPSR7cGxhY2VJZH1cbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgICB0ZXh0PSR7cGxhY2UubnVtYmVyfVxuICAgICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgICAgc3RhdGU9JHtwbGFjZS5zdGF0ZX1cbiAgICAgICAgICAgICAgdHJhdmVsLWRpcmVjdGlvbj0ke3RoaXMudHJhdmVsRGlyZWN0aW9ufVxuICAgICAgICAgICAgICBjb2FjaC1pbmRleD0ke2NvYWNoSW5kZXh9XG4gICAgICAgICAgICAgIGRlY2staW5kZXg9JHtwbGFjZUNvYWNoRGVja0luZGV4fVxuICAgICAgICAgICAgICBkYXRhLWRlY2staW5kZXg9JHtkZWNrSW5kZXh9XG4gICAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgICAucHJldmVudENsaWNrPSR7dGhpcy5wcmV2ZW50UGxhY2VDbGlja31cbiAgICAgICAgICAgICAgP3Nob3dUaXRsZUluZm89XCIke3RoaXMuc2hvd1RpdGxlSW5mb31cIlxuICAgICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICBgO1xuICAgICAgfSxcbiAgICApfWA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZEdyYXBoaWNhbEVsZW1lbnRzKFxuICAgIGdyYXBoaWNhbEVsZW1lbnRzOiBCYXNlRWxlbWVudFtdLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFncmFwaGljYWxFbGVtZW50cykgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gZ3JhcGhpY2FsRWxlbWVudHM/Lm1hcCgoZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGljb24gPSBncmFwaGljYWxFbGVtZW50Lmljb24gPz8gJyc7XG4gICAgICBjb25zdCBlbGVtZW50Um90YXRpb24gPSBncmFwaGljYWxFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50ID1cbiAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihncmFwaGljYWxFbGVtZW50Lmljb24hKSA9PT0gLTE7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9XG4gICAgICAgIHRoaXMuYWxpZ25WZXJ0aWNhbCAmJiBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50XG4gICAgICAgICAgPyBlbGVtZW50Um90YXRpb24gLSA5MFxuICAgICAgICAgIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2NoZWNrIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbm90IGFuIGFyZWEgZWxlbWVudCwgc2luY2UgdGhpcyBlbGVtZW50IGlzIGRyYXduIHdpdGhvdXQgYW4gYXJlYSBjb21wb25lbnRcbiAgICAgIGlmICh0aGlzLm5vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICAgICAgZ3JhcGhpY2FsRWxlbWVudCxcbiAgICAgICAgZWxlbWVudEZpeGVkUm90YXRpb24sXG4gICAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICBjb2FjaERlY2tJbmRleCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlcyBhIHJlbmRlcmVkIGVsZW1lbnQgd2l0aCBhbiBhcmVhIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZ3JhcGhpY2FsRWxlbWVudFxuICAgKiBAcGFyYW0gcm90YXRpb25cbiAgICogQHBhcmFtIGNvYWNoRGltZW5zaW9uXG4gICAqIEBwYXJhbSBjb2FjaEluZGV4IHVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgaWQgZm9yIHRoZSBwb3BvdmVyIHRyaWdnZXJcbiAgICogQHBhcmFtIGNvYWNoRGVja0luZGV4IHVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgaWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gZm9yIFRBQkxFLCB3ZSB1c2UgdGhlIGFyZWEgY29tcG9uZW50IGl0c2VsZiB0byBkaXNwbGF5IHRoZSB0YWJsZSBpbnN0ZWFkIG9mIHRoZSBTVkcgZ3JhcGhpYy5cbiAgICAvLyBEdWUgdG8gZGlmZmVyZW50IGhlaWdodHMgYW5kIHdpZHRocywgaXQgd291bGRuJ3Qgc2hvdyBjb3JyZWN0bHkuIFRvIGNvcnJlY3QgdGhpcywgd2Ugd291bGRcbiAgICAvLyBuZWVkIGRpZmZpY3VsdCBjYWxjdWxhdGlvbnMgZm9yIHBvc2l0aW9uLCByb3RhdGlvbiBhbmQgZGltZW5zaW9uLlxuICAgIGNvbnN0IGlzTm90VGFibGVHcmFwaGljID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcbiAgICBjb25zdCBhcmVhUHJvcGVydHkgPSBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWMgPyBncmFwaGljYWxFbGVtZW50Lmljb24gOiBudWxsO1xuICAgIGNvbnN0IHN0cmV0Y2hIZWlnaHQgPVxuICAgICAgdGhpcy5pc0VsZW1lbnREaXJlY3RseU9uQm9yZGVyKGdyYXBoaWNhbEVsZW1lbnQsIGNvYWNoRGltZW5zaW9uKSAmJlxuICAgICAgYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN0cmV0Y2hIZWlnaHQsXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbixcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvL2dlbmVyYXRlIHVuaXF1ZSBpbmRleCBudW1iZXIgZm9yIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICBjb25zdCB0cmlnZ2VySWQgPSBgcG9wb3Zlci10cmlnZ2VyLSR7Y29hY2hEZWNrSW5kZXh9LSR7Y29hY2hJbmRleH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1gO1xuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG5cbiAgICBpZiAoZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ID09PSB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogLTEpIHtcbiAgICAgIGVsZW1lbnRNb3VudGluZyA9ICd1cHBlci1ib3JkZXInO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnkgKyBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbi5oID09PVxuICAgICAgY29hY2hEaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXRcbiAgICApIHtcbiAgICAgIGVsZW1lbnRNb3VudGluZyA9ICdsb3dlci1ib3JkZXInO1xuICAgIH1cblxuICAgIC8vIFRJTU8tNDU4MzBcbiAgICAvLyBJZiBhcmVhIGVsZW1lbnRzIGFyZSBsb2NhdGVkIGF0IHRoZSBib3JkZXIgb2YgY29hY2gsXG4gICAgLy8gd2UgaGF2ZSB0byBtYW51YWxseSBtb2RpZnkgdGhlIHBvc2l0aW9uIGFuZCBoZWlnaHQgb2YgdGhlIGFyZWEgZWxlbWVudCxcbiAgICAvLyBzbyB0aGF0IHdlIGdldCBhIGdhcCBmcm9tIHRoZSB2aXN1ZWwgY29hY2ggYm9yZGVyXG4gICAgaWYgKGVsZW1lbnRNb3VudGluZyAhPT0gJ2ZyZWUnKSB7XG4gICAgICBjYWxjdWxhdGVkUG9zaXRpb24ueSArPSBlbGVtZW50TW91bnRpbmcgPT09ICd1cHBlci1ib3JkZXInID8gMiA6IDE7XG4gICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLmggLT0gMztcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYVxuICAgICAgICBpZD1cIiR7dHJpZ2dlcklkfVwiXG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7ICdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLS1jdXJzb3ItcG9pbnRlcic6IGFyZWFQcm9wZXJ0eSAhPT0gbnVsbCB9KX1cIlxuICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgIH0pfVxuICAgICAgICBtb3VudGluZz0ke2VsZW1lbnRNb3VudGluZ31cbiAgICAgICAgYmFja2dyb3VuZD1cImRhcmtcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICAke2FyZWFQcm9wZXJ0eVxuICAgICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbWF4LXdpZHRoJzogdGhpcy5nbG9iYWxBcmVhSWNvbkRpbS53LFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1tYXgtaGVpZ2h0JzogdGhpcy5nbG9iYWxBcmVhSWNvbkRpbS5oLFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy13aWR0aCc6IGNhbGN1bGF0ZWREaW1lbnNpb24udyxcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1wYWRkaW5nLXBlcmNlbnQnOlxuICAgICAgICAgICAgICAgICAgICBhcmVhUHJvcGVydHkgIT09ICdFTlRSWV9FWElUJyA/IHRoaXMuZ2xvYmFsQXJlYUljb25QYWRkaW5nIDogMSxcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBuYW1lPSR7YXJlYVByb3BlcnR5fVxuICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc3ItZ3JhcGhpY19fZGltZW5zaW9uLS1zcXVhcmUtZGltXCJcbiAgICAgICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgICAgICAgIGBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWE+XG4gICAgICAke2FyZWFQcm9wZXJ0eSA/IHRoaXMuX3BvcG92ZXIodHJpZ2dlcklkLCBhcmlhTGFiZWxGb3JBcmVhKSA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpcyBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmVuZHNXaXRoKCdEUklWRVJfQVJFQScpXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoXG4gICAgICAgICAgICAnXycsXG4gICAgICAgICAgICB0aGlzLnNlYXRSZXNlcnZhdGlvbnNbdGhpcy5jdXJyU2VsZWN0ZWREZWNrSW5kZXhdLnZlaGljbGVUeXBlLFxuICAgICAgICAgIClcbiAgICAgICAgOiBncmFwaGljYWxFbGVtZW50Lmljb247XG5cbiAgICByZXR1cm4gaHRtbGAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy10b3AnOiBjYWxjdWxhdGVkUG9zaXRpb24ueSxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXJvdGF0aW9uJzogcm90YXRpb24sXG4gICAgICB9KX1cbiAgICAgIG5hbWU9JHtpY29uID8/IG5vdGhpbmd9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+YDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10sXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIXNlcnZpY2VFbGVtZW50cykgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gc2VydmljZUVsZW1lbnRzPy5tYXAoKHNlcnZpY2VFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgdGl0bGVEZXNjcmlwdGlvbiA9IHNlcnZpY2VFbGVtZW50Lmljb25cbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHNlcnZpY2VFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oc2VydmljZUVsZW1lbnQuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHNlcnZpY2VFbGVtZW50LnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IHNlcnZpY2VFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2dlbmVyYXRlIHVuaXF1ZSBpbmRleCBudW1iZXIgZm9yIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICAgIGNvbnN0IHRyaWdnZXJJZCA9IGBwb3BvdmVyLXRyaWdnZXItJHtjb2FjaERlY2tJbmRleH0tJHtjb2FjaEluZGV4fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi54fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi55fWA7XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIGlkPVwiJHt0cmlnZ2VySWR9XCJcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnOiBjYWxjdWxhdGVkRGltZW5zaW9uLncsXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWxlZnQnOiBjYWxjdWxhdGVkUG9zaXRpb24ueCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IGVsZW1lbnRGaXhlZFJvdGF0aW9uLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy0tY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIG5hbWU9JHtzZXJ2aWNlRWxlbWVudC5pY29uID8/IG5vdGhpbmd9XG4gICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgICAgJHt0aGlzLl9wb3BvdmVyKHRyaWdnZXJJZCwgdGl0bGVEZXNjcmlwdGlvbil9XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmFnZXMgdGhlIHNlbGVjdGVkIHBsYWNlIGV2ZW50IHRyaWdnZXJlZCBmcm9tIHRoZSBwbGFjZVxuICAgKiBFYWNoIHNlbGVjdGlvbiBlbWl0cyBhbiBhcnJheSBvZiBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gICAqIEBwYXJhbSBzZWxlY3RQbGFjZUV2ZW50XG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdFBsYWNlKHNlbGVjdFBsYWNlRXZlbnQ6IEN1c3RvbUV2ZW50PFBsYWNlU2VsZWN0aW9uPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbDtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9IC0xO1xuICAgIC8vIENoZWNrIGFueSBrZXlib2FyZCBldmVudCB3YXMgdHJpZ2dlcmVkIGluc2lkZSB0aGUgc2VhdCByZXNlcnZhdGlvbiBjb21wb25lbnQsXG4gICAgLy8gc28gd2UgY2FuIHNheSB0aGUgbmF0aXZlIGJyb3dzZXIgZm9jdXMgbGllcyBvbiB0aGUgY29tcG9uZW50XG4gICAgaWYgKCF0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzKSB7XG4gICAgICB0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJldmVudFBsYWNlQ2xpY2spIHtcbiAgICAgIC8vIEFkZCBwbGFjZSB0byBwbGFjZSBjb2xsZWN0aW9uXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKHNlbGVjdGVkUGxhY2UpO1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRQbGFjZUluQ29hY2goc2VsZWN0ZWRQbGFjZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25TZWxlY3ROYXZDb2FjaChldmVudDogQ3VzdG9tRXZlbnQ8bnVtYmVyPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkTmF2Q29hY2hJbmRleCA9IGV2ZW50LmRldGFpbDtcblxuICAgIHRoaXMuaXNLZXlib2FyZE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljayA9IGZhbHNlO1xuICAgIHRoaXMuaGFzU2VhdFJlc2VydmF0aW9uTmF0aXZlRm9jdXMgPSB0cnVlO1xuXG4gICAgaWYgKHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gbnVsbCAmJiBzZWxlY3RlZE5hdkNvYWNoSW5kZXggIT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51bmZvY3VzUGxhY2VFbGVtZW50KCk7XG4gICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWROYXZDb2FjaChzZWxlY3RlZE5hdkNvYWNoSW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ID09PSB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXgpIHtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkQ29hY2goKTtcbiAgICAgIHRoaXMucHJlc2VsZWN0UGxhY2VJbkNvYWNoKCk7XG4gICAgfVxuXG4gICAgLy9jbG9zZSBhbGwgb3BlbmVkIHBvcG92ZXJzXG4gICAgdGhpcy5fY2xvc2VQb3BvdmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzQXV0b1Njcm9sbGluZyA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwb3BvdmVyIGZvciBleHRyYSBzZXJ2aWNlIGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSB0cmlnZ2VySWRcbiAgICogQHBhcmFtIHBvcG92ZXJDb250ZW50XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9wb3BvdmVyKFxuICAgIHRyaWdnZXJJZDogc3RyaW5nLFxuICAgIHBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBudWxsIHwgdHlwZW9mIG5vdGhpbmcsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItcG9wb3ZlciB0cmlnZ2VyPVwiJHt0cmlnZ2VySWR9XCIgaG92ZXItdHJpZ2dlcj1cIlwiPlxuICAgICAgICA8cCBjbGFzcz1cInNiYi10ZXh0LXMgc2JiLXNyLXBvcG92ZXJcIj4ke3BvcG92ZXJDb250ZW50fTwvcD5cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VyIHRvIGNsb3NlIGFsbCBvcGVuZWQgcG9wb3ZlcnMgKG5vcm1hbGx5IG9ubHkgb25lIGlzIG9wZW5lZCBhdCBhIHRpbWUpXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9jbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290XG4gICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGw8U2JiUG9wb3ZlckVsZW1lbnQ+KCdzYmItcG9wb3ZlcjpzdGF0ZShzdGF0ZS1vcGVuZWQpJylcbiAgICAgIC5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLmNsb3NlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGVzY3JpcHRpb25UYWJsZUNvYWNoKGNvYWNoSXRlbTogQ29hY2hJdGVtKTogc3RyaW5nIHtcbiAgICAvL3Nob3cgZGlmZmVyZW50IHRhYmxlIGNhcHRpb24gZm9yIHNjcmVlbnJlYWRlciBpZiBpdCBpcyBhIGxvY29tb3RpdmVcbiAgICBpZiAoY29hY2hJdGVtLnR5cGUgPT09ICdMT0NPTU9USVZFX0NPQUNIJykge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0xPQ09NT1RJVkUnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoIWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0JMT0NLRURfVEFCTEVfQ0FQVElPTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgICAgY29hY2hJdGVtLmlkLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgbGV0IHRhYmxlQ29hY2hEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGNvbnN0IGFyZWFEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzISk7XG4gICAgY29uc3Qgc2VydmljZURlc2NyaXB0aW9ucyA9IHRoaXMuX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMhKTtcblxuICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICBjb2FjaEl0ZW0uaWQsXG4gICAgXSk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgLy8gRXhwYW5kcyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBzZWF0cyBhbmQgYmljeWNsZSBzcGFjZXMgYXMgaW5mb1xuICAgICAgY29uc3QgZnJlZVBsYWNlcyA9IHRoaXMuZ2V0QXZhaWxhYmxlRnJlZVBsYWNlc051bUZyb21Db2FjaChjb2FjaEl0ZW0ucGxhY2VzKTtcbiAgICAgIGNvbnN0IGZyZWVQbGFjZXNUeHQgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAnQ09BQ0hfQVZBSUxBQkxFX05VTUJFUl9PRl9QTEFDRVMnLFxuICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICBbZnJlZVBsYWNlcy5zZWF0cywgZnJlZVBsYWNlcy5iaWN5Y2xlc10sXG4gICAgICApO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uID0gdGFibGVDb2FjaERlc2NyaXB0aW9uLmNvbmNhdCgnLiAnKS5jb25jYXQoZnJlZVBsYWNlc1R4dCkuY29uY2F0KCcuICcpO1xuICAgIH1cblxuICAgIGlmICghIWFyZWFEZXNjcmlwdGlvbnMgfHwgISFzZXJ2aWNlRGVzY3JpcHRpb25zKSB7XG4gICAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gKz1cbiAgICAgICAgJy4gJyArIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0FWQUlMQUJMRV9TRVJWSUNFUycsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpICsgJzogJztcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPSBzZXJ2aWNlRGVzY3JpcHRpb25zICsgJywgJyArIGFyZWFEZXNjcmlwdGlvbnMgKyAnLic7XG4gICAgfVxuICAgIHJldHVybiB0YWJsZUNvYWNoRGVzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIF9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhkZXNjcmlwdGlvbnNFbGVtZW50czogQmFzZUVsZW1lbnRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5pcXVlRGVzY3JpcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uc0VsZW1lbnRzXG4gICAgICA/Lm1hcCgoZGVzY3JpcHRpb25FbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbjtcbiAgICAgICAgaWYgKCFpY29uKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkFscmVhZHlFeGlzdCA9IHVuaXF1ZURlc2NyaXB0aW9ucy5pbmRleE9mKGljb24pID4gLTE7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgICBkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbiEsXG4gICAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaXNWYWxpZERlc2NyaXB0aW9uID1cbiAgICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGljb24pID09PSAtMSAmJlxuICAgICAgICAgIHRoaXMubm90QXJlYUVsZW1lbnRzLmluZGV4T2YoaWNvbikgPT09IC0xO1xuXG4gICAgICAgIGlmICghZGVzY3JpcHRpb25BbHJlYWR5RXhpc3QpIHtcbiAgICAgICAgICB1bmlxdWVEZXNjcmlwdGlvbnMucHVzaChkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbiEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRyYW5zbGF0aW9uICYmICFkZXNjcmlwdGlvbkFscmVhZHlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdUNBLDhCQUE4QixRQUFRO0FBQ3RDLGlDQUFpQyxRQUFRO0FBQ3pDLHNDQUFzQyxRQUFRO0FBQzlDLHlDQUF5QyxRQUFRO0FBQ2pELGdDQUFnQyxRQUFROzs7OztBQU14QyxJQUFhLDRCQUFiLGNBQStDLDJCQUEwQjtDQUF6RSxjQUFBOztBQUlVLE9BQUEsWUFBWSxJQUFJLHNCQUFzQixLQUFLO0FBSTNDLE9BQUEsOEJBQThCLENBQUMsYUFBYTs7O0FBUHBCLE9BQUEsY0FBc0I7OztBQUMvQixPQUFBLFNBQXlCLENBQUMsaUJBQWlCLFVBQVUseUJBQU0sQ0FBQzs7Q0FRaEUsV0FBVyxtQkFBdUM7QUFDbkUsUUFBTSxXQUFXLGtCQUFrQjtBQUVuQyxNQUFJLGtCQUFrQixJQUFJLGdCQUFnQixDQUN4QyxLQUFJLEtBQUssY0FDUCxNQUFLLFlBQ0QsaUJBQWlCLFFBQVEsQ0FDMUIsU0FBUyxVQUFVLE1BQU0sZ0JBQWdCLFdBQVcsQ0FBQztNQUV4RCxNQUFLLFlBQ0QsaUJBQWlCLFFBQVEsQ0FDMUIsU0FBUyxVQUFVLE1BQU0sYUFBYSxZQUFZLElBQUksQ0FBQzs7Q0FLN0MsYUFBYSxtQkFBdUM7QUFDckUsUUFBTSxhQUFhLGtCQUFrQjtBQUdyQyxP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
510
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhdC1yZXNlcnZhdGlvbi5jb21wb25lbnQtREZKVkZtckkuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzLWV4cGVyaW1lbnRhbC9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24vc2VhdC1yZXNlcnZhdGlvbi5zY3NzP2lubGluZSIsIi4uLy4uLy4uL3NyYy9lbGVtZW50cy1leHBlcmltZW50YWwvc2VhdC1yZXNlcnZhdGlvbi9zZWF0LXJlc2VydmF0aW9uL3NlYXQtcmVzZXJ2YXRpb24uY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzJyBhcyBzYmI7XG5AdXNlICcuLi9jb21tb24vc3R5bGVzL3NlYXQtcmVzZXJ2YXRpb24tbWl4aW5zJyBhcyBzYmItc3ItbWl4aW5zO1xuQHVzZSAnLi4vY29tbW9uL3N0eWxlcy9zZWF0LXJlc2VydmF0aW9uLWZ1bmN0aW9ucycgYXMgc2JiLXNyLWZ1bmN0aW9ucztcblxuLy8gTWF4aW11bSByZXNwb25zaXZlIG5hdmlnYXRpb24gd2lkdGgsIGNvbnNpc3RzIG9mIHRoZSBtYXhpbXVtIG5hdmlnYXRpb24gZXh0ZW50IG1pbnVzIDJ4IG5hdiBkaXJlY3Rpb24gYnV0dG9ucyA5NnB4IGFuZCA4cHggcGFkZGluZy5cbiRtYXgtY29hY2gtbmF2aWdhdGlvbi13aWR0aDogY2FsYyg5NjBweCAtIDk2cHggLSA4cHgpO1xuJHNjcm9sbGJhci1oZWlnaHQ6IDE2cHg7XG5cbjpob3N0IHtcbiAgLy8gTm90ZTogVGhlIHVzZSBvZiBweCBpcyBpbnRlbnRpb25hbCBoZXJlLCBiZWNhdXNlIG1hbnkgd2lkdGhzL2hlaWdodHMsIHJvdGF0aW9ucywgc2NhbGVzLCBldGMuIGRlcGVuZHMgb24gdGhpcy5cbiAgLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmlkLXNpemU6IDE2cHg7XG4gIC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24taGVpZ2h0OiAwO1xuICAtLXNiYi1zZWF0LXJlc2VydmF0aW9uLWRlY2tzOiAxO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IGluaGVyaXQ7XG5cbiAgOjpwYXJ0KGNvYWNoLWZsb29yKSB7XG4gICAgZmlsbDogdmFyKC0tc2JiLWJhY2tncm91bmQtY29sb3ItMik7XG5cbiAgICAvLyBJbiBIaWdoIENvbnRyYXN0IE1vZGUgd2Ugc2V0IGZsb29yIGNvbG9yIHRvIHRyYW5zcGFyZW50XG4gICAgQGluY2x1ZGUgc2JiLmlmLWZvcmNlZC1jb2xvcnMge1xuICAgICAgZmlsbDogdHJhbnNwYXJlbnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIHJvdGF0ZXMgdGhlIERPTS1wYXJ0IFwiY29hY2gtZmxvb3JcIiBieSAxODAgZGVncmVlcyBpZiB0aGUgaG9zdCBpcyBpbiBSVEwgbW9kZS5cbkBpbmNsdWRlIHNiYi1zci1taXhpbnMucm90YXRlLWRvbS1wYXJ0KGNvYWNoLWZsb29yKTtcblxuW3BvcG92ZXJdOndoZXJlKHNiYi1wb3BvdmVyKSB7XG4gIEBpbmNsdWRlIHNiYi5wb3BvdmVyLXJlc2V0O1xuXG4gIC5zYmItc3ItcG9wb3ZlciB7XG4gICAgbWFyZ2luLWJsb2NrOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg0KTtcbiAgfVxufVxuXG4vLyBTVEFSVCAtIFZlcnRpY2FsIG1vZGVcbjpob3N0KFthbGlnbi12ZXJ0aWNhbF0pIHtcbiAgJGNvYWNoLW5hdmlnYXRpb24tcGFkZGluZzogNTtcbiAgJGNvYWNoLXNjcm9sbGJhci13aWR0aDogMjQ7XG4gICRjb2FjaC1ncmlkLXdpZHRoOiBjYWxjKHZhcigtLXNiYi1zZWF0LXJlc2VydmF0aW9uLWhlaWdodCkgKyAkY29hY2gtc2Nyb2xsYmFyLXdpZHRoKTtcblxuICAuc2JiLXNyX19jb21wb25lbnQge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMjIpO1xuICAgIGhlaWdodDogaW5oZXJpdDtcblxuICAgIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogc21hbGwpIHtcbiAgICAgIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNTQpO1xuICAgIH1cblxuICAgIG5hdi5zYmItc3ItbmF2aWdhdGlvbixcbiAgICB1bC5zYmItc3ItbmF2aWdhdGlvbl9fbGlzdC1jb2FjaGVzIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgfVxuXG4gICAgbmF2LnNiYi1zci1uYXZpZ2F0aW9uIHtcbiAgICAgIHBhZGRpbmc6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDE2KSAwO1xuXG4gICAgICAuc2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uIHtcbiAgICAgICAgbGVmdDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMSk7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcm90YXRlOiA5MGRlZztcblxuICAgICAgICBAaW5jbHVkZSBzYmIubXEoJGZyb206IGxhcmdlKSB7XG4gICAgICAgICAgbGVmdDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHVsLnNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXMge1xuICAgICAgICBtYXgtd2lkdGg6IGluaXRpYWw7XG5cbiAgICAgICAgLy8gUGFkZGluZyBuZWVkcyB0byB2aXN1YWwgZm9jdXMtdmlzaWJsZSBzdHlsZSBmb3IgbmF2IGJ1dHRvbiBpbnNpZGUgb3ZlcmZsb3cgY29udGVudCxcbiAgICAgICAgLy8gb3RoZXJ3aXNlIGZvY3VzLXZpc2libGUgc3R5bGUgaXMgY3V0dGVkLlxuICAgICAgICBwYWRkaW5nOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgkY29hY2gtbmF2aWdhdGlvbi1wYWRkaW5nKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiBzY3JvbGw7XG5cbiAgICAgICAgLy8gaW4gdmVydGljYWwgbW9kZSwgdGhlIGxpIG11c3QgYmUgZmxleGVkOyBvdGhlcndpc2UgaXQgd291bGQgY2FsY3VsYXRlIHRoZSB3cm9uZyBoZWlnaHRcbiAgICAgICAgLy8gZHVlIHRvIHVzZXJhZ2VudCBzdHlsZSBzZXQgdG8gXCJsaXN0LWl0ZW1cIiBmb3IgZGlzcGxheVxuICAgICAgICBsaSB7XG4gICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFZFUlRJQ0FMIE1PREUgLSBMQUJFTE1VTFRJUExFIERFQ0tTIC0gTEFCRUxTXG4gIC5zYmItc3JfX3dyYXBwZXItY29hY2gtZGVja3Mge1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAuc2JiLXNyX193cmFwcGVyLWRlY2stbGFiZWxzIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZTtcbiAgICAgIHdpZHRoOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgkY29hY2gtZ3JpZC13aWR0aCk7XG4gICAgICBoZWlnaHQ6IGluaXRpYWw7XG5cbiAgICAgIGIge1xuICAgICAgICBpbmxpbmUtc2l6ZTogY2FsYyg1MCUgLSBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgxNikpO1xuICAgICAgICBibG9jay1zaXplOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgyMCk7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDE2KTtcbiAgICAgICAgcm90YXRlOiBpbml0aWFsO1xuICAgICAgICB3cml0aW5nLW1vZGU6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVkVSVElDQUwgTU9ERSAtIFNFQVRNQVAgU0NST0xMIEFSRUFcbiAgLnNiYi1zcl9fd3JhcHBlci1zY3JvbGxhcmVhIHtcbiAgICB3aWR0aDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oJGNvYWNoLWdyaWQtd2lkdGgpO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuIHNjcm9sbDtcblxuICAgIC5zYmItc3JfX3BhcmVudCB7XG4gICAgICByb3RhdGU6IDkwZGVnO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZFUlRJQ0FMIE1PREUgLSBUUkFWRUwtRElSRUNUSU9OXG4gIC5zYmItc3ItdHJhdmVsLWRpcmVjdGlvbi13cmFwcGVyIHtcbiAgICB3aWR0aDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0odmFyKC0tc2JiLXNlYXQtcmVzZXJ2YXRpb24taGVpZ2h0KSk7XG4gICAgbWFyZ2luLWJsb2NrLXN0YXJ0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg0KTtcbiAgfVxufVxuXG4vLyBFTkQgLSBWZXJ0aWNhbCBtb2RlXG5cbi5zYmItc3ItbmF2aWdhdGlvbiB7XG4gIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMyk7XG59XG5cbi5zYmItc3ItbmF2aWdhdGlvbiAuc2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB0b3A6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDIpO1xuXG4gIEBpbmNsdWRlIHNiYi5tcSgkZnJvbTogbGFyZ2UpIHtcbiAgICB0b3A6IDA7XG4gIH1cbn1cblxuLnNiYi1zcl9fY29tcG9uZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiBjYWxjKHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDY0KSAtICRzY3JvbGxiYXItaGVpZ2h0KTtcbn1cblxuLy8gVFJBVkVMIERJUkVDVElPTlxuLnNiYi1zci10cmF2ZWwtZGlyZWN0aW9uLXdyYXBwZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sdW1uLWdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG4gIG1hcmdpbi1ibG9jazogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oOCkgc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG4gIGZvbnQtc2l6ZTogdmFyKC0tc2JiLXRleHQtZm9udC1zaXplLXMpO1xuXG4gIC5zYmItc3JfX3RyYXZlbC1kaXJlY3Rpb24tLWFycm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cblxuLy8gTkFWSUdBVElPTiBORVdcbi5zYmItc3ItbmF2aWdhdGlvbi13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cblxuLnNiYi1zci1uYXZpZ2F0aW9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLWlubGluZTogMTZweDtcbn1cblxuLnNiYi1zci1uYXZpZ2F0aW9uX19saXN0LWNvYWNoZXMge1xuICBAaW5jbHVkZSBzYmIubGlzdC1yZXNldDtcbiAgQGluY2x1ZGUgc2JiLnNjcm9sbGJhcjtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IG5vd3JhcDtcbiAgZ2FwOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg0KTtcbiAgcGFkZGluZzogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNikgc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNSkgMDtcbiAgbWF4LXdpZHRoOiAkbWF4LWNvYWNoLW5hdmlnYXRpb24td2lkdGg7XG5cbiAgLy8gU2V0IHNiYiBzY3JvbGxiYXIgdHJhbnNwYXJlbnQgYnkgZGVmYXVsdFxuICAtLXNiYi1zY3JvbGxiYXItY29sb3I6IHRyYW5zcGFyZW50O1xuXG4gIG92ZXJmbG93OiBzY3JvbGwgaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLSBTZWF0IFJlc2VydmF0aW9uIE1haW4gTmF2aWdhdGlvbiAtIEVORCAtLS0tLS0tLS0tLS0tLS0tXG5cbi8vIC0tLS0tLS0tLS0tLS0gU2VhdCBSZXNlcnZhdGlvbiBDb2FjaGVzIC0gU1RBUlQgLS0tLS0tLS0tLS0tLS0tLS1cbi5zYmItc3JfX3dyYXBwZXItY29hY2gtZGVja3Mge1xuICBkaXNwbGF5OiBmbGV4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBoZWlnaHQ6IGluaGVyaXQ7XG5cbiAgLnNiYi1zcl9fd3JhcHBlci1kZWNrLWxhYmVscyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgaGVpZ2h0OiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSh2YXIoLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1oZWlnaHQpKTtcbiAgICB3cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyO1xuXG4gICAgYiB7XG4gICAgICBoZWlnaHQ6IGNhbGMoNTAlIC0gc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMTYpKTtcbiAgICAgIHdpZHRoOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgyMCk7XG4gICAgICBtYXJnaW4tYmxvY2stZW5kOiAxNnB4O1xuICAgICAgcm90YXRlOiAxODBkZWc7XG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICBsaW5lLWhlaWdodDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oMjApO1xuICAgIH1cbiAgfVxufVxuXG4uc2JiLXNyX193cmFwcGVyLXNjcm9sbGFyZWEge1xuICBAaW5jbHVkZSBzYmIuc2Nyb2xsYmFyO1xuXG4gIG92ZXJmbG93OiBzY3JvbGwgaGlkZGVuO1xuICBwYWRkaW5nLWJsb2NrOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4KSBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSgxNik7XG5cbiAgLnNiYi1zcl9fcGFyZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG59XG5cbi5zYmItc3JfX2xpc3QtZGVja3Mge1xuICBAaW5jbHVkZSBzYmIubGlzdC1yZXNldDtcblxuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uc2JiLXNyX19saXN0LWRlY2tzLS1nYXAge1xuICBnYXA6IHNiYi1zci1mdW5jdGlvbnMuc3ItcHgtdG8tcmVtKDQ4KTtcbn1cblxuLnNiYi1zcl9fbGlzdC1pdGVtLWRlY2sge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zYmItc3JfX2xpc3QtY29hY2hlcyB7XG4gIEBpbmNsdWRlIHNiYi5saXN0LXJlc2V0O1xuXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGdhcDogc2JiLXNyLWZ1bmN0aW9ucy5zci1weC10by1yZW0oNCk7XG59XG5cbi8vIElmIHRoZXJlIGFyZSBvdmVyaGFuZ2luZyBlbGVtZW50cyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBnYXAgYmV0d2VlbiBjb2FjaGVzXG4uc2JiLXNyX19saXN0LWRlY2tzOmhhcyguc2JiLXNyLWNvYWNoLWhhcy1vdmVyaGFuZ2luZy1lbGVtZW50cykgLnNiYi1zcl9fbGlzdC1jb2FjaGVzIHtcbiAgZ2FwOiBzYmItc3ItZnVuY3Rpb25zLnNyLXB4LXRvLXJlbSg4KTtcbn1cblxuLnNiYi1zcl9faXRlbS1jb2FjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnNiYi1zci1jb2FjaC13cmFwcGVyX190YWJsZSB7XG4gIG91dGxpbmU6IDA7XG59XG4iLCJpbXBvcnQgeyBTYmJMYW5ndWFnZUNvbnRyb2xsZXIgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9jb3JlL2NvbnRyb2xsZXJzLmpzJztcbmltcG9ydCB7IGJveFNpemluZ1N0eWxlcyB9IGZyb20gJ0BzYmItZXN0YS9seW5lLWVsZW1lbnRzL2NvcmUvc3R5bGVzLmpzJztcbmltcG9ydCB0eXBlIHsgU2JiUG9wb3ZlckVsZW1lbnQgfSBmcm9tICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9wb3BvdmVyLmpzJztcbmltcG9ydCB7XG4gIGh0bWwsXG4gIGlzU2VydmVyLFxuICBub3RoaW5nLFxuICB1bnNhZmVDU1MsXG4gIHR5cGUgQ1NTUmVzdWx0R3JvdXAsXG4gIHR5cGUgUHJvcGVydHlWYWx1ZXMsXG4gIHR5cGUgVGVtcGxhdGVSZXN1bHQsXG59IGZyb20gJ2xpdCc7XG5pbXBvcnQgeyBjbGFzc01hcCB9IGZyb20gJ2xpdC9kaXJlY3RpdmVzL2NsYXNzLW1hcC5qcyc7XG5pbXBvcnQgeyByZXBlYXQgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9yZXBlYXQuanMnO1xuaW1wb3J0IHsgc3R5bGVNYXAgfSBmcm9tICdsaXQvZGlyZWN0aXZlcy9zdHlsZS1tYXAuanMnO1xuXG5pbXBvcnQgeyBnZXRJMThuU2VhdFJlc2VydmF0aW9uIH0gZnJvbSAnLi4vY29tbW9uL3RyYW5zbGF0aW9ucy50cyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvYWNoSXRlbSxcbiAgQ29hY2hJdGVtRGV0YWlscyxcbiAgUGxhY2UsXG4gIEVsZW1lbnREaW1lbnNpb24sXG4gIEJhc2VFbGVtZW50LFxuICBQbGFjZVNlbGVjdGlvbixcbiAgU2VhdFJlc2VydmF0aW9uLFxufSBmcm9tICcuLi9jb21tb24vdHlwZXMudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLWFyZWEvc2VhdC1yZXNlcnZhdGlvbi1hcmVhLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBTYmJTZWF0UmVzZXJ2YXRpb25HcmFwaGljRWxlbWVudCB9IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy9zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMuY29tcG9uZW50LnRzJztcbmltcG9ydCB7IFNiYlNlYXRSZXNlcnZhdGlvbk5hdmlnYXRpb25Db2FjaEVsZW1lbnQgfSBmcm9tICcuLi9zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2gvc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoLmNvbXBvbmVudC50cyc7XG5pbXBvcnQgeyBTYmJTZWF0UmVzZXJ2YXRpb25QbGFjZUNvbnRyb2xFbGVtZW50IH0gZnJvbSAnLi4vc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sL3NlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC5jb21wb25lbnQudHMnO1xuaW1wb3J0IHsgU2JiU2VhdFJlc2VydmF0aW9uU2NvcGVkRWxlbWVudCB9IGZyb20gJy4uL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkL3NlYXQtcmVzZXJ2YXRpb24tc2NvcGVkLmNvbXBvbmVudC50cyc7XG5cbmltcG9ydCB7IFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IH0gZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLWJhc2UtZWxlbWVudC50cyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9zZWF0LXJlc2VydmF0aW9uLnNjc3M/aW5saW5lJztcblxuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9idXR0b24uanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9zY3JlZW4tcmVhZGVyLW9ubHkuanMnO1xuaW1wb3J0ICdAc2JiLWVzdGEvbHluZS1lbGVtZW50cy9wb3BvdmVyLmpzJztcblxuU2JiU2VhdFJlc2VydmF0aW9uQXJlYUVsZW1lbnQuZGVmaW5lKCk7XG5TYmJTZWF0UmVzZXJ2YXRpb25HcmFwaGljRWxlbWVudC5kZWZpbmUoKTtcblNiYlNlYXRSZXNlcnZhdGlvblBsYWNlQ29udHJvbEVsZW1lbnQuZGVmaW5lKCk7XG5TYmJTZWF0UmVzZXJ2YXRpb25OYXZpZ2F0aW9uQ29hY2hFbGVtZW50LmRlZmluZSgpO1xuU2JiU2VhdFJlc2VydmF0aW9uU2NvcGVkRWxlbWVudC5kZWZpbmUoKTtcblxuLyoqXG4gKiBNYWluIGNvbXBvbmVudCBmb3IgdGhlIHNlYXQgcmVzZXJ2YXRpb24uXG4gKlxuICovXG5leHBvcnQgY2xhc3MgU2JiU2VhdFJlc2VydmF0aW9uRWxlbWVudCBleHRlbmRzIFNlYXRSZXNlcnZhdGlvbkJhc2VFbGVtZW50IHtcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSByZWFkb25seSBlbGVtZW50TmFtZTogc3RyaW5nID0gJ3NiYi1zZWF0LXJlc2VydmF0aW9uJztcbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSBzdHlsZXM6IENTU1Jlc3VsdEdyb3VwID0gW2JveFNpemluZ1N0eWxlcywgdW5zYWZlQ1NTKHN0eWxlKV07XG5cbiAgcHJpdmF0ZSBfbGFuZ3VhZ2UgPSBuZXcgU2JiTGFuZ3VhZ2VDb250cm9sbGVyKHRoaXMpO1xuICBwcml2YXRlIF9jb2FjaGVzSHRtbFRlbXBsYXRlPzogVGVtcGxhdGVSZXN1bHQ7XG5cbiAgLy8gQXJlYSBpY29ucyB0aGF0IHNob3VsZCBub3QgYmUgZml4ZWQgZHVyaW5nIHJvdGF0aW9uIHdoZW4gdmVydGljYWwgbW9kZSBpcyBzZWxlY3RlZFxuICBwcml2YXRlIF9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucyA9IFsnRU5UUllfRVhJVCddO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSB3aWxsVXBkYXRlKGNoYW5nZWRQcm9wZXJ0aWVzOiBQcm9wZXJ0eVZhbHVlczx0aGlzPik6IHZvaWQge1xuICAgIHN1cGVyLndpbGxVcGRhdGUoY2hhbmdlZFByb3BlcnRpZXMpO1xuXG4gICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzLmhhcygnaGFzTmF2aWdhdGlvbicpKSB7XG4gICAgICBpZiAodGhpcy5oYXNOYXZpZ2F0aW9uKSB7XG4gICAgICAgIHRoaXMuc2hhZG93Um9vdFxuICAgICAgICAgID8ucXVlcnlTZWxlY3RvckFsbCgndGFibGUnKVxuICAgICAgICAgIC5mb3JFYWNoKCh0YWJsZSkgPT4gdGFibGUucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hhZG93Um9vdFxuICAgICAgICAgID8ucXVlcnlTZWxlY3RvckFsbCgndGFibGUnKVxuICAgICAgICAgIC5mb3JFYWNoKCh0YWJsZSkgPT4gdGFibGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICcwJykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBmaXJzdFVwZGF0ZWQoY2hhbmdlZFByb3BlcnRpZXM6IFByb3BlcnR5VmFsdWVzPHRoaXM+KTogdm9pZCB7XG4gICAgc3VwZXIuZmlyc3RVcGRhdGVkKGNoYW5nZWRQcm9wZXJ0aWVzKTtcblxuICAgIC8vIFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgZmlyc3QgdXBkYXRlIGlzIGNvbXBsZXRlIHRvIGluaXQgZGlmZmVyZW50IEhUTUwgZWxlbWVudCBkaW1lbnNpb25zXG4gICAgdGhpcy51cGRhdGVDb21wbGV0ZS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdE5hdmlnYXRpb25TZWxlY3Rpb25CeVNjcm9sbEV2ZW50KCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVuZGVyKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgdGhpcy5faW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTtcbiAgICByZXR1cm4gdGhpcy5fY29hY2hlc0h0bWxUZW1wbGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFZlaGljbGVTZWF0UmVzZXJ2YXRpb25Db25zdHJ1Y3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fY29hY2hlc0h0bWxUZW1wbGF0ZSA9IGh0bWxgXG4gICAgICAke3RoaXMuX3JlbmRlclRyYXZlbERpcmVjdGlvbigpfVxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fY29tcG9uZW50XCI+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyTmF2aWdhdGlvbigpfVxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzYmItc3JfX3dyYXBwZXItY29hY2gtZGVja3NcIlxuICAgICAgICAgIEBrZXlkb3duPSR7KGV2dDogS2V5Ym9hcmRFdmVudCkgPT4gdGhpcy5rZXlib2FyZFNlYXRtYXBFdmVudEhhbmRsaW5nKGV2dCl9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2JiLXNyX193cmFwcGVyLWRlY2stbGFiZWxzXCI+JHt0aGlzLl9yZW5kZXJEZWNrTGFiZWxzKCl9PC9kaXY+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgQHNjcm9sbD0keygpID0+IHRoaXMuY29hY2hBcmVhU2Nyb2xsZW5kKCl9XG4gICAgICAgICAgICBpZD1cInNiYi1zcl9fd3JhcHBlci1zY3JvbGxhcmVhXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2JiLXNyX193cmFwcGVyLXNjcm9sbGFyZWFcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBpZD1cInNiYi1zcl9fcGFyZW50LWFyZWFcIiBjbGFzcz1cInNiYi1zcl9fcGFyZW50XCI+XG4gICAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7XG4gICAgICAgICAgICAgICAgICAnc2JiLXNyX19saXN0LWRlY2tzJzogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICdzYmItc3JfX2xpc3QtZGVja3MtLWdhcCc6IHRoaXMuaGFzTXVsdGlwbGVEZWNrcyxcbiAgICAgICAgICAgICAgICB9KX1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJHt0aGlzLnNlYXRSZXNlcnZhdGlvbnM/Lm1hcChcbiAgICAgICAgICAgICAgICAgIChzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbiwgY29hY2hEZWNrSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbGA8bGkgY2xhc3M9XCJzYmItc3JfX2xpc3QtaXRlbS1kZWNrXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwic2JiLXNyX19saXN0LWNvYWNoZXNcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAke3RoaXMuX3JlbmRlckNvYWNoZXMoc2VhdFJlc2VydmF0aW9uLCBjb2FjaERlY2tJbmRleCl9XG4gICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5gO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlckRlY2tMYWJlbHMoKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghdGhpcy5oYXNNdWx0aXBsZURlY2tzKSByZXR1cm4gbnVsbDtcblxuICAgIHJldHVybiB0aGlzLnNlYXRSZXNlcnZhdGlvbnMubWFwKChzZWF0UmVzZXJ2YXRpb24pID0+IHtcbiAgICAgIGNvbnN0IGRlY2tEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAgIHNlYXRSZXNlcnZhdGlvbi5kZWNrQ29hY2hMZXZlbCxcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gaHRtbGA8YiBhcmlhLWhpZGRlbj1cInRydWVcIj4ke2RlY2tEZXNjcmlwdGlvbn08L2I+YDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlck5hdmlnYXRpb25Db250cm9sQnV0dG9uKGJ0bkRpcmVjdGlvbjogc3RyaW5nKTogVGVtcGxhdGVSZXN1bHQgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbiB8fCAhdGhpcy5zZWF0UmVzZXJ2YXRpb25zKSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBidG5OYXZpZ2F0aW9uRGlyZWN0aW9uSWQgPVxuICAgICAgYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fUklHSFQnXG4gICAgICAgID8gJ3NiYi1zci1uYXZpZ2F0aW9uX193cmFwcGVyLWJ1dHRvbi1kaXJlY3Rpb24tLXJpZ2h0J1xuICAgICAgICA6ICdzYmItc3ItbmF2aWdhdGlvbl9fd3JhcHBlci1idXR0b24tZGlyZWN0aW9uLS1sZWZ0JztcbiAgICBjb25zdCBidG5JY29uID1cbiAgICAgIGJ0bkRpcmVjdGlvbiA9PSAnRElSRUNUSU9OX1JJR0hUJyA/ICdjaGV2cm9uLXNtYWxsLXJpZ2h0LXNtYWxsJyA6ICdjaGV2cm9uLXNtYWxsLWxlZnQtc21hbGwnO1xuICAgIGNvbnN0IGJ0bkFyaWFEZXNjcmlwdGlvbiA9XG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCdcbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKCdTRUFUX1JFU0VSVkFUSU9OX0VORCcsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogZ2V0STE4blNlYXRSZXNlcnZhdGlvbignU0VBVF9SRVNFUlZBVElPTl9CRUdJTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpO1xuICAgIGxldCBidG5EaXNhYmxlZCA9IHRydWU7XG5cbiAgICBpZiAoYnRuRGlyZWN0aW9uID09ICdESVJFQ1RJT05fTEVGVCcgJiYgdGhpcy5zZWxlY3RlZENvYWNoSW5kZXggPiAwKSB7XG4gICAgICBidG5EaXNhYmxlZCA9IGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBidG5EaXJlY3Rpb24gPT0gJ0RJUkVDVElPTl9SSUdIVCcgJiZcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb2FjaEluZGV4IDwgdGhpcy5jb2FjaEl0ZW1EZXRhaWxzRWxlbWVudHMubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgYnRuRGlzYWJsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLW5hdmlnYXRpb25fX3dyYXBwZXItYnV0dG9uLWRpcmVjdGlvblwiPlxuICAgICAgPHNiYi1zZWNvbmRhcnktYnV0dG9uXG4gICAgICAgIEBjbGljaz1cIiR7KCkgPT4gdGhpcy5uYXZpZ2F0ZUJ5RGlyZWN0aW9uQnRuKGJ0bkRpcmVjdGlvbil9XCJcbiAgICAgICAgQGZvY3VzPVwiJHsoKSA9PiB0aGlzLm9uRm9jdXNOYXZEaXJlY3Rpb25CdXR0b24oKX1cIlxuICAgICAgICBpZD1cIiR7YnRuTmF2aWdhdGlvbkRpcmVjdGlvbklkfVwiXG4gICAgICAgIGNsYXNzPVwic2JiLXNyX19uYXZpZ2F0aW9uLWNvbnRyb2wtYnV0dG9uXCJcbiAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICBpY29uLW5hbWU9XCIke2J0bkljb259XCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCIke2J0bkFyaWFEZXNjcmlwdGlvbn1cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgLmRpc2FibGVkSW50ZXJhY3RpdmU9XCIke2J0bkRpc2FibGVkIHx8IG5vdGhpbmd9XCJcbiAgICAgICAgLmRpc2FibGVkPVwiJHtidG5EaXNhYmxlZCB8fCBub3RoaW5nfVwiXG4gICAgICA+PC9zYmItc2Vjb25kYXJ5LWJ1dHRvbj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVHJhdmVsRGlyZWN0aW9uKCk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLnRyYXZlbERpcmVjdGlvbiB8fCB0aGlzLnRyYXZlbERpcmVjdGlvbiA9PT0gJ05PTkUnKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGxhYmVsVGV4dCA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oXG4gICAgICAnU0VBVF9SRVNFUlZBVElPTl9UUkFWRUxfRElSRUNUSU9OJyxcbiAgICAgIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsXG4gICAgKTtcblxuICAgIGNvbnN0IGFycm93RGlyZWN0aW9uID0gdGhpcy5hbGlnblZlcnRpY2FsXG4gICAgICA/IHRoaXMudHJhdmVsRGlyZWN0aW9uID09PSAnUklHSFQnXG4gICAgICAgID8gJ2Rvd24nXG4gICAgICAgIDogJ3VwJ1xuICAgICAgOiB0aGlzLnRyYXZlbERpcmVjdGlvbiA9PT0gJ1JJR0hUJ1xuICAgICAgICA/ICdyaWdodCdcbiAgICAgICAgOiAnbGVmdCc7XG5cbiAgICBjb25zdCBpY29uTmFtZSA9IGBhcnJvdy0ke2Fycm93RGlyZWN0aW9ufS1zbWFsbGA7XG5cbiAgICByZXR1cm4gaHRtbGA8ZGl2IGNsYXNzPVwic2JiLXNyLXRyYXZlbC1kaXJlY3Rpb24td3JhcHBlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fdHJhdmVsLWRpcmVjdGlvbi0tYXJyb3dcIj5cbiAgICAgICAgPHNiYi1pY29uIHNsb3Q9XCJpY29uXCIgbmFtZT1cIiR7aWNvbk5hbWV9XCI+PC9zYmItaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNiYi1zcl9fdHJhdmVsLWRpcmVjdGlvbi0tbGFiZWxcIj4ke2xhYmVsVGV4dH08L2Rpdj5cbiAgICA8L2Rpdj5gO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyTmF2aWdhdGlvbigpOiBUZW1wbGF0ZVJlc3VsdCB8IG51bGwge1xuICAgIGlmIChpc1NlcnZlciB8fCAhdGhpcy5oYXNOYXZpZ2F0aW9uIHx8ICF0aGlzLnNlYXRSZXNlcnZhdGlvbnMpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBodG1sYDxkaXYgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbi13cmFwcGVyXCI+XG4gICAgICA8bmF2IGlkPVwic2JiLXNyLW5hdmlnYXRpb25cIiBjbGFzcz1cInNiYi1zci1uYXZpZ2F0aW9uXCI+XG4gICAgICAgICR7dGhpcy5fcmVuZGVyTmF2aWdhdGlvbkNvbnRyb2xCdXR0b24oJ0RJUkVDVElPTl9MRUZUJyl9XG4gICAgICAgIDx1bFxuICAgICAgICAgIGlkPVwic2JiLXNyX19uYXZpZ2F0aW9uLWxpc3QtY29hY2hlc1wiXG4gICAgICAgICAgY2xhc3M9XCJzYmItc3ItbmF2aWdhdGlvbl9fbGlzdC1jb2FjaGVzXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiJHtnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAgICAgJ1NFQVRfUkVTRVJWQVRJT05fTkFWSUdBVElPTicsXG4gICAgICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICAgICl9XCJcbiAgICAgICAgPlxuICAgICAgICAgICR7dGhpcy5jb2FjaEl0ZW1EZXRhaWxzRWxlbWVudHMubWFwKFxuICAgICAgICAgICAgKGNvYWNoSXRlbURldGFpbHM6IENvYWNoSXRlbURldGFpbHMsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGh0bWxgPGxpPlxuICAgICAgICAgICAgICAgIDxzYmItc2VhdC1yZXNlcnZhdGlvbi1uYXZpZ2F0aW9uLWNvYWNoXG4gICAgICAgICAgICAgICAgICBAc2VsZWN0Y29hY2g9JHsoZXZlbnQ6IEN1c3RvbUV2ZW50PG51bWJlcj4pID0+IHRoaXMuX29uU2VsZWN0TmF2Q29hY2goZXZlbnQpfVxuICAgICAgICAgICAgICAgICAgQGZvY3VzY29hY2g9JHsoKSA9PiB0aGlzLl9vbkZvY3VzTmF2Q29hY2goKX1cbiAgICAgICAgICAgICAgICAgIEBrZXl1cD0keyhldnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25LZXlOYXZpZ2F0aW9uTmF2Q29hY2hCdXR0b24oZXZ0LCBpbmRleCl9XG4gICAgICAgICAgICAgICAgICBpbmRleD1cIiR7aW5kZXh9XCJcbiAgICAgICAgICAgICAgICAgIC5zZWxlY3RlZD0ke3RoaXMuc2VsZWN0ZWRDb2FjaEluZGV4ID09PSBpbmRleH1cbiAgICAgICAgICAgICAgICAgIC5mb2N1c2VkPSR7dGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9PT0gaW5kZXh9XG4gICAgICAgICAgICAgICAgICAuaG92ZXJlZD0ke3RoaXMuaG92ZXJlZENvYWNoSW5kZXggPT09IGluZGV4fVxuICAgICAgICAgICAgICAgICAgLm5hdGl2ZUZvY3VzQWN0aXZlPSR7dGhpcy5oYXNTZWF0UmVzZXJ2YXRpb25OYXRpdmVGb2N1c31cbiAgICAgICAgICAgICAgICAgIC5jb2FjaEl0ZW1EZXRhaWxzPVwiJHtjb2FjaEl0ZW1EZXRhaWxzfVwiXG4gICAgICAgICAgICAgICAgICA/dmVydGljYWw9XCIke3RoaXMuYWxpZ25WZXJ0aWNhbH1cIlxuICAgICAgICAgICAgICAgICAgP3Nob3dUaXRsZUluZm89XCIke3RoaXMuc2hvd1RpdGxlSW5mb31cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLW5hdmlnYXRpb24tY29hY2g+XG4gICAgICAgICAgICAgIDwvbGk+YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKX1cbiAgICAgICAgPC91bD5cbiAgICAgICAgJHt0aGlzLl9yZW5kZXJOYXZpZ2F0aW9uQ29udHJvbEJ1dHRvbignRElSRUNUSU9OX1JJR0hUJyl9XG4gICAgICA8L25hdj5cbiAgICA8L2Rpdj5gO1xuICB9XG4gIC8qKlxuICAgKlxuICAgKiBAcmV0dXJuc1xuICAgKiBAcGFyYW0gc2VhdFJlc2VydmF0aW9uXG4gICAqIEBwYXJhbSBjb2FjaERlY2tJbmRleFxuICAgKi9cbiAgcHJpdmF0ZSBfcmVuZGVyQ29hY2hlcyhcbiAgICBzZWF0UmVzZXJ2YXRpb246IFNlYXRSZXNlcnZhdGlvbixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgY29uc3QgY29hY2hlczogQ29hY2hJdGVtW10gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHNlYXRSZXNlcnZhdGlvbj8uY29hY2hJdGVtcykpO1xuXG4gICAgaWYgKCFjb2FjaGVzIHx8IGlzU2VydmVyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNvYWNoZXMubWFwKChjb2FjaEl0ZW06IENvYWNoSXRlbSwgY29hY2hJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICByZXR1cm4gaHRtbGBcbiAgICAgICAgPGxpIGNsYXNzPVwic2JiLXNyX19pdGVtLWNvYWNoXCI+XG4gICAgICAgICAgJHt0aGlzLl9yZW5kZXJDb2FjaEVsZW1lbnQoXG4gICAgICAgICAgICBjb2FjaEl0ZW0sXG4gICAgICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICAgICAgY29hY2hEZWNrSW5kZXgsXG4gICAgICAgICAgICBzZWF0UmVzZXJ2YXRpb24uZGVja0NvYWNoSW5kZXgsXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9saT5cbiAgICAgIGA7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJDb2FjaEVsZW1lbnQoXG4gICAgY29hY2hJdGVtOiBDb2FjaEl0ZW0sXG4gICAgY29hY2hJbmRleDogbnVtYmVyLFxuICAgIGNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICAgcGxhY2VDb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uVGFibGVDb2FjaFdpdGhTZXJ2aWNlcyA9IHRoaXMuX2dldERlc2NyaXB0aW9uVGFibGVDb2FjaChjb2FjaEl0ZW0pO1xuXG4gICAgcmV0dXJuIGh0bWxgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZFxuICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXNjb3BlZC13aWR0aCc6IGNhbGN1bGF0ZWRDb2FjaERpbWVuc2lvbi53LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1zY29wZWQtaGVpZ2h0JzogY2FsY3VsYXRlZENvYWNoRGltZW5zaW9uLmgsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29hY2hCb3JkZXJzKGNvYWNoSXRlbSwgY29hY2hJbmRleCl9XG4gICAgICAke3RoaXMuX2dldFJlbmRlcmVkR3JhcGhpY2FsRWxlbWVudHMoXG4gICAgICAgIGNvYWNoSXRlbS5ncmFwaGljRWxlbWVudHMgfHwgW10sXG4gICAgICAgIGNvYWNoSXRlbS5kaW1lbnNpb24sXG4gICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgKX1cbiAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRTZXJ2aWNlRWxlbWVudHMoY29hY2hJbmRleCwgY29hY2hEZWNrSW5kZXgsIGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMpfVxuXG4gICAgICA8dGFibGVcbiAgICAgICAgQGZvY3VzPSR7KCkgPT4gdGhpcy5vbkZvY3VzVGFibGVDb2FjaEFuZFByZXNlbGVjdFBsYWNlKGNvYWNoSW5kZXgpfVxuICAgICAgICBpZD1cInNiYi1zci1jb2FjaC0ke2NvYWNoSW5kZXh9XCJcbiAgICAgICAgY2xhc3M9XCJzYmItc3ItY29hY2gtd3JhcHBlcl9fdGFibGVcIlxuICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwic2JiLXNyLWNvYWNoLWNhcHRpb24tJHtjb2FjaEluZGV4fVwiXG4gICAgICAgIHRhYmluZGV4PVwiLTFcIlxuICAgICAgPlxuICAgICAgICA8Y2FwdGlvbiBpZD1cInNiYi1zci1jb2FjaC1jYXB0aW9uLSR7Y29hY2hJbmRleH1cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgICAgPHNiYi1zY3JlZW4tcmVhZGVyLW9ubHk+JHtkZXNjcmlwdGlvblRhYmxlQ29hY2hXaXRoU2VydmljZXN9PC9zYmItc2NyZWVuLXJlYWRlci1vbmx5PlxuICAgICAgICA8L2NhcHRpb24+XG4gICAgICAgICR7dGhpcy5fZ2V0UmVuZGVyZWRSb3dQbGFjZXMoY29hY2hJdGVtLCBjb2FjaEluZGV4LCBjb2FjaERlY2tJbmRleCwgcGxhY2VDb2FjaERlY2tJbmRleCl9XG4gICAgICA8L3RhYmxlPlxuICAgIDwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tc2NvcGVkPmA7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgUmV0dXJucyB0aGUgYm9yZGVyIGdyYXBoaWMgKENPQUNIX0JPUkRFUl9NSURETEUpIG9mIGEgY29hY2ggd2l0aCBjYWxjdWxhdGVkIGJvcmRlciBnYXAgYW5kIGNvYWNoIHdpZHRoLFxuICAgKiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29hY2ggaXMgd2l0aCBhIGRyaXZlciBhcmVhIG9yIHdpdGhvdXQuXG4gICAqL1xuICBwcml2YXRlIF9nZXRSZW5kZXJlZENvYWNoQm9yZGVycyhcbiAgICBjb2FjaEl0ZW06IENvYWNoSXRlbSxcbiAgICBjb2FjaEluZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgaWYgKCFjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IENPQUNIX1BBU1NBR0VfV0lEVEggPSAxO1xuICAgIGNvbnN0IGRyaXZlckFyZWEgPSB0aGlzLmNvYWNoSXRlbURldGFpbHNFbGVtZW50c1tjb2FjaEluZGV4XT8uZHJpdmVyQXJlYUVsZW1lbnRzPy5kcml2ZXJBcmVhO1xuICAgIGNvbnN0IGRyaXZlckFyZWFOb1ZlcnRpY2FsV2FsbCA9XG4gICAgICB0aGlzLmNvYWNoSXRlbURldGFpbHNFbGVtZW50c1tjb2FjaEluZGV4XT8uZHJpdmVyQXJlYUVsZW1lbnRzPy5kcml2ZXJBcmVhTm9WZXJ0aWNhbFdhbGw7XG5cbiAgICBsZXQgYm9yZGVyV2lkdGggPSBkcml2ZXJBcmVhXG4gICAgICA/IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIGRyaXZlckFyZWEuZGltZW5zaW9uLncgLSBDT0FDSF9QQVNTQUdFX1dJRFRIXG4gICAgICA6IGNvYWNoSXRlbS5kaW1lbnNpb24udyAtIENPQUNIX1BBU1NBR0VfV0lEVEggKiAyO1xuXG4gICAgLy9tdWx0aXBseSB3aXRoIGJhc2UgZ3JpZCBzaXplIGFsd2F5cyBmb3IgYWxsIGtpbmQgb2YgYm9yZGVyV2lkdGhcbiAgICBib3JkZXJXaWR0aCAqPSB0aGlzLmJhc2VHcmlkU2l6ZTtcblxuICAgIGNvbnN0IGJvcmRlckhlaWdodCA9IChjb2FjaEl0ZW0uZGltZW5zaW9uLmggKyB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogMikgKiB0aGlzLmJhc2VHcmlkU2l6ZTtcbiAgICBsZXQgYm9yZGVyT2Zmc2V0WCA9XG4gICAgICBkcml2ZXJBcmVhICYmIGRyaXZlckFyZWEucG9zaXRpb24ueCA9PT0gMFxuICAgICAgICA/IGRyaXZlckFyZWE/LmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemVcbiAgICAgICAgOiB0aGlzLmJhc2VHcmlkU2l6ZTtcblxuICAgIC8vcmVjYWxjdWxhdGUgdGhlIGJvcmRlciB3aWR0aCBhbmQgb2Zmc2V0IGlmIHRoZXJlIGlzIGEgZHJpdmVyIGFyZWEgd2l0aG91dCB2ZXJ0aWNhbCB3YWxsIG9uIGJvdGggc2lkZXNcbiAgICBpZiAoZHJpdmVyQXJlYU5vVmVydGljYWxXYWxsKSB7XG4gICAgICBjb25zdCBjb2FjaFdpZHRoID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKGNvYWNoSXRlbS5kaW1lbnNpb24pLnc7XG5cbiAgICAgIC8vcmVjYWxjdWxhdGVkIGJvcmRlcldpZHRoID0gY29hY2hXaWR0aCAtIDIgKiBkcml2ZXIgYXJlYSB3aWR0aCwgc2luY2UgdGhlIGRyaXZlciBhcmVhIGlzIG9uIGJvdGggc2lkZXNcbiAgICAgIGJvcmRlcldpZHRoID0gY29hY2hXaWR0aCAtIDIgKiAoZHJpdmVyQXJlYU5vVmVydGljYWxXYWxsLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemUpO1xuXG4gICAgICAvL3JlY2FsY3VsYXRlZCBib3JkZXJPZmZzZXRYID0gZHJpdmVyIGFyZWEgd2lkdGgsIHNpbmNlIHRoZSBib3JkZXIgc3RhcnRzIGFmdGVyIHRoZSBkcml2ZXIgYXJlYSBvbiB0aGUgbGVmdCBzaWRlXG4gICAgICBib3JkZXJPZmZzZXRYID0gZHJpdmVyQXJlYU5vVmVydGljYWxXYWxsLmRpbWVuc2lvbi53ICogdGhpcy5iYXNlR3JpZFNpemU7XG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudENvYWNoT3ZlcmxhcHBpbmdJbmZvID0gdGhpcy5vdmVySGFuZ2luZ0VsZW1lbnRJbmZvcm1hdGlvbi5maW5kKFxuICAgICAgKGVsKSA9PiBlbC5jb2FjaElkID09PSBjb2FjaEl0ZW0uaWQsXG4gICAgKTtcblxuICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBvdmVyaGFuZ2luZyBwbGFjZXMgb3IgZ3JhcGhpY2FsIGVsZW1lbnRzIHRvIGFkanVzdCB0aGUgYm9yZGVyIHdpZHRoIGFuZCBvZmZzZXQgKyBnYXBcbiAgICAvLyBXZSBkbyBub3QgZGlmZmVyZW50aWF0ZSB3aGV0aGVyIHRoZXJlIGlzIHNvbWV0aGluZyB0byBiZSBkb25lIG9uIGJvdGggc2lkZXMgYXMgdGhpcyB3b3VsZCBsZWFkIHRvIHVubmVjZXNzYXJ5XG4gICAgLy8gY29tcGxleGl0eS4gU28gaWYgdGhlcmUgaXMgc29tZXRoaW5nIG9uIG9uZSBzaWRlLCB3ZSBqdXN0IGluY3JlYXNlIHRoZSBjb2FjaC1ib3JkZXIgb24gYm90aCBzaWRlcy5cbiAgICBpZiAoXG4gICAgICBjdXJyZW50Q29hY2hPdmVybGFwcGluZ0luZm8/Lm92ZXJoYW5naW5nUGxhY2VzIHx8XG4gICAgICBjdXJyZW50Q29hY2hPdmVybGFwcGluZ0luZm8/Lm92ZXJoYW5naW5nR3JhcGhpY0FyZWFzXG4gICAgKSB7XG4gICAgICBib3JkZXJXaWR0aCArPSAyICogdGhpcy5iYXNlR3JpZFNpemU7IC8vIHdlIGluY3JlYXNlIHRoZSB3aWR0aCBieSAyIGdyaWQgc2l6ZXMgdG8gaGF2ZSBlbm91Z2ggc3BhY2UgZm9yIHByb3RydWRlZCBwbGFjZXMgb24gYm90aCBzaWRlc1xuICAgICAgYm9yZGVyT2Zmc2V0WCA9IDA7IC8vIHdlIHN0YXJ0IGF0IDAgdG8gaGF2ZSBlbm91Z2ggc3BhY2Ugb24gdGhlIGxlZnQgc2lkZSBhcyB3ZWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICBjbGFzcz1cIiR7Y2xhc3NNYXAoe1xuICAgICAgICAgICdzYmItc3ItY29hY2gtaGFzLW92ZXJoYW5naW5nLWVsZW1lbnRzJzpcbiAgICAgICAgICAgIGN1cnJlbnRDb2FjaE92ZXJsYXBwaW5nSW5mbz8ub3ZlcmhhbmdpbmdQbGFjZXMgfHxcbiAgICAgICAgICAgIGN1cnJlbnRDb2FjaE92ZXJsYXBwaW5nSW5mbz8ub3ZlcmhhbmdpbmdHcmFwaGljQXJlYXMgfHxcbiAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICB9KX1cIlxuICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXdpZHRoJzogYm9yZGVyV2lkdGgsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1oZWlnaHQnOiBib3JkZXJIZWlnaHQsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy10b3AnOiB0aGlzLmNvYWNoQm9yZGVyUGFkZGluZyAqIC0xLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbGVmdCc6IGJvcmRlck9mZnNldFgsXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1wb3NpdGlvbic6ICdhYnNvbHV0ZScsXG4gICAgICAgIH0pfVxuICAgICAgICBuYW1lPVwiQ09BQ0hfQk9SREVSX01JRERMRVwiXG4gICAgICAgID9zdHJldGNoPSR7dHJ1ZX1cbiAgICAgICAgcm9sZT1cInByZXNlbnRhdGlvblwiXG4gICAgICA+PC9zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljPlxuICAgIGA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZFJvd1BsYWNlcyhcbiAgICBjb2FjaDogQ29hY2hJdGVtLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHBsYWNlQ29hY2hEZWNrSW5kZXg6IG51bWJlcixcbiAgKTogVGVtcGxhdGVSZXN1bHRbXSB8IG51bGwge1xuICAgIGlmICghY29hY2gucGxhY2VzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBQcmVwYXJlIHJvd3Mgd2l0aCB0aGUgcGxhY2VzIHRvIHJlbmRlciBhIHRhYmxlXG4gICAgY29uc3QgdGFibGVSb3dQbGFjZXM6IFJlY29yZDxudW1iZXIsIFBsYWNlW10+ID0ge307XG4gICAgZm9yIChjb25zdCBwbGFjZSBvZiBjb2FjaC5wbGFjZXMpIHtcbiAgICAgIGlmICghdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0pIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0gPSBbcGxhY2VdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGFibGVSb3dQbGFjZXNbcGxhY2UucG9zaXRpb24ueV0ucHVzaChwbGFjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGFibGVSb3dQbGFjZXMpXG4gICAgICAubWFwKChyb3dQbGFjZXM6IFBsYWNlW10sIGluZGV4KSA9PiB7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ciBpZD1cInJvdy0ke2NvYWNoSW5kZXh9LSR7cm93UGxhY2VzWzBdLnBvc2l0aW9uLnl9XCIgZGF0YS1yb3ctaW5kZXg9JHtpbmRleH0+XG4gICAgICAgICAgICAke3RoaXMuX2dldFJlbmRlcmVkQ29sdW1uUGxhY2VzKFxuICAgICAgICAgICAgICByb3dQbGFjZXMsXG4gICAgICAgICAgICAgIGNvYWNoSW5kZXgsXG4gICAgICAgICAgICAgIGNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgICBwbGFjZUNvYWNoRGVja0luZGV4LFxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L3RyPlxuICAgICAgICBgO1xuICAgICAgfSlcbiAgICAgIC5mbGF0TWFwKChyb3dUZW1wbGF0ZSkgPT4gcm93VGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0UmVuZGVyZWRDb2x1bW5QbGFjZXMoXG4gICAgcGxhY2VzOiBQbGFjZVtdLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBkZWNrSW5kZXg6IG51bWJlcixcbiAgICBwbGFjZUNvYWNoRGVja0luZGV4OiBudW1iZXIsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHwgbnVsbCB7XG4gICAgLy9Tb3J0cyBlYWNoIHBsYWNlIGJ5IGl0cyBhc2NlbmRpbmcgeCBjb29yZGluYXRlXG4gICAgcGxhY2VzLnNvcnQoXG4gICAgICAocGxhY2VBOiBQbGFjZSwgcGxhY2VCOiBQbGFjZSkgPT4gTnVtYmVyKHBsYWNlQS5wb3NpdGlvbi54KSAtIE51bWJlcihwbGFjZUIucG9zaXRpb24ueCksXG4gICAgKTtcblxuICAgIC8vIEZvciByZW5kZXJpbmcgdGhlIHBsYWNlcyB3aXRoaW4gYSB0ZCBlbGVtZW50LCBoZXJlIHdlIHVzZSByZXBlYXQgZGlyZWN0aXZlIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UgZm9yIHJldXNpbmcgZWxlbWVudHMgKHRyYWNrIGJ5IGlkKS5cbiAgICBjb25zdCB0cmFja1BsYWNlSWQgPSBjb2FjaEluZGV4ICsgJy0nICsgcGxhY2VDb2FjaERlY2tJbmRleDtcbiAgICByZXR1cm4gaHRtbGAke3JlcGVhdChcbiAgICAgIHBsYWNlcyxcbiAgICAgIChwbGFjZSkgPT4gdHJhY2tQbGFjZUlkICsgJy0nICsgcGxhY2UubnVtYmVyLFxuICAgICAgKHBsYWNlLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjYWxjdWxhdGVkRGltZW5zaW9uID0gdGhpcy5nZXRDYWxjdWxhdGVkRGltZW5zaW9uKHBsYWNlLmRpbWVuc2lvbik7XG4gICAgICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHBsYWNlLnBvc2l0aW9uKTtcbiAgICAgICAgY29uc3Qgcm90YXRpb24gPSBwbGFjZS5yb3RhdGlvbiB8fCAwO1xuICAgICAgICBjb25zdCB0ZXh0Um90YXRpb24gPSB0aGlzLmFsaWduVmVydGljYWwgPyAtOTAgOiAwO1xuICAgICAgICBjb25zdCBwbGFjZUlkID0gdGhpcy5nZXRQbGFjZUVsZW1lbnRJZChkZWNrSW5kZXgsIGNvYWNoSW5kZXgsIHBsYWNlLm51bWJlcik7XG4gICAgICAgIHJldHVybiBodG1sYFxuICAgICAgICAgIDx0ZFxuICAgICAgICAgICAgaWQ9XCJjZWxsLSR7ZGVja0luZGV4fS0ke2NvYWNoSW5kZXh9LSR7cGxhY2UucG9zaXRpb24ueX0tJHtpbmRleH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJncmFwaGljYWwtZWxlbWVudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcbiAgICAgICAgICAgICAgc3R5bGU9JHtzdHlsZU1hcCh7XG4gICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC10ZXh0LXNjYWxlLXZhbHVlJzogTWF0aC5taW4oXG4gICAgICAgICAgICAgICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLncsXG4gICAgICAgICAgICAgICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLmgsXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1wbGFjZS1jb250cm9sLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbC1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2wtdGV4dC1yb3RhdGlvbic6IHRleHRSb3RhdGlvbixcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIEBzZWxlY3RwbGFjZT0keyhzZWxlY3RQbGFjZUV2ZW50OiBDdXN0b21FdmVudDxQbGFjZVNlbGVjdGlvbj4pID0+XG4gICAgICAgICAgICAgICAgdGhpcy5fb25TZWxlY3RQbGFjZShzZWxlY3RQbGFjZUV2ZW50KX1cbiAgICAgICAgICAgICAgZXhwb3J0cGFydHM9XCJzYmItc3ItcGxhY2UtcGFydFwiXG4gICAgICAgICAgICAgIGlkPSR7cGxhY2VJZH1cbiAgICAgICAgICAgICAgY2xhc3M9XCJzZWF0LXJlc2VydmF0aW9uLXBsYWNlLWNvbnRyb2xcIlxuICAgICAgICAgICAgICB0ZXh0PSR7cGxhY2UubnVtYmVyfVxuICAgICAgICAgICAgICB0eXBlPSR7cGxhY2UudHlwZX1cbiAgICAgICAgICAgICAgc3RhdGU9JHtwbGFjZS5zdGF0ZX1cbiAgICAgICAgICAgICAgdHJhdmVsLWRpcmVjdGlvbj0ke3RoaXMudHJhdmVsRGlyZWN0aW9ufVxuICAgICAgICAgICAgICBjb2FjaC1pbmRleD0ke2NvYWNoSW5kZXh9XG4gICAgICAgICAgICAgIGRlY2staW5kZXg9JHtwbGFjZUNvYWNoRGVja0luZGV4fVxuICAgICAgICAgICAgICBkYXRhLWRlY2staW5kZXg9JHtkZWNrSW5kZXh9XG4gICAgICAgICAgICAgIC5wcm9wZXJ0eUlkcz0ke3BsYWNlLnByb3BlcnR5SWRzfVxuICAgICAgICAgICAgICAucHJldmVudENsaWNrPSR7dGhpcy5wcmV2ZW50UGxhY2VDbGlja31cbiAgICAgICAgICAgICAgP3Nob3dUaXRsZUluZm89XCIke3RoaXMuc2hvd1RpdGxlSW5mb31cIlxuICAgICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tcGxhY2UtY29udHJvbD5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICBgO1xuICAgICAgfSxcbiAgICApfWA7XG4gIH1cblxuICBwcml2YXRlIF9nZXRSZW5kZXJlZEdyYXBoaWNhbEVsZW1lbnRzKFxuICAgIGdyYXBoaWNhbEVsZW1lbnRzOiBCYXNlRWxlbWVudFtdLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdFtdIHwgbnVsbCB7XG4gICAgaWYgKCFncmFwaGljYWxFbGVtZW50cykgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gZ3JhcGhpY2FsRWxlbWVudHM/Lm1hcCgoZ3JhcGhpY2FsRWxlbWVudDogQmFzZUVsZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IGljb24gPSBncmFwaGljYWxFbGVtZW50Lmljb24gPz8gJyc7XG4gICAgICBjb25zdCBlbGVtZW50Um90YXRpb24gPSBncmFwaGljYWxFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50ID1cbiAgICAgICAgdGhpcy5fbm90Rml4ZWRSb3RhdGFibGVBcmVhSWNvbnMuaW5kZXhPZihncmFwaGljYWxFbGVtZW50Lmljb24hKSA9PT0gLTE7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9XG4gICAgICAgIHRoaXMuYWxpZ25WZXJ0aWNhbCAmJiBpc05vdEZpeGVkUm90YXRpb25HcmFwaGljYWxFbGVtZW50XG4gICAgICAgICAgPyBlbGVtZW50Um90YXRpb24gLSA5MFxuICAgICAgICAgIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2NoZWNrIGlmIHRoZSBjdXJyZW50IGVsZW1lbnQgaXMgbm90IGFuIGFyZWEgZWxlbWVudCwgc2luY2UgdGhpcyBlbGVtZW50IGlzIGRyYXduIHdpdGhvdXQgYW4gYXJlYSBjb21wb25lbnRcbiAgICAgIGlmICh0aGlzLm5vdEFyZWFFbGVtZW50cy5maW5kSW5kZXgoKG5vdEFyZWFFbGVtZW50KSA9PiBub3RBcmVhRWxlbWVudCA9PT0gaWNvbikgPiAtMSkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UmVuZGVyRWxlbWVudFdpdGhvdXRBcmVhKGdyYXBoaWNhbEVsZW1lbnQsIGVsZW1lbnRSb3RhdGlvbiwgY29hY2hEaW1lbnNpb24pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICAgICAgZ3JhcGhpY2FsRWxlbWVudCxcbiAgICAgICAgZWxlbWVudEZpeGVkUm90YXRpb24sXG4gICAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICAgICBjb2FjaEluZGV4LFxuICAgICAgICBjb2FjaERlY2tJbmRleCxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlcyBhIHJlbmRlcmVkIGVsZW1lbnQgd2l0aCBhbiBhcmVhIGNvbXBvbmVudFxuICAgKiBAcGFyYW0gZ3JhcGhpY2FsRWxlbWVudFxuICAgKiBAcGFyYW0gcm90YXRpb25cbiAgICogQHBhcmFtIGNvYWNoRGltZW5zaW9uXG4gICAqIEBwYXJhbSBjb2FjaEluZGV4IHVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgaWQgZm9yIHRoZSBwb3BvdmVyIHRyaWdnZXJcbiAgICogQHBhcmFtIGNvYWNoRGVja0luZGV4IHVzZWQgdG8gZ2VuZXJhdGUgYSB1bmlxdWUgaWRcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRoQXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgLy8gZm9yIFRBQkxFLCB3ZSB1c2UgdGhlIGFyZWEgY29tcG9uZW50IGl0c2VsZiB0byBkaXNwbGF5IHRoZSB0YWJsZSBpbnN0ZWFkIG9mIHRoZSBTVkcgZ3JhcGhpYy5cbiAgICAvLyBEdWUgdG8gZGlmZmVyZW50IGhlaWdodHMgYW5kIHdpZHRocywgaXQgd291bGRuJ3Qgc2hvdyBjb3JyZWN0bHkuIFRvIGNvcnJlY3QgdGhpcywgd2Ugd291bGRcbiAgICAvLyBuZWVkIGRpZmZpY3VsdCBjYWxjdWxhdGlvbnMgZm9yIHBvc2l0aW9uLCByb3RhdGlvbiBhbmQgZGltZW5zaW9uLlxuICAgIGNvbnN0IGlzTm90VGFibGVHcmFwaGljID0gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5pbmRleE9mKCdUQUJMRScpID09PSAtMTtcbiAgICBjb25zdCBhcmVhUHJvcGVydHkgPSBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgaXNOb3RUYWJsZUdyYXBoaWMgPyBncmFwaGljYWxFbGVtZW50Lmljb24gOiBudWxsO1xuICAgIGNvbnN0IHN0cmV0Y2hIZWlnaHQgPVxuICAgICAgdGhpcy5pc0VsZW1lbnREaXJlY3RseU9uQm9yZGVyKGdyYXBoaWNhbEVsZW1lbnQsIGNvYWNoRGltZW5zaW9uKSAmJlxuICAgICAgYXJlYVByb3BlcnR5ICE9PSAnRU5UUllfRVhJVCc7XG4gICAgY29uc3QgYXJpYUxhYmVsRm9yQXJlYSA9IGdyYXBoaWNhbEVsZW1lbnQuaWNvblxuICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKGdyYXBoaWNhbEVsZW1lbnQuaWNvbiwgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudClcbiAgICAgIDogbm90aGluZztcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN0cmV0Y2hIZWlnaHQsXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKFxuICAgICAgZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbixcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICAvL2dlbmVyYXRlIHVuaXF1ZSBpbmRleCBudW1iZXIgZm9yIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICBjb25zdCB0cmlnZ2VySWQgPSBgcG9wb3Zlci10cmlnZ2VyLSR7Y29hY2hEZWNrSW5kZXh9LSR7Y29hY2hJbmRleH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueH0tJHtjYWxjdWxhdGVkUG9zaXRpb24ueX1gO1xuICAgIGxldCBlbGVtZW50TW91bnRpbmcgPSAnZnJlZSc7XG5cbiAgICBpZiAoZ3JhcGhpY2FsRWxlbWVudC5wb3NpdGlvbi55ID09PSB0aGlzLmNvYWNoQm9yZGVyT2Zmc2V0ICogLTEpIHtcbiAgICAgIGVsZW1lbnRNb3VudGluZyA9ICd1cHBlci1ib3JkZXInO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBncmFwaGljYWxFbGVtZW50LnBvc2l0aW9uLnkgKyBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbi5oID09PVxuICAgICAgY29hY2hEaW1lbnNpb24uaCArIHRoaXMuY29hY2hCb3JkZXJPZmZzZXRcbiAgICApIHtcbiAgICAgIGVsZW1lbnRNb3VudGluZyA9ICdsb3dlci1ib3JkZXInO1xuICAgIH1cblxuICAgIC8vIFRJTU8tNDU4MzBcbiAgICAvLyBJZiBhcmVhIGVsZW1lbnRzIGFyZSBsb2NhdGVkIGF0IHRoZSBib3JkZXIgb2YgY29hY2gsXG4gICAgLy8gd2UgaGF2ZSB0byBtYW51YWxseSBtb2RpZnkgdGhlIHBvc2l0aW9uIGFuZCBoZWlnaHQgb2YgdGhlIGFyZWEgZWxlbWVudCxcbiAgICAvLyBzbyB0aGF0IHdlIGdldCBhIGdhcCBmcm9tIHRoZSB2aXN1ZWwgY29hY2ggYm9yZGVyXG4gICAgaWYgKGVsZW1lbnRNb3VudGluZyAhPT0gJ2ZyZWUnKSB7XG4gICAgICBjYWxjdWxhdGVkUG9zaXRpb24ueSArPSBlbGVtZW50TW91bnRpbmcgPT09ICd1cHBlci1ib3JkZXInID8gMiA6IDE7XG4gICAgICBjYWxjdWxhdGVkRGltZW5zaW9uLmggLT0gMztcbiAgICB9XG4gICAgcmV0dXJuIGh0bWxgXG4gICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYVxuICAgICAgICBpZD1cIiR7dHJpZ2dlcklkfVwiXG4gICAgICAgIGNsYXNzPVwiJHtjbGFzc01hcCh7ICdzYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLS1jdXJzb3ItcG9pbnRlcic6IGFyZWFQcm9wZXJ0eSAhPT0gbnVsbCB9KX1cIlxuICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1hcmVhLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWEtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tYXJlYS1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgIH0pfVxuICAgICAgICBtb3VudGluZz0ke2VsZW1lbnRNb3VudGluZ31cbiAgICAgICAgYmFja2dyb3VuZD1cImRhcmtcIlxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgPlxuICAgICAgICAke2FyZWFQcm9wZXJ0eVxuICAgICAgICAgID8gaHRtbGBcbiAgICAgICAgICAgICAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgICAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtbWF4LXdpZHRoJzogdGhpcy5nbG9iYWxBcmVhSWNvbkRpbS53LFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1tYXgtaGVpZ2h0JzogdGhpcy5nbG9iYWxBcmVhSWNvbkRpbS5oLFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy13aWR0aCc6IGNhbGN1bGF0ZWREaW1lbnNpb24udyxcbiAgICAgICAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtaGVpZ2h0JzogY2FsY3VsYXRlZERpbWVuc2lvbi5oLFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IHJvdGF0aW9uLFxuICAgICAgICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1wYWRkaW5nLXBlcmNlbnQnOlxuICAgICAgICAgICAgICAgICAgICBhcmVhUHJvcGVydHkgIT09ICdFTlRSWV9FWElUJyA/IHRoaXMuZ2xvYmFsQXJlYUljb25QYWRkaW5nIDogMSxcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICBuYW1lPSR7YXJlYVByb3BlcnR5fVxuICAgICAgICAgICAgICAgIHJvbGU9XCJpbWdcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzYmItc3ItZ3JhcGhpY19fZGltZW5zaW9uLS1zcXVhcmUtZGltXCJcbiAgICAgICAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgICAgICAgIGBcbiAgICAgICAgICA6IG5vdGhpbmd9XG4gICAgICA8L3NiYi1zZWF0LXJlc2VydmF0aW9uLWFyZWE+XG4gICAgICAke2FyZWFQcm9wZXJ0eSA/IHRoaXMuX3BvcG92ZXIodHJpZ2dlcklkLCBhcmlhTGFiZWxGb3JBcmVhKSA6IG5vdGhpbmd9XG4gICAgYDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlckVsZW1lbnRXaXRob3V0QXJlYShcbiAgICBncmFwaGljYWxFbGVtZW50OiBCYXNlRWxlbWVudCxcbiAgICByb3RhdGlvbjogbnVtYmVyLFxuICAgIGNvYWNoRGltZW5zaW9uOiBFbGVtZW50RGltZW5zaW9uLFxuICApOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgY2FsY3VsYXRlZERpbWVuc2lvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZERpbWVuc2lvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQuZGltZW5zaW9uLFxuICAgICAgY29hY2hEaW1lbnNpb24sXG4gICAgKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkUG9zaXRpb24gPSB0aGlzLmdldENhbGN1bGF0ZWRQb3NpdGlvbihcbiAgICAgIGdyYXBoaWNhbEVsZW1lbnQucG9zaXRpb24sXG4gICAgICBncmFwaGljYWxFbGVtZW50LmRpbWVuc2lvbixcbiAgICAgIGNvYWNoRGltZW5zaW9uLFxuICAgICk7XG5cbiAgICAvLyBJZiB0aGUgaWNvbiBpcyB0aGUgZHJpdmVyIGFyZWEsIHRoZW4gaGVyZSBjb25jYXQgdGhlIHZlaGljbGUgdHlwZSB0byBnZXQgdGhlIHJpZ2h0IHZlaGljbGUgY2hhc3NpcyBpY29uXG4gICAgY29uc3QgaWNvbiA9XG4gICAgICBncmFwaGljYWxFbGVtZW50Lmljb24gJiYgZ3JhcGhpY2FsRWxlbWVudC5pY29uLmVuZHNXaXRoKCdEUklWRVJfQVJFQScpXG4gICAgICAgID8gZ3JhcGhpY2FsRWxlbWVudC5pY29uPy5jb25jYXQoXG4gICAgICAgICAgICAnXycsXG4gICAgICAgICAgICB0aGlzLnNlYXRSZXNlcnZhdGlvbnNbdGhpcy5jdXJyU2VsZWN0ZWREZWNrSW5kZXhdLnZlaGljbGVUeXBlLFxuICAgICAgICAgIClcbiAgICAgICAgOiBncmFwaGljYWxFbGVtZW50Lmljb247XG5cbiAgICByZXR1cm4gaHRtbGAgPHNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWNcbiAgICAgIHN0eWxlPSR7c3R5bGVNYXAoe1xuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXdpZHRoJzogY2FsY3VsYXRlZERpbWVuc2lvbi53LFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy10b3AnOiBjYWxjdWxhdGVkUG9zaXRpb24ueSxcbiAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1sZWZ0JzogY2FsY3VsYXRlZFBvc2l0aW9uLngsXG4gICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLXJvdGF0aW9uJzogcm90YXRpb24sXG4gICAgICB9KX1cbiAgICAgIG5hbWU9JHtpY29uID8/IG5vdGhpbmd9XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgP3N0cmV0Y2g9JHt0cnVlfVxuICAgID48L3NiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWM+YDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFJlbmRlcmVkU2VydmljZUVsZW1lbnRzKFxuICAgIGNvYWNoSW5kZXg6IG51bWJlcixcbiAgICBjb2FjaERlY2tJbmRleDogbnVtYmVyLFxuICAgIHNlcnZpY2VFbGVtZW50cz86IEJhc2VFbGVtZW50W10sXG4gICk6IFRlbXBsYXRlUmVzdWx0W10gfCBudWxsIHtcbiAgICBpZiAoIXNlcnZpY2VFbGVtZW50cykgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gc2VydmljZUVsZW1lbnRzPy5tYXAoKHNlcnZpY2VFbGVtZW50OiBCYXNlRWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgdGl0bGVEZXNjcmlwdGlvbiA9IHNlcnZpY2VFbGVtZW50Lmljb25cbiAgICAgICAgPyBnZXRJMThuU2VhdFJlc2VydmF0aW9uKHNlcnZpY2VFbGVtZW50Lmljb24sIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWREaW1lbnNpb24gPSB0aGlzLmdldENhbGN1bGF0ZWREaW1lbnNpb24oc2VydmljZUVsZW1lbnQuZGltZW5zaW9uKTtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZWRQb3NpdGlvbiA9IHRoaXMuZ2V0Q2FsY3VsYXRlZFBvc2l0aW9uKHNlcnZpY2VFbGVtZW50LnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRSb3RhdGlvbiA9IHNlcnZpY2VFbGVtZW50LnJvdGF0aW9uIHx8IDA7XG4gICAgICBjb25zdCBlbGVtZW50Rml4ZWRSb3RhdGlvbiA9IHRoaXMuYWxpZ25WZXJ0aWNhbCA/IGVsZW1lbnRSb3RhdGlvbiAtIDkwIDogZWxlbWVudFJvdGF0aW9uO1xuXG4gICAgICAvL2dlbmVyYXRlIHVuaXF1ZSBpbmRleCBudW1iZXIgZm9yIHRoZSB0cmlnZ2VyIGVsZW1lbnRcbiAgICAgIGNvbnN0IHRyaWdnZXJJZCA9IGBwb3BvdmVyLXRyaWdnZXItJHtjb2FjaERlY2tJbmRleH0tJHtjb2FjaEluZGV4fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi54fS0ke2NhbGN1bGF0ZWRQb3NpdGlvbi55fWA7XG5cbiAgICAgIHJldHVybiBodG1sYFxuICAgICAgICA8c2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpY1xuICAgICAgICAgIGlkPVwiJHt0cmlnZ2VySWR9XCJcbiAgICAgICAgICBzdHlsZT0ke3N0eWxlTWFwKHtcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtd2lkdGgnOiBjYWxjdWxhdGVkRGltZW5zaW9uLncsXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWhlaWdodCc6IGNhbGN1bGF0ZWREaW1lbnNpb24uaCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtdG9wJzogY2FsY3VsYXRlZFBvc2l0aW9uLnksXG4gICAgICAgICAgICAnLS1zYmItc2VhdC1yZXNlcnZhdGlvbi1ncmFwaGljLWxlZnQnOiBjYWxjdWxhdGVkUG9zaXRpb24ueCxcbiAgICAgICAgICAgICctLXNiYi1zZWF0LXJlc2VydmF0aW9uLWdyYXBoaWMtcG9zaXRpb24nOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgJy0tc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy1yb3RhdGlvbic6IGVsZW1lbnRGaXhlZFJvdGF0aW9uLFxuICAgICAgICAgIH0pfVxuICAgICAgICAgIGNsYXNzPVwic2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYy0tY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgIG5hbWU9JHtzZXJ2aWNlRWxlbWVudC5pY29uID8/IG5vdGhpbmd9XG4gICAgICAgICAgcm9sZT1cImltZ1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvc2JiLXNlYXQtcmVzZXJ2YXRpb24tZ3JhcGhpYz5cbiAgICAgICAgJHt0aGlzLl9wb3BvdmVyKHRyaWdnZXJJZCwgdGl0bGVEZXNjcmlwdGlvbil9XG4gICAgICBgO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmFnZXMgdGhlIHNlbGVjdGVkIHBsYWNlIGV2ZW50IHRyaWdnZXJlZCBmcm9tIHRoZSBwbGFjZVxuICAgKiBFYWNoIHNlbGVjdGlvbiBlbWl0cyBhbiBhcnJheSBvZiBhbGwgc2VsZWN0ZWQgcGxhY2VzXG4gICAqIEBwYXJhbSBzZWxlY3RQbGFjZUV2ZW50XG4gICAqL1xuICBwcml2YXRlIF9vblNlbGVjdFBsYWNlKHNlbGVjdFBsYWNlRXZlbnQ6IEN1c3RvbUV2ZW50PFBsYWNlU2VsZWN0aW9uPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkUGxhY2UgPSBzZWxlY3RQbGFjZUV2ZW50LmRldGFpbDtcbiAgICAvLyBXZSBoYXZlIHRvIHNldCBwcmV2ZW50Q29hY2hTY3JvbGxCeVBsYWNlQ2xpY2sgdG8gdHJ1ZSwgdG8gcHJldmVudCBhdXRvbWF0aWMgc2Nyb2xsaW5nIHRvIHRoZSBuZXcgZm9jdXNlZCBwbGFjZVxuICAgIHRoaXMucHJldmVudENvYWNoU2Nyb2xsQnlQbGFjZUNsaWNrID0gdHJ1ZTtcbiAgICB0aGlzLmlzQ29hY2hHcmlkRm9jdXNhYmxlID0gZmFsc2U7XG4gICAgdGhpcy5mb2N1c2VkQ29hY2hJbmRleCA9IC0xO1xuICAgIC8vIENoZWNrIGFueSBrZXlib2FyZCBldmVudCB3YXMgdHJpZ2dlcmVkIGluc2lkZSB0aGUgc2VhdCByZXNlcnZhdGlvbiBjb21wb25lbnQsXG4gICAgLy8gc28gd2UgY2FuIHNheSB0aGUgbmF0aXZlIGJyb3dzZXIgZm9jdXMgbGllcyBvbiB0aGUgY29tcG9uZW50XG4gICAgaWYgKCF0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzKSB7XG4gICAgICB0aGlzLmhhc1NlYXRSZXNlcnZhdGlvbk5hdGl2ZUZvY3VzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJldmVudFBsYWNlQ2xpY2spIHtcbiAgICAgIC8vIEFkZCBwbGFjZSB0byBwbGFjZSBjb2xsZWN0aW9uXG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkU2VhdFJlc2VydmF0aW9uUGxhY2VzKHNlbGVjdGVkUGxhY2UpO1xuICAgICAgdGhpcy51cGRhdGVDdXJyZW50U2VsZWN0ZWRQbGFjZUluQ29hY2goc2VsZWN0ZWRQbGFjZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfb25TZWxlY3ROYXZDb2FjaChldmVudDogQ3VzdG9tRXZlbnQ8bnVtYmVyPik6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkTmF2Q29hY2hJbmRleCA9IGV2ZW50LmRldGFpbDtcblxuICAgIHRoaXMuaXNLZXlib2FyZE5hdmlnYXRpb24gPSBmYWxzZTtcbiAgICB0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljayA9IGZhbHNlO1xuICAgIHRoaXMuaGFzU2VhdFJlc2VydmF0aW9uTmF0aXZlRm9jdXMgPSB0cnVlO1xuXG4gICAgaWYgKHNlbGVjdGVkTmF2Q29hY2hJbmRleCAhPT0gbnVsbCAmJiBzZWxlY3RlZE5hdkNvYWNoSW5kZXggIT09IHRoaXMuY3VyclNlbGVjdGVkQ29hY2hJbmRleCkge1xuICAgICAgdGhpcy51bmZvY3VzUGxhY2VFbGVtZW50KCk7XG4gICAgICB0aGlzLnNjcm9sbFRvU2VsZWN0ZWROYXZDb2FjaChzZWxlY3RlZE5hdkNvYWNoSW5kZXgpO1xuICAgIH0gZWxzZSBpZiAoc2VsZWN0ZWROYXZDb2FjaEluZGV4ID09PSB0aGlzLmN1cnJTZWxlY3RlZENvYWNoSW5kZXgpIHtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFNlbGVjdGVkQ29hY2goKTtcbiAgICAgIHRoaXMucHJlc2VsZWN0UGxhY2VJbkNvYWNoKCk7XG4gICAgfVxuXG4gICAgLy9jbG9zZSBhbGwgb3BlbmVkIHBvcG92ZXJzXG4gICAgdGhpcy5fY2xvc2VQb3BvdmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9vbkZvY3VzTmF2Q29hY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByZXZlbnRDb2FjaFNjcm9sbEJ5UGxhY2VDbGljaykge1xuICAgICAgdGhpcy5wcmVzZWxlY3RQbGFjZUluQ29hY2goKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb2N1c1BsYWNlRWxlbWVudCh0aGlzLmN1cnJTZWxlY3RlZFBsYWNlKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzQXV0b1Njcm9sbGluZyA9IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBwb3BvdmVyIGZvciBleHRyYSBzZXJ2aWNlIGluZm9ybWF0aW9uXG4gICAqIEBwYXJhbSB0cmlnZ2VySWRcbiAgICogQHBhcmFtIHBvcG92ZXJDb250ZW50XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9wb3BvdmVyKFxuICAgIHRyaWdnZXJJZDogc3RyaW5nLFxuICAgIHBvcG92ZXJDb250ZW50OiBzdHJpbmcgfCBudWxsIHwgdHlwZW9mIG5vdGhpbmcsXG4gICk6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICByZXR1cm4gaHRtbGBcbiAgICAgIDxzYmItcG9wb3ZlciB0cmlnZ2VyPVwiJHt0cmlnZ2VySWR9XCIgaG92ZXItdHJpZ2dlcj1cIlwiPlxuICAgICAgICA8cCBjbGFzcz1cInNiYi10ZXh0LXMgc2JiLXNyLXBvcG92ZXJcIj4ke3BvcG92ZXJDb250ZW50fTwvcD5cbiAgICAgIDwvc2JiLXBvcG92ZXI+XG4gICAgYDtcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VyIHRvIGNsb3NlIGFsbCBvcGVuZWQgcG9wb3ZlcnMgKG5vcm1hbGx5IG9ubHkgb25lIGlzIG9wZW5lZCBhdCBhIHRpbWUpXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9jbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5zaGFkb3dSb290XG4gICAgICA/LnF1ZXJ5U2VsZWN0b3JBbGw8U2JiUG9wb3ZlckVsZW1lbnQ+KCdzYmItcG9wb3ZlcjpzdGF0ZShzdGF0ZS1vcGVuZWQpJylcbiAgICAgIC5mb3JFYWNoKChwb3BvdmVyKSA9PiBwb3BvdmVyLmNsb3NlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RGVzY3JpcHRpb25UYWJsZUNvYWNoKGNvYWNoSXRlbTogQ29hY2hJdGVtKTogc3RyaW5nIHtcbiAgICAvL3Nob3cgZGlmZmVyZW50IHRhYmxlIGNhcHRpb24gZm9yIHNjcmVlbnJlYWRlciBpZiBpdCBpcyBhIGxvY29tb3RpdmVcbiAgICBpZiAoY29hY2hJdGVtLnR5cGUgPT09ICdMT0NPTU9USVZFX0NPQUNIJykge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0xPQ09NT1RJVkUnLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoIWNvYWNoSXRlbS5wbGFjZXM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0JMT0NLRURfVEFCTEVfQ0FQVElPTicsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQsIFtcbiAgICAgICAgY29hY2hJdGVtLmlkLFxuICAgICAgXSk7XG4gICAgfVxuXG4gICAgbGV0IHRhYmxlQ29hY2hEZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGNvbnN0IGFyZWFEZXNjcmlwdGlvbnMgPSB0aGlzLl9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhjb2FjaEl0ZW0uZ3JhcGhpY0VsZW1lbnRzISk7XG4gICAgY29uc3Qgc2VydmljZURlc2NyaXB0aW9ucyA9IHRoaXMuX2dldFRpdGxlRGVzY3JpcHRpb25MaXN0U3RyaW5nKGNvYWNoSXRlbS5zZXJ2aWNlRWxlbWVudHMhKTtcblxuICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiA9IGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX1RBQkxFX0NBUFRJT04nLCB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LCBbXG4gICAgICBjb2FjaEl0ZW0uaWQsXG4gICAgXSk7XG5cbiAgICBpZiAoIXRoaXMuaGFzTmF2aWdhdGlvbikge1xuICAgICAgLy8gRXhwYW5kcyB0aGUgbnVtYmVyIG9mIGF2YWlsYWJsZSBzZWF0cyBhbmQgYmljeWNsZSBzcGFjZXMgYXMgaW5mb1xuICAgICAgY29uc3QgZnJlZVBsYWNlcyA9IHRoaXMuZ2V0QXZhaWxhYmxlRnJlZVBsYWNlc051bUZyb21Db2FjaChjb2FjaEl0ZW0ucGxhY2VzKTtcbiAgICAgIGNvbnN0IGZyZWVQbGFjZXNUeHQgPSBnZXRJMThuU2VhdFJlc2VydmF0aW9uKFxuICAgICAgICAnQ09BQ0hfQVZBSUxBQkxFX05VTUJFUl9PRl9QTEFDRVMnLFxuICAgICAgICB0aGlzLl9sYW5ndWFnZS5jdXJyZW50LFxuICAgICAgICBbZnJlZVBsYWNlcy5zZWF0cywgZnJlZVBsYWNlcy5iaWN5Y2xlc10sXG4gICAgICApO1xuICAgICAgdGFibGVDb2FjaERlc2NyaXB0aW9uID0gdGFibGVDb2FjaERlc2NyaXB0aW9uLmNvbmNhdCgnLiAnKS5jb25jYXQoZnJlZVBsYWNlc1R4dCkuY29uY2F0KCcuICcpO1xuICAgIH1cblxuICAgIGlmICghIWFyZWFEZXNjcmlwdGlvbnMgfHwgISFzZXJ2aWNlRGVzY3JpcHRpb25zKSB7XG4gICAgICB0YWJsZUNvYWNoRGVzY3JpcHRpb24gKz1cbiAgICAgICAgJy4gJyArIGdldEkxOG5TZWF0UmVzZXJ2YXRpb24oJ0NPQUNIX0FWQUlMQUJMRV9TRVJWSUNFUycsIHRoaXMuX2xhbmd1YWdlLmN1cnJlbnQpICsgJzogJztcbiAgICAgIHRhYmxlQ29hY2hEZXNjcmlwdGlvbiArPSBzZXJ2aWNlRGVzY3JpcHRpb25zICsgJywgJyArIGFyZWFEZXNjcmlwdGlvbnMgKyAnLic7XG4gICAgfVxuICAgIHJldHVybiB0YWJsZUNvYWNoRGVzY3JpcHRpb247XG4gIH1cblxuICBwcml2YXRlIF9nZXRUaXRsZURlc2NyaXB0aW9uTGlzdFN0cmluZyhkZXNjcmlwdGlvbnNFbGVtZW50czogQmFzZUVsZW1lbnRbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgdW5pcXVlRGVzY3JpcHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgcmV0dXJuIGRlc2NyaXB0aW9uc0VsZW1lbnRzXG4gICAgICA/Lm1hcCgoZGVzY3JpcHRpb25FbGVtZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGljb24gPSBkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbjtcbiAgICAgICAgaWYgKCFpY29uKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbkFscmVhZHlFeGlzdCA9IHVuaXF1ZURlc2NyaXB0aW9ucy5pbmRleE9mKGljb24pID4gLTE7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gZ2V0STE4blNlYXRSZXNlcnZhdGlvbihcbiAgICAgICAgICBkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbiEsXG4gICAgICAgICAgdGhpcy5fbGFuZ3VhZ2UuY3VycmVudCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgaXNWYWxpZERlc2NyaXB0aW9uID1cbiAgICAgICAgICB0aGlzLl9ub3RGaXhlZFJvdGF0YWJsZUFyZWFJY29ucy5pbmRleE9mKGljb24pID09PSAtMSAmJlxuICAgICAgICAgIHRoaXMubm90QXJlYUVsZW1lbnRzLmluZGV4T2YoaWNvbikgPT09IC0xO1xuXG4gICAgICAgIGlmICghZGVzY3JpcHRpb25BbHJlYWR5RXhpc3QpIHtcbiAgICAgICAgICB1bmlxdWVEZXNjcmlwdGlvbnMucHVzaChkZXNjcmlwdGlvbkVsZW1lbnQuaWNvbiEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRyYW5zbGF0aW9uICYmICFkZXNjcmlwdGlvbkFscmVhZHlFeGlzdCAmJiBpc1ZhbGlkRGVzY3JpcHRpb24gPyB0cmFuc2xhdGlvbiA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigoZGVzY3JpcHRpb24pID0+ICEhZGVzY3JpcHRpb24pXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBIVE1MRWxlbWVudFRhZ05hbWVNYXAge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbmFtaW5nLWNvbnZlbnRpb25cbiAgICAnc2JiLXNlYXQtcmVzZXJ2YXRpb24nOiBTYmJTZWF0UmVzZXJ2YXRpb25FbGVtZW50O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdUNBLDhCQUE4QixRQUFRO0FBQ3RDLGlDQUFpQyxRQUFRO0FBQ3pDLHNDQUFzQyxRQUFRO0FBQzlDLHlDQUF5QyxRQUFRO0FBQ2pELGdDQUFnQyxRQUFROzs7OztBQU14QyxJQUFhLDRCQUFiLGNBQStDLDJCQUEwQjtDQUF6RSxjQUFBOztBQUlVLE9BQUEsWUFBWSxJQUFJLHNCQUFzQixLQUFLO0FBSTNDLE9BQUEsOEJBQThCLENBQUMsYUFBYTs7O0FBUHBCLE9BQUEsY0FBc0I7OztBQUMvQixPQUFBLFNBQXlCLENBQUMsaUJBQWlCLFVBQVUseUJBQU0sQ0FBQzs7Q0FRaEUsV0FBVyxtQkFBdUM7QUFDbkUsUUFBTSxXQUFXLGtCQUFrQjtBQUVuQyxNQUFJLGtCQUFrQixJQUFJLGdCQUFnQixDQUN4QyxLQUFJLEtBQUssY0FDUCxNQUFLLFlBQ0QsaUJBQWlCLFFBQVEsQ0FDMUIsU0FBUyxVQUFVLE1BQU0sZ0JBQWdCLFdBQVcsQ0FBQztNQUV4RCxNQUFLLFlBQ0QsaUJBQWlCLFFBQVEsQ0FDMUIsU0FBUyxVQUFVLE1BQU0sYUFBYSxZQUFZLElBQUksQ0FBQzs7Q0FLN0MsYUFBYSxtQkFBdUM7QUFDckUsUUFBTSxhQUFhLGtCQUFrQjtBQUdyQyxP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