c384f94b3d5f00b2034e8049efd72dce.json 27 KB

1
  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\\Finance\\Receivable\\AddReceipt.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\item\\千鸟\\千鸟云商前端源代码\\源点计划\\jindouyunNewFront\\src\\views\\Finance\\Receivable\\AddReceipt.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:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IFJlY2VpdmFibGUgZnJvbSAiQC9jb21wb25lbnQvRmluYW5jZS9SZWNlaXZhYmxlIjsKaW1wb3J0IEFjY291bnRUeXBlIGZyb20gIi4uL0FjY291bnRUeXBlIjsKaW1wb3J0IHsgZ2V0QWxsUGF5bWVudCB9IGZyb20gIkAvYXBpL1N5c3RlbSI7CmltcG9ydCB7IGdldEN1c3RvbWVySW5mbyB9IGZyb20gIkAvYXBpL0N1c3RvbWVyIjsKaW1wb3J0IHsgYWRkRmluYW5jZVR5cGUsIGVkaXRGaW5hbmNlVHlwZSwgZ2V0UmVjZWl2ZWRJbmZvLCBhZGRSZWNlaXZlZCwgZWRpdFJlY2VpdmVkLCBnZXRUZW1wUmVjZWl2ZWREYXRhLCBnZXRBbGxGaW5hbmNlVHlwZU5vUGFnZSwgZ2V0UmVjZWl2ZUluZm8sIGdldEFsbFJlY2VpdmUsIGVkaXRQYWlkLCBhZGRQYWlkIH0gZnJvbSAiQC9hcGkvRmluYW5jZSI7CmltcG9ydCBTZWxlY3RTaG9wIGZyb20gIkAvY29tcG9uZW50L2dvb2RzL1NlbGVjdFNob3AudnVlIjsKaW1wb3J0IFNlbGVjdEN1c3RvbWVyIGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9TZWxlY3RDdXN0b21lci52dWUiOwpleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIkFkZFJlY2VpcHQiLAogIGNvbXBvbmVudHM6IHsKICAgIFJlY2VpdmFibGUsCiAgICBBY2NvdW50VHlwZSwKICAgIFNlbGVjdEN1c3RvbWVyLAogICAgU2VsZWN0U2hvcAogIH0sCgogIGRhdGEoKSB7CiAgICBjb25zdCB2YWxpZGF0ZU5hbWUgPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeaUtuasvuWNleS9jSIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIGNvbnN0IHZhbGlkYXRlTm8gPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeWOn+WNleaNruWPtyIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIGNvbnN0IHZhbGlkYXRlU2hvcE5hbWUgPSAocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSA9PiB7CiAgICAgIGlmICghdmFsdWUpIHsKICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoIuivt+mAieaLqeW6l+mTuiIpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9CiAgICB9OwoKICAgIHJldHVybiB7CiAgICAgIHRhYmxlRGF0YTogW10sCiAgICAgIC8vIOaWsOWinui0ouWKoeexu+WeiwogICAgICBmb3JtX3R5cGU6IFt7CiAgICAgICAgbGFiZWw6ICLlupTmlLbljZUiLAogICAgICAgIHZhbHVlOiAxCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogIuW6lOS7mOWNlSIsCiAgICAgICAgdmFsdWU6IDIKICAgICAgfV0sCiAgICAgIHNob3dfbW9kZWw6IGZhbHNlLAogICAgICBhZGRfZm9ybTogewogICAgICAgIG5hbWU6ICIiLAogICAgICAgIGxpbms6ICIiLAogICAgICAgIGlzRGVmYXVsdDogNCwKICAgICAgICBlbmFibGVTdGF0dXM6IDUKICAgICAgfSwKICAgICAgYWRkX3J1bGU6IHsKICAgICAgICBuYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl57G75Z6L5ZCN56ewIgogICAgICAgIH1dLAogICAgICAgIGxpbms6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fpgInmi6nlvZLlsZ7ljZXmja4iCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIGFjY291bnRfaW5kZXg6IDAsCiAgICAgIGZpbmFuY2VUeXBlTGlzdDogW10sCiAgICAgIHBheV90eXBlX2xpc3Q6IFtdLAogICAgICBjb2RlOiAiIiwKICAgICAgYWNjb3VudF9zaG93OiBmYWxzZSwKICAgICAgcmVjZWl2YWJsZV9zaG93OiBmYWxzZSwKICAgICAgbm86ICIiLAogICAgICBmb3JtOiB7CiAgICAgICAgY3VzdG9tZXJJZDogIiIsCiAgICAgICAgY3VzdG9tZXJOYW1lOiAiIiwKICAgICAgICBzb3VyY2VObzogIiIsCiAgICAgICAgc291cmNlTm9Nb25leTogIiIsCiAgICAgICAgY3VycmVudEFjY291bnROYW1lOiAiIiwKICAgICAgICBmaW5hbmNlVHlwZTogIiIsCiAgICAgICAgZmluYW5jZVR5cGVJZDogIiIsCiAgICAgICAgc2hvcElkOiAiIiwKICAgICAgICBtb25leTogIiIsCiAgICAgICAgc2hvcE5hbWU6ICIiLAogICAgICAgIHJlY2VpcHRUaW1lOiAiIiwKICAgICAgICBjcmVhdGVUaW1lOiAiIiwKICAgICAgICBhY2NvdW50TGlzdDogW3sKICAgICAgICAgIGFjY291bnRJZDogIiIsCiAgICAgICAgICBhY2NvdW50TnVtYmVyOiAiIiwKICAgICAgICAgIGFjY291bnROYW1lOiAiIiwKICAgICAgICAgIG1vbmV5OiAiIiwKICAgICAgICAgIGRpc2NvdW50TW9uZXk6ICIiLAogICAgICAgICAgZmluYWxNb25leTogIiIsCiAgICAgICAgICBwYXlXYXk6ICIiLAogICAgICAgICAgcmVtYXJrOiAiIgogICAgICAgIH1dCiAgICAgIH0sCiAgICAgIHJ1bGVzOiB7CiAgICAgICAgY3VzdG9tZXJOYW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRlTmFtZQogICAgICAgIH1dLAogICAgICAgIHNvdXJjZU5vOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRlTm8KICAgICAgICB9XSwKICAgICAgICBzaG9wTmFtZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgdmFsaWRhdG9yOiB2YWxpZGF0ZVNob3BOYW1lCiAgICAgICAgfV0KICAgICAgfSwKICAgICAgYWNjb3VudF9pZDogIiIsCiAgICAgIGlzTG9vazogZmFsc2UsCiAgICAgIGlzRWRpdDogZmFsc2UsCiAgICAgIHNob3dfc2hvcDogZmFsc2UsCiAgICAgIGNob29zZV9kYXRhOiBbXSwKICAgICAgY2hlY2tfbW9uZXk6IDAsCiAgICAgIC8vIOWLvumAieWQjuWQiOiuoQogICAgICBpZDogIiIsCiAgICAgIHRpbWU6ICIiLAogICAgICBkZWxBY2NvdW50TGlzdDogW10sCiAgICAgIGZsYWc6IGZhbHNlLAogICAgICBhY3RpdmVOYW1lOiAib25lIgogICAgfTsKICB9LAoKICBjb21wdXRlZDogewogICAgLy8g5qC46ZSA5oC76YeR6aKdCiAgICB0b3RhbCgpIHsKICAgICAgaWYgKCF0aGlzLmZvcm0uYWNjb3VudExpc3QubGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtLmFjY291bnRMaXN0Lmxlbmd0aCA9PT0gMSkgewogICAgICAgIHJldHVybiBOdW1iZXIodGhpcy5mb3JtLmFjY291bnRMaXN0WzBdLm1vbmV5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgc3VtID0gMDsKICAgICAgICB0aGlzLmZvcm0uYWNjb3VudExpc3QuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgIHN1bSA9IHRoaXMuJE5QLnBsdXMoc3VtLCBOdW1iZXIoaXRlbS5tb25leSkpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBzdW07CiAgICAgIH0KICAgIH0sCgogICAgLy8g5pS25qy+5oC76YeR6aKdCiAgICBtb25leVRvdGFsKCkgewogICAgICBpZiAoIXRoaXMuZm9ybS5hY2NvdW50TGlzdC5sZW5ndGgpIHsKICAgICAgICByZXR1cm4gMDsKICAgICAgfSBlbHNlIGlmICh0aGlzLmZvcm0uYWNjb3VudExpc3QubGVuZ3RoID09PSAxKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuJE5QLm1pbnVzKE51bWJlcih0aGlzLmZvcm0uYWNjb3VudExpc3RbMF0ubW9uZXkpLCBOdW1iZXIodGhpcy5mb3JtLmFjY291bnRMaXN0WzBdLmRpc2NvdW50TW9uZXkpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgc3VtID0gMDsKICAgICAgICB0aGlzLmZvcm0uYWNjb3VudExpc3QuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgIGNvbnN0IG1vbmV5ID0gdGhpcy4kTlAubWludXMoTnVtYmVyKGl0ZW0ubW9uZXkpLCBOdW1iZXIoaXRlbS5kaXNjb3VudE1vbmV5KSk7CiAgICAgICAgICBzdW0gPSB0aGlzLiROUC5wbHVzKHN1bSwgbW9uZXkpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBzdW07CiAgICAgIH0KICAgIH0sCgogICAgLy8g5qC46ZSA5oC76YeR6aKdCiAgICBvZmZTZXRUb3RhbCgpIHsKICAgICAgaWYgKCF0aGlzLmNob29zZV9kYXRhLmxlbmd0aCkgewogICAgICAgIHJldHVybiAwOwogICAgICB9IGVsc2UgaWYgKHRoaXMuY2hvb3NlX2RhdGEubGVuZ3RoID09PSAxKSB7CiAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmNob29zZV9kYXRhWzBdLm9mZnNldE1vbmV5KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsZXQgc3VtID0gMDsKICAgICAgICB0aGlzLmNob29zZV9kYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgICBzdW0gPSB0aGlzLiROUC5wbHVzKHN1bSwgTnVtYmVyKGl0ZW0ub2Zmc2V0TW9uZXkpKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gc3VtOwogICAgICB9CiAgICB9LAoKICAgIC8vIOacquaguOmUgOaAu+mHkeminQogICAgb2ZmU2V0Tm90VG90YWwoKSB7CiAgICAgIGlmICghdGhpcy50YWJsZURhdGEubGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0gZWxzZSBpZiAodGhpcy50YWJsZURhdGEubGVuZ3RoID09PSAxKSB7CiAgICAgICAgcmV0dXJuIE51bWJlcih0aGlzLnRhYmxlRGF0YVswXS5vZmZzZXRNb25leSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGV0IHN1bSA9IDA7CiAgICAgICAgdGhpcy50YWJsZURhdGEuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgIHN1bSA9IHRoaXMuJE5QLnBsdXMoc3VtLCBOdW1iZXIoaXRlbS5vZmZzZXRNb25leSkpOwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBzdW07CiAgICAgIH0KICAgIH0KCiAgfSwKCiAgY3JlYXRlZCgpIHsKICAgIHRoaXMuaW5pdGlhbCgpOwogIH0sCgogIGFjdGl2YXRlZCgpIHsKICAgIGlmICh0aGlzLiRfaXNJbml0KCkpIHJldHVybjsKICAgIHRoaXMuaW5pdGlhbCgpOwogIH0sCgogIG1ldGhvZHM6IHsKICAgIC8vIOWIneWni+WMlgogICAgYXN5bmMgaW5pdGlhbCgpIHsKICAgICAgYXdhaXQgdGhpcy5nZXRBbGxGaW5hbmNlVHlwZSgpOwogICAgICBhd2FpdCB0aGlzLmdldEFsbFBheW1lbnQoKTsKICAgICAgdGhpcy5pc0xvb2sgPSB0aGlzLiRyb3V0ZS5wYXRoLmluZGV4T2YoIkxvb2tSZWNlaXB0IikgPiAtMTsKICAgICAgdGhpcy5pc0VkaXQgPSB0aGlzLiRyb3V0ZS5wYXRoLmluZGV4T2YoImVkaXRSZWNlaXB0IikgPiAtMTsgLy8g5pS25qy+5Lq66buY6K6k5b2T5YmN6LSm5oi3CgogICAgICB0aGlzLmZvcm0uY3VycmVudEFjY291bnROYW1lID0gdGhpcy51c2VyTmFtZTsKCiAgICAgIGlmICh0aGlzLiRyb3V0ZS5wYXJhbXMuY3JlYXRlVGltZSkgewogICAgICAgIHRoaXMuZm9ybS5jcmVhdGVUaW1lID0gdGhpcy4kcm91dGUucGFyYW1zLmNyZWF0ZVRpbWU7CiAgICAgIH0KCiAgICAgIGlmICh0aGlzLiRyb3V0ZS5wYXJhbXMuaWQpIHsKICAgICAgICAvLyDnvJbovpHmlLbmrL7ljZUKICAgICAgICB0aGlzLmFjY291bnRfaWQgPSB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQ7IC8vICDojrflj5bor6bmg4Ug5pS25qy+5Y2V6K+m5oOFCgogICAgICAgIGF3YWl0IHRoaXMuZ2V0UmVjZWl2ZWRJbmZvKCk7CiAgICAgIH0gZWxzZSBpZiAodGhpcy4kcm91dGUucXVlcnkuaWQpIHsKICAgICAgICAvLyDku47lupTmlLbljZXngrnlh7vmlLbmrL7mjInpkq7ov5vmnaUg5paw5aKe5pS25qy+5Y2VCiAgICAgICAgLy8gIOiOt+WPluW6lOaUtuWNleivpuaDhQogICAgICAgIHRoaXMuaWQgPSB0aGlzLiRyb3V0ZS5xdWVyeS5pZDsKICAgICAgICB0aGlzLnRpbWUgPSB0aGlzLiRyb3V0ZS5xdWVyeS5jcmVhdGVUaW1lOwogICAgICAgIGF3YWl0IHRoaXMuZ2V0UmVjZWl2ZUluZm8oKTsKICAgICAgfSBlbHNlIHsKICAgICAgICAvLyDmlrDlop7mlLbmrL7ljZUKICAgICAgICBhd2FpdCB0aGlzLmdldFRlbXBSZWNlaXZlZERhdGEoKTsgLy8g6I635Y+W5pqC5a2Y5pWw5o2uCiAgICAgIH0KCiAgICAgIGlmICh0aGlzLiRyb3V0ZS5xdWVyeS5jdXN0b21lcklkKSB7CiAgICAgICAgYXdhaXQgdGhpcy5nZXRDdXN0b21lckluZm8odGhpcy4kcm91dGUucXVlcnkuY3VzdG9tZXJJZCk7CiAgICAgIH0KCiAgICAgIHRoaXMuZm9ybS5yZWNlaXB0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOwogICAgfSwKCiAgICBnb090aGVyRGV0YWlsKG9yZGVySWQpIHsKICAgICAgdGhpcy4kcm91dGVyLnB1c2goIi9vcmRlci9tYW5hZ2VPL09yZGVyRGV0YWlscy8xLyIgKyBvcmRlcklkKTsKICAgIH0sCgogICAgLy8g5om56YeP6YCJ5oupCiAgICBzZWxlY3Rpb25DaGFuZ2UodmFsKSB7CiAgICAgIHRoaXMuY2hvb3NlX2RhdGEgPSB2YWw7CiAgICAgIGxldCBudW0gPSAwOwogICAgICB0aGlzLmNob29zZV9kYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgbnVtICs9IE51bWJlcihpdGVtLm9mZnNldE1vbmV5KTsKICAgICAgfSk7IC8vIGNvbnNvbGUubG9nKCLli77pgInkvZnpop0iLCBudW0pOwoKICAgICAgdGhpcy5jaGVja19tb25leSA9IG51bTsKICAgIH0sCgogICAgLy8g6I635Y+W5bqU5pS25Y2V6K+m5oOFCiAgICBhc3luYyBnZXRSZWNlaXZlSW5mbyhvYmopIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldFJlY2VpdmVJbmZvKHsKICAgICAgICBpZDogdGhpcy5pZCwKICAgICAgICBjcmVhdGVUaW1lOiB0aGlzLnRpbWUKICAgICAgfSk7CiAgICAgIHRoaXMuaWQgPSBkYXRhLmlkOwogICAgICB0aGlzLmZvcm0uY3VzdG9tZXJJZCA9IGRhdGEuY3VzdG9tZXJJZDsKICAgICAgdGhpcy5mb3JtLmN1c3RvbWVyTmFtZSA9IGRhdGEuY3VzdG9tZXJOYW1lOwogICAgICB0aGlzLmZvcm0uc291cmNlTm8gPSBkYXRhLm5vOwogICAgICB0aGlzLmZvcm0uc291cmNlTm9Nb25leSA9IGRhdGEucmVjZWl2ZU1vbmV5OwogICAgICB0aGlzLmZvcm0uc2hvcE5hbWUgPSBkYXRhLnNob3BOYW1lOwogICAgICB0aGlzLmZvcm0uc2hvcElkID0gZGF0YS5zaG9wSWQ7CgogICAgICBpZiAoZGF0YS5yZWNlaXB0VHlwZUlkID09PSA2KSB7CiAgICAgICAgY29uc3QgZmluYW5jZSA9IHRoaXMuZmluYW5jZVR5cGVMaXN0LmZpbmQoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lID09PSAi6ZSA5ZSu6YCA6LSn6YCA5qy+IjsKICAgICAgICB9KTsKICAgICAgICB0aGlzLmZvcm0uZmluYW5jZVR5cGVJZCA9IGZpbmFuY2UuaWQ7CiAgICAgICAgdGhpcy5mb3JtLmZpbmFuY2VUeXBlID0gZmluYW5jZS5uYW1lOwogICAgICB9CgogICAgICB0aGlzLmZvcm0uYWNjb3VudExpc3QgPSBbewogICAgICAgIGFjY291bnRJZDogMCwKICAgICAgICBhY2NvdW50TnVtYmVyOiAiIiwKICAgICAgICBhY2NvdW50TmFtZTogIiIsCiAgICAgICAgbW9uZXk6IGRhdGEucmVjZWl2ZU1vbmV5LAogICAgICAgIGRpc2NvdW50TW9uZXk6ICIiLAogICAgICAgIGZpbmFsTW9uZXk6ICIiLAogICAgICAgIHBheVdheTogIiIsCiAgICAgICAgcmVtYXJrOiAiIgogICAgICB9XTsKICAgICAgdGhpcy50YWJsZURhdGEgPSBbeyAuLi5kYXRhLAogICAgICAgIG9mZnNldE1vbmV5OiBOdW1iZXIoZGF0YS5ub3RPZmZzZXRNb25leSkKICAgICAgfV07IC8vIOWcqOW6lOaUtuWNleWIl+ihqOeCueWHu+aUtuasvuaMiemSruaJk+W8gOeahOaWsOWinuaUtuasvuWNlemhtemdou+8jOaguOmUgOaYjue7huiHquWKqOaguOmUgOOAggoKICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgdGhpcy5vZmZzZXRHZXQoKTsKICAgICAgfSwgMjAwKTsgLy8gYXdhaXQgdGhpcy5nZXRDdXN0b21lckluZm8oZGF0YS5jdXN0b21lcklkKTsKICAgIH0sCgogICAgLy8g6I635Y+W5a6i5oi36K+m5oOFCiAgICBhc3luYyBnZXRDdXN0b21lckluZm8oaWQpIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldEN1c3RvbWVySW5mbyhpZCk7CiAgICAgIHRoaXMuZm9ybS5tb25leSA9IGRhdGEubW9uZXkgfHwgMDsKICAgICAgdGhpcy5mb3JtLmN1c3RvbWVySWQgPSBkYXRhLmlkOwogICAgICB0aGlzLmZvcm0uY3VzdG9tZXJOYW1lID0gZGF0YS5uYW1lOwogICAgICBhd2FpdCB0aGlzLmdldEFsbFJlY2VpdmUoKTsKICAgIH0sCgogICAgLy8gIOW6lOaUtuWNleWIl+ihqAogICAgYXN5bmMgZ2V0QWxsUmVjZWl2ZSgpIHsKICAgICAgbGV0IHBhcmFtcyA9IHsKICAgICAgICBwYWdlOiAxLAogICAgICAgIHBhZ2VTaXplOiA5OTksCiAgICAgICAgY3VzdG9tZXJJZDogdGhpcy5mb3JtLmN1c3RvbWVySWQsCiAgICAgICAgb2Zmc2V0U3RhdHVzOiBbMywgNF0sCiAgICAgICAgbW9uZXlUeXBlOiAxIC8vIGF1ZGl0U3RhdHVzOiAyLAogICAgICAgIC8vIGZpbmFuY2VUeXBlSWQ6IHRoaXMuZm9ybS5maW5hbmNlVHlwZUlkLAoKICAgICAgfTsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldEFsbFJlY2VpdmUocGFyYW1zKTsKICAgICAgdGhpcy50YWJsZURhdGEgPSBkYXRhLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4geyAuLi5pdGVtLAogICAgICAgICAgb2Zmc2V0TW9uZXk6IE51bWJlcihpdGVtLm5vdE9mZnNldE1vbmV5KQogICAgICAgIH07CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDmlrDlop7otKLliqHnsbvlnosKICAgIGFzeW5jIGFkZFR5cGUoKSB7CiAgICAgIHRoaXMuJHJlZnNbImZvcm0iXS52YWxpZGF0ZShhc3luYyB2YWxpZCA9PiB7CiAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICBsZXQgdGFyZ2V0ID0ge307CgogICAgICAgICAgaWYgKCF0aGlzLmlzX2VkaXQpIHsKICAgICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgYWRkRmluYW5jZVR5cGUoeyAuLi50aGlzLmFkZF9mb3JtCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGFyZ2V0ID0gYXdhaXQgZWRpdEZpbmFuY2VUeXBlKHRoaXMucGF5X2lkLCB7IC4uLnRoaXMuYWRkX2Zvcm0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CgogICAgICAgICAgY29uc3QgZGF0YSA9IHRhcmdldDsKICAgICAgICAgIHRoaXMuc2hvd19tb2RlbCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOmAieaLqeWVhumTugogICAgc2VsU2hvcCh2YWwsIHJvdykgewogICAgICB0aGlzLmZvcm0uc2hvcE5hbWUgPSByb3dbMF0ubmFtZTsgLy8gdGhpcy5mb3JtLnNob3BJZCA9IHJvd1swXS5pZAogICAgfSwKCiAgICByZWNlaXZhYmxlc2VsKHZhbCkgewogICAgICB0aGlzLmZvcm0uc291cmNlTm8gPSB2YWxbMF0ubm87CiAgICAgIHRoaXMuZm9ybS5zb3VyY2VOb01vbmV5ID0gdmFsWzBdLnJlY2VpdmVNb25leTsKICAgICAgdGhpcy5mb3JtLnNob3BOYW1lID0gdmFsWzBdLnNob3BOYW1lOwogICAgICB0aGlzLmZvcm0uc2hvcElkID0gdmFsWzBdLnNob3BJZDsKICAgIH0sCgogICAgLy8gIOaUtuasvuWNleivpuaDhQogICAgYXN5bmMgZ2V0UmVjZWl2ZWRJbmZvKCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0UmVjZWl2ZWRJbmZvKHsKICAgICAgICBpZDogdGhpcy5hY2NvdW50X2lkLAogICAgICAgIGNyZWF0ZVRpbWU6IHRoaXMuZm9ybS5jcmVhdGVUaW1lCiAgICAgIH0pOwogICAgICB0aGlzLmZvcm0gPSB7IC4uLmRhdGEsCiAgICAgICAgcmVjZWlwdFRpbWU6IGRhdGEucmVjZWlwdFRpbWUgKiAxMDAwLAogICAgICAgIGFjY291bnRMaXN0OiBkYXRhLmFjY291bnRMaXN0CiAgICAgIH07CgogICAgICBpZiAoZGF0YS5vZmZzZXREYXRlKSB7CiAgICAgICAgdGhpcy50YWJsZURhdGEgPSBkYXRhLm9mZnNldERhdGU7CiAgICAgICAgdGhpcy5jaG9vc2VfZGF0YSA9IGRhdGEub2Zmc2V0RGF0ZTsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKICAgICAgICAgIHRoaXMudGFibGVEYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgICAgIGlmIChpdGVtLm9mZnNldE1vbmV5ID4gMCkgewogICAgICAgICAgICAgIHRoaXMuJHJlZnMubXVsdGlwbGVUYWJsZS50b2dnbGVSb3dTZWxlY3Rpb24oaXRlbSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0sIDIwMCk7CiAgICAgIH0KICAgIH0sCgogICAgLy8g5pqC5a2Y5pWw5o2uCiAgICBhc3luYyB0ZW1EYXRhKHRlbXBTYXZlKSB7CiAgICAgIGxldCByZWNlaXB0T2Zmc2V0RGF0YSA9IHRoaXMuY2hvb3NlX2RhdGEubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiB7CiAgICAgICAgICByZWNlaXZlUmVjZWlwdElkOiBpdGVtLmlkLAogICAgICAgICAgb2Zmc2V0TW9uZXk6IGl0ZW0ub2Zmc2V0TW9uZXkKICAgICAgICB9OwogICAgICB9KTsKICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLmZvcm0sCiAgICAgICAgcmVjZWlwdFRpbWU6IHBhcnNlSW50KHRoaXMuZm9ybS5yZWNlaXB0VGltZSAvIDEwMDApLAogICAgICAgIHRlbXBTYXZlOiB0ZW1wU2F2ZSwKICAgICAgICByZWNlaXB0T2Zmc2V0RGF0YTogcmVjZWlwdE9mZnNldERhdGEKICAgICAgfTsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGFkZFJlY2VpdmVkKHBhcmFtcyk7CiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICBtZXNzYWdlOiAi5pqC5a2Y5oiQ5YqfIiwKICAgICAgICB0eXBlOiAic3VjY2VzcyIKICAgICAgfSk7CiAgICAgIHRoaXMuJGNsb3NlQ3VycmVudEdvRWRpdCgiL0ZpbmFuY2UvUmVjZWl2YWJsZS9SZWNlaXB0TGlzdCIpOwogICAgfSwKCiAgICAvLyAg5re75YqgCiAgICBhc3luYyBhZGREYXRhKHRlbXBTYXZlKSB7CiAgICAgIHRoaXMuJHJlZnNbImJhc2VfZm9ybSJdLnZhbGlkYXRlKGFzeW5jIHZhbGlkID0+IHsKICAgICAgICBpZiAodmFsaWQpIHsKICAgICAgICAgIGlmICghdGVtcFNhdmUpIHsKICAgICAgICAgICAgaWYgKHRoaXMuZmxhZykgewogICAgICAgICAgICAgIHRoaXMuZm9ybS5hY2NvdW50TGlzdCA9IFsuLi50aGlzLmZvcm0uYWNjb3VudExpc3QsIC4uLnRoaXMuZGVsQWNjb3VudExpc3RdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZXQgaXNTdWIgPSB0cnVlOwoKICAgICAgICAgICAgZm9yIChsZXQgaSBpbiB0aGlzLmZvcm0uYWNjb3VudExpc3QpIHsKICAgICAgICAgICAgICBsZXQgaXRlbSA9IHRoaXMuZm9ybS5hY2NvdW50TGlzdFtpXTsKCiAgICAgICAgICAgICAgaWYgKCFpdGVtLmFjY291bnRJZCkgewogICAgICAgICAgICAgICAgaXNTdWIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup57uT566X6LSm5oi3Iik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlmICghaXRlbS5tb25leSkgewogICAgICAgICAgICAgICAgaXNTdWIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36L6T5YWl5pS25qy+6YeR6aKdIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLyogaWYgKCFpdGVtLnBheVdheSkgewogICAgICAgICAgICAgICAgaXNTdWIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup57uT566X5pa55byPIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9Ki8KCgogICAgICAgICAgICAgIGlmICh0aGlzLm9mZlNldFRvdGFsID4gdGhpcy50b3RhbCkgewogICAgICAgICAgICAgICAgaXNTdWIgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi5qC46ZSA6YeR6aKd5LiN6IO95aSn5LqO5pS25qy+6YeR6aKdIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghaXNTdWIpIHsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICBpZiAodGhpcy5jaG9vc2VfZGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgbGV0IHJlY2VpcHRPZmZzZXREYXRhID0gdGhpcy5jaG9vc2VfZGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHJlY2VpdmVSZWNlaXB0SWQ6IGl0ZW0uaWQsCiAgICAgICAgICAgICAgICBvZmZzZXRNb25leTogaXRlbS5vZmZzZXRNb25leSwKICAgICAgICAgICAgICAgIHJlY2VpdmVDcmVhdGVUaW1lOiBpdGVtLmNyZWF0ZVRpbWUKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLmZvcm0sCiAgICAgICAgICAgICAgcmVjZWlwdFRpbWU6IHBhcnNlSW50KHRoaXMuZm9ybS5yZWNlaXB0VGltZSAvIDEwMDApLAogICAgICAgICAgICAgIHRlbXBTYXZlOiB0ZW1wU2F2ZSwKICAgICAgICAgICAgICByZWNlaXB0T2Zmc2V0RGF0YTogcmVjZWlwdE9mZnNldERhdGEsCiAgICAgICAgICAgICAgc291cmNlSWQ6IHRoaXMuaWQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgaWYgKHRoaXMuYWNjb3VudF9pZCkgewogICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGVkaXRSZWNlaXZlZCh0aGlzLmFjY291bnRfaWQsIHBhcmFtcyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBhZGRSZWNlaXZlZChwYXJhbXMpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICAgICAgICBtZXNzYWdlOiAi5pON5L2c5oiQ5YqfISIKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9GaW5hbmNlL1JlY2VpdmFibGUvUmVjZWlwdExpc3QiKTsKICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uZmluYW5jZVR5cGVJZCA9PT0gMSkgewogICAgICAgICAgICAgIHRoaXMuZm9ybS5maW5hbmNlVHlwZSA9ICLplIDllK7pgIDotKfpgIDmrL4iOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodGhpcy5mb3JtLmZpbmFuY2VUeXBlSWQgPT09IDIpIHsKICAgICAgICAgICAgICB0aGlzLmZvcm0uZmluYW5jZVR5cGUgPSAi6ZSA5ZSu5pS25qy+IjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5maW5hbmNlVHlwZUlkID09PSAzKSB7CiAgICAgICAgICAgICAgdGhpcy5mb3JtLmZpbmFuY2VUeXBlID0gIumihOWtmOaUtuasviI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLmZvcm0pOwogICAgICAgICAgICBkZWxldGUgZm9ybS5zb3VyY2VObzsKICAgICAgICAgICAgY29uc3QgcGFyYW1zID0geyAuLi5mb3JtLAogICAgICAgICAgICAgIHJlY2VpcHRUaW1lOiBwYXJzZUludCh0aGlzLmZvcm0ucmVjZWlwdFRpbWUgLyAxMDAwKSwKICAgICAgICAgICAgICB0ZW1wU2F2ZTogdGVtcFNhdmUsCiAgICAgICAgICAgICAgZmluYW5jZVR5cGVJZDogdGhpcy5mb3JtLmZpbmFuY2VUeXBlSWQsCiAgICAgICAgICAgICAgZmluYW5jZVR5cGU6IHRoaXMuZm9ybS5maW5hbmNlVHlwZQogICAgICAgICAgICB9OwogICAgICAgICAgICB0aGlzLiRjb25maXJtKCLnoa7lrpropoHlsIbor6XljZXmja7kvZzkuLrpooTmlLbmrL7lkJfvvJ8iLCAi5o+Q56S6IiwgewogICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAi56Gu5a6aIiwKICAgICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICAgICAgICB0eXBlOiAid2FybmluZyIKICAgICAgICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7CiAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKCiAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjY291bnRfaWQpIHsKICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGVkaXRSZWNlaXZlZCh0aGlzLmFjY291bnRfaWQsIHBhcmFtcyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgYWRkUmVjZWl2ZWQocGFyYW1zKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgICAgICAgICAgICB0eXBlOiAic3VjY2VzcyIsCiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICLmk43kvZzmiJDlip8hIgogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoIi9GaW5hbmNlL1JlY2VpdmFibGUvUmVjZWlwdExpc3QiKTsKICAgICAgICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4gewogICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyAg6I635Y+W5pqC5a2Y5pWw5o2uCiAgICBhc3luYyBnZXRUZW1wUmVjZWl2ZWREYXRhKCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0VGVtcFJlY2VpdmVkRGF0YSgpOwogICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZGF0YSkgPT09ICJ7fSIpIHJldHVybjsKICAgICAgdGhpcy5mb3JtID0geyAuLi5kYXRhLAogICAgICAgIHJlY2VpcHRUaW1lOiBkYXRhLnJlY2VpcHRUaW1lICogMTAwMCwKICAgICAgICBhY2NvdW50TGlzdDogZGF0YS5hY2NvdW50TGlzdC5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4geyAuLi5pdGVtLAogICAgICAgICAgICBwYXlXYXk6IHBhcnNlSW50KGl0ZW0ucGF5V2F5KQogICAgICAgICAgfTsKICAgICAgICB9KQogICAgICB9OwoKICAgICAgaWYgKGRhdGEub2Zmc2V0RGF0ZSkgewogICAgICAgIHRoaXMudGFibGVEYXRhID0gZGF0YS5vZmZzZXREYXRlOwogICAgICAgIHRoaXMuY2hvb3NlX2RhdGEgPSBkYXRhLm9mZnNldERhdGU7CiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICB0aGlzLnRhYmxlRGF0YS5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgICB0aGlzLiRyZWZzLm11bHRpcGxlVGFibGUudG9nZ2xlUm93U2VsZWN0aW9uKGl0ZW0pOwogICAgICAgICAgfSk7CiAgICAgICAgfSwgMjAwKTsKICAgICAgfQogICAgfSwKCiAgICBvcGVuQWNjb3VudChpbmRleCkgewogICAgICB0aGlzLmFjY291bnRfaW5kZXggPSBpbmRleDsKCiAgICAgIGlmICh0aGlzLmZvcm0uc2hvcElkKSB7CiAgICAgICAgdGhpcy5hY2NvdW50X3Nob3cgPSB0cnVlOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJG1lc3NhZ2Uud2FybmluZygi6K+36YCJ5oup5omA5bGe5bqX6ZO6Iik7CiAgICAgIH0KICAgIH0sCgogICAgLy8g57uT566X6LSm5oi3CiAgICBhY2NvdW50c2VsKHZhbCkgewogICAgICB0aGlzLmZvcm0uYWNjb3VudExpc3RbdGhpcy5hY2NvdW50X2luZGV4XS5hY2NvdW50SWQgPSB2YWxbMF0uaWQ7CiAgICAgIHRoaXMuZm9ybS5hY2NvdW50TGlzdFt0aGlzLmFjY291bnRfaW5kZXhdLmFjY291bnROdW1iZXIgPSB2YWxbMF0uYWNjb3VudE51bWJlcjsKICAgICAgdGhpcy5mb3JtLmFjY291bnRMaXN0W3RoaXMuYWNjb3VudF9pbmRleF0uYWNjb3VudE5hbWUgPSB2YWxbMF0ubmFtZTsKICAgIH0sCgogICAgLy8g57G75Z6LCiAgICB0eXBlQ2hhbmdlKHZhbCkgewogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmZpbmFuY2VUeXBlTGlzdC5maW5kKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmlkID09PSB2YWw7CiAgICAgIH0pOwogICAgICB0aGlzLmZvcm0uZmluYW5jZVR5cGUgPSB0YXJnZXQubmFtZTsKICAgIH0sCgogICAgLy8gIOiOt+WPlui0ouWKoeexu+WeiwogICAgYXN5bmMgZ2V0QWxsRmluYW5jZVR5cGUoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRBbGxGaW5hbmNlVHlwZU5vUGFnZSgxKTsKICAgICAgdGhpcy5maW5hbmNlVHlwZUxpc3QgPSBkYXRhOwogICAgICBjb25zdCBmaW5hbmNlID0gZGF0YS5maW5kKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLm5hbWUgPT09ICLplIDllK7mlLbmrL4iOwogICAgICB9KTsKICAgICAgdGhpcy5mb3JtLmZpbmFuY2VUeXBlSWQgPSBmaW5hbmNlLmlkOwogICAgICB0aGlzLmZvcm0uZmluYW5jZVR5cGUgPSBmaW5hbmNlLm5hbWU7CiAgICB9LAoKICAgIGFkZEFjY291bnQoKSB7CiAgICAgIHRoaXMuZm9ybS5hY2NvdW50TGlzdC5wdXNoKHsKICAgICAgICBhY2NvdW50SWQ6ICIiLAogICAgICAgIGFjY291bnROdW1iZXI6ICIiLAogICAgICAgIGFjY291bnROYW1lOiAiIiwKICAgICAgICBtb25leTogIiIsCiAgICAgICAgZGlzY291bnRNb25leTogIiIsCiAgICAgICAgZmluYWxNb25leTogIiIsCiAgICAgICAgcGF5V2F5OiAiIiwKICAgICAgICByZW1hcms6ICIiCiAgICAgIH0pOwogICAgfSwKCiAgICBkZWxBY2NvdW50KGluZGV4KSB7CiAgICAgIGlmICh0aGlzLmFjY291bnRfaWQpIHsKICAgICAgICB0aGlzLmZsYWcgPSB0cnVlOwoKICAgICAgICBpZiAodGhpcy5mb3JtLmFjY291bnRMaXN0W2luZGV4XS5hY2NvdW50SWQgJiYgdGhpcy5mb3JtLmFjY291bnRMaXN0W2luZGV4XS5tb25leSkgewogICAgICAgICAgdGhpcy5mb3JtLmFjY291bnRMaXN0W2luZGV4XS5kZWxldGVTdGF0dXMgPSA0OwogICAgICAgICAgdGhpcy5kZWxBY2NvdW50TGlzdC5wdXNoKHRoaXMuZm9ybS5hY2NvdW50TGlzdFtpbmRleF0pOwogICAgICAgIH0KICAgICAgfQoKICAgICAgY29uc29sZS5sb2codGhpcy5kZWxBY2NvdW50TGlzdCk7CiAgICAgIHRoaXMuZm9ybS5hY2NvdW50TGlzdC5zcGxpY2UoaW5kZXgsIDEpOwogICAgfSwKCiAgICAvLyDojrflj5bmlK/ku5jmlrnlvI8KICAgIGFzeW5jIGdldEFsbFBheW1lbnQoKSB7CiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRBbGxQYXltZW50KHsKICAgICAgICBwYWdlOiAxLAogICAgICAgIHBhZ2VTaXplOiA5OQogICAgICB9KTsKICAgICAgdGhpcy5wYXlfdHlwZV9saXN0ID0gZGF0YS5kYXRhOwogICAgfSwKCiAgICAvLyAg5a6i5oi36YCJ5oupCiAgICBjdXN0b21lclNlbCh2YWwsIHJvdykgewogICAgICB0aGlzLmZvcm0uY3VzdG9tZXJJZCA9IHJvd1swXS5pZDsKICAgICAgdGhpcy5mb3JtLm1vbmV5ID0gcm93WzBdLm1vbmV5OwogICAgICB0aGlzLmZvcm0uc291cmNlTm8gPSAiIjsKICAgICAgdGhpcy5mb3JtLnNob3BOYW1lID0gcm93WzBdLnNob3BOYW1lOwogICAgICB0aGlzLmZvcm0uc2hvcElkID0gcm93WzBdLnNob3BJZCB8fCAiIjsKICAgICAgdGhpcy5nZXRBbGxSZWNlaXZlKCk7CiAgICB9LAoKICAgIC8vIOiHquWKqOaguOmUgAogICAgb2Zmc2V0R2V0KCkgewogICAgICBsZXQgdG90YWwgPSAwOwoKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnRhYmxlRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgIGxldCBpdGVtID0gdGhpcy50YWJsZURhdGFbaV07IC8vIOaKiuacrOasoeaguOmUgOmHkemineebuOWKoAoKICAgICAgICB0b3RhbCArPSBOdW1iZXIoaXRlbS5vZmZzZXRNb25leSk7IC8vIOWLvumAieWPr+S7peaguOmUgOeahOaVsOaNrgoKICAgICAgICB0aGlzLiRyZWZzLm11bHRpcGxlVGFibGUudG9nZ2xlUm93U2VsZWN0aW9uKGl0ZW0pOyAvLyDlpoLmnpzlkIjorqHmoLjplIDph5Hpop3lpKfkuo7mlLbmrL7mgLvph5Hpop3vvIzlgZzmraLlvqrnjq/vvIzlubbmiorlgZzmraLlvqrnjq/liY3nmoTkuIDmnaHmoLjplIDmlbDmja7kv67mlLnkuLrlt67lgLwKCiAgICAgICAgaWYgKHRvdGFsID4gdGhpcy5tb25leVRvdGFsIHx8IHRvdGFsID09PSB0aGlzLm1vbmV5VG90YWwpIHsKICAgICAgICAgIGl0ZW0ub2Zmc2V0TW9uZXkgPSB0aGlzLm1vbmV5VG90YWwgLSAodG90YWwgLSBpdGVtLm9mZnNldE1vbmV5KTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAvLyDmlLbmrL7ph5Hpop3lpLHljrvnhKbngrkKICAgIG1vbmV5Qmx1cigpIHsKICAgICAgLy8g5pS25qy+6YeR6aKd5aSx5Y6754Sm54K55ZCO6Ieq5Yqo5qC46ZSACiAgICAgIHRoaXMub2Zmc2V0R2V0KCk7IC8vIOaUtuasvumHkemineWkseWOu+eEpueCueWQjumHjeaWsOaguOmUgAogICAgICAvLyB0aGlzLiRyZWZzLm11bHRpcGxlVGFibGUuY2xlYXJTZWxlY3Rpb24oKTsKICAgIH0KCiAgfQp9Ow=="},null]}