{"remainingRequest":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\performanceAnalysis\\HealthAnalysis.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\src\\views\\Device\\performanceAnalysis\\HealthAnalysis.vue","mtime":1731062408909},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\bzzgj-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gJ2VjaGFydHMnDQppbXBvcnQgZGljdFV0aWxzIGZyb20gJ0AvY29tcG9uZW50cy9kaWN0L0RpY3RTZWxlY3RVdGlscy5qcycNCmltcG9ydCB2dWVTZWFtbGVzc1Njcm9sbCBmcm9tICd2dWUtc2VhbWxlc3Mtc2Nyb2xsJw0KaW1wb3J0IGVxdWlwbWVudEluZGV4IGZyb20gJ0AvYXBpL2RldmljZS9lcXVpcG1lbnRJbmRleC5qcycNCmltcG9ydCByZXNvdXJjZU1hbmFnZSBmcm9tICdAL2FwaS9kZXZpY2UvcmVzb3VyY2VNYW5hZ2UuanMnDQppbXBvcnQgZXF1aXBtZW50TWFuYWdlIGZyb20gJ0AvYXBpL2RldmljZS9lcXVpcG1lbnRNYW5hZ2UuanMnDQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgY29tcG9uZW50czogew0KICAgIHZ1ZVNlYW1sZXNzU2Nyb2xsDQogIH0sDQogIGRhdGEoKSB7DQogICAgdmFyIHRoYXQgPSB0aGlzDQogICAgcmV0dXJuIHsNCiAgICAgIHNlbGVjdEE6IGZhbHNlLA0KICAgICAgc2VsZWN0QjogdHJ1ZSwNCiAgICAgIHNlbGVjdEM6IHRydWUsDQogICAgICBzZWxlY3REOiB0cnVlLA0KICAgICAgc2VsZWN0RTogdHJ1ZSwNCiAgICAgIHdhcm5BbmFseXplRGF0YTogW10sDQogICAgICByZWdpb25QaWNrZXI6IFtdLA0KICAgICAgZW5kVGltZTogJycsDQogICAgICBzdGFydFRpbWU6ICcnLA0KICAgICAgd2FybkZhaWx1cmVUaW1lOiAnJywNCiAgICAgIHdhcm5GYWlsdXJlRmFpbHVyZTogJycsDQogICAgICB3YXJuRmFpbHVyZUFsYXJtOiAnJywNCiAgICAgIGFyZWFTdGF0dXNBcmVhTmFtZTogW10sDQogICAgICBwcm9kdWN0VmFsdWU6ICcnLA0KICAgICAgZGV2aWNlVmFsdWU6ICdic3BxeCcsDQogICAgICBwcm9kdWN0RGF0YTogW10sDQogICAgICBpbnRlbGxlY3REYXRhOiBbDQogICAgICAgIHsNCiAgICAgICAgICBhbGFybTogMCwNCiAgICAgICAgICBmYWlsdXJlOiAwLA0KICAgICAgICAgIG5vcm1hbDogMCwNCiAgICAgICAgICBudW06IDAsDQogICAgICAgICAgb3RoZXI6IDAsDQogICAgICAgICAgc2NyYXA6IDAsDQogICAgICAgICAgdHlwZUNvZGU6ICdiYXJyaWNhZGUnLA0KICAgICAgICAgIHR5cGVOYW1lOiAn5Y2H6ZmN6Lev6Zqc5Lqn5ZOBJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgYWxhcm06IDAsDQogICAgICAgICAgZmFpbHVyZTogMCwNCiAgICAgICAgICBub3JtYWw6IDAsDQogICAgICAgICAgbnVtOiAwLA0KICAgICAgICAgIG90aGVyOiAwLA0KICAgICAgICAgIHNjcmFwOiAwLA0KICAgICAgICAgIHR5cGVDb2RlOiAnYmFycmljYWRlJywNCiAgICAgICAgICB0eXBlTmFtZTogJ+WNh+mZjei3r+manOS6p+WTgScNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGFsYXJtOiAwLA0KICAgICAgICAgIGZhaWx1cmU6IDAsDQogICAgICAgICAgbm9ybWFsOiAwLA0KICAgICAgICAgIG51bTogMCwNCiAgICAgICAgICBvdGhlcjogMCwNCiAgICAgICAgICBzY3JhcDogMCwNCiAgICAgICAgICB0eXBlQ29kZTogJ2JhcnJpY2FkZScsDQogICAgICAgICAgdHlwZU5hbWU6ICfljYfpmY3ot6/pmpzkuqflk4EnDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBhbGFybTogMCwNCiAgICAgICAgICBmYWlsdXJlOiAwLA0KICAgICAgICAgIG5vcm1hbDogMCwNCiAgICAgICAgICBudW06IDAsDQogICAgICAgICAgb3RoZXI6IDAsDQogICAgICAgICAgc2NyYXA6IDAsDQogICAgICAgICAgdHlwZUNvZGU6ICdiYXJyaWNhZGUnLA0KICAgICAgICAgIHR5cGVOYW1lOiAn5Y2H6ZmN6Lev6Zqc5Lqn5ZOBJw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgYWxhcm06IDAsDQogICAgICAgICAgZmFpbHVyZTogMCwNCiAgICAgICAgICBub3JtYWw6IDAsDQogICAgICAgICAgbnVtOiAwLA0KICAgICAgICAgIG90aGVyOiAwLA0KICAgICAgICAgIHNjcmFwOiAwLA0KICAgICAgICAgIHR5cGVDb2RlOiAnYmFycmljYWRlJywNCiAgICAgICAgICB0eXBlTmFtZTogJ+WNh+mZjei3r+manOS6p+WTgScNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIGFsYXJtOiAwLA0KICAgICAgICAgIGZhaWx1cmU6IDAsDQogICAgICAgICAgbm9ybWFsOiAwLA0KICAgICAgICAgIG51bTogMCwNCiAgICAgICAgICBvdGhlcjogMCwNCiAgICAgICAgICBzY3JhcDogMCwNCiAgICAgICAgICB0eXBlQ29kZTogJ2JhcnJpY2FkZScsDQogICAgICAgICAgdHlwZU5hbWU6ICfljYfpmY3ot6/pmpzkuqflk4EnDQogICAgICAgIH0sDQogICAgICAgIHsNCiAgICAgICAgICBhbGFybTogMCwNCiAgICAgICAgICBmYWlsdXJlOiAwLA0KICAgICAgICAgIG5vcm1hbDogMCwNCiAgICAgICAgICBudW06IDAsDQogICAgICAgICAgb3RoZXI6IDAsDQogICAgICAgICAgc2NyYXA6IDAsDQogICAgICAgICAgdHlwZUNvZGU6ICdiYXJyaWNhZGUnLA0KICAgICAgICAgIHR5cGVOYW1lOiAn5Y2H6ZmN6Lev6Zqc5Lqn5ZOBJw0KICAgICAgICB9DQogICAgICBdLA0KICAgICAgZXF1aXBtZW50RGF0YTogW10sDQoNCiAgICAgIGFjdGl2ZU5hbWU6ICcvMTU1MjkxMTQ3ODMwMTAwMzc3NicsDQogICAgICBjb25kaXRpb25zOiBbDQogICAgICAgIHsNCiAgICAgICAgICBuYW1lOiAn57u85ZCI566h55CG5bGAJywNCiAgICAgICAgICB2YWx1ZTogJy8xNTUyOTExNDc4MzAxMDAzNzc2Jw0KICAgICAgICB9LA0KICAgICAgICB7DQogICAgICAgICAgbmFtZTogJ+a4nemrmOeJqeS4micsDQogICAgICAgICAgdmFsdWU6ICcvMTY2NzEwMjQxNzc1OTUxMDUyOCcNCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIG5hbWU6ICfop4bpopHnm5HmjqcnLA0KICAgICAgICAgIHZhbHVlOiAnJw0KICAgICAgICB9DQogICAgICBdLA0KICAgICAgc2VhcmNoRm9ybTogew0KICAgICAgICBwcm9kdWN0VmFsdWU6ICcnLA0KICAgICAgICByZWdpb25WYWx1ZTogJycNCiAgICAgIH0sDQogICAgICB0cmVlRGF0YTogW10sDQogICAgICBsb2FkaW5nOiBmYWxzZSwNCiAgICAgIHJlcG9ydEZvcm1EYXRhOiBbXSwNCiAgICAgIHNlYXJjaFR5cGU6IGZhbHNlLA0KICAgICAgYXJlYUlkOiAnJywNCiAgICAgIGZ1bGxJZDogJycsDQogICAgICB0eXBlQ29kZTogJycsDQogICAgICBzdGFydFRpbWU6ICcnLA0KICAgICAgZW5kVGltZTogJycsDQogICAgICBwcm9kdWN0VmFsdWUxOiAnJywNCiAgICAgIHByb2R1Y3REYXRhT25lOiBbXSwNCiAgICAgIGVxdWlwbWVudFN0YXR1c0RhdGE6IFtdLA0KICAgICAgLy8g55So5LqO5bey6YCJ5oup55qE56ys5LiA5Liq5pe26Ze0DQogICAgICBwaWNrZXJPbmVEYXRlOiBudWxsLA0KICAgICAgcGlja2VyT3B0aW9uczogew0KICAgICAgICAvLyDojrflj5bpgInmi6nnmoTnrKzkuIDkuKrml7bpl7QNCiAgICAgICAgb25QaWNrOiAob2JqKSA9PiB7DQogICAgICAgICAgLy8g5oqK56ys5LiA5Liq5pe26Ze05YiG6YWN57uZcGlja2VyT25lRGF0ZQ0KICAgICAgICAgIGxldCBzdGFydERhdGUgPSBuZXcgRGF0ZShvYmoubWluRGF0ZSkuZ2V0VGltZSgpDQogICAgICAgICAgdGhhdC5waWNrZXJPbmVEYXRlID0gc3RhcnREYXRlDQogICAgICAgIH0sDQogICAgICAgIGRpc2FibGVkRGF0ZSh0aW1lKSB7DQogICAgICAgICAgaWYgKHRoYXQucGlja2VyT25lRGF0ZSkgew0KICAgICAgICAgICAgY29uc3QgZGF5ID0gNyAqIDI0ICogMzYwMCAqIDEwMDANCiAgICAgICAgICAgIGxldCBtYXhUaW1lID0gdGhhdC5waWNrZXJPbmVEYXRlICsgZGF5DQogICAgICAgICAgICBsZXQgbWluVGltZSA9IHRoYXQucGlja2VyT25lRGF0ZSAtIGRheQ0KICAgICAgICAgICAgcmV0dXJuICgNCiAgICAgICAgICAgICAgdGltZS5nZXRUaW1lKCkgPiBtYXhUaW1lIHx8DQogICAgICAgICAgICAgIHRpbWUuZ2V0VGltZSgpIDwgbWluVGltZSB8fA0KICAgICAgICAgICAgICB0aW1lLmdldFRpbWUoKSA+IERhdGUubm93KCkNCiAgICAgICAgICAgICkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuIHRpbWUuZ2V0VGltZSgpID4gRGF0ZS5ub3coKQ0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfSwNCiAgY3JlYXRlZCgpIHsNCiAgICB0aGlzLmxvYWRQcm9kdWN0KCkgLy/kuqflk4HmoJENCiAgICB0aGlzLmFyZWFTdGF0dXNMaXN0KCkgLy/orr7lpIfliIbmnpANCiAgICB0aGlzLmdldEFyZWFUcmVlKCkgLy/ljLrln5/moJENCiAgICB0aGlzLmdldEFsbHByb2R1Y3RUeXBlKCkNCiAgICB0aGlzLmdldFJlcG9ydEZvcm0oKSAvLyDojrflj5bljLrln5/orr7lpIfliIbmnpDmlbDmja4NCiAgICB0aGlzLmdldEVxdWlwbWVudExpZmUoKSAvL+iOt+WPluiuvuWkh+W5tOmZkOWIhuaekOaVsOaNrg0KICB9LA0KICBtb3VudGVkKCkgew0KICB9LA0KICBjb21wdXRlZDoge30sDQogIG1ldGhvZHM6IHsNCiAgICBnZXRBbGxwcm9kdWN0VHlwZSgpIHsNCiAgICAgIGVxdWlwbWVudEluZGV4LkFsbHByb2R1Y3RUeXBlKHt9LCAocmVzKSA9PiB7DQogICAgICAgIGlmIChyZXMuc3RhdGUpIHsNCiAgICAgICAgICB0aGlzLnByb2R1Y3REYXRhT25lID0gcmVzLnZhbHVlDQogICAgICAgICAgdGhpcy5wcm9kdWN0VmFsdWUxID0NCiAgICAgICAgICAgIHRoaXMucHJvZHVjdERhdGFPbmVbMF0uY2hpbGRyZW5bMF0uZnVsbElkDQogICAgICAgICAgdGhpcy50eXBlQ29kZSA9IHRoaXMucHJvZHVjdERhdGFPbmVbMF0uY2hpbGRyZW5bMF0uZnVsbElkDQogICAgICAgICAgdGhpcy5nZXRFcXVpcG1lbnRTdGF0dXMoKQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgLy/mkJzntKINCiAgICBoYW5kbGVTZWFyY2goKSB7DQogICAgICB0aGlzLnNlYXJjaFR5cGUgPSB0cnVlDQogICAgICBpZiAodGhpcy5hY3RpdmVOYW1lID09IDIpIHsNCiAgICAgICAgdGhpcy5nZXRWaWRlb0RhdGEoKQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5nZXRSZXBvcnRGb3JtKCkNCiAgICAgIH0NCiAgICB9LA0KICAgIHRvRGV2aWNlUGFnZSh2YWwpIHsNCiAgICAgIGlmICh0aGlzLmFjdGl2ZU5hbWUgIT0gMikgew0KICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgncHJvZHVjdCcsIEpTT04uc3RyaW5naWZ5KHZhbCkpDQogICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsNCiAgICAgICAgICBwYXRoOiAnRGV2aWNlUGFnZScNCiAgICAgICAgfSkNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtb25pdG9yJywgSlNPTi5zdHJpbmdpZnkodmFsKSkNCiAgICAgICAgY29uc29sZS5sb2coJ+ebkeaOpycpDQogICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsNCiAgICAgICAgICBwYXRoOiAnTW9uaXRvclBhZ2UnDQogICAgICAgIH0pDQogICAgICB9DQogICAgfSwNCiAgICAvL3RhYuWIh+aNog0KICAgIGhhbmRsZVRhYnNDbGljayh0YWIpIHsNCiAgICAgIHRoaXMuc2VhcmNoVHlwZSA9IGZhbHNlDQogICAgICB0aGlzLnNlYXJjaEZvcm0gPSB7DQogICAgICAgIHJlZ2lvblZhbHVlOiBbXSwNCiAgICAgICAgcHJvZHVjdFZhbHVlOiBbXQ0KICAgICAgfQ0KICAgICAgdGhpcy5sb2FkUHJvZHVjdCgpDQogICAgICBpZiAodGFiLmluZGV4ID09IDIpIHsNCiAgICAgICAgdGhpcy5nZXRWaWRlb0RhdGEoKQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5nZXRSZXBvcnRGb3JtKCkNCiAgICAgIH0NCiAgICB9LA0KICAgIC8v5Lqn5ZOB5qCRDQogICAgbG9hZFByb2R1Y3QoKSB7DQogICAgICByZXNvdXJjZU1hbmFnZS5nZXRQcm9kdWN0VHJlZSgNCiAgICAgICAgew0KICAgICAgICAgIC8vIGZ1bGxJZDogdGhpcy5hY3RpdmVOYW1lDQogICAgICAgIH0sDQogICAgICAgIChyZXMpID0+IHsNCiAgICAgICAgICBpZiAocmVzLnN0YXRlKSB7DQogICAgICAgICAgICB0aGlzLnByb2R1Y3REYXRhID0gcmVzLnZhbHVlDQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICApDQogICAgfSwNCiAgICAvL+WMuuWfnw0KICAgIGdldEFyZWFUcmVlKCkgew0KICAgICAgZXF1aXBtZW50TWFuYWdlLmxvYWRBcmVhVHJlZSgNCiAgICAgICAgew0KICAgICAgICAgIGlkOiAnMCcNCiAgICAgICAgfSwNCiAgICAgICAgKHJlcykgPT4gew0KICAgICAgICAgIHRoaXMudHJlZURhdGEgPSByZXMudmFsdWUgLy8gdGhpcy5mb3JtYXREYXRhKHJlcy5yb3dzKQ0KICAgICAgICAgIHRoaXMuJHNldCh0aGlzLnRyZWVEYXRhKQ0KICAgICAgICB9DQogICAgICApDQogICAgfSwNCiAgICByZWdpb25DaGFuZ2UodmFsLCBkYXRhKSB7DQogICAgICBjb25zb2xlLmxvZyhkYXRhKQ0KICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpDQogICAgICBpZiAodmFsID09ICdwcm9kdWN0Jykgew0KICAgICAgICB0aGlzLnR5cGVDb2RlID0gYXJyLnBvcCgpDQogICAgICB9IGVsc2UgaWYgKHZhbCA9PSAndGltZScpIHsNCiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkgew0KICAgICAgICAgIHRoaXMucGlja2VyT25lRGF0ZSA9IG51bGwNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IGFyclswXQ0KICAgICAgICAgIHRoaXMuZW5kVGltZSA9IGFyclsxXQ0KICAgICAgICB9DQogICAgICB9DQogICAgICB0aGlzLmdldEVxdWlwbWVudFN0YXR1cygpDQogICAgfSwNCiAgICAvLyDojrflj5bmiqXooajmlbDmja4NCiAgICBnZXRSZXBvcnRGb3JtKCkgew0KICAgICAgbGV0IGFyZWFGdWxsSWQgPSB0aGlzLnNlYXJjaEZvcm0ucmVnaW9uVmFsdWUNCiAgICAgICAgPyB0aGlzLnNlYXJjaEZvcm0ucmVnaW9uVmFsdWUucG9wKCkNCiAgICAgICAgOiAnJw0KICAgICAgbGV0IGZ1bGxJZCA9ICcnDQogICAgICBpZiAodGhpcy5zZWFyY2hUeXBlKSB7DQogICAgICAgIGZ1bGxJZCA9IHRoaXMuc2VhcmNoRm9ybS5wcm9kdWN0VmFsdWUucG9wKCkNCiAgICAgICAgY29uc29sZS5sb2coZnVsbElkKQ0KICAgICAgICBpZiAoIWZ1bGxJZCkgew0KICAgICAgICAgIGZ1bGxJZCA9IHRoaXMuYWN0aXZlTmFtZQ0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBmdWxsSWQgPSB0aGlzLmFjdGl2ZU5hbWUNCiAgICAgIH0NCiAgICAgIGxldCBpc0ludGVsbGVjdCA9ICcnDQogICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpDQogICAgICBmb3JtRGF0YS5hcHBlbmQoJ2FyZWFGdWxsSWQnLCBhcmVhRnVsbElkID8gYXJlYUZ1bGxJZCA6ICcnKQ0KICAgICAgZm9ybURhdGEuYXBwZW5kKCdmdWxsSWQnLCBmdWxsSWQgPyBmdWxsSWQgOiAnJykNCiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaXNJbnRlbGxlY3QnLCBpc0ludGVsbGVjdCA/IGlzSW50ZWxsZWN0IDogJycpDQogICAgICBjb25zdCBjb25maWcgPSB7DQogICAgICAgIGhlYWRlcnM6IHsNCiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ211bHRpcGFydC9mb3JtLWRhdGEnDQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIHRoaXMuJGh0dHANCiAgICAgICAgLnBvc3QoDQogICAgICAgICAgd2luZG93LmNvbnRleHQucG9ydGFsICsNCiAgICAgICAgICBgL2hvbWVwYWdlL3YxL2RldmljZVByb2R1Y3RTdGF0aXN0aWNzYCwNCiAgICAgICAgICBmb3JtRGF0YSwNCiAgICAgICAgICBjb25maWcNCiAgICAgICAgKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXRlKSB7DQogICAgICAgICAgICB0aGlzLnJlcG9ydEZvcm1EYXRhID0gcmVzLmRhdGEudmFsdWUNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgfSwNCiAgICAvL+inhumikQ0KICAgIGdldFZpZGVvRGF0YSgpIHsNCiAgICAgIGxldCBhcmVhRnVsbElkID0gdGhpcy5zZWFyY2hGb3JtLnJlZ2lvblZhbHVlLnBvcCgpDQogICAgICBsZXQgaXNJbnRlbGxlY3QgPSAnJw0KICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKQ0KICAgICAgZm9ybURhdGEuYXBwZW5kKCdhcmVhRnVsbElkJywgYXJlYUZ1bGxJZCA/IGFyZWFGdWxsSWQgOiAnJykNCiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZnVsbElkJywgJycpDQogICAgICBmb3JtRGF0YS5hcHBlbmQoJ2lzSW50ZWxsZWN0JywgaXNJbnRlbGxlY3QgPyBpc0ludGVsbGVjdCA6ICcnKQ0KICAgICAgY29uc3QgY29uZmlnID0gew0KICAgICAgICBoZWFkZXJzOiB7DQogICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJw0KICAgICAgICB9DQogICAgICB9DQogICAgICB0aGlzLiRodHRwDQogICAgICAgIC5wb3N0KA0KICAgICAgICAgIHdpbmRvdy5jb250ZXh0LnBvcnRhbCArIGAvaG9tZXBhZ2UvdjEvdmlkZW9TdGF0aXN0aWNzYCwNCiAgICAgICAgICBmb3JtRGF0YSwNCiAgICAgICAgICBjb25maWcNCiAgICAgICAgKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXRlKSB7DQogICAgICAgICAgICB0aGlzLnJlcG9ydEZvcm1EYXRhID0gcmVzLmRhdGEudmFsdWUNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgfSwNCiAgICBwcm9kdWN0Q2hhbmdlKHZhbCkgew0KICAgICAgaWYgKHRoaXMucHJvZHVjdFZhbHVlLmxlbmd0aCA+IDApIHsNCiAgICAgICAgbGV0IGFyciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9kdWN0VmFsdWUpKQ0KICAgICAgICB0aGlzLmZ1bGxJZCA9IGFyci5wb3AoKQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5mdWxsSWQgPSAnJw0KICAgICAgfQ0KICAgICAgdGhpcy5hcmVhU3RhdHVzTGlzdCgpDQogICAgfSwNCiAgICAvL+iuvuWkh+WIhuaekA0KICAgIGFyZWFTdGF0dXNMaXN0KCkgew0KICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKQ0KICAgICAgZm9ybURhdGEuYXBwZW5kKCdhcmVhSWQnLCB0aGlzLmFyZWFJZCA/IHRoaXMuYXJlYUlkIDogJycpDQogICAgICBmb3JtRGF0YS5hcHBlbmQoJ2Z1bGxJZCcsIHRoaXMuZnVsbElkID8gdGhpcy5mdWxsSWQgOiAnJykNCiAgICAgIGNvbnN0IGNvbmZpZyA9IHsNCiAgICAgICAgaGVhZGVyczogew0KICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgdGhpcy4kaHR0cA0KICAgICAgICAucG9zdCgNCiAgICAgICAgICB3aW5kb3cuY29udGV4dC5wb3J0YWwgKyBgL2hvbWVwYWdlL3YxL2FyZWFTdGF0dXNBbmFseXplYCwNCiAgICAgICAgICBmb3JtRGF0YSwNCiAgICAgICAgICBjb25maWcNCiAgICAgICAgKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXRlKSB7DQogICAgICAgICAgICB0aGlzLmVxdWlwbWVudERhdGEgPSByZXMuZGF0YS52YWx1ZQ0KICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgICAgICAgICB0aGlzLmVxdWlwbWVudEluaXQoKQ0KICAgICAgICAgICAgfSkNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgfSwNCiAgICAvLyDorr7lpIfliIbmnpBlY2hhcnRzDQogICAgZXF1aXBtZW50SW5pdCgpIHsNCiAgICAgIGxldCBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdCYXInKSkNCiAgICAgIC8vIOaMh+WumuWbvuihqOeahOmFjee9rumhueWSjOaVsOaNrg0KICAgICAgbGV0IEFEYXRhID0gW10NCiAgICAgIGxldCBCRGF0YSA9IFtdDQogICAgICBsZXQgQ0RhdGEgPSBbXQ0KICAgICAgdGhpcy5lcXVpcG1lbnREYXRhLmZvckVhY2goKGUpID0+IHsNCiAgICAgICAgQURhdGEucHVzaCh7DQogICAgICAgICAgdmFsdWU6IGUubm9ybWFsLA0KICAgICAgICAgIGV4dHJhOiB7DQogICAgICAgICAgICBwYXJhbTogZS5hcmVhSWQNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICAgIEJEYXRhLnB1c2goew0KICAgICAgICAgIHZhbHVlOiBlLmZhaWx1cmUsDQogICAgICAgICAgZXh0cmE6IHsNCiAgICAgICAgICAgIHBhcmFtOiBlLmFyZWFJZA0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgICAgQ0RhdGEucHVzaCh7DQogICAgICAgICAgdmFsdWU6IGUuYWxhcm0sDQogICAgICAgICAgZXh0cmE6IHsNCiAgICAgICAgICAgIHBhcmFtOiBlLmFyZWFJZA0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgIH0pDQogICAgICBsZXQgb3B0aW9uID0gew0KICAgICAgICB0b29sYm94OiB7DQogICAgICAgICAgZmVhdHVyZTogew0KICAgICAgICAgICAgcmVzdG9yZTogew0KICAgICAgICAgICAgICBzaG93OiB0cnVlLA0KICAgICAgICAgICAgICB0aXRsZTogJ+i/lOWbnicNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgIGljb25TdHlsZTogew0KICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjMDAwJw0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgLy8gdGl0bGU6IHsNCiAgICAgICAgLy8gCXRleHQ6ICflhajmoKHkurrmlbDmsYfmgLsnLA0KICAgICAgICAvLyAJbGVmdDogJ2NlbnRlcicNCiAgICAgICAgLy8gfSwNCiAgICAgICAgdG9vbHRpcDogew0KICAgICAgICAgIHRyaWdnZXI6ICdheGlzJywNCiAgICAgICAgICBheGlzUG9pbnRlcjogew0KICAgICAgICAgICAgdHlwZTogJ3NoYWRvdycNCiAgICAgICAgICB9DQogICAgICAgIH0sDQogICAgICAgIGxlZ2VuZDoge30sDQogICAgICAgIGdyaWQ6IHsNCiAgICAgICAgICBsZWZ0OiA1MCwNCiAgICAgICAgICByaWdodDogMjAsDQogICAgICAgICAgYm90dG9tOiAnMTAlJw0KICAgICAgICB9LA0KICAgICAgICB4QXhpczogew0KICAgICAgICAgIGRhdGE6IHRoaXMuZXF1aXBtZW50RGF0YS5tYXAoKGEpID0+IGEuYXJlYU5hbWUpDQogICAgICAgIH0sDQogICAgICAgIHlBeGlzOiB7fSwNCiAgICAgICAgc2VyaWVzOiBbDQogICAgICAgICAgew0KICAgICAgICAgICAgLy8gY29sb3I6ICcjMTg5MGZmJywNCiAgICAgICAgICAgIHR5cGU6ICdiYXInLA0KICAgICAgICAgICAgbmFtZTogJ+ato+W4uOaVsCcsDQogICAgICAgICAgICBkYXRhOiBBRGF0YSwNCiAgICAgICAgICAgIGJhcldpZHRoOiAyNSwNCiAgICAgICAgICAgIHNob3dCYWNrZ3JvdW5kOiB0cnVlLA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgZm9udFNpemU6IDEzLA0KICAgICAgICAgICAgICBjb2xvcjogJyMwMDAnLA0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ3RvcCcsDQogICAgICAgICAgICAgIC8vIOmFjee9ruiHquWumuS5ieWPguaVsA0KICAgICAgICAgICAgICBleHRyYTogew0KICAgICAgICAgICAgICAgIGN1c3RvbVBhcmFtOiAn6L+Z6YeM5piv6Ieq5a6a5LmJ5Y+C5pWwJw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIG5vcm1hbDogew0KICAgICAgICAgICAgICAgIGNvbG9yOiBuZXcgZWNoYXJ0cy5ncmFwaGljLkxpbmVhckdyYWRpZW50KA0KICAgICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCwNCiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyMwMUQxRkYnDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsDQogICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMTg5MGZmJw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICBdDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfSwNCiAgICAgICAgICB7DQogICAgICAgICAgICBjb2xvcjogJyNmZjgwMDAnLA0KICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICBuYW1lOiAn5pWF6Zqc5pWwJywNCiAgICAgICAgICAgIGJhcldpZHRoOiAyNSwNCiAgICAgICAgICAgIHNob3dCYWNrZ3JvdW5kOiB0cnVlLA0KICAgICAgICAgICAgZGF0YTogQkRhdGEsDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiB0cnVlLA0KICAgICAgICAgICAgICBmb250U2l6ZTogMTMsDQogICAgICAgICAgICAgIGNvbG9yOiAnIzAwMCcsDQogICAgICAgICAgICAgIHBvc2l0aW9uOiAndG9wJywNCiAgICAgICAgICAgICAgLy8g6YWN572u6Ieq5a6a5LmJ5Y+C5pWwDQogICAgICAgICAgICAgIGV4dHJhOiB7DQogICAgICAgICAgICAgICAgY3VzdG9tUGFyYW06ICfov5nph4zmmK/oh6rlrprkuYnlj4LmlbAnDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgICAgbm9ybWFsOiB7DQogICAgICAgICAgICAgICAgY29sb3I6IG5ldyBlY2hhcnRzLmdyYXBoaWMuTGluZWFyR3JhZGllbnQoDQogICAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgICAxLA0KICAgICAgICAgICAgICAgICAgWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI0ZGQkQ3QScNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMSwNCiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjgwMDAnDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgICAgICApDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIGNvbG9yOiAnI2Y5YzcwMCcsDQogICAgICAgICAgICB0eXBlOiAnYmFyJywNCiAgICAgICAgICAgIG5hbWU6ICfmiqXorabmlbAnLA0KICAgICAgICAgICAgYmFyV2lkdGg6IDI1LA0KICAgICAgICAgICAgZGF0YTogQ0RhdGEsDQogICAgICAgICAgICBzaG93QmFja2dyb3VuZDogdHJ1ZSwNCiAgICAgICAgICAgIGxhYmVsOiB7DQogICAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICAgIGZvbnRTaXplOiAxMywNCiAgICAgICAgICAgICAgY29sb3I6ICcjMDAwJywNCiAgICAgICAgICAgICAgcG9zaXRpb246ICd0b3AnLA0KICAgICAgICAgICAgICBleHRyYTogew0KICAgICAgICAgICAgICAgIGN1c3RvbVBhcmFtOiAn6L+Z6YeM5piv6Ieq5a6a5LmJ5Y+C5pWwJw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIG5vcm1hbDogew0KICAgICAgICAgICAgICAgIGNvbG9yOiBuZXcgZWNoYXJ0cy5ncmFwaGljLkxpbmVhckdyYWRpZW50KA0KICAgICAgICAgICAgICAgICAgMCwNCiAgICAgICAgICAgICAgICAgIDAsDQogICAgICAgICAgICAgICAgICAwLA0KICAgICAgICAgICAgICAgICAgMSwNCiAgICAgICAgICAgICAgICAgIFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCwNCiAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNGRkUzNzUnDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDEsDQogICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZjljNzAwJw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICBdDQogICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICBdDQogICAgICB9DQogICAgICBvcHRpb24ueEF4aXMuZGF0YSA9IHRoaXMuZXF1aXBtZW50RGF0YS5tYXAoKGEpID0+IGEuYXJlYU5hbWUpDQogICAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pDQogICAgICAvLyDngrnlh7vmn7Hnirbop6blj5Hkuovku7bvvIjngrnlh7vkuovku7bvvIzngrnlh7vkuIvpkrvmn6Xor6LlubTnuqfmiYDlsZ7nmoTnj63nuqfmlbDmja7vvIkg5aaC5LiN6ZyA6KaB5LiL6ZK75p+l6K+i5Y+v5LiN5YaZDQogICAgICBteUNoYXJ0Lm9uKCdjbGljaycsIChwYXJhbXMpID0+IHsNCiAgICAgICAgbGV0IGFyZWFJZCA9IHBhcmFtcy5kYXRhLmV4dHJhLnBhcmFtDQogICAgICAgIGlmIChhcmVhSWQpIHsNCiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpDQogICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdhcmVhSWQnLCBhcmVhSWQgPyBhcmVhSWQgOiAnJykNCiAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2Z1bGxJZCcsIHRoaXMuZnVsbElkID8gdGhpcy5mdWxsSWQgOiAnJykNCiAgICAgICAgICBjb25zdCBjb25maWcgPSB7DQogICAgICAgICAgICBoZWFkZXJzOiB7DQogICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgICAgdGhpcy4kaHR0cA0KICAgICAgICAgICAgLnBvc3QoDQogICAgICAgICAgICAgIHdpbmRvdy5jb250ZXh0LnBvcnRhbCArDQogICAgICAgICAgICAgIGAvaG9tZXBhZ2UvdjEvYXJlYVN0YXR1c0FuYWx5emVgLA0KICAgICAgICAgICAgICBmb3JtRGF0YSwNCiAgICAgICAgICAgICAgY29uZmlnDQogICAgICAgICAgICApDQogICAgICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0ZSkgew0KICAgICAgICAgICAgICAgIGxldCBBRGF0YSA9IFtdDQogICAgICAgICAgICAgICAgbGV0IEJEYXRhID0gW10NCiAgICAgICAgICAgICAgICBsZXQgQ0RhdGEgPSBbXQ0KICAgICAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50RGF0YSA9IHJlcy5kYXRhLnZhbHVlDQogICAgICAgICAgICAgICAgcmVzLmRhdGEudmFsdWUuZm9yRWFjaCgoZSkgPT4gew0KICAgICAgICAgICAgICAgICAgQURhdGEucHVzaCh7DQogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLm5vcm1hbCwNCiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHsNCiAgICAgICAgICAgICAgICAgICAgICBwYXJhbTogZS5hcmVhSWQNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgIEJEYXRhLnB1c2goew0KICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZS5mYWlsdXJlLA0KICAgICAgICAgICAgICAgICAgICBleHRyYTogew0KICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiBlLmFyZWFJZA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgICAgQ0RhdGEucHVzaCh7DQogICAgICAgICAgICAgICAgICAgIHZhbHVlOiBlLmFsYXJtLA0KICAgICAgICAgICAgICAgICAgICBleHRyYTogew0KICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiBlLmFyZWFJZA0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgb3B0aW9uLnNlcmllcyA9IFsNCiAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMTg5MGZmJywNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICAgICAgICAgIG5hbWU6ICfmraPluLjmlbAnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiBBRGF0YQ0KICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZmY4MDAwJywNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICAgICAgICAgIG5hbWU6ICfmlYXpmpzmlbAnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiBCRGF0YQ0KICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjZjljNzAwJywNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICAgICAgICAgIG5hbWU6ICfmiqXorabmlbAnLA0KICAgICAgICAgICAgICAgICAgICBkYXRhOiBDRGF0YQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgICAgICBvcHRpb24ueEF4aXMuZGF0YSA9IHRoaXMuZXF1aXBtZW50RGF0YS5tYXAoDQogICAgICAgICAgICAgICAgICAoYSkgPT4gYS5hcmVhTmFtZQ0KICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pDQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgfSwNCiAgICAvL+iOt+WPluiuvuWkh+S9v+eUqOW5tOmZkOWIhuaekOaVsOaNrg0KICAgIGdldEVxdWlwbWVudExpZmUoKSB7DQogICAgICBlcXVpcG1lbnRJbmRleC5saWZlQW5hbHl6ZSgocmVzKSA9PiB7DQogICAgICAgIGlmIChyZXMuc3RhdGUpIHsNCiAgICAgICAgICByZXMudmFsdWUgPSByZXMudmFsdWUubWFwKChpdGVtKSA9PiB7DQogICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICB0eXBlTmFtZTogaXRlbS50eXBlTmFtZSwNCiAgICAgICAgICAgICAg5q2j5bi45L2/55So5bm06ZmQ5pWw6YePOiBpdGVtLm5vcm1hbCwNCiAgICAgICAgICAgICAg5Li06L+R5L2/55So5bm06ZmQ5pWw6YePOiBpdGVtLndhcm4sDQogICAgICAgICAgICAgIOi2hei/h+S9v+eUqOW5tOmZkOaVsOmHjzogaXRlbS5hbGFybQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pDQoNCiAgICAgICAgICB0aGlzLndhcm5BbmFseXplRGF0YSA9IHJlcy52YWx1ZQ0KICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50TGlmZSgpDQogICAgICAgICAgfSkNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICB9LA0KICAgIC8v6K6+5aSH5L2/55So5bm06ZmQ5YiG5p6QDQogICAgZXF1aXBtZW50TGlmZSgpIHsNCiAgICAgIGxldCBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWZlQW5hbHl6ZScpKQ0KICAgICAgbGV0IG9wdGlvbiA9IHsNCiAgICAgICAgbGVnZW5kOiB7fSwNCiAgICAgICAgdG9vbHRpcDoge30sDQogICAgICAgIGdyaWQ6IHsNCiAgICAgICAgICAvLyB0b3A6ICcyJScsDQogICAgICAgICAgbGVmdDogJzIlJywNCiAgICAgICAgICByaWdodDogJzQlJywNCiAgICAgICAgICBib3R0b206ICc0JScsDQogICAgICAgICAgY29udGFpbkxhYmVsOiB0cnVlDQogICAgICAgIH0sDQogICAgICAgIGNvbG9yOiBbJyMxODkwZmYnLCAnI2Y5YzcwMCcsICcjZmY4MDAwJ10sDQogICAgICAgIGRhdGFzZXQ6IHsNCiAgICAgICAgICAvLyAgICAgICAgICB0eXBlTmFtZTogaXRlbS50eXBlTmFtZSwNCiAgICAgICAgICAvLyDorr7lpIfkvb/nlKjlubTpmZDpooTorabmlbA6IGl0ZW0ud2FybiwNCiAgICAgICAgICAvLyDorr7lpIfmiqXorabmlbA6IGl0ZW0uYWxhcm0NCiAgICAgICAgICBkaW1lbnNpb25zOiBbDQogICAgICAgICAgICAndHlwZU5hbWUnLA0KICAgICAgICAgICAgJ+ato+W4uOS9v+eUqOW5tOmZkOaVsOmHjycsDQogICAgICAgICAgICAn5Li06L+R5L2/55So5bm06ZmQ5pWw6YePJywNCiAgICAgICAgICAgICfotoXov4fkvb/nlKjlubTpmZDmlbDph48nDQogICAgICAgICAgXSwNCiAgICAgICAgICBzb3VyY2U6IHRoaXMud2FybkFuYWx5emVEYXRhDQogICAgICAgIH0sDQogICAgICAgIC8vIHhBeGlzOiB7dHlwZTogJ2NhdGVnb3J5J30sDQogICAgICAgIHhBeGlzOiB7DQogICAgICAgICAgdHlwZTogJ3ZhbHVlJywNCiAgICAgICAgICBib3VuZGFyeUdhcDogWzAsIDAuMV0sDQogICAgICAgICAgYXhpc0xhYmVsOiB7DQogICAgICAgICAgICB0ZXh0U3R5bGU6IHsNCiAgICAgICAgICAgICAgLy8gY29sb3I6ICIjQzVEMkYyIiwgLy/popzoibINCiAgICAgICAgICAgICAgZm9udFNpemU6ICcxNCcgLy/lrZfkvZPlpKflsI8NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgIC8vIG1heDogMTUwLCAvL+acgOWkp+WAvA0KICAgICAgICAgIG1pbjogMCwgLy/mnIDlsI/lgLwNCiAgICAgICAgICBzcGxpdE51bWJlcjogMywgLy/pl7TpmpTmlbDph48NCiAgICAgICAgICBheGlzVGljazogew0KICAgICAgICAgICAgLy/lnZDmoIfovbTliLvluqbnm7jlhbPorr7nva4NCiAgICAgICAgICAgIHNob3c6IGZhbHNlIC8v5piv5ZCm5pi+56S65Z2Q5qCH6L205Yi75bqm44CCDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICB5QXhpczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeScNCiAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgIC8vIERlY2xhcmUgc2V2ZXJhbCBiYXIgc2VyaWVzLCBlYWNoIHdpbGwgYmUgbWFwcGVkDQogICAgICAgIC8vIHRvIGEgY29sdW1uIG9mIGRhdGFzZXQuc291cmNlIGJ5IGRlZmF1bHQuDQogICAgICAgIHNlcmllczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdiYXInLA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgZm9udFNpemU6IDEzLA0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0Jw0KICAgICAgICAgICAgICAvLyBub3JtYWw6IHsNCiAgICAgICAgICAgICAgLy8gCXNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICAvLyAJcG9zaXRpb246ICd0b3AnDQogICAgICAgICAgICAgIC8vIH0sDQogICAgICAgICAgICAgIC8vIGZvcm1hdHRlcjogJ3tAdmFsdWV9JywNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBzaG93QmFja2dyb3VuZDogdHJ1ZSwNCiAgICAgICAgICAgIGl0ZW1TdHlsZTogew0KICAgICAgICAgICAgICBub3JtYWw6IHsNCiAgICAgICAgICAgICAgICBjb2xvcjogZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbGluZWFyJywNCiAgICAgICAgICAgICAgICAgICAgeDogMSwNCiAgICAgICAgICAgICAgICAgICAgeTogMCwNCiAgICAgICAgICAgICAgICAgICAgeDI6IDAsDQogICAgICAgICAgICAgICAgICAgIHkyOiAwLA0KICAgICAgICAgICAgICAgICAgICBjb2xvclN0b3BzOiBbDQogICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMDFEMUZGJyAvLyAwJSDlpITnmoTpopzoibINCiAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMC45LA0KICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICcjMTg5MGZmJyAvLyAxMDAlIOWkhOeahOminOiJsg0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgXQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0sDQogICAgICAgICAgew0KICAgICAgICAgICAgdHlwZTogJ2JhcicsDQogICAgICAgICAgICBsYWJlbDogew0KICAgICAgICAgICAgICBzaG93OiB0cnVlLA0KICAgICAgICAgICAgICBmb250U2l6ZTogMTMsDQogICAgICAgICAgICAgIHBvc2l0aW9uOiAncmlnaHQnDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgc2hvd0JhY2tncm91bmQ6IHRydWUsDQogICAgICAgICAgICBpdGVtU3R5bGU6IHsNCiAgICAgICAgICAgICAgbm9ybWFsOiB7DQogICAgICAgICAgICAgICAgY29sb3I6IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgcmV0dXJuIHsNCiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2xpbmVhcicsDQogICAgICAgICAgICAgICAgICAgIHg6IDEsDQogICAgICAgICAgICAgICAgICAgIHk6IDAsDQogICAgICAgICAgICAgICAgICAgIHgyOiAwLA0KICAgICAgICAgICAgICAgICAgICB5MjogMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3JTdG9wczogWw0KICAgICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCwNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI0ZGRTM3NScgLy8gMCUg5aSE55qE6aKc6ImyDQogICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAuOSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAnI2Y5YzcwMCcgLy8gMTAwJSDlpITnmoTpopzoibINCiAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIF0NCiAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdiYXInLA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgZm9udFNpemU6IDEzLA0KICAgICAgICAgICAgICBwb3NpdGlvbjogJ3JpZ2h0Jw0KICAgICAgICAgICAgICAvLyBub3JtYWw6IHsNCiAgICAgICAgICAgICAgLy8gCXNob3c6IGZhbHNlLA0KICAgICAgICAgICAgICAvLyAJcG9zaXRpb246ICd0b3AnDQogICAgICAgICAgICAgIC8vIH0sDQogICAgICAgICAgICAgIC8vIGZvcm1hdHRlcjogJ3tAdmFsdWV9Jw0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHNob3dCYWNrZ3JvdW5kOiB0cnVlLA0KICAgICAgICAgICAgaXRlbVN0eWxlOiB7DQogICAgICAgICAgICAgIG5vcm1hbDogew0KICAgICAgICAgICAgICAgIGNvbG9yOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdsaW5lYXInLA0KICAgICAgICAgICAgICAgICAgICB4OiAxLA0KICAgICAgICAgICAgICAgICAgICB5OiAwLA0KICAgICAgICAgICAgICAgICAgICB4MjogMCwNCiAgICAgICAgICAgICAgICAgICAgeTI6IDAsDQogICAgICAgICAgICAgICAgICAgIGNvbG9yU3RvcHM6IFsNCiAgICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ6IDAsDQogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNGRkJEN0EnIC8vIDAlIOWkhOeahOminOiJsg0KICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAwLjksDQogICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJyNmZjgwMDAnIC8vIDEwMCUg5aSE55qE6aKc6ImyDQogICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBdDQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICAvL+a7muWKqOadoQ0KICAgICAgICBkYXRhWm9vbTogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdzbGlkZXInLA0KICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgIHlBeGlzSW5kZXg6IFswXSwNCiAgICAgICAgICAgIHdpZHRoOiA2LCAvL+e7hOS7tuWuveW6pg0KICAgICAgICAgICAgLy8gYmFja2dyb3VuZENvbG9yOiAiIzFBNTNERCIsIC8v5Lik6L655pyq6YCJ5Lit55qE5ruR5Yqo5p2h5Yy65Z+f55qE6aKc6ImyDQogICAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsDQogICAgICAgICAgICAvLyBib3JkZXJDb2xvcjogIiMwOTM2ODMiLCAvL+a7muWKqOadoei+ueahhuminOiJsg0KICAgICAgICAgICAgLy8gZmlsbGVyQ29sb3I6ICIjMDkzNjgzIiwgLy/pgInkuK3nmoTmu5HliqjmnaHljLrln5/nmoTpopzoibINCiAgICAgICAgICAgIGxlZnQ6ICc5NSUnLCAvL+a7muWKqOadoeS9jee9rg0KICAgICAgICAgICAgc3RhcnQ6IDAsIC8v5pWw5o2u56qX5Y+j6IyD5Zu055qE6LW35aeL55m+5YiG5q+UDQogICAgICAgICAgICBlbmQ6IDEwLCAvL+aVsOaNrueql+WPo+iMg+WbtOeahOe7k+adn+eZvuWIhuavlA0KICAgICAgICAgICAgcmVhbHRpbWU6IHRydWUgLy/mmK/lkKblrp7ml7bmm7TmlrANCiAgICAgICAgICB9DQogICAgICAgIF0NCiAgICAgIH0NCiAgICAgIG9wdGlvbiAmJiBteUNoYXJ0LnNldE9wdGlvbihvcHRpb24pDQogICAgfSwNCiAgICAvL+iuvuWkh+eKtuaAgeWIhuaekA0KICAgIGdldEVxdWlwbWVudFN0YXR1cygpIHsNCiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCkNCiAgICAgIGZvcm1EYXRhLmFwcGVuZCgndHlwZUNvZGUnLCB0aGlzLnR5cGVDb2RlID8gdGhpcy50eXBlQ29kZSA6ICcnKQ0KICAgICAgZm9ybURhdGEuYXBwZW5kKCdzdGFydFRpbWUnLCB0aGlzLnN0YXJ0VGltZSA/IHRoaXMuc3RhcnRUaW1lIDogJycpDQogICAgICBmb3JtRGF0YS5hcHBlbmQoJ2VuZFRpbWUnLCB0aGlzLmVuZFRpbWUgPyB0aGlzLmVuZFRpbWUgOiAnJykNCiAgICAgIGNvbnN0IGNvbmZpZyA9IHsNCiAgICAgICAgaGVhZGVyczogew0KICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgdGhpcy4kaHR0cA0KICAgICAgICAucG9zdCgNCiAgICAgICAgICB3aW5kb3cuY29udGV4dC5wb3J0YWwgKw0KICAgICAgICAgIGAvaG9tZXBhZ2UvdjEvd2FybkZhaWx1cmVIaXNBbmFseXplYCwNCiAgICAgICAgICBmb3JtRGF0YSwNCiAgICAgICAgICBjb25maWcNCiAgICAgICAgKQ0KICAgICAgICAudGhlbigocmVzKSA9PiB7DQogICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXRlKSB7DQogICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMuZGF0YS52YWx1ZSkNCiAgICAgICAgICAgIHRoaXMuZXF1aXBtZW50U3RhdHVzRGF0YSA9IHJlcy5kYXRhLnZhbHVlDQogICAgICAgICAgICAvLyB0aGlzLmVxdWlwbWVudERhdGEgPSByZXMuZGF0YS52YWx1ZQ0KICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCkgPT4gew0KICAgICAgICAgICAgICB0aGlzLmVxdWlwbWVudFN0YXR1cygpDQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICB9LA0KICAgIC8v6K6+5aSH54q25oCB5YiG5p6QZWNoYXJ0cw0KICAgIGVxdWlwbWVudFN0YXR1cygpIHsNCiAgICAgIGxldCBteUNoYXJ0ID0gZWNoYXJ0cy5pbml0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXZpY2VMaXN0JykpDQogICAgICBsZXQgeE5hbWUgPSBbXQ0KICAgICAgbGV0IEFEYXRhID0gW10NCiAgICAgIGxldCBCRGF0YSA9IFtdDQogICAgICB0aGlzLmVxdWlwbWVudFN0YXR1c0RhdGEuZm9yRWFjaCgoZSkgPT4gew0KICAgICAgICB4TmFtZS5wdXNoKGUudHlwZU5hbWUpDQogICAgICAgIEFEYXRhLnB1c2goZS5mYWlsdXJlKQ0KICAgICAgICBCRGF0YS5wdXNoKGUuYWxhcm0pDQogICAgICB9KQ0KDQogICAgICBsZXQgb3B0aW9uID0gew0KICAgICAgICB0b29sdGlwOiB7DQogICAgICAgICAgdHJpZ2dlcjogJ2F4aXMnLA0KICAgICAgICAgIGF4aXNQb2ludGVyOiB7DQogICAgICAgICAgICB0eXBlOiAnY3Jvc3MnLA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzZhNzk4NScNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9LA0KICAgICAgICAgIGZvcm1hdHRlcjogZnVuY3Rpb24ocGFyYW1zKSB7DQogICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhwYXJhbXMpDQogICAgICAgICAgICB2YXIgcmVsVmFsID0gcGFyYW1zWzBdLm5hbWUNCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcGFyYW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgew0KICAgICAgICAgICAgICByZWxWYWwgKz0NCiAgICAgICAgICAgICAgICAnPGJyLz4nICsNCiAgICAgICAgICAgICAgICBwYXJhbXNbaV0ubWFya2VyICsNCiAgICAgICAgICAgICAgICBwYXJhbXNbaV0uc2VyaWVzTmFtZSArDQogICAgICAgICAgICAgICAgJzonICsNCiAgICAgICAgICAgICAgICAnPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+JyArDQogICAgICAgICAgICAgICAgcGFyYW1zW2ldLnZhbHVlICsNCiAgICAgICAgICAgICAgICAnPC9zcGFuPicgKw0KICAgICAgICAgICAgICAgICfkuKonDQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gcmVsVmFsDQogICAgICAgICAgfQ0KICAgICAgICB9LA0KICAgICAgICAvLyDmm7TmlLnlm77kvovpu5jorqTpopzoibIo5L6d5qyh5bqU55SoKQ0KICAgICAgICBjb2xvcjogWycjZjljNzAwJywgJyNmZjgwMDAnXSwNCiAgICAgICAgbGVnZW5kOiB7DQogICAgICAgICAgaWNvbjogJ2NpcmNsZScsIC8v5Zu+5L6L5qC35byPDQogICAgICAgICAgZGF0YTogWyfmiqXorabmlbDph48nLCAn5pWF6Zqc5pWw6YePJ10NCiAgICAgICAgfSwNCiAgICAgICAgLy8gdG9vbGJveDogew0KICAgICAgICAvLyAgIGZlYXR1cmU6IHsNCiAgICAgICAgLy8gICAgIHNhdmVBc0ltYWdlOiB7fQ0KICAgICAgICAvLyAgIH0NCiAgICAgICAgLy8gfSwNCiAgICAgICAgZ3JpZDogew0KICAgICAgICAgIGxlZnQ6ICczJScsDQogICAgICAgICAgcmlnaHQ6ICc0JScsDQogICAgICAgICAgYm90dG9tOiAnNSUnLA0KICAgICAgICAgIGNvbnRhaW5MYWJlbDogdHJ1ZQ0KICAgICAgICB9LA0KICAgICAgICB4QXhpczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeScsDQogICAgICAgICAgICAvLyBib3VuZGFyeUdhcDogZmFsc2UsDQogICAgICAgICAgICBkYXRhOiB4TmFtZSwNCiAgICAgICAgICAgIGF4aXNMYWJlbDogew0KICAgICAgICAgICAgICBpbnRlcnZhbDogMCAvL+S7o+ihqOaYvuekuuaJgOaciXjovbTmoIfnrb7mmL7npLoNCiAgICAgICAgICAgICAgLy8gcm90YXRlOiA0NSAvL+S7o+ihqOmAhuaXtumSiOaXi+i9rDQ15bqmDQogICAgICAgICAgICB9DQogICAgICAgICAgfQ0KICAgICAgICBdLA0KICAgICAgICB5QXhpczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG1heDogZnVuY3Rpb24odmFsdWUpIHsNCiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1heCArIHBhcnNlSW50KHZhbHVlLm1heCAqIDAuMikNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBtaW5JbnRlcnZhbDogMSwNCiAgICAgICAgICAgIHR5cGU6ICd2YWx1ZScNCiAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgIHNlcmllczogWw0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfmiqXorabmlbDph48nLA0KICAgICAgICAgICAgdHlwZTogJ2xpbmUnLA0KICAgICAgICAgICAgc3RhY2s6ICdUb3RhbDInLA0KICAgICAgICAgICAgc21vb3RoOiB0cnVlLA0KICAgICAgICAgICAgYXJlYVN0eWxlOiB7DQogICAgICAgICAgICAgIGNvbG9yOiAnI2M4ZWNmMicNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBlbXBoYXNpczogew0KICAgICAgICAgICAgICBmb2N1czogJ3NlcmllcycNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBhcmVhU3R5bGU6IHsNCiAgICAgICAgICAgICAgY29sb3I6IHsNCiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZWFyJywNCiAgICAgICAgICAgICAgICB4OiAwLA0KICAgICAgICAgICAgICAgIHk6IDAsDQogICAgICAgICAgICAgICAgeDI6IDAsDQogICAgICAgICAgICAgICAgeTI6IDEsDQogICAgICAgICAgICAgICAgY29sb3JTdG9wczogWw0KICAgICAgICAgICAgICAgICAgLy8g5riQ5Y+Y6aKc6ImyDQogICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI0OSwgMTk5LCAwLCAwLjYpJw0KICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAxLA0KICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjQ5LCAxOTksIDAsIDApJw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgZ2xvYmFsOiBmYWxzZQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogQURhdGENCiAgICAgICAgICB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIG5hbWU6ICfmlYXpmpzmlbDph48nLA0KICAgICAgICAgICAgdHlwZTogJ2xpbmUnLA0KICAgICAgICAgICAgc3RhY2s6ICdUb3RhbDMnLA0KICAgICAgICAgICAgc21vb3RoOiB0cnVlLA0KICAgICAgICAgICAgbGFiZWw6IHsNCiAgICAgICAgICAgICAgc2hvdzogdHJ1ZSwNCiAgICAgICAgICAgICAgcG9zaXRpb246ICd0b3AnDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgYXJlYVN0eWxlOiB7DQogICAgICAgICAgICAgIGNvbG9yOiAnI2ZmZTdlMScNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBlbXBoYXNpczogew0KICAgICAgICAgICAgICBmb2N1czogJ3NlcmllcycNCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICBhcmVhU3R5bGU6IHsNCiAgICAgICAgICAgICAgY29sb3I6IHsNCiAgICAgICAgICAgICAgICB0eXBlOiAnbGluZWFyJywNCiAgICAgICAgICAgICAgICB4OiAwLA0KICAgICAgICAgICAgICAgIHk6IDAsDQogICAgICAgICAgICAgICAgeDI6IDAsDQogICAgICAgICAgICAgICAgeTI6IDEsDQogICAgICAgICAgICAgICAgY29sb3JTdG9wczogWw0KICAgICAgICAgICAgICAgICAgLy8g5riQ5Y+Y6aKc6ImyDQogICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgIG9mZnNldDogMCwNCiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMTI4LCAwLCAwLjYpJw0KICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0OiAxLA0KICAgICAgICAgICAgICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAxMjgsIDAsIDApJw0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgZ2xvYmFsOiBmYWxzZQ0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgZGF0YTogQkRhdGENCiAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgIC8v5rua5Yqo5p2hDQogICAgICAgIGRhdGFab29tOiBbDQogICAgICAgICAgLy8gew0KICAgICAgICAgIC8vICAgICB0eXBlOiAnaW5zaWRlJywNCiAgICAgICAgICAvLyB9LA0KICAgICAgICAgIHsNCiAgICAgICAgICAgIHNob3c6IHRydWUsDQogICAgICAgICAgICB0eXBlOiAnc2xpZGVyJywNCiAgICAgICAgICAgIHJlYWx0aW1lOiB0cnVlLA0KICAgICAgICAgICAgc3RhcnRWYWx1ZTogMCwNCiAgICAgICAgICAgIGVuZFZhbHVlOiAxNCwNCiAgICAgICAgICAgIHhBeGlzSW5kZXg6IFswXSwNCiAgICAgICAgICAgIGJvdHRvbTogJzEwJywNCiAgICAgICAgICAgIGxlZnQ6ICczMCcsDQogICAgICAgICAgICBoZWlnaHQ6IDEwLA0KICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICdyZ2JhKDAsMCwwLDApJw0KICAgICAgICAgICAgLy8gdGV4dFN0eWxlOiB7DQogICAgICAgICAgICAvLyAJY29sb3I6ICcjMDAwJywNCiAgICAgICAgICAgIC8vIH0sDQogICAgICAgICAgfQ0KICAgICAgICBdDQogICAgICB9DQogICAgICBvcHRpb24gJiYgbXlDaGFydC5zZXRPcHRpb24ob3B0aW9uKQ0KICAgIH0NCiAgfQ0KfQ0K"},null]}