@wavemaker/app-ng-runtime 11.10.5-next.27872 → 11.10.5-rc.207

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 (29) hide show
  1. package/components/data/table/bundles/index.umd.js +13 -2
  2. package/components/data/table/esm2022/table.component.mjs +14 -3
  3. package/components/data/table/fesm2022/index.mjs +13 -2
  4. package/components/data/table/fesm2022/index.mjs.map +1 -1
  5. package/components/data/table/table.component.d.ts +1 -0
  6. package/components/input/currency/bundles/index.umd.js +3 -3
  7. package/components/input/currency/esm2022/currency.component.mjs +4 -4
  8. package/components/input/currency/fesm2022/index.mjs +3 -3
  9. package/components/input/currency/fesm2022/index.mjs.map +1 -1
  10. package/components/input/default/bundles/index.umd.js +14 -4
  11. package/components/input/default/esm2022/number/number.component.mjs +4 -4
  12. package/components/input/default/esm2022/text/locale/number-locale.mjs +12 -2
  13. package/components/input/default/fesm2022/index.mjs +14 -4
  14. package/components/input/default/fesm2022/index.mjs.map +1 -1
  15. package/components/input/default/text/locale/number-locale.d.ts +1 -0
  16. package/components/navigation/popover/bundles/index.umd.js +6 -6
  17. package/components/navigation/popover/esm2022/popover.component.mjs +7 -7
  18. package/components/navigation/popover/fesm2022/index.mjs +6 -6
  19. package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  20. package/components/navigation/popover/popover.component.d.ts +4 -0
  21. package/core/bundles/index.umd.js +3 -1
  22. package/core/esm2022/utils/build-utils.mjs +4 -2
  23. package/core/fesm2022/index.mjs +3 -1
  24. package/core/fesm2022/index.mjs.map +1 -1
  25. package/locales/moment-timezone/moment-timezone-with-data.js +6 -5
  26. package/npm-shrinkwrap.json +2 -2
  27. package/package-lock.json +2 -2
  28. package/package.json +1 -1
  29. package/scripts/datatable/datatable.js +20 -4
@@ -252,7 +252,9 @@ const rowActionAttrs = new Map([
252
252
  ['hyperlink.bind', 'hyperlink.bind'],
253
253
  ['target', 'target'],
254
254
  ['conditionalclass.bind', 'conditionalclass.bind'],
255
- ['conditionalstyle.bind', 'conditionalstyle.bind']
255
+ ['conditionalstyle.bind', 'conditionalstyle.bind'],
256
+ ['expandtitle.bind', 'expandtitle.bind'],
257
+ ['collapsetitle.bind', 'collapsetitle.bind']
256
258
  ]);
257
259
  export const getRowActionAttrs = attrs => {
258
260
  let tmpl = '';
@@ -264,4 +266,4 @@ export const getRowActionAttrs = attrs => {
264
266
  });
265
267
  return tmpl;
266
268
  };
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV4RCxrREFBa0Q7QUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFRLEVBQUUsU0FBVSxFQUFFLEVBQUU7SUFDdkQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7UUFDOUgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQTJCLEVBQUUsVUFBZSxFQUFF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Q0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQztRQUNuQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0F0dHJpYnV0ZSwgRWxlbWVudH0gZnJvbSAnQGFuZ3VsYXIvY29tcGlsZXInO1xuaW1wb3J0IHtGb3JtV2lkZ2V0VHlwZX0gZnJvbSAnLi4vZW51bXMvZW51bXMnO1xuaW1wb3J0IHtpbmNsdWRlcywgaXNBcnJheSwgc3RhcnRzV2l0aH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuXG4vLyBGb3IgaHRtbCB1cGxvYWQgd2lkZ2V0LCBhZGQgZXZlbnRzIG9uIGlucHV0IHRhZ1xuY29uc3QgZ2V0VXBsb2FkRXZlbnRUbXBsID0gKGF0dHJzLCBjb3VudGVyPywgZmllbGROYW1lPykgPT4ge1xuICAgIGxldCBldmVudFRtcGwgPSAnJztcbiAgICBhdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgIGlmIChrZXkgJiYga2V5LmVuZHNXaXRoKCcuZXZlbnQnKSkge1xuICAgICAgICAgICBjb25zdCBldmVudE5hbWUgPSBrZXkuc3BsaXQoJy4nKVswXTtcbiAgICAgICAgICAgY29uc3QgY291bnRlclRsID0gY291bnRlciA/IGAke2NvdW50ZXJ9LmAgOiAnJztcbiAgICAgICAgICAgZXZlbnRUbXBsID0gYCAke2V2ZW50VG1wbH0gKCR7ZXZlbnROYW1lfSk9XCIke2NvdW50ZXJUbH10cmlnZ2VyVXBsb2FkRXZlbnQoJGV2ZW50LCAnJHtldmVudE5hbWV9JywgJyR7ZmllbGROYW1lfScsIHJvdylcIiBgO1xuICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZXZlbnRUbXBsO1xufTtcblxuLy8gTWV0aG9kIHRvIGdldCB0aGUgZm9ybSB3aWRnZXQgdGVtcGxhdGVcbmV4cG9ydCBjb25zdCBnZXRGb3JtV2lkZ2V0VGVtcGxhdGUgPSAod2lkZ2V0VHlwZTogc3RyaW5nLCBpbm5lclRtcGw6IHN0cmluZywgYXR0cnM/OiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBvcHRpb25zOiBhbnkgPSB7fSkgPT4ge1xuICAgIGxldCB0bXBsO1xuICAgIGNvbnN0IHVwZGF0ZU9uID0gYXR0cnMuZ2V0KCd1cGRhdGVvbicpO1xuICAgIGNvbnN0IHVwZGF0ZU9uVG1wbCA9IHVwZGF0ZU9uID8gYHVwZGF0ZW9uPVwiJHt1cGRhdGVPbn1cImAgOiAnJztcbiAgICBjb25zdCBzaG93aW5lZGl0bW9kZSA9IGF0dHJzLmdldCgnc2hvd2luZWRpdG1vZGUnKSB8fCBhdHRycy5nZXQoJ3Nob3dpbmVkaXRtb2RlLmJpbmQnKSB8fCB0cnVlO1xuICAgIGNvbnN0IHNob3dUbXBsOiBzdHJpbmcgID0gc2hvd2luZWRpdG1vZGUgPT0gJ2ZhbHNlJz8gYHNob3c9XCIke3Nob3dpbmVkaXRtb2RlfVwiYDogYHNob3cuYmluZD1cIiR7c2hvd2luZWRpdG1vZGV9XCJgO1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TZWFyY2ggdHlwZT1cImF1dG9jb21wbGV0ZVwiIGRlYm91bmNldGltZT1cIiR7YXR0cnMuZ2V0KCdkZWJvdW5jZXRpbWUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNIRUNLQk9YOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWFNFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJncm91cFwiIHdtQ2hlY2tib3hzZXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNISVBTOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgd21DaGlwcyBkZWJvdW5jZXRpbWU9XCIke2F0dHJzLmdldCgnZGVib3VuY2V0aW1lJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvdWw+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNPTE9SUElDS0VSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ29sb3JQaWNrZXIgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVJSRU5DWTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUN1cnJlbmN5ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7dXBkYXRlT25UbXBsfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVU1RPTVdJREdFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVdpZGdldENvbnRhaW5lciBjdXN0b21XaWRnZXRDb250YWluZXIgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHt1cGRhdGVPblRtcGx9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGVUaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuTlVNQkVSOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtTnVtYmVyICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJudW1iZXJcIiAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlBBU1NXT1JEOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20taW5wdXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpID09PSAndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInBhc3N3b3JkXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20taW5wdXQ+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJBRElPU0VUOlxuICAgICAgICAgICAgdG1wbCA9IGA8dWwgcm9sZT1cInJhZGlvZ3JvdXBcIiB3bVJhZGlvc2V0ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQVRJTkc6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SYXRpbmcgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SSUNIVEVYVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVJpY2hUZXh0RWRpdG9yIHJvbGU9XCJ0ZXh0Ym94XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1zZWxlY3QgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9Pjwvd20tc2VsZWN0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UT0dHTEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DaGVja2JveCAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidG9nZ2xlXCIgJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNMSURFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVNsaWRlciAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNXSVRDSDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVN3aXRjaCAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRFWFQ6XG4gICAgICAgICAgICBjb25zdCBpbnB1dFR5cGUgPSBvcHRpb25zLmlucHV0VHlwZSB8fCAnaW5wdXR0eXBlJztcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cIiR7YXR0cnMuZ2V0KGlucHV0VHlwZSkgfHwgJ3RleHQnfVwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUQVJFQTpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLXRleHRhcmVhICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLXRleHRhcmVhPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUVTVEFNUDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bURhdGVUaW1lICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpID09PSAndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5VUExPQUQ6XG4gICAgICAgICAgICBjb25zdCBjb3VudGVyID0gb3B0aW9ucy5jb3VudGVyO1xuICAgICAgICAgICAgY29uc3QgcENvdW50ZXIgPSBvcHRpb25zLnBDb3VudGVyO1xuICAgICAgICAgICAgY29uc3QgdXBsb2FkUHJvcHMgPSBvcHRpb25zLnVwbG9hZFByb3BzO1xuICAgICAgICAgICAgY29uc3QgZXZlbnRUbXBsID0gZ2V0VXBsb2FkRXZlbnRUbXBsKGF0dHJzLCBjb3VudGVyLCB1cGxvYWRQcm9wcyAmJiB1cGxvYWRQcm9wcy5uYW1lKTtcbiAgICAgICAgICAgIGlmICh1cGxvYWRQcm9wcykge1xuICAgICAgICAgICAgICAgIHRtcGwgPSBgPGZvcm0gbmFtZT1cIiR7dXBsb2FkUHJvcHMuZm9ybU5hbWV9XCIgJHtpbm5lclRtcGx9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb2N1cy10YXJnZXQgY2xhc3M9XCJmaWxlLXVwbG9hZFwiIHR5cGU9XCJmaWxlXCIgbmFtZT1cIiR7dXBsb2FkUHJvcHMubmFtZX1cIiAke2V2ZW50VG1wbH0gJHtzaG93VG1wbH0vPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPmA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRtcGwgPSBgPGEgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCIgaHJlZj1cInt7JHtjb3VudGVyfS5ocmVmfX1cIiB0YXJnZXQ9XCJfYmxhbmtcIiAqbmdJZj1cIiR7Y291bnRlcn0uZmlsZXR5cGUgPT09ICdpbWFnZScgJiYgJHtjb3VudGVyfS5ocmVmXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHN0eWxlPVwiaGVpZ2h0OjJlbVwiIGNsYXNzPVwid2kgd2ktZmlsZVwiIFtzcmNdPVwiJHtjb3VudGVyfS5ocmVmXCIvPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlICE9PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ3aSB3aS1maWxlXCI+PC9pPjwvYT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAke2lubmVyVG1wbH0gY2xhc3M9XCJhcHAtYmxvYi11cGxvYWRcIiBbbmdDbGFzc109XCJ7J2ZpbGUtcmVhZG9ubHknOiAke2NvdW50ZXJ9LnJlYWRvbmx5fVwiICR7ZXZlbnRUbXBsfVxuICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiR7Y291bnRlcn0ucmVxdWlyZWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke2F0dHJzLmdldCgna2V5JykgfHwgYXR0cnMuZ2V0KCduYW1lJyl9X2Zvcm1XaWRnZXRcIiBbcmVhZG9ubHldPVwiJHtjb3VudGVyfS5yZWFkb25seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuaGlkZGVuXT1cIiEke3BDb3VudGVyfS5pc1VwZGF0ZU1vZGVcIiBbYWNjZXB0XT1cIiR7Y291bnRlcn0ucGVybWl0dGVkXCIgJHtzaG93VG1wbH0+YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdG1wbCA9IGA8d20taW5wdXQgJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJ0ZXh0XCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9Pjwvd20taW5wdXQ+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gdG1wbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZXF1aXJlZEZvcm1XaWRnZXQgPSAod2lkZ2V0VHlwZSk6IHN0cmluZyA9PiB7XG4gICAgc3dpdGNoICh3aWRnZXRUeXBlKSB7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQVVUT0NPTVBMRVRFOlxuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRZUEVBSEVBRDpcbiAgICAgICAgICAgIHJldHVybiAnd20tc2VhcmNoJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSElQUzpcbiAgICAgICAgICAgIHJldHVybiAnd20tY2hpcHMnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNPTE9SUElDS0VSOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jb2xvcnBpY2tlcic7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ1VSUkVOQ1k6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWN1cnJlbmN5JztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVNUT01XSURHRVQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWN1c3RvbS13aWRnZXQnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEU6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWRhdGUnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEVUSU1FOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1kYXRldGltZSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FU1RBTVA6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXRpbWUnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlJBVElORzpcbiAgICAgICAgICAgIHJldHVybiAnd20tcmF0aW5nJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SSUNIVEVYVDpcbiAgICAgICAgICAgIHJldHVybiAnd20tcmljaHRleHRlZGl0b3InO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlNMSURFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tc2xpZGVyJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiAnd20tdGV4dCc7XG4gICAgfVxufTtcblxuLy8gVGhpcyBtZWh0b2QgaXMgdXNlZCB0byBhZGQgZGF0YXNldGJvdW5kZXhwciBhdHRyaWJ1dGUgZm9yIG5vZGVcbmNvbnN0IGFkZERhdGFzZXRCb3VuZEV4cHJBdHRyaWJ1dGUgPSAoY2hpbGROb2RlOiBFbGVtZW50LCBhdHRyOiBBdHRyaWJ1dGUsIGF0dHJWYWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgYXR0clZhbHVlID0gYXR0clZhbHVlLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuICAgIGNvbnN0IGRhdGFzZXRCb3VuZEF0dHJpYnV0ZSA9IGNoaWxkTm9kZS5hdHRycy5maW5kKCBhID0+IGEubmFtZSA9PT0gJ2RhdGFzZXRib3VuZGV4cHInKTtcbiAgICBpZiAoYXR0ci5uYW1lID09PSAnZGF0YXNldCcgJiYgIWRhdGFzZXRCb3VuZEF0dHJpYnV0ZSkge1xuICAgICAgICBjaGlsZE5vZGUuYXR0cnMucHVzaChuZXcgQXR0cmlidXRlKCdkYXRhc2V0Ym91bmRleHByJywgYXR0clZhbHVlLCBhdHRyLnNvdXJjZVNwYW4sIGF0dHIua2V5U3BhbiwgYXR0ci52YWx1ZVNwYW4sIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7XG4gICAgfVxufTtcblxuXG4vKipcbiAqIGV4cDogVXNlciBidWlsdCBiaW5kIGV4cHJlc3Npb25cbiAqICBUbyBjaGVjayB0aGUgY3VzdG9tIHBpcGUgZXhwcmVzc2lvbnMuXG4gKiAgSWYgdXNlciB1c2UgdGhlIGN1c3RvbSBwaXBlIGV4cHJlc3Npb24gaXQgd2lsbCBjaGVjayBpbiB0aGUgZXhwLiB0aGF0IFwiY3VzdG9tXCIgc3RyaW5nIGV4aXN0IG9yIG5vdCB3aXRoICg6KSBzeW50YXguXG4gKiAgRWc6IGN1c3RvbTpcbiAqICAgICAgY3VzdG9tICAgIDpcbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrSXNDdXN0b21QaXBlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKGV4cCl7XG4gICAgbGV0IGN1c3RvbVJlZ0V4ID0gLyhjdXN0b20oXFxzKjopKS9nO1xuICAgIGxldCBtYXRjaGVzID0gZXhwLm1hdGNoKGN1c3RvbVJlZ0V4KTtcbiAgICByZXR1cm4gbWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aDtcbn1cblxuXG4vLyBUaGUgYm91bmQgdmFsdWUgaXMgcmVwbGFjZWQgd2l0aCB7e2l0ZW0uZmllbGRuYW1lfX0gaGVyZS4gVGhpcyBpcyBuZWVkZWQgYnkgdGhlIGxpdmVMaXN0IHdoZW4gY29tcGlsaW5nIGlubmVyIGVsZW1lbnRzXG5leHBvcnQgY29uc3QgdXBkYXRlVGVtcGxhdGVBdHRycyA9IChyb290Tm9kZTogRWxlbWVudCB8IEFycmF5PEVsZW1lbnQ+LCBwYXJlbnREYXRhU2V0OiBzdHJpbmcsIHdpZGdldE5hbWU6IHN0cmluZywgaW5zdGFuY2U6IHN0cmluZyA9ICcnLCByZWZlcmVuY2VOYW1lOiBzdHJpbmcgPSAnaXRlbScpID0+IHtcblxuICAgIGNvbnN0IHNhbml0aXplZFBhcmVudERhdGFzZXQgPSBwYXJlbnREYXRhU2V0LnJlcGxhY2UoLyhbXmEtekEtWjAtOS5dKS9nLCAnXFxcXCQxJyk7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCcoJyArIHNhbml0aXplZFBhcmVudERhdGFzZXQgKyAnKShcXFxcWzBcXFxcXSk/KC5kYXRhXFxcXFtcXFxcJGlcXFxcXSk/KC5jb250ZW50XFxcXFtcXFxcJGlcXFxcXSk/KFxcXFxbXFxcXCRpXFxcXF0pPycsICdnJyk7XG4gICAgbGV0IGN1cnJlbnRJdGVtUmVnRXg7XG4gICAgbGV0IGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4O1xuICAgIGxldCBmb3JtV2lkZ2V0c1JlZ2V4O1xuICAgIGxldCBub2RlczogQXJyYXk8RWxlbWVudD47XG4gICAgY29uc3Qgd2lkZ2V0TGlzdCA9IHtcbiAgICAgICAgJ3dtLWxpc3QnOiBbJ2l0ZW1jbGFzcycsICdkaXNhYmxlaXRlbScsICdkYXRhc2V0J11cbiAgICB9O1xuXG4gICAgaWYgKHdpZGdldE5hbWUpIHtcbiAgICAgICAgY3VycmVudEl0ZW1SZWdFeCA9IG5ldyBSZWdFeHAoYChXaWRnZXRzLiR7d2lkZ2V0TmFtZX0uY3VycmVudEl0ZW0pXFxcXGJgLCAnZycpO1xuICAgICAgICBjdXJyZW50SXRlbVdpZGdldHNSZWdFeCA9IG5ldyBSZWdFeHAoYChXaWRnZXRzLiR7d2lkZ2V0TmFtZX0uY3VycmVudEl0ZW1XaWRnZXRzKVxcXFxiYCwgJ2cnKTtcbiAgICAgICAgZm9ybVdpZGdldHNSZWdleCA9IG5ldyBSZWdFeHAoYChXaWRnZXRzLiguKikuKGZvcm1XaWRnZXRzfGZpbHRlcldpZGdldHMpKVxcXFxiYCwgJ2cnKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQXJyYXkocm9vdE5vZGUpKSB7XG4gICAgICAgIC8vIFtXTVMtMTY3MTJdLFtXTVMtMTY3NjldLFtXTVMtMTY4MDVdIFRoZSBtYXJrdXAgb2Ygcm9vdCBub2RlKHRhYmxlLCBsaXN0LCBjYXJvdXNlbCkgbmVlZCB0byBiZSB1cGRhdGVkIG9ubHkgZm9yIHRoZSB3aWRnZXRzIG1lbnRpb25lZCBpbiB3aWRnZXRMaXN0IG1hcC5cbiAgICAgICAgbm9kZXMgPSB3aWRnZXRMaXN0Wyhyb290Tm9kZSBhcyBhbnkpLm5hbWVdID8gW3Jvb3ROb2RlIGFzIEVsZW1lbnRdIDogKChyb290Tm9kZSBhcyBhbnkpLmNoaWxkcmVuIHx8IFtdKSBhcyBBcnJheTxFbGVtZW50PjtcbiAgICB9IGVsc2Uge1xuICAgICAgICBub2RlcyA9IHJvb3ROb2RlIGFzIEFycmF5PEVsZW1lbnQ+O1xuICAgIH1cblxuICAgIG5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogRWxlbWVudCkgPT4ge1xuICAgICAgICBpZiAoY2hpbGROb2RlLm5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVOYW1lID0gY2hpbGROb2RlLm5hbWU7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnREYXRhU2V0TGVuZ3RoUmVnZXggPSAgbmV3IFJlZ0V4cCgnYmluZDpcXFxccypcXFxcKConICsgcGFyZW50RGF0YVNldCArICdcXFxcKSpcXFxcLmxlbmd0aFxcXFwpKicpO1xuICAgICAgICAgICAgY2hpbGROb2RlLmF0dHJzLmZvckVhY2goKGF0dHIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyB0cmltIHRoZSBleHRyYSBzcGFjZXMgaW4gYmluZGluZ3NcbiAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBhdHRyLnZhbHVlICYmIGF0dHIudmFsdWUudHJpbSgpO1xuICAgICAgICAgICAgICAgIGlmIChzdGFydHNXaXRoKHZhbHVlLCAnYmluZDonKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbWFya3VwIG9mIHJvb3Qgbm9kZSh0YWJsZSwgbGlzdCwgY2Fyb3VzZWwpIGF0dHJpYnV0ZXMgY29uYXRhaW5zIHNhbWUgZGF0YXNldCB2YXJpYWJsZSBiaW5kaW5nIHRoZW4gdGhvc2UgYXR0cmlidXRlcyBuZWVkIHRvIGJlIHVwZGF0ZWQgb25seSBmb3Igc3BlY2lmaWMgcHJvcGVydGllcyBtZW50aW9uZWQgaW4gd2lkZ2V0TGlzdCBtYXAuXG4gICAgICAgICAgICAgICAgICAgIGlmICghd2lkZ2V0TGlzdFtub2RlTmFtZV0gfHwgKHdpZGdldExpc3Rbbm9kZU5hbWVdICYmIHdpZGdldExpc3Rbbm9kZU5hbWVdLmluZGV4T2YoYXR0ci5uYW1lKSA+IC0xKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBcImJpbmQ6eHh4eHgueHh4eFwiLCBlaXRoZXIgdGhlIGRhdGFTZXQvc2NvcGVEYXRhU2V0IGhhcyB0byBjb250YWluIFwieHh4eC54eHh4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFtXTVMtMTc5MDhdOiBpZiBjaGlsZCB3aWRnZXQgY29udGFpbnMgYmluZCBleHByZXNzaW9uIGFzIHBhcmVuZGF0YXNldC5sZW5ndGggPiAwIHRoZW4gZG9udCByZXBsYWNlIGl0IHdpdGggaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVzKHZhbHVlLCBwYXJlbnREYXRhU2V0KSAmJiB2YWx1ZSAhPT0gJ2JpbmQ6JyArIHBhcmVudERhdGFTZXQgJiYgIXBhcmVudERhdGFTZXRMZW5ndGhSZWdleC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgnYmluZDonLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkRGF0YXNldEJvdW5kRXhwckF0dHJpYnV0ZShjaGlsZE5vZGUsIGF0dHIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UocmVnZXgsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gJ2JpbmQ6JyArIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlzIHRoaXMgY3VzdG9tIGJpbmQgZXhwcmVzc2lvbiBhbmQgY3VycmVudFdpZGdldEl0ZW0gcmVnZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24odmFsdWUpICYmIGN1cnJlbnRJdGVtUmVnRXgpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGRpbmcgdGhlIGN1cnJlbnRJdGVtIGFzIGxhc3QgYXJndW1lbnQgZm9yIHRoZSBleHByZXNzaW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGb3IgdGhlIGN1c3RvbSBwaXBlcyhleHByZXNpb24pLCBpdCB3aWxsIHNlbmQgdGhlIGN1cnJlbnRJdGVtIGFzIGNvbnRleHQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICs9ICAnOicrIGN1cnJlbnRJdGVtUmVnRXguZXhlYyhjdXJyZW50SXRlbVJlZ0V4LnNvdXJjZSlbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlcGxhY2UgaXRlbSBpZiB3aWRnZXQgcHJvcGVydHkgaXMgYm91bmQgdG8gbGl2ZWxpc3QgY3VycmVudEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtUmVnRXggJiYgY3VycmVudEl0ZW1SZWdFeC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhbmdlIHZhbHVlIGZyb20gJ2JpbmQ6V2lkZ2V0cy5mb3JtTmFtZS5mb3JtV2lkZ2V0cy5saXN0TmFtZS5jdXJyZW50SXRlbScgdG8gJ2JpbmQ6V2lkZ2V0cy5saXN0TmFtZS5jdXJyZW50SXRlbSdcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcygnLmZvcm1XaWRnZXRzJykgfHwgdmFsdWUuaW5jbHVkZXMoJy5maWx0ZXJXaWRnZXRzJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoZm9ybVdpZGdldHNSZWdleCwgJ1dpZGdldHMnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZERhdGFzZXRCb3VuZEV4cHJBdHRyaWJ1dGUoY2hpbGROb2RlLCBhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoY3VycmVudEl0ZW1SZWdFeCwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4ICYmIGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4LnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoY3VycmVudEl0ZW1XaWRnZXRzUmVnRXgsIGAke2luc3RhbmNlfWN1cnJlbnRJdGVtV2lkZ2V0c2ApO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYXR0ci52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdXBkYXRlVGVtcGxhdGVBdHRycyhjaGlsZE5vZGUuY2hpbGRyZW4gYXMgQXJyYXk8RWxlbWVudD4sIHBhcmVudERhdGFTZXQsIHdpZGdldE5hbWUsIGluc3RhbmNlLCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgfVxuICAgIH0pO1xufTtcblxuLy8gSWYgZm9ybUNvbnRyb2xOYW1lIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBkb250IGFkZCB0aGUgbmdNb2RlbFxuZXhwb3J0IGNvbnN0IGdldE5nTW9kZWxBdHRyID0gYXR0cnMgPT4ge1xuICAgIGlmIChhdHRycy5oYXMoJ2Zvcm1Db250cm9sTmFtZScpIHx8IGF0dHJzLmhhcygnZm9ybUNvbnRyb2xOYW1lLmJpbmQnKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiAnbmdNb2RlbCc7XG59O1xuXG5jb25zdCByb3dBY3Rpb25BdHRycyA9IG5ldyBNYXAoXG4gICAgW1xuICAgICAgICBbJ2Rpc3BsYXktbmFtZScsICdjYXB0aW9uJ10sXG4gICAgICAgIFsnZGlzcGxheS1uYW1lLmJpbmQnLCAnY2FwdGlvbi5iaW5kJ10sXG4gICAgICAgIFsndGl0bGUnLCAnaGludCddLFxuICAgICAgICBbJ3RpdGxlLmJpbmQnLCAnaGludC5iaW5kJ10sXG4gICAgICAgIFsnc2hvdycsICdzaG93J10sXG4gICAgICAgIFsnc2hvdy5iaW5kJywgJ3Nob3cuYmluZCddLFxuICAgICAgICBbJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJ10sXG4gICAgICAgIFsnZGlzYWJsZWQuYmluZCcsICdkaXNhYmxlZC5iaW5kJ10sXG4gICAgICAgIFsnaHlwZXJsaW5rJywgJ2h5cGVybGluayddLFxuICAgICAgICBbJ2h5cGVybGluay5iaW5kJywgJ2h5cGVybGluay5iaW5kJ10sXG4gICAgICAgIFsndGFyZ2V0JywgJ3RhcmdldCddLFxuICAgICAgICBbJ2NvbmRpdGlvbmFsY2xhc3MuYmluZCcsICdjb25kaXRpb25hbGNsYXNzLmJpbmQnXSxcbiAgICAgICAgWydjb25kaXRpb25hbHN0eWxlLmJpbmQnLCAnY29uZGl0aW9uYWxzdHlsZS5iaW5kJ11cbiAgICBdXG4pO1xuXG5leHBvcnQgY29uc3QgZ2V0Um93QWN0aW9uQXR0cnMgPSBhdHRycyA9PiB7XG4gICAgbGV0IHRtcGwgPSAnJztcbiAgICBhdHRycy5mb3JFYWNoKCh2YWwsIGtleSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdBdHRyID0gcm93QWN0aW9uQXR0cnMuZ2V0KGtleSk7XG4gICAgICAgIGlmIChuZXdBdHRyKSB7XG4gICAgICAgICAgICB0bXBsICs9IGAke25ld0F0dHJ9PVwiJHt2YWx9XCIgYDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB0bXBsO1xufTtcbiJdfQ==
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy91dGlscy9idWlsZC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFVLE1BQU0sbUJBQW1CLENBQUM7QUFDckQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV4RCxrREFBa0Q7QUFDbEQsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFRLEVBQUUsU0FBVSxFQUFFLEVBQUU7SUFDdkQsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ25CLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7UUFDeEIsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDL0MsU0FBUyxHQUFHLElBQUksU0FBUyxLQUFLLFNBQVMsTUFBTSxTQUFTLCtCQUErQixTQUFTLE9BQU8sU0FBUyxXQUFXLENBQUM7UUFDOUgsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsVUFBa0IsRUFBRSxTQUFpQixFQUFFLEtBQTJCLEVBQUUsVUFBZSxFQUFF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QUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUN2QixNQUFNLE9BQU8sR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDVixJQUFJLElBQUksR0FBRyxPQUFPLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBdHRyaWJ1dGUsIEVsZW1lbnR9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmltcG9ydCB7Rm9ybVdpZGdldFR5cGV9IGZyb20gJy4uL2VudW1zL2VudW1zJztcbmltcG9ydCB7aW5jbHVkZXMsIGlzQXJyYXksIHN0YXJ0c1dpdGh9IGZyb20gXCJsb2Rhc2gtZXNcIjtcblxuLy8gRm9yIGh0bWwgdXBsb2FkIHdpZGdldCwgYWRkIGV2ZW50cyBvbiBpbnB1dCB0YWdcbmNvbnN0IGdldFVwbG9hZEV2ZW50VG1wbCA9IChhdHRycywgY291bnRlcj8sIGZpZWxkTmFtZT8pID0+IHtcbiAgICBsZXQgZXZlbnRUbXBsID0gJyc7XG4gICAgYXR0cnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcbiAgICAgICBpZiAoa2V5ICYmIGtleS5lbmRzV2l0aCgnLmV2ZW50JykpIHtcbiAgICAgICAgICAgY29uc3QgZXZlbnROYW1lID0ga2V5LnNwbGl0KCcuJylbMF07XG4gICAgICAgICAgIGNvbnN0IGNvdW50ZXJUbCA9IGNvdW50ZXIgPyBgJHtjb3VudGVyfS5gIDogJyc7XG4gICAgICAgICAgIGV2ZW50VG1wbCA9IGAgJHtldmVudFRtcGx9ICgke2V2ZW50TmFtZX0pPVwiJHtjb3VudGVyVGx9dHJpZ2dlclVwbG9hZEV2ZW50KCRldmVudCwgJyR7ZXZlbnROYW1lfScsICcke2ZpZWxkTmFtZX0nLCByb3cpXCIgYDtcbiAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGV2ZW50VG1wbDtcbn07XG5cbi8vIE1ldGhvZCB0byBnZXQgdGhlIGZvcm0gd2lkZ2V0IHRlbXBsYXRlXG5leHBvcnQgY29uc3QgZ2V0Rm9ybVdpZGdldFRlbXBsYXRlID0gKHdpZGdldFR5cGU6IHN0cmluZywgaW5uZXJUbXBsOiBzdHJpbmcsIGF0dHJzPzogTWFwPHN0cmluZywgc3RyaW5nPiwgb3B0aW9uczogYW55ID0ge30pID0+IHtcbiAgICBsZXQgdG1wbDtcbiAgICBjb25zdCB1cGRhdGVPbiA9IGF0dHJzLmdldCgndXBkYXRlb24nKTtcbiAgICBjb25zdCB1cGRhdGVPblRtcGwgPSB1cGRhdGVPbiA/IGB1cGRhdGVvbj1cIiR7dXBkYXRlT259XCJgIDogJyc7XG4gICAgY29uc3Qgc2hvd2luZWRpdG1vZGUgPSBhdHRycy5nZXQoJ3Nob3dpbmVkaXRtb2RlJykgfHwgYXR0cnMuZ2V0KCdzaG93aW5lZGl0bW9kZS5iaW5kJykgfHwgdHJ1ZTtcbiAgICBjb25zdCBzaG93VG1wbDogc3RyaW5nICA9IHNob3dpbmVkaXRtb2RlID09ICdmYWxzZSc/IGBzaG93PVwiJHtzaG93aW5lZGl0bW9kZX1cImA6IGBzaG93LmJpbmQ9XCIke3Nob3dpbmVkaXRtb2RlfVwiYDtcbiAgICBzd2l0Y2ggKHdpZGdldFR5cGUpIHtcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5BVVRPQ09NUExFVEU6XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVFlQRUFIRUFEOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtU2VhcmNoIHR5cGU9XCJhdXRvY29tcGxldGVcIiBkZWJvdW5jZXRpbWU9XCIke2F0dHJzLmdldCgnZGVib3VuY2V0aW1lJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSEVDS0JPWDpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUNoZWNrYm94ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hFQ0tCT1hTRVQ6XG4gICAgICAgICAgICB0bXBsID0gYDx1bCByb2xlPVwiZ3JvdXBcIiB3bUNoZWNrYm94c2V0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DSElQUzpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHdtQ2hpcHMgZGVib3VuY2V0aW1lPVwiJHthdHRycy5nZXQoJ2RlYm91bmNldGltZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3VsPmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bUNvbG9yUGlja2VyICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ1VSUkVOQ1k6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21DdXJyZW5jeSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3VwZGF0ZU9uVG1wbH0gJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DVVNUT01XSURHRVQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21XaWRnZXRDb250YWluZXIgY3VzdG9tV2lkZ2V0Q29udGFpbmVyICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7dXBkYXRlT25UbXBsfSAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkRBVEU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuREFURVRJTUU6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSBkYXRhZW50cnltb2RlPVwiJHthdHRycy5nZXQoJ2RhdGFlbnRyeW1vZGUnKX1cIiAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC9kaXY+YDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLk5VTUJFUjpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bU51bWJlciAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwibnVtYmVyXCIgJHt1cGRhdGVPblRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5QQVNTV09SRDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCJwYXNzd29yZFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQURJT1NFVDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHVsIHJvbGU9XCJyYWRpb2dyb3VwXCIgd21SYWRpb3NldCAke2lubmVyVG1wbH0gJHtzaG93VG1wbH0+PC91bD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUkFUSU5HOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtUmF0aW5nICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUklDSFRFWFQ6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21SaWNoVGV4dEVkaXRvciByb2xlPVwidGV4dGJveFwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuU0VMRUNUOlxuICAgICAgICAgICAgdG1wbCA9IGA8d20tc2VsZWN0ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9ICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L3dtLXNlbGVjdD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVE9HR0xFOlxuICAgICAgICAgICAgdG1wbCA9IGA8ZGl2IHdtQ2hlY2tib3ggJHtpbm5lclRtcGx9ICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpID09PSAndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gdHlwZT1cInRvZ2dsZVwiICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TTElERVI6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21TbGlkZXIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TV0lUQ0g6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21Td2l0Y2ggJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5URVhUOlxuICAgICAgICAgICAgY29uc3QgaW5wdXRUeXBlID0gb3B0aW9ucy5pbnB1dFR5cGUgfHwgJ2lucHV0dHlwZSc7XG4gICAgICAgICAgICB0bXBsID0gYDx3bS1pbnB1dCAke2lubmVyVG1wbH0gICR7YXR0cnMuZ2V0KCdyZXF1aXJlZCcpPT09J3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IHR5cGU9XCIke2F0dHJzLmdldChpbnB1dFR5cGUpIHx8ICd0ZXh0J31cIiAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS1pbnB1dD5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVEVYVEFSRUE6XG4gICAgICAgICAgICB0bXBsID0gYDx3bS10ZXh0YXJlYSAke2lubmVyVG1wbH0gJHthdHRycy5nZXQoJ3JlcXVpcmVkJykgPT09ICd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSAke3VwZGF0ZU9uVG1wbH0gJHtzaG93VG1wbH0+PC93bS10ZXh0YXJlYT5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRTpcbiAgICAgICAgICAgIHRtcGwgPSBgPGRpdiB3bVRpbWUgJHthdHRycy5nZXQoJ3JlcXVpcmVkJyk9PT0ndHJ1ZScgPyAncmVxdWlyZWQ9dHJ1ZScgOiAnJ30gZGF0YWVudHJ5bW9kZT1cIiR7YXR0cnMuZ2V0KCdkYXRhZW50cnltb2RlJyl9XCIgJHtpbm5lclRtcGx9ICR7c2hvd1RtcGx9PjwvZGl2PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5USU1FU1RBTVA6XG4gICAgICAgICAgICB0bXBsID0gYDxkaXYgd21EYXRlVGltZSAke2F0dHJzLmdldCgncmVxdWlyZWQnKSA9PT0gJ3RydWUnID8gJ3JlcXVpcmVkPXRydWUnIDogJyd9IGRhdGFlbnRyeW1vZGU9XCIke2F0dHJzLmdldCgnZGF0YWVudHJ5bW9kZScpfVwiICR7aW5uZXJUbXBsfSAke3Nob3dUbXBsfT48L2Rpdj5gO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVVBMT0FEOlxuICAgICAgICAgICAgY29uc3QgY291bnRlciA9IG9wdGlvbnMuY291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHBDb3VudGVyID0gb3B0aW9ucy5wQ291bnRlcjtcbiAgICAgICAgICAgIGNvbnN0IHVwbG9hZFByb3BzID0gb3B0aW9ucy51cGxvYWRQcm9wcztcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50VG1wbCA9IGdldFVwbG9hZEV2ZW50VG1wbChhdHRycywgY291bnRlciwgdXBsb2FkUHJvcHMgJiYgdXBsb2FkUHJvcHMubmFtZSk7XG4gICAgICAgICAgICBpZiAodXBsb2FkUHJvcHMpIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxmb3JtIG5hbWU9XCIke3VwbG9hZFByb3BzLmZvcm1OYW1lfVwiICR7aW5uZXJUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9jdXMtdGFyZ2V0IGNsYXNzPVwiZmlsZS11cGxvYWRcIiB0eXBlPVwiZmlsZVwiIG5hbWU9XCIke3VwbG9hZFByb3BzLm5hbWV9XCIgJHtldmVudFRtcGx9ICR7c2hvd1RtcGx9Lz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5gO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0bXBsID0gYDxhIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiIGhyZWY9XCJ7eyR7Y291bnRlcn0uaHJlZn19XCIgdGFyZ2V0PVwiX2JsYW5rXCIgKm5nSWY9XCIke2NvdW50ZXJ9LmZpbGV0eXBlID09PSAnaW1hZ2UnICYmICR7Y291bnRlcn0uaHJlZlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT1cImhlaWdodDoyZW1cIiBjbGFzcz1cIndpIHdpLWZpbGVcIiBbc3JjXT1cIiR7Y291bnRlcn0uaHJlZlwiLz48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImZvcm0tY29udHJvbC1zdGF0aWNcIiB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3ske2NvdW50ZXJ9LmhyZWZ9fVwiICpuZ0lmPVwiJHtjb3VudGVyfS5maWxldHlwZSAhPT0gJ2ltYWdlJyAmJiAke2NvdW50ZXJ9LmhyZWZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwid2kgd2ktZmlsZVwiPjwvaT48L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgJHtpbm5lclRtcGx9IGNsYXNzPVwiYXBwLWJsb2ItdXBsb2FkXCIgW25nQ2xhc3NdPVwieydmaWxlLXJlYWRvbmx5JzogJHtjb3VudGVyfS5yZWFkb25seX1cIiAke2V2ZW50VG1wbH1cbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCIke2NvdW50ZXJ9LnJlcXVpcmVkXCIgdHlwZT1cImZpbGVcIiBuYW1lPVwiJHthdHRycy5nZXQoJ2tleScpIHx8IGF0dHJzLmdldCgnbmFtZScpfV9mb3JtV2lkZ2V0XCIgW3JlYWRvbmx5XT1cIiR7Y291bnRlcn0ucmVhZG9ubHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmhpZGRlbl09XCIhJHtwQ291bnRlcn0uaXNVcGRhdGVNb2RlXCIgW2FjY2VwdF09XCIke2NvdW50ZXJ9LnBlcm1pdHRlZFwiICR7c2hvd1RtcGx9PmA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRtcGwgPSBgPHdtLWlucHV0ICR7aW5uZXJUbXBsfSAke2F0dHJzLmdldCgncmVxdWlyZWQnKT09PSd0cnVlJyA/ICdyZXF1aXJlZD10cnVlJyA6ICcnfSB0eXBlPVwidGV4dFwiICR7dXBkYXRlT25UbXBsfSAke3Nob3dUbXBsfT48L3dtLWlucHV0PmA7XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVxdWlyZWRGb3JtV2lkZ2V0ID0gKHdpZGdldFR5cGUpOiBzdHJpbmcgPT4ge1xuICAgIHN3aXRjaCAod2lkZ2V0VHlwZSkge1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkFVVE9DT01QTEVURTpcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5UWVBFQUhFQUQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNlYXJjaCc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ0hJUFM6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLWNoaXBzJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5DT0xPUlBJQ0tFUjpcbiAgICAgICAgICAgIHJldHVybiAnd20tY29sb3JwaWNrZXInO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLkNVUlJFTkNZOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jdXJyZW5jeSc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuQ1VTVE9NV0lER0VUOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1jdXN0b20td2lkZ2V0JztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFOlxuICAgICAgICAgICAgcmV0dXJuICd3bS1kYXRlJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5EQVRFVElNRTpcbiAgICAgICAgICAgIHJldHVybiAnd20tZGF0ZXRpbWUnO1xuICAgICAgICBjYXNlIEZvcm1XaWRnZXRUeXBlLlRJTUU6XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuVElNRVNUQU1QOlxuICAgICAgICAgICAgcmV0dXJuICd3bS10aW1lJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5SQVRJTkc6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXJhdGluZyc7XG4gICAgICAgIGNhc2UgRm9ybVdpZGdldFR5cGUuUklDSFRFWFQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXJpY2h0ZXh0ZWRpdG9yJztcbiAgICAgICAgY2FzZSBGb3JtV2lkZ2V0VHlwZS5TTElERVI6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXNsaWRlcic7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3dtLXRleHQnO1xuICAgIH1cbn07XG5cbi8vIFRoaXMgbWVodG9kIGlzIHVzZWQgdG8gYWRkIGRhdGFzZXRib3VuZGV4cHIgYXR0cmlidXRlIGZvciBub2RlXG5jb25zdCBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlID0gKGNoaWxkTm9kZTogRWxlbWVudCwgYXR0cjogQXR0cmlidXRlLCBhdHRyVmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGF0dHJWYWx1ZSA9IGF0dHJWYWx1ZS5yZXBsYWNlKCdiaW5kOicsICcnKTtcbiAgICBjb25zdCBkYXRhc2V0Qm91bmRBdHRyaWJ1dGUgPSBjaGlsZE5vZGUuYXR0cnMuZmluZCggYSA9PiBhLm5hbWUgPT09ICdkYXRhc2V0Ym91bmRleHByJyk7XG4gICAgaWYgKGF0dHIubmFtZSA9PT0gJ2RhdGFzZXQnICYmICFkYXRhc2V0Qm91bmRBdHRyaWJ1dGUpIHtcbiAgICAgICAgY2hpbGROb2RlLmF0dHJzLnB1c2gobmV3IEF0dHJpYnV0ZSgnZGF0YXNldGJvdW5kZXhwcicsIGF0dHJWYWx1ZSwgYXR0ci5zb3VyY2VTcGFuLCBhdHRyLmtleVNwYW4sIGF0dHIudmFsdWVTcGFuLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkpO1xuICAgIH1cbn07XG5cblxuLyoqXG4gKiBleHA6IFVzZXIgYnVpbHQgYmluZCBleHByZXNzaW9uXG4gKiAgVG8gY2hlY2sgdGhlIGN1c3RvbSBwaXBlIGV4cHJlc3Npb25zLlxuICogIElmIHVzZXIgdXNlIHRoZSBjdXN0b20gcGlwZSBleHByZXNzaW9uIGl0IHdpbGwgY2hlY2sgaW4gdGhlIGV4cC4gdGhhdCBcImN1c3RvbVwiIHN0cmluZyBleGlzdCBvciBub3Qgd2l0aCAoOikgc3ludGF4LlxuICogIEVnOiBjdXN0b206XG4gKiAgICAgIGN1c3RvbSAgICA6XG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja0lzQ3VzdG9tUGlwZUV4cHJlc3Npb24gPSBmdW5jdGlvbihleHApe1xuICAgIGxldCBjdXN0b21SZWdFeCA9IC8oY3VzdG9tKFxccyo6KSkvZztcbiAgICBsZXQgbWF0Y2hlcyA9IGV4cC5tYXRjaChjdXN0b21SZWdFeCk7XG4gICAgcmV0dXJuIG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGg7XG59XG5cblxuLy8gVGhlIGJvdW5kIHZhbHVlIGlzIHJlcGxhY2VkIHdpdGgge3tpdGVtLmZpZWxkbmFtZX19IGhlcmUuIFRoaXMgaXMgbmVlZGVkIGJ5IHRoZSBsaXZlTGlzdCB3aGVuIGNvbXBpbGluZyBpbm5lciBlbGVtZW50c1xuZXhwb3J0IGNvbnN0IHVwZGF0ZVRlbXBsYXRlQXR0cnMgPSAocm9vdE5vZGU6IEVsZW1lbnQgfCBBcnJheTxFbGVtZW50PiwgcGFyZW50RGF0YVNldDogc3RyaW5nLCB3aWRnZXROYW1lOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcgPSAnJywgcmVmZXJlbmNlTmFtZTogc3RyaW5nID0gJ2l0ZW0nKSA9PiB7XG5cbiAgICBjb25zdCBzYW5pdGl6ZWRQYXJlbnREYXRhc2V0ID0gcGFyZW50RGF0YVNldC5yZXBsYWNlKC8oW15hLXpBLVowLTkuXSkvZywgJ1xcXFwkMScpO1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnKCcgKyBzYW5pdGl6ZWRQYXJlbnREYXRhc2V0ICsgJykoXFxcXFswXFxcXF0pPyguZGF0YVxcXFxbXFxcXCRpXFxcXF0pPyguY29udGVudFxcXFxbXFxcXCRpXFxcXF0pPyhcXFxcW1xcXFwkaVxcXFxdKT8nLCAnZycpO1xuICAgIGxldCBjdXJyZW50SXRlbVJlZ0V4O1xuICAgIGxldCBjdXJyZW50SXRlbVdpZGdldHNSZWdFeDtcbiAgICBsZXQgZm9ybVdpZGdldHNSZWdleDtcbiAgICBsZXQgbm9kZXM6IEFycmF5PEVsZW1lbnQ+O1xuICAgIGNvbnN0IHdpZGdldExpc3QgPSB7XG4gICAgICAgICd3bS1saXN0JzogWydpdGVtY2xhc3MnLCAnZGlzYWJsZWl0ZW0nLCAnZGF0YXNldCddXG4gICAgfTtcblxuICAgIGlmICh3aWRnZXROYW1lKSB7XG4gICAgICAgIGN1cnJlbnRJdGVtUmVnRXggPSBuZXcgUmVnRXhwKGAoV2lkZ2V0cy4ke3dpZGdldE5hbWV9LmN1cnJlbnRJdGVtKVxcXFxiYCwgJ2cnKTtcbiAgICAgICAgY3VycmVudEl0ZW1XaWRnZXRzUmVnRXggPSBuZXcgUmVnRXhwKGAoV2lkZ2V0cy4ke3dpZGdldE5hbWV9LmN1cnJlbnRJdGVtV2lkZ2V0cylcXFxcYmAsICdnJyk7XG4gICAgICAgIGZvcm1XaWRnZXRzUmVnZXggPSBuZXcgUmVnRXhwKGAoV2lkZ2V0cy4oLiopLihmb3JtV2lkZ2V0c3xmaWx0ZXJXaWRnZXRzKSlcXFxcYmAsICdnJyk7XG4gICAgfVxuXG4gICAgaWYgKCFpc0FycmF5KHJvb3ROb2RlKSkge1xuICAgICAgICAvLyBbV01TLTE2NzEyXSxbV01TLTE2NzY5XSxbV01TLTE2ODA1XSBUaGUgbWFya3VwIG9mIHJvb3Qgbm9kZSh0YWJsZSwgbGlzdCwgY2Fyb3VzZWwpIG5lZWQgdG8gYmUgdXBkYXRlZCBvbmx5IGZvciB0aGUgd2lkZ2V0cyBtZW50aW9uZWQgaW4gd2lkZ2V0TGlzdCBtYXAuXG4gICAgICAgIG5vZGVzID0gd2lkZ2V0TGlzdFsocm9vdE5vZGUgYXMgYW55KS5uYW1lXSA/IFtyb290Tm9kZSBhcyBFbGVtZW50XSA6ICgocm9vdE5vZGUgYXMgYW55KS5jaGlsZHJlbiB8fCBbXSkgYXMgQXJyYXk8RWxlbWVudD47XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZXMgPSByb290Tm9kZSBhcyBBcnJheTxFbGVtZW50PjtcbiAgICB9XG5cbiAgICBub2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgaWYgKGNoaWxkTm9kZS5uYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlTmFtZSA9IGNoaWxkTm9kZS5uYW1lO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50RGF0YVNldExlbmd0aFJlZ2V4ID0gIG5ldyBSZWdFeHAoJ2JpbmQ6XFxcXHMqXFxcXCgqJyArIHBhcmVudERhdGFTZXQgKyAnXFxcXCkqXFxcXC5sZW5ndGhcXFxcKSonKTtcbiAgICAgICAgICAgIGNoaWxkTm9kZS5hdHRycy5mb3JFYWNoKChhdHRyKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gdHJpbSB0aGUgZXh0cmEgc3BhY2VzIGluIGJpbmRpbmdzXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gYXR0ci52YWx1ZSAmJiBhdHRyLnZhbHVlLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnRzV2l0aCh2YWx1ZSwgJ2JpbmQ6JykpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG1hcmt1cCBvZiByb290IG5vZGUodGFibGUsIGxpc3QsIGNhcm91c2VsKSBhdHRyaWJ1dGVzIGNvbmF0YWlucyBzYW1lIGRhdGFzZXQgdmFyaWFibGUgYmluZGluZyB0aGVuIHRob3NlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSB1cGRhdGVkIG9ubHkgZm9yIHNwZWNpZmljIHByb3BlcnRpZXMgbWVudGlvbmVkIGluIHdpZGdldExpc3QgbWFwLlxuICAgICAgICAgICAgICAgICAgICBpZiAoIXdpZGdldExpc3Rbbm9kZU5hbWVdIHx8ICh3aWRnZXRMaXN0W25vZGVOYW1lXSAmJiB3aWRnZXRMaXN0W25vZGVOYW1lXS5pbmRleE9mKGF0dHIubmFtZSkgPiAtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBhdHRyaWJ1dGUgdmFsdWUgaXMgXCJiaW5kOnh4eHh4Lnh4eHhcIiwgZWl0aGVyIHRoZSBkYXRhU2V0L3Njb3BlRGF0YVNldCBoYXMgdG8gY29udGFpbiBcInh4eHgueHh4eFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBbV01TLTE3OTA4XTogaWYgY2hpbGQgd2lkZ2V0IGNvbnRhaW5zIGJpbmQgZXhwcmVzc2lvbiBhcyBwYXJlbmRhdGFzZXQubGVuZ3RoID4gMCB0aGVuIGRvbnQgcmVwbGFjZSBpdCB3aXRoIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlcyh2YWx1ZSwgcGFyZW50RGF0YVNldCkgJiYgdmFsdWUgIT09ICdiaW5kOicgKyBwYXJlbnREYXRhU2V0ICYmICFwYXJlbnREYXRhU2V0TGVuZ3RoUmVnZXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ2JpbmQ6JywgJycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZERhdGFzZXRCb3VuZEV4cHJBdHRyaWJ1dGUoY2hpbGROb2RlLCBhdHRyLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlZ2V4LCByZWZlcmVuY2VOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9ICdiaW5kOicgKyB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpcyB0aGlzIGN1c3RvbSBiaW5kIGV4cHJlc3Npb24gYW5kIGN1cnJlbnRXaWRnZXRJdGVtIHJlZ2V4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2hlY2tJc0N1c3RvbVBpcGVFeHByZXNzaW9uKHZhbHVlKSAmJiBjdXJyZW50SXRlbVJlZ0V4KXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHRoZSBjdXJyZW50SXRlbSBhcyBsYXN0IGFyZ3VtZW50IGZvciB0aGUgZXhwcmVzc2lvbi5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHRoZSBjdXN0b20gcGlwZXMoZXhwcmVzaW9uKSwgaXQgd2lsbCBzZW5kIHRoZSBjdXJyZW50SXRlbSBhcyBjb250ZXh0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSAgJzonKyBjdXJyZW50SXRlbVJlZ0V4LmV4ZWMoY3VycmVudEl0ZW1SZWdFeC5zb3VyY2UpWzBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIGl0ZW0gaWYgd2lkZ2V0IHByb3BlcnR5IGlzIGJvdW5kIHRvIGxpdmVsaXN0IGN1cnJlbnRJdGVtXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbVJlZ0V4ICYmIGN1cnJlbnRJdGVtUmVnRXgudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZSB2YWx1ZSBmcm9tICdiaW5kOldpZGdldHMuZm9ybU5hbWUuZm9ybVdpZGdldHMubGlzdE5hbWUuY3VycmVudEl0ZW0nIHRvICdiaW5kOldpZGdldHMubGlzdE5hbWUuY3VycmVudEl0ZW0nXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoJy5mb3JtV2lkZ2V0cycpIHx8IHZhbHVlLmluY2x1ZGVzKCcuZmlsdGVyV2lkZ2V0cycpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGZvcm1XaWRnZXRzUmVnZXgsICdXaWRnZXRzJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhZGREYXRhc2V0Qm91bmRFeHByQXR0cmlidXRlKGNoaWxkTm9kZSwgYXR0ciwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGN1cnJlbnRJdGVtUmVnRXgsIHJlZmVyZW5jZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50SXRlbVdpZGdldHNSZWdFeCAmJiBjdXJyZW50SXRlbVdpZGdldHNSZWdFeC50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKGN1cnJlbnRJdGVtV2lkZ2V0c1JlZ0V4LCBgJHtpbnN0YW5jZX1jdXJyZW50SXRlbVdpZGdldHNgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlQXR0cnMoY2hpbGROb2RlLmNoaWxkcmVuIGFzIEFycmF5PEVsZW1lbnQ+LCBwYXJlbnREYXRhU2V0LCB3aWRnZXROYW1lLCBpbnN0YW5jZSwgcmVmZXJlbmNlTmFtZSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn07XG5cbi8vIElmIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgaXMgcHJlc2VudCwgZG9udCBhZGQgdGhlIG5nTW9kZWxcbmV4cG9ydCBjb25zdCBnZXROZ01vZGVsQXR0ciA9IGF0dHJzID0+IHtcbiAgICBpZiAoYXR0cnMuaGFzKCdmb3JtQ29udHJvbE5hbWUnKSB8fCBhdHRycy5oYXMoJ2Zvcm1Db250cm9sTmFtZS5iaW5kJykpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gJ25nTW9kZWwnO1xufTtcblxuY29uc3Qgcm93QWN0aW9uQXR0cnMgPSBuZXcgTWFwKFxuICAgIFtcbiAgICAgICAgWydkaXNwbGF5LW5hbWUnLCAnY2FwdGlvbiddLFxuICAgICAgICBbJ2Rpc3BsYXktbmFtZS5iaW5kJywgJ2NhcHRpb24uYmluZCddLFxuICAgICAgICBbJ3RpdGxlJywgJ2hpbnQnXSxcbiAgICAgICAgWyd0aXRsZS5iaW5kJywgJ2hpbnQuYmluZCddLFxuICAgICAgICBbJ3Nob3cnLCAnc2hvdyddLFxuICAgICAgICBbJ3Nob3cuYmluZCcsICdzaG93LmJpbmQnXSxcbiAgICAgICAgWydkaXNhYmxlZCcsICdkaXNhYmxlZCddLFxuICAgICAgICBbJ2Rpc2FibGVkLmJpbmQnLCAnZGlzYWJsZWQuYmluZCddLFxuICAgICAgICBbJ2h5cGVybGluaycsICdoeXBlcmxpbmsnXSxcbiAgICAgICAgWydoeXBlcmxpbmsuYmluZCcsICdoeXBlcmxpbmsuYmluZCddLFxuICAgICAgICBbJ3RhcmdldCcsICd0YXJnZXQnXSxcbiAgICAgICAgWydjb25kaXRpb25hbGNsYXNzLmJpbmQnLCAnY29uZGl0aW9uYWxjbGFzcy5iaW5kJ10sXG4gICAgICAgIFsnY29uZGl0aW9uYWxzdHlsZS5iaW5kJywgJ2NvbmRpdGlvbmFsc3R5bGUuYmluZCddLFxuICAgICAgICBbJ2V4cGFuZHRpdGxlLmJpbmQnLCAnZXhwYW5kdGl0bGUuYmluZCddLFxuICAgICAgICBbJ2NvbGxhcHNldGl0bGUuYmluZCcsICdjb2xsYXBzZXRpdGxlLmJpbmQnXVxuICAgIF1cbik7XG5cbmV4cG9ydCBjb25zdCBnZXRSb3dBY3Rpb25BdHRycyA9IGF0dHJzID0+IHtcbiAgICBsZXQgdG1wbCA9ICcnO1xuICAgIGF0dHJzLmZvckVhY2goKHZhbCwga2V5KSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0F0dHIgPSByb3dBY3Rpb25BdHRycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKG5ld0F0dHIpIHtcbiAgICAgICAgICAgIHRtcGwgKz0gYCR7bmV3QXR0cn09XCIke3ZhbH1cIiBgO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRtcGw7XG59O1xuIl19
@@ -328,7 +328,9 @@ const rowActionAttrs = new Map([
328
328
  ['hyperlink.bind', 'hyperlink.bind'],
329
329
  ['target', 'target'],
330
330
  ['conditionalclass.bind', 'conditionalclass.bind'],
331
- ['conditionalstyle.bind', 'conditionalstyle.bind']
331
+ ['conditionalstyle.bind', 'conditionalstyle.bind'],
332
+ ['expandtitle.bind', 'expandtitle.bind'],
333
+ ['collapsetitle.bind', 'collapsetitle.bind']
332
334
  ]);
333
335
  const getRowActionAttrs = attrs => {
334
336
  let tmpl = '';