1 |
- {"remainingRequest":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\thread-loader\\dist\\cjs.js!E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\babel-loader\\lib\\index.js!E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\src\\views\\Purchase\\ManageP\\PurchaseOrderAdd.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\src\\views\\Purchase\\ManageP\\PurchaseOrderAdd.vue","mtime":1655374732000},{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\babel.config.js","mtime":1655374732000},{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\babel-loader\\lib\\index.js","mtime":315532800000},{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\node_modules\\vue-loader\\lib\\index.js","mtime":1655715099000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaW5jbHVkZXMuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwppbXBvcnQgU2VsZWN0U3VwcGxpZXIgZnJvbSAiQC9jb21wb25lbnQvY29tbW9uL1NlbGVjdFN1cHBsaWVyLnZ1ZSI7CmltcG9ydCBXYXJlaG91c2VNb2RlbCBmcm9tICJAL2NvbXBvbmVudC9jb21tb24vV2FyZWhvdXNlTW9kZWwudnVlIjsgLy8g5paw5aKe5ZGY5belCgppbXBvcnQgQWRkU3RhZmYgZnJvbSAiQC9jb21wb25lbnQvU3lzdGVtU2V0dGluZ3MvQWRkU3RhZmYiOwppbXBvcnQgU3RhZmZMaXN0IGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9zdGFmZkxpc3RNb2RhbCI7CmltcG9ydCBDb25kaXRpb25TZWxHb29kcyBmcm9tICJAL2NvbXBvbmVudC9jb21tb24vQ29uZGl0aW9uU2VsR29vZHMiOwppbXBvcnQgeyBnZXRBbGxTdGFmZiB9IGZyb20gIkAvYXBpL0RlcGFydG1lbnQiOwppbXBvcnQgeyBnZXRBbGxXYXJlaG91c2UsIGdldE1hc3RlclNrdU51bSB9IGZyb20gIkAvYXBpL1N0b2NrIjsKaW1wb3J0IHsgdXBkYXRlUHVyY2hhc2VTdGF0dXMsIGdldFB1cmNoYXNlSW5mb0J5SWQsIGVkaXRQdXJjaGFzZSwgYWRkUHVyY2hhc2UgfSBmcm9tICJAL2FwaS9QdXJjaGFzZSI7CmltcG9ydCB7IGdldE1vbmV5UGF1c2VTYXZlLCBhZGRNb25leVBhdXNlU2F2ZSwgYWRkUGF1c2VTYXZlLCBnZXRQYXVzZVNhdmUsIGRlbFBhdXNlU2F2ZSB9IGZyb20gIkAvYXBpL2NvbW1vbiI7CmltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICJ2dWV4IjsKY29uc3QgZ29vZHMgPSB7CiAgYmFzaWNHb29kc0lkOiAiIiwKICBnb29kc0NvZGU6ICIiLAogIGdvb2RzTmFtZTogIiIsCiAgc2t1SWQ6ICIiLAogIHVuaXROYW1lOiAiIiwKICBjYXRlZ29yeUlkOiAiIiwKICBjYXRlZ29yeU5hbWU6ICIiLAogIGJ1eWVyTnVtOiAwLAogIGJ1eWVyVW5pdFByaWNlOiAwLAogIHN1YnRvdGFsUHJpY2U6IDAsCiAgY291cG9uQW1vdW50OiAwLAogIG90aGVyQW1vdW50OiAwCn07CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAiUHVyY2hhc2VPcmRlckFkZCIsCiAgY29tcG9uZW50czogewogICAgQ29uZGl0aW9uU2VsR29vZHMsCiAgICBTZWxlY3RTdXBwbGllciwKICAgIEFkZFN0YWZmLAogICAgLy8g5paw5aKe5ZGY5belCiAgICBXYXJlaG91c2VNb2RlbCwKICAgIFN0YWZmTGlzdAogIH0sCgogIGRhdGEoKSB7CiAgICBjb25zdCB2YWxpZGF0ZVNob3AgPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqemHh+i0reS7k+W6kyIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIGNvbnN0IHZhbGlkYXRlU3VwcGxpZXIgPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeS+m+W6lOWVhiIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIHJldHVybiB7CiAgICAgIGVycl90aXBfbGlzdDogW10sCiAgICAgIC8vIOmUmeivr+aPkOekugogICAgICBub3dfZ29vZHNfZGF0YToge30sCiAgICAgIHNwZWNfY2hlY2s6IFtdLAogICAgICBhdWRpdFRpbWU6ICIiLAogICAgICBzcGVjX2NoZWNrX2xpc3Q6IFtdLAogICAgICBzaG93X2dvb2RzOiBmYWxzZSwKICAgICAgLy8g6YCJ5oup5ZWG5ZOB5by556qXCiAgICAgIHNlbGVjdF9sb2FkaW5nOiBmYWxzZSwKICAgICAgY2hlY2tfYWxsX3NwZWM6IGZhbHNlLAogICAgICBpc19zcGVjX2luZGV0ZXJtaW5hdGU6IGZhbHNlLAogICAgICBzcGVjX21vZGVsOiBmYWxzZSwKICAgICAgYWRkX3N0YWZmOiBmYWxzZSwKICAgICAgLy8g5paw5aKe5ZGY5belCiAgICAgIGxvYWRpbmc6IGZhbHNlLAogICAgICBjcmVhdGVUaW1lOiBuZXcgRGF0ZSgpLmdldFRpbWUoKSwKICAgICAgYXVkaXROYW1lOiAiIiwKICAgICAgYXVkaXRJZDogIiIsCiAgICAgIGF1ZGl0U3RhdHVzOiAiIiwKICAgICAgbG9va19wYXRoOiAiIiwKICAgICAgZ29vZHNfb3B0aW9uczogW10sCiAgICAgIGRlbF9nb29kc19pZDogW10sCiAgICAgIHdhcmVob3VzZV9saXN0OiBbXSwKICAgICAgZm9ybTogewogICAgICAgIGNvZGU6ICIiLAogICAgICAgIHNob3BJZDogIiIsCiAgICAgICAgc2hvcE5hbWU6ICIiLAogICAgICAgIHN1cHBsaWVySWQ6ICIiLAogICAgICAgIHN1cHBsaWVyTmFtZTogIiIsCiAgICAgICAgYnV5ZXJJZDogIiIsCiAgICAgICAgYnV5ZXJOYW1lOiAiIiwKICAgICAgICBvcGVyYXRvck5hbWU6ICIiLAogICAgICAgIGNvdXBvbkFtb3VudDogMCwKICAgICAgICBvdGhlckFtb3VudDogMCwKICAgICAgICByZW1hcms6ICIiLAogICAgICAgIGdvb2RzRGF0YTogW10sCiAgICAgICAgd2FyZWhvdXNlTmFtZTogIiIsCiAgICAgICAgd2FyZWhvdXNlSWQ6ICIiLAogICAgICAgIHB1cmNoYXNlVHlwZTogNAogICAgICB9LAogICAgICBzdXBwbGllcl9zaG93OiBmYWxzZSwKICAgICAgcHVyY2hhc2VfbGlzdDogW10sCiAgICAgIC8vIOmHh+i0reS6uuWRmOWIl+ihqAogICAgICBwdXJjaGFzZV9ydWxlczogewogICAgICAgIHdhcmVob3VzZU5hbWU6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHZhbGlkYXRvcjogdmFsaWRhdGVTaG9wCiAgICAgICAgfV0sCiAgICAgICAgc3VwcGxpZXJOYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRlU3VwcGxpZXIKICAgICAgICB9XSwKICAgICAgICBidXllcklkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36YCJ5oup6YeH6LSt5Lq65ZGYIiwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgZ29vZHNfbGlzdDogW10sCiAgICAgIHB1c3JjaGFzZV9pZDogIiIsCiAgICAgIGdvb2RzX2luZGV4OiAwLAogICAgICB3YXJlaG91c2Vfc2hvdzogZmFsc2UsCiAgICAgIHN0YWZmX3Nob3c6IGZhbHNlLAogICAgICBvcHRpb25zOiBbewogICAgICAgIHZhbHVlOiAxLAogICAgICAgIGxhYmVsOiAi5oyJ5pWw6YePIgogICAgICB9LCB7CiAgICAgICAgdmFsdWU6IDIsCiAgICAgICAgbGFiZWw6ICLmjInph5Hpop0iCiAgICAgIH1dLAogICAgICBvcHRpb25zX3ZhbHVlOiAiIiwKICAgICAgY29udHJpYnV0aW9uczogIiIsCiAgICAgIGFwcG9ydGlvbkZsYWc6IGZhbHNlLAogICAgICBtZXJjaGFudElkOiAiIiwKICAgICAgYWN0aXZlTmFtZTogIm9uZSIKICAgIH07CiAgfSwKCiAgY29tcHV0ZWQ6IHsgLi4ubWFwR2V0dGVycyh7CiAgICAgIHN0b3JlRGF0YTogIk1Vc2VyL3N0b3JlRGF0YSIKICAgIH0pLAoKICAgIHB1cmNoYXNlQW1vdW50KCkgewogICAgICBsZXQgc3VtID0gMDsKCiAgICAgIGlmICh0aGlzLmdvb2RzX2xpc3QubGVuZ3RoID4gMSkgewogICAgICAgIHRoaXMuZ29vZHNfbGlzdC5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgc3VtID0gdGhpcy4kTlAucGx1cyhzdW0sIE51bWJlcihpdGVtLnN1YnRvdGFsUHJpY2UpKTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmdvb2RzX2xpc3QubGVuZ3RoID09PSAxKSB7CiAgICAgICAgc3VtID0gTnVtYmVyKHRoaXMuZ29vZHNfbGlzdFswXS5zdWJ0b3RhbFByaWNlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzdW0gPSAwOwogICAgICB9IC8vIHJldHVybiAoCiAgICAgIC8vICAgdGhpcy4kTlAucGx1cygKICAgICAgLy8gICAgIHN1bSwKICAgICAgLy8gICAgIHRoaXMuJE5QLm1pbnVzKHRoaXMuZm9ybS5vdGhlckFtb3VudCwgdGhpcy5mb3JtLmNvdXBvbkFtb3VudCkKICAgICAgLy8gICApIHx8IDAKICAgICAgLy8gKTsKCgogICAgICByZXR1cm4gdGhpcy4kTlAucGx1cyhzdW0sIHRoaXMuZm9ybS5vdGhlckFtb3VudCkgfHwgMDsKICAgIH0KCiAgfSwKCiAgY3JlYXRlZCgpIHsKICAgIGlmICh0aGlzLnN5c3RlbVR5cGUgPT09IDMpIHsKICAgICAgdGhpcy5tZXJjaGFudElkID0gdGhpcy5zdG9yZURhdGEubWVyY2hhbnREYXRhLmlkOwogICAgfSAvLyAg6I635Y+W5b2T5YmN55qE6Lev55Sx77yM5oiq5Y+WCgoKICAgIHRoaXMubG9va19wYXRoID0gdGhpcy4kcm91dGUubmFtZTsKCiAgICBpZiAodGhpcy4kcm91dGUucGFyYW1zLmlkKSB7CiAgICAgIHRoaXMucHVzcmNoYXNlX2lkID0gdGhpcy4kcm91dGUucGFyYW1zLmlkOyAvLyAgICDosIPnlKjor6bmg4XmjqXlj6MKCiAgICAgIHRoaXMuZ2V0UHVyY2hhc2VJbmZvQnlJZCgpOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5mb3JtLm9wZXJhdG9yTmFtZSA9IHRoaXMudXNlck5hbWU7CgogICAgICBpZiAoWzIsIDNdLmluY2x1ZGVzKHRoaXMuc3lzdGVtVHlwZSkpIHsKICAgICAgICB0aGlzLmZvcm0uc2hvcElkID0gdGhpcy5zdG9yZURhdGEuaWQ7IC8vIOW6l+mTugoKICAgICAgICB0aGlzLmZvcm0uc2hvcE5hbWUgPSB0aGlzLnN0b3JlRGF0YS5uYW1lOyAvLyDlupfpk7oKICAgICAgfQoKICAgICAgdGhpcy5nZXRQYXVzZVNhdmUoKTsKICAgIH0KCiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxOyBpKyspIHsKICAgICAgdGhpcy5nb29kc19saXN0LnB1c2godGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUoZ29vZHMpKTsKICAgIH0KICB9LAoKICBtZXRob2RzOiB7CiAgICBvcGVuV2FyZWhvdXNlKCkgewogICAgICB0aGlzLndhcmVob3VzZV9zaG93ID0gdHJ1ZTsKICAgIH0sCgogICAgc2VsV2FyZWhvdXNlKHJvdykgewogICAgICB0aGlzLmZvcm0ud2FyZWhvdXNlTmFtZSA9IHJvd1swXS53YXJlaG91c2VOYW1lOwogICAgICB0aGlzLmZvcm0ud2FyZWhvdXNlSWQgPSByb3dbMF0uaWQ7CiAgICB9LAoKICAgIHN0YWZmU2VsKHJvdykgewogICAgICB0aGlzLmZvcm0uYnV5ZXJOYW1lID0gcm93WzBdLnN0YWZmTmFtZTsKICAgICAgdGhpcy5mb3JtLmJ1eWVySWQgPSByb3dbMF0uaWQ7CiAgICB9LAoKICAgIHNob3BEZWZhdWx0KHZhbCwgcm93KSB7CiAgICAgIHRoaXMuZm9ybS5zaG9wSWQgPSB2YWw7CiAgICAgIHRoaXMuZm9ybS5zaG9wTmFtZSA9IHJvdy5uYW1lOwogICAgfSwKCiAgICAvLyDlrqHmoLjnirbmgIEgIHVwZGF0ZVB1cmNoYXNlU3RhdHVzCiAgICBhc3luYyB1cGRhdGVQdXJjaGFzZShyb3cpIHsKICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgIGF1ZGl0U3RhdHVzOiAiMiIsCiAgICAgICAgYXVkaXROYW1lOiB0aGlzLnVzZXJOYW1lCiAgICAgIH07CiAgICAgIHRoaXMuJGNvbmZpcm0oIuehruWumuWuoeaguOivpeiuouWNlSIsICLmj5DnpLoiLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLAogICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICB9KS50aGVuKGFzeW5jICgpID0+IHsKICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdXBkYXRlUHVyY2hhc2VTdGF0dXModGhpcy5wdXNyY2hhc2VfaWQsIHBhcmFtcyk7CiAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICBtZXNzYWdlOiAi5pON5L2c5oiQ5YqfISIKICAgICAgICB9KTsKICAgICAgICBhd2FpdCB0aGlzLmdldFB1cmNoYXNlSW5mb0J5SWQoKTsKICAgICAgfSk7CiAgICB9LAoKICAgIHNwZWNDaGVja0NoYW5nZSh2YWx1ZSkgewogICAgICBsZXQgY2hlY2tlZENvdW50ID0gdmFsdWUubGVuZ3RoOwogICAgICB0aGlzLmNoZWNrX2FsbF9zcGVjID0gY2hlY2tlZENvdW50ID09PSB0aGlzLnNwZWNfY2hlY2tfbGlzdC5sZW5ndGg7CiAgICAgIHRoaXMuaXNfc3BlY19pbmRldGVybWluYXRlID0gY2hlY2tlZENvdW50ID4gMCAmJiBjaGVja2VkQ291bnQgPCB0aGlzLnNwZWNfY2hlY2tfbGlzdC5sZW5ndGg7CiAgICB9LAoKICAgIGNoZWNrQWxsU3BlY0NoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5zcGVjX2NoZWNrID0gdmFsID8gdGhpcy5zcGVjX2NoZWNrX2xpc3QubWFwKGl0ZW0gPT4gaXRlbS5pZCkgOiBbXTsKICAgICAgdGhpcy5pc19zcGVjX2luZGV0ZXJtaW5hdGUgPSBmYWxzZTsKICAgIH0sCgogICAgZ29vZHNWaXNpYmxlQ2hhbmdlKHZpc2libGUsIGluZGV4KSB7CiAgICAgIGlmICh2aXNpYmxlKSB7CiAgICAgICAgdGhpcy5nb29kc19pbmRleCA9IGluZGV4OwogICAgICB9CiAgICB9LAoKICAgIC8v5o2i566Xc2t15pWw6YePCiAgICBhc3luYyBnZXRTa3VOdW0oKSB7CiAgICAgIGNvbnN0IHNrdU51bSA9IHRoaXMuZ29vZHNfbGlzdC5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHNrdUlkOiBpdGVtLnNrdUlkLAogICAgICAgICAgZ29vZHNCYXNpY0lkOiBpdGVtLmJhc2ljR29vZHNJZCwKICAgICAgICAgIG51bTogaXRlbS5idXllck51bSB8fCAxCiAgICAgICAgfTsKICAgICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5za3VJZCk7CgogICAgICBpZiAoIXNrdU51bS5sZW5ndGgpIHsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRNYXN0ZXJTa3VOdW0oc2t1TnVtKTsKICAgICAgdGhpcy5nb29kc19saXN0ID0gdGhpcy5nb29kc19saXN0Lm1hcChpdGVtID0+IHsKICAgICAgICBsZXQgb2JqID0ge307CgogICAgICAgIGlmIChkYXRhW2l0ZW0uc2t1SWRdKSB7CiAgICAgICAgICBvYmogPSB7CiAgICAgICAgICAgIHRpdGxlOiBkYXRhW2l0ZW0uc2t1SWRdLnRpdGxlIHx8ICIiLAogICAgICAgICAgICBidXllck51bTogZGF0YVtpdGVtLnNrdUlkXS5udW0sCiAgICAgICAgICAgIHNrdVZhbHVlOiBkYXRhW2l0ZW0uc2t1SWRdLnNrdVZhbHVlLAogICAgICAgICAgICBza3VOdW06IGRhdGFbaXRlbS5za3VJZF0ubWFzdGVyTnVtICsgZGF0YVtpdGVtLnNrdUlkXS5tYXN0ZXJOYW1lCiAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgIC4uLm9iagogICAgICAgIH07CiAgICAgIH0pOwogICAgICB0aGlzLmVycl90aXBfbGlzdCA9IHRoaXMuZ29vZHNfbGlzdC5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0udGl0bGUpOyAvLyDlpoLmnpzmsqHmnInllYblk4HpgInmi6nmoYbliJnmlrDlop7kuIDkuKoKCiAgICAgIGlmICghdGhpcy5nb29kc19saXN0LmZpbmQoaXRlbSA9PiAhaXRlbS5za3VJZCkpIHsKICAgICAgICAvLyDmlrDlop7kuIDkuKrllYblk4HpgInmi6nmoYYKICAgICAgICB0aGlzLmFkZExpc3RHb29kcygpOwogICAgICB9CiAgICB9LAoKICAgIC8vIOWkmumAieWVhuWTgeehruWumgogICAgc2VsR29vZHMobGlzdCkgewogICAgICBsZXQgdGFyZ2V0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy5nb29kc19saXN0KTsKICAgICAgY29uc3QgZ29vZHNEID0gbGlzdC5tYXAoaXRlbSA9PiB7CiAgICAgICAgbGV0IHNwZWNHcm9wTmFtZSA9IGl0ZW0uc3BlY0dyb3VwLm1hcChpdGVtUyA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbVMuc3BlY1ZhbHVlTmFtZTsKICAgICAgICB9KS5qb2luKCJfIik7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIGlzRXE6IGl0ZW0uaXNFcSwKICAgICAgICAgIHNwZWNfY2hlY2tfbGlzdDogW10sCiAgICAgICAgICBiYXNpY0dvb2RzSWQ6IGl0ZW0uaWQsCiAgICAgICAgICBnb29kc0NvZGU6IGl0ZW0uY29kZSwKICAgICAgICAgIGdvb2RzTmFtZTogaXRlbS50aXRsZSwKICAgICAgICAgIHNrdUlkOiBpdGVtLnNrdUlkLAogICAgICAgICAgc3BlY0dyb3BOYW1lOiBzcGVjR3JvcE5hbWUsCiAgICAgICAgICB1bml0TmFtZTogaXRlbS51bml0TmFtZSwKICAgICAgICAgIGNhdGVnb3J5SWQ6IGl0ZW0uY2F0ZWdvcnlJZCwKICAgICAgICAgIGNhdGVnb3J5TmFtZTogaXRlbS5jYXRlZ29yeU5hbWUsCiAgICAgICAgICBidXllck51bTogMSwKICAgICAgICAgIGJ1eWVyVW5pdFByaWNlOiAwLjEsCiAgICAgICAgICBzdWJ0b3RhbFByaWNlOiAwLjEsCiAgICAgICAgICBjb3Vwb25BbW91bnQ6IDAsCiAgICAgICAgICBvdGhlckFtb3VudDogMAogICAgICAgIH07CiAgICAgIH0pOyAvLyDliKTmlq3mmK/lkKbmnInlhoXlrrkKCiAgICAgIGNvbnN0IGlzQmFzZSA9IHRhcmdldC5zb21lKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmJhc2ljR29vZHNJZDsKICAgICAgfSk7CgogICAgICBpZiAoIWlzQmFzZSkgewogICAgICAgIHRhcmdldCA9IGdvb2RzRDsKICAgICAgfSBlbHNlIHsKICAgICAgICB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLnVuaXF1ZSh0YXJnZXQuY29uY2F0KGdvb2RzRCksIFsiYmFzaWNHb29kc0lkIiwgInNrdUlkIl0pOwogICAgICB9CgogICAgICBjb25zdCBza3VJZEFyciA9IHRhcmdldC5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIGl0ZW0uc2t1SWQ7CiAgICAgIH0pOwogICAgICB0aGlzLnByaWNlUGF1c2VTYXZlKHNrdUlkQXJyLCB0YXJnZXQpOwogICAgfSwKCiAgICBzcGVjU2VsQ29uZmlybShwYXJhbXMpIHsKICAgICAgaWYgKCFwYXJhbXMuZ29vZHNEWzBdLnNrdUlkKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLoh7PlsJHpgInmi6nkuIDpobkiKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGxldCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLmdvb2RzX2xpc3QpOwogICAgICBjb25zdCBnb29kc0QgPSBwYXJhbXMuZ29vZHNELm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgYmFzaWNHb29kc0lkOiBwYXJhbXMubm93X2dvb2RzX2RhdGEuaWQsCiAgICAgICAgICBnb29kc0NvZGU6IHBhcmFtcy5ub3dfZ29vZHNfZGF0YS5jb2RlLAogICAgICAgICAgZ29vZHNOYW1lOiBwYXJhbXMubm93X2dvb2RzX2RhdGEudGl0bGUsCiAgICAgICAgICBza3VJZDogaXRlbS5za3VJZCwKICAgICAgICAgIHNwZWNHcm9wTmFtZTogaXRlbS5zcGVjLnNwZWNHcm9wTmFtZSwKICAgICAgICAgIHVuaXROYW1lOiBpdGVtLnNwZWMudW5pdE5hbWUsCiAgICAgICAgICBjYXRlZ29yeUlkOiBwYXJhbXMubm93X2dvb2RzX2RhdGEuY2F0ZWdvcnlJZCwKICAgICAgICAgIGNhdGVnb3J5TmFtZTogcGFyYW1zLm5vd19nb29kc19kYXRhLmNhdGVnb3J5VGl0bGUsCiAgICAgICAgICBidXllck51bTogMSwKICAgICAgICAgIGJ1eWVyVW5pdFByaWNlOiAwLjEsCiAgICAgICAgICBzdWJ0b3RhbFByaWNlOiAwLjEsCiAgICAgICAgICBjb3Vwb25BbW91bnQ6IDAsCiAgICAgICAgICBvdGhlckFtb3VudDogMAogICAgICAgIH07CiAgICAgIH0pOwoKICAgICAgaWYgKCF0YXJnZXRbdGhpcy5nb29kc19pbmRleF0uc2t1SWQpIHsKICAgICAgICB0YXJnZXQuc3BsaWNlKHRoaXMuZ29vZHNfaW5kZXgsIDEpOwogICAgICB9CgogICAgICBnb29kc0QuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICBjb25zdCB0YXJnZXREID0gdGFyZ2V0LmZpbmQoaXRlbUcgPT4gaXRlbUcuc2t1SWQgPT09IGl0ZW0uc2t1SWQpOwoKICAgICAgICBpZiAoIXRhcmdldEQpIHsKICAgICAgICAgIHRhcmdldC5wdXNoKGl0ZW0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIGNvbnN0IGdvb2RzRGF0YSA9IHRoaXMuJF9jb21tb24udW5pcXVlKHRhcmdldCwgWyJiYXNpY0dvb2RzSWQiLCAic2t1SWQiXSk7CiAgICAgIGNvbnN0IHNrdUlkQXJyID0gZ29vZHNEYXRhLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gaXRlbS5za3VJZDsKICAgICAgfSk7CiAgICAgIHRoaXMucHJpY2VQYXVzZVNhdmUoc2t1SWRBcnIsIGdvb2RzRGF0YSk7CiAgICAgIHRoaXMuc3BlY19tb2RlbCA9IGZhbHNlOwogICAgfSwKCiAgICAvLyDku7fmoLzmmoLlrZjmn6Xor6IKICAgIGFzeW5jIHByaWNlUGF1c2VTYXZlKHNrdUlkLCBnb29kc0RhdGEpIHsKICAgICAgZ29vZHNEYXRhID0gZ29vZHNEYXRhLmZpbHRlcihpdGVtID0+IGl0ZW0uc2t1SWQpOwogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0TW9uZXlQYXVzZVNhdmUoewogICAgICAgIHNrdUlkczogc2t1SWQKICAgICAgfSk7CiAgICAgIHRoaXMuZ29vZHNfbGlzdCA9IGdvb2RzRGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgIGJ1eWVyVW5pdFByaWNlOiBpdGVtLmJ1eWVyVW5pdFByaWNlID4gMC4xID8gaXRlbS5idXllclVuaXRQcmljZSA6IGRhdGFbaXRlbS5za3VJZF0gfHwgMC4xLAogICAgICAgICAgc3VidG90YWxQcmljZTogaXRlbS5zdWJ0b3RhbFByaWNlID4gMC4xID8gaXRlbS5zdWJ0b3RhbFByaWNlIDogZGF0YVtpdGVtLnNrdUlkXSB8fCAwLjEKICAgICAgICB9OwogICAgICB9KTsgLy8g6I635Y+Wc2t15o2i566X5YWz57O7CgogICAgICBhd2FpdCB0aGlzLmdldFNrdU51bSgpOwogICAgfSwKCiAgICAvLyDku7fmoLzmmoLlrZjmj5DkuqQKICAgIGFzeW5jIGFkZE1vbmV5UGF1c2VTYXZlKHByaWNlRGF0YSkgewogICAgICBjb25zdCBkYXRhID0gYXdhaXQgYWRkTW9uZXlQYXVzZVNhdmUoewogICAgICAgIGRhdGE6IHByaWNlRGF0YQogICAgICB9KTsKICAgIH0sCgogICAgYWRkTGlzdEdvb2RzKCkgewogICAgICB0aGlzLmdvb2RzX2xpc3QucHVzaCh0aGlzLiRfY29tbW9uLmRlZXBDbG9uZShnb29kcykpOwogICAgfSwKCiAgICAvLyDmlLnlj5jmlbDph48KICAgIGVkaXROdW1DaGFuZ2UoaW5kZXgsIHRhZykgewogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLmdvb2RzX2xpc3QpOwogICAgICB0YXJnZXRbaW5kZXhdLnN1YnRvdGFsUHJpY2UgPSB0aGlzLiROUC50aW1lcyh0YXJnZXRbaW5kZXhdLmJ1eWVyTnVtIHx8IDEsIHRhcmdldFtpbmRleF0uYnV5ZXJVbml0UHJpY2UpOwogICAgICB0aGlzLmdvb2RzX2xpc3QgPSB0YXJnZXQ7CiAgICAgIGlmICghdGFyZ2V0W2luZGV4XS5za3VJZCkgcmV0dXJuOwoKICAgICAgaWYgKHRhZyA9PT0gImJ1eWVyTnVtIikgewogICAgICAgIC8vIOiOt+WPlnNrdeaNoueul+WFs+ezuwogICAgICAgIHRoaXMuZ2V0U2t1TnVtKCk7CiAgICAgIH0KICAgIH0sCgogICAgLy8g5LiA6ZSu5om56YeP6K6+572uCiAgICBvdGhlclNldChpbmRleCwgcm93KSB7CiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMuZ29vZHNfbGlzdCk7CiAgICAgIHRhcmdldC5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgIGlmIChpdGVtLmJhc2ljR29vZHNJZCA9PT0gcm93LmJhc2ljR29vZHNJZCAmJiBpdGVtLnVuaXROYW1lID09PSByb3cudW5pdE5hbWUpIHsKICAgICAgICAgIGl0ZW0uYnV5ZXJOdW0gPSByb3cuYnV5ZXJOdW07CiAgICAgICAgICBpdGVtLnN1YnRvdGFsUHJpY2UgPSByb3cuc3VidG90YWxQcmljZTsKICAgICAgICAgIGl0ZW0uYnV5ZXJVbml0UHJpY2UgPSByb3cuYnV5ZXJVbml0UHJpY2U7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGhpcy5nb29kc19saXN0ID0gdGFyZ2V0OwogICAgICB0aGlzLmdldFNrdU51bSgpOwogICAgfSwKCiAgICAvLyDmt7vliqDmmoLlrZgKICAgIGFzeW5jIGFkZFBhdXNlU2F2ZSgpIHsKICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLmZvcm0sCiAgICAgICAgZ29vZHNEYXRhOiB0aGlzLmdvb2RzX2xpc3QKICAgICAgfTsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGFkZFBhdXNlU2F2ZSh7CiAgICAgICAga2V5OiB0aGlzLmxvb2tfcGF0aCwKICAgICAgICBkYXRhOiBwYXJhbXMKICAgICAgfSk7CiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgbWVzc2FnZTogIuaaguWtmOaIkOWKnyIKICAgICAgfSk7CgogICAgICBpZiAodGhpcy5zeXN0ZW1UeXBlID09PSAyKSB7CiAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvU2luZ2xlU3RvcmUvcHVyY2hhc2UvcHVyY2hhc2VMaXN0Iik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvUHVyY2hhc2UvTWFuYWdlUC9QdXJjaGFzZU9yZGVyIik7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6I635Y+W5pqC5a2Y5L+h5oGvCiAgICBhc3luYyBnZXRQYXVzZVNhdmUoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRQYXVzZVNhdmUoewogICAgICAgIGtleTogdGhpcy5sb29rX3BhdGgKICAgICAgfSk7CiAgICAgIGlmIChKU09OLnN0cmluZ2lmeShkYXRhKSA9PT0gInt9IikgcmV0dXJuOwogICAgICB0aGlzLmZvcm0gPSBkYXRhOwogICAgICB0aGlzLmdvb2RzX2xpc3QgPSBkYXRhLmdvb2RzRGF0YTsgLy8g6I635Y+Wc2t15o2i566X5YWz57O7CgogICAgICBhd2FpdCB0aGlzLmdldFNrdU51bSgpOwogICAgfSwKCiAgICAvLyAg6K+m5oOF5o6l5Y+jCiAgICBhc3luYyBnZXRQdXJjaGFzZUluZm9CeUlkKCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0UHVyY2hhc2VJbmZvQnlJZCh0aGlzLnB1c3JjaGFzZV9pZCk7CiAgICAgIHRoaXMuZm9ybS5jb2RlID0gZGF0YS5ubzsKICAgICAgdGhpcy5jcmVhdGVUaW1lID0gZGF0YS5jcmVhdGVUaW1lOwogICAgICB0aGlzLmZvcm0uc2hvcElkID0gZGF0YS5zaG9wSWQ7CiAgICAgIHRoaXMuZm9ybS5zaG9wTmFtZSA9IGRhdGEuc2hvcE5hbWU7CiAgICAgIHRoaXMuZm9ybS5zdXBwbGllcklkID0gZGF0YS5zdXBwbGllcklkOwogICAgICB0aGlzLmZvcm0uc3VwcGxpZXJOYW1lID0gZGF0YS5zdXBwbGllck5hbWU7CiAgICAgIHRoaXMuZm9ybS5idXllcklkID0gZGF0YS5idXllcklkOwogICAgICB0aGlzLmZvcm0uYnV5ZXJOYW1lID0gZGF0YS5idXllck5hbWU7CiAgICAgIHRoaXMuZm9ybS5vcGVyYXRvck5hbWUgPSBkYXRhLm9wZXJhdG9yTmFtZTsKICAgICAgdGhpcy5mb3JtLnB1cmNoYXNlQW1vdW50ID0gZGF0YS5wdXJjaGFzZUFtb3VudDsKICAgICAgdGhpcy5mb3JtLmNvdXBvbkFtb3VudCA9IGRhdGEuY291cG9uQW1vdW50OwogICAgICB0aGlzLmZvcm0ub3RoZXJBbW91bnQgPSBkYXRhLm90aGVyQW1vdW50OwogICAgICB0aGlzLmZvcm0ucmVtYXJrID0gZGF0YS5yZW1hcms7CiAgICAgIHRoaXMuYXVkaXRJZCA9IGRhdGEuYXVkaXRJZDsKICAgICAgdGhpcy5hdWRpdE5hbWUgPSBkYXRhLmF1ZGl0TmFtZTsKICAgICAgdGhpcy5hdWRpdFN0YXR1cyA9IGRhdGEuYXVkaXRTdGF0dXM7CiAgICAgIHRoaXMuYXVkaXRUaW1lID0gZGF0YS5hdWRpdFRpbWU7CiAgICAgIHRoaXMuZm9ybS53YXJlaG91c2VJZCA9IGRhdGEud2FyZWhvdXNlSWQ7CiAgICAgIHRoaXMuZm9ybS53YXJlaG91c2VOYW1lID0gZGF0YS53YXJlaG91c2VOYW1lOyAvLyDllYblk4EKCiAgICAgIHRoaXMuZ29vZHNfbGlzdCA9IGRhdGEuZGV0YWlscy5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgIHNrdUlkOiBpdGVtLnNrdUlkLAogICAgICAgICAgc3BlY0dyb3BOYW1lOiBpdGVtLnNrdU5hbWUKICAgICAgICB9OwogICAgICB9KTsgLy8g6I635Y+Wc2t15o2i566X5YWz57O7CgogICAgICBhd2FpdCB0aGlzLmdldFNrdU51bSgpOwogICAgfSwKCiAgICAvLyDmuIXpmaTmmoLlrZgKICAgIGFzeW5jIGRlbFBhdXNlU2F2ZSh0eXBlKSB7CiAgICAgIGNvbnN0IGRhdGEgPSBkZWxQYXVzZVNhdmUoewogICAgICAgIGtleTogdGhpcy5sb29rX3BhdGgKICAgICAgfSk7CgogICAgICBpZiAodHlwZSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgbWVzc2FnZTogIua4hemZpOaaguWtmOaIkOWKnyIKICAgICAgICB9KTsKICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9QdXJjaGFzZS9NYW5hZ2VQL1B1cmNoYXNlT3JkZXJBZGQiKTsKICAgICAgfQogICAgfSwKCiAgICAvLyB0aWFuamlhCiAgICBhc3luYyBhZGRQdXJjaGFzZU9yZGVyKCkgewogICAgICBjb25zb2xlLmxvZyh0aGlzLmdvb2RzX2xpc3QpOwoKICAgICAgaWYgKHRoaXMuZm9ybS5jb3Vwb25BbW91bnQgPiB0aGlzLnB1cmNoYXNlQW1vdW50KSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLkvJjmg6Dph5Hpop3kuI3og73lpKfkuo7ph4fotK3ph5Hpop0gIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICBpZiAoIXRoaXMuZm9ybS5vdGhlckFtb3VudCkgewogICAgICAgIHRoaXMuZm9ybS5vdGhlckFtb3VudCA9IDA7CiAgICAgIH0KCiAgICAgIGlmICghdGhpcy5mb3JtLmNvdXBvbkFtb3VudCkgewogICAgICAgIHRoaXMuZm9ybS5jb3Vwb25BbW91bnQgPSAwOwogICAgICB9CgogICAgICB0aGlzLiRyZWZzWyJmb3JtIl0udmFsaWRhdGUoYXN5bmMgdmFsaWQgPT4gewogICAgICAgIGlmICh2YWxpZCkgewogICAgICAgICAgY29uc3QgZ29vZHNMaXN0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy5nb29kc19saXN0KS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNrdUlkID4gMCk7CgogICAgICAgICAgaWYgKCFnb29kc0xpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup5ZWG5ZOBIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBpc2J1eWVyTnVtID0gZ29vZHNMaXN0LmV2ZXJ5KGl0ZW0gPT4gaXRlbS5idXllck51bSA+IDApOwoKICAgICAgICAgIGlmICghaXNidXllck51bSkgewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIumHh+i0reaVsOmHj+W/hemhu+Wkp+S6jjAiKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIGNvbnN0IGlzYnV5ZXJVbml0UHJpY2UgPSBnb29kc0xpc3QuZXZlcnkoaXRlbSA9PiBpdGVtLmJ1eWVyVW5pdFByaWNlID4gMCk7CgogICAgICAgICAgaWYgKCFpc2J1eWVyVW5pdFByaWNlKSB7CiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6YeH6LSt5Y2V5Lu35b+F6aG75aSn5LqOMCIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgICAgbGV0IGdvb2RzRGF0YSA9IGdvb2RzTGlzdC5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgIGxldCBnb29kcyA9IHsKICAgICAgICAgICAgICBiYXNpY0dvb2RzSWQ6IGl0ZW0uYmFzaWNHb29kc0lkLAogICAgICAgICAgICAgIGdvb2RzQ29kZTogaXRlbS5nb29kc0NvZGUsCiAgICAgICAgICAgICAgZ29vZHNOYW1lOiBpdGVtLmdvb2RzTmFtZSwKICAgICAgICAgICAgICBza3VJZDogaXRlbS5za3VJZCwKICAgICAgICAgICAgICB1bml0TmFtZTogaXRlbS51bml0TmFtZSwKICAgICAgICAgICAgICBza3VOYW1lOiBpdGVtLnNwZWNHcm9wTmFtZSwKICAgICAgICAgICAgICBidXllck51bTogaXRlbS5idXllck51bSwKICAgICAgICAgICAgICBidXllclVuaXRQcmljZTogaXRlbS5idXllclVuaXRQcmljZSwKICAgICAgICAgICAgICBzdWJ0b3RhbFByaWNlOiBpdGVtLnN1YnRvdGFsUHJpY2UsCiAgICAgICAgICAgICAgY291cG9uQW1vdW50OiBpdGVtLmNvdXBvbkFtb3VudCAtIDAsCiAgICAgICAgICAgICAgb3RoZXJBbW91bnQ6IGl0ZW0ub3RoZXJBbW91bnQgLSAwLAogICAgICAgICAgICAgIGNhdGVnb3J5SWQ6IGl0ZW0uY2F0ZWdvcnlJZCwKICAgICAgICAgICAgICBjYXRlZ29yeU5hbWU6IGl0ZW0uY2F0ZWdvcnlOYW1lLAogICAgICAgICAgICAgIG90aGVyTnVtOiBpdGVtLm90aGVyTnVtCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoaXRlbS5pZCkgewogICAgICAgICAgICAgIGdvb2RzLmlkID0gaXRlbS5pZDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGdvb2RzOwogICAgICAgICAgfSk7CiAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuZm9ybSwKICAgICAgICAgICAgZ29vZHNEYXRhOiBnb29kc0RhdGEKICAgICAgICAgIH07CgogICAgICAgICAgaWYgKHRoaXMuZ29vZHNfbGlzdC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7CgogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgIGxldCB0YXJnZXQgPSB7fTsKCiAgICAgICAgICAgICAgaWYgKHRoaXMucHVzcmNoYXNlX2lkKSB7CiAgICAgICAgICAgICAgICBwYXJhbXMuZGVsZXRlQXJyYXkgPSB0aGlzLmRlbF9nb29kc19pZDsKICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHBhcmFtcyk7CiAgICAgICAgICAgICAgICB0YXJnZXQgPSBhd2FpdCBlZGl0UHVyY2hhc2UodGhpcy5wdXNyY2hhc2VfaWQsIHBhcmFtcyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRhcmdldCA9IGF3YWl0IGFkZFB1cmNoYXNlKHBhcmFtcyk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBjb25zdCBkYXRhID0gdGFyZ2V0OwogICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgICAgICAgbWVzc2FnZTogIuaPkOS6pOaIkOWKnyIKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICBhd2FpdCB0aGlzLmRlbFBhdXNlU2F2ZSgpOwoKICAgICAgICAgICAgICBpZiAodGhpcy5zeXN0ZW1UeXBlID09PSAyKSB7CiAgICAgICAgICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9TaW5nbGVTdG9yZS9wdXJjaGFzZS9wdXJjaGFzZUxpc3QiKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KCIvUHVyY2hhc2UvTWFuYWdlUC9QdXJjaGFzZU9yZGVyIik7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlKCLor7fpgInmi6nllYblk4EiKTsKICAgICAgICAgIH0gLy8g5Lu35qC85pqC5a2Y5re75YqgCgoKICAgICAgICAgIGNvbnN0IHByaWNlRGF0YSA9IGdvb2RzRGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgc2t1SWQ6IGl0ZW0uc2t1SWQsCiAgICAgICAgICAgICAgbW9uZXk6IGl0ZW0uYnV5ZXJVbml0UHJpY2UKICAgICAgICAgICAgfTsKICAgICAgICAgIH0pOwogICAgICAgICAgYXdhaXQgdGhpcy5hZGRNb25leVBhdXNlU2F2ZShwcmljZURhdGEpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgIGRlbERhdGEoaW5kZXgsIHJvdykgewogICAgICBpZiAocm93LmlkKSB7CiAgICAgICAgdGhpcy5kZWxfZ29vZHNfaWQucHVzaChyb3cuaWQpOwogICAgICB9CgogICAgICBpZiAodGhpcy5nb29kc19saXN0Lmxlbmd0aCA9PT0gMSkgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi5b+F6aG75L+d55WZ5LiA5p2hIik7CiAgICAgICAgcmV0dXJuOwogICAgICB9CgogICAgICB0aGlzLmdvb2RzX2xpc3Quc3BsaWNlKGluZGV4LCAxKTsKICAgIH0sCgogICAgc2VsU2hvcCh2YWwsIHJvdykgewogICAgICB0aGlzLmZvcm0uc2hvcE5hbWUgPSByb3dbMF0ubmFtZTsKICAgIH0sCgogICAgLy8g6YCJ5oup5Y2V5Liq5L6b5bqU5ZWGCiAgICBzZWxVbml0U3VwcGxpZXIodmFsLCBsaXN0KSB7CiAgICAgIHRoaXMuZm9ybS5zdXBwbGllck5hbWUgPSBsaXN0WzBdLnRpdGxlOwogICAgfSwKCiAgICAvLyDlkIjorqEKICAgIGdldFN1bW1hcmllcyhwYXJhbSkgewogICAgICByZXR1cm4gdGhpcy4kX2NvbW1vbi5nZXRTdW1tYXJpZXMocGFyYW0sIFsi5bCP6K6h6YeR6aKdIiwgIumHh+i0reaVsOmHjyJdKTsKICAgIH0sCgogICAgY29uZmlybUNvbnRyaWJ1dGlvbnMoKSB7Ly8gaWYgKCF0aGlzLmdvb2RzX2xpc3RbMF0uYmFzaWNHb29kc0lkKSB7CiAgICAgIC8vICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7flhYjpgInmi6nllYblk4EiKTsKICAgICAgLy8gICByZXR1cm47CiAgICAgIC8vIH0KICAgICAgLy8gaWYgKCF0aGlzLm9wdGlvbnNfdmFsdWUpIHsKICAgICAgLy8gICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+WFiOmAieaLqeWIhuaRiuaWueW8jyIpOwogICAgICAvLyAgIHJldHVybjsKICAgICAgLy8gfQogICAgICAvLyB0aGlzLmFwcG9ydGlvbkZsYWcgPSB0cnVlOwogICAgICAvLyBpZiAodGhpcy5vcHRpb25zX3ZhbHVlID09PSAxKSB7CiAgICAgIC8vICAgbGV0IG51bSA9IDA7CiAgICAgIC8vICAgdGhpcy5nb29kc19saXN0LmZvckVhY2goKGl0ZW0pID0+IHsKICAgICAgLy8gICAgIG51bSA9IG51bSArIGl0ZW0uYnV5ZXJOdW07CiAgICAgIC8vICAgfSk7CiAgICAgIC8vICAgbGV0IG51bTEgPSAwOwogICAgICAvLyAgIG51bTEgPSAodGhpcy5jb250cmlidXRpb25zICogMTAwKSAvIG51bTsKICAgICAgLy8gICB0aGlzLmdvb2RzX2xpc3QuZm9yRWFjaCgoaXRlbSkgPT4gewogICAgICAvLyAgICAgbGV0IG51bTIgPSBpdGVtLmJ1eWVyTnVtICogKG51bTEgLyAxMDApOwogICAgICAvLyAgICAgaXRlbS5zdWJ0b3RhbFByaWNlICs9IG51bTI7CiAgICAgIC8vICAgfSk7CiAgICAgIC8vIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zX3ZhbHVlID09PSAyKSB7CiAgICAgIC8vICAgbGV0IHN1bSA9IDA7CiAgICAgIC8vICAgdGhpcy5nb29kc19saXN0LmZvckVhY2goKGl0ZW0pID0+IHsKICAgICAgLy8gICAgIHN1bSArPSBpdGVtLmJ1eWVyVW5pdFByaWNlICogMTAwOwogICAgICAvLyAgIH0pOwogICAgICAvLyAgIGxldCBzdW0xID0gMDsKICAgICAgLy8gICBzdW0xID0gKHRoaXMuY29udHJpYnV0aW9ucyAqIDEwMCkgLyBzdW07CiAgICAgIC8vICAgdGhpcy5nb29kc19saXN0LmZvckVhY2goKGl0ZW0pID0+IHsKICAgICAgLy8gICAgIGl0ZW0uc3VidG90YWxQcmljZSArPSBzdW0xIC8gMTAwOwogICAgICAvLyAgICAgY29uc29sZS5sb2coaXRlbS5zdWJ0b3RhbFByaWNlKTsKICAgICAgLy8gICB9KTsKICAgICAgLy8gfQogICAgfQoKICB9Cn07"},null]}
|