{"remainingRequest":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\goods\\sale\\AddGoodsOneStore.vue?vue&type=script&lang=js&","dependencies":[{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\src\\views\\goods\\sale\\AddGoodsOneStore.vue","mtime":1678954023613},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\babel.config.js","mtime":1681371897685},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\babel-loader\\lib\\index.js","mtime":1681371912860},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1681371913603},{"path":"D:\\wnmp\\www\\vue\\seaBlueAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1681371925849}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KaW1wb3J0IEN1c3RvbWVyUHJpY2UgZnJvbSAiLi4vY29tcG9uZW50cy9DdXN0b21lclByaWNlIjsKaW1wb3J0IExhZGRlclByaWNlIGZyb20gIi4uL2NvbXBvbmVudHMvTGFkZGVyUHJpY2UiOwppbXBvcnQgQ3VzdG9tZXJUeXBlUHJpY2UgZnJvbSAiLi4vY29tcG9uZW50cy9DdXN0b21lclR5cGVQcmljZSI7IC8vIGltcG9ydCBHb29kc0NhdGVnb3J5IGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9Hb29kc0NhdGVnb3J5LnZ1ZSI7CgppbXBvcnQgQnJhbmRTZWxNb2RlbCBmcm9tICJAL2NvbXBvbmVudC9nb29kcy9CcmFuZFNlbE1vZGVsLnZ1ZSI7CmltcG9ydCBUaW55bWNlIGZyb20gIkAvY29tcG9uZW50L1RpbnltY2UiOwppbXBvcnQgVXBsb2FkUWluaXUgZnJvbSAiQC9jb21wb25lbnQvY29tbW9uL1VwbG9hZFFpbml1LnZ1ZSI7IC8vIOaWsOWinuWIhuexuwoKaW1wb3J0IEFkZENhdGUgZnJvbSAiQC9jb21wb25lbnQvZ29vZHMvQWRkQ2F0ZS52dWUiOwppbXBvcnQgQWRkQnJhbmQgZnJvbSAiLi4vbWFuYWdlRy9BZGRCcmFuZCI7CmltcG9ydCB7IGdldEFsbEV4cHJlc3NSdWxlLCBnZXRBbGxDdXN0b21lclNvdXJjZSB9IGZyb20gIkAvYXBpL1N5c3RlbSI7CmltcG9ydCB7IGdldEFsbFVuaXQsIGRlZmluZVNwZWMsIFNwZWNNYW5hZ2VnZXRBbGwsIGdldFF1aWNrR29vZHNJbmZvLCBlZGl0UXVpY2tHb29kcywgYWRkQmFzaWNBbmRQdWJsaXNoR29vZHMsIGdldEFsbENhdGVnb3J5UG9zdCB9IGZyb20gIkAvYXBpL2dvb2RzIjsKaW1wb3J0IHsgYWRkUGF1c2VTYXZlLCBkZWxQYXVzZVNhdmUsIGdldFBhdXNlU2F2ZSB9IGZyb20gIkAvYXBpL2NvbW1vbiI7CmNvbnN0IHByaWNlRGF0YUxpID0gewogIGVuYWJsZWRMYWRkZXI6IDAsCiAgbWFya2V0UHJpY2U6ICIiLAogIG1lbWJlclByaWNlOiAiIiwKICBzYWxlUHJpY2U6ICIiLAogIHNldE51bTogMSwKICBpc1NhbGU6IDUsCiAgc2FsZVByaWNlQXJlYVR5cGU6IDEsCiAgLy8g5a6i5oi357G75Z6L5ZKM5a6i5oi35b+r6YCf6LCD5Lu3CiAgY3VzdG9tZXJUeXBlUHJpY2U6IFtdLAogIGN1c3RvbWVyVHlwZVByaWNlT3BlbjogZmFsc2UsCiAgY3VzdG9tZXJQcmljZTogW10sCiAgY3VzdG9tZXJQcmljZU9wZW46IGZhbHNlLAogIGxhZGRlclByaWNlOiBbCiAgICAvKiB7CiAgICAgIGZyb206IDEsCiAgICAgIHByaWNlOiAwLjAxLAogICAgICB0bzogMgogICAgfSwgewogICAgICBmcm9tOiAzLAogICAgICBwcmljZTogMC4wMSwKICAgICAgdG86IDQKICAgIH0sCiAgICB7CiAgICAgIGZyb206IDUsCiAgICAgIHByaWNlOiAwLjAxLAogICAgICB0bzogOTk5OTk5OTk5CiAgICB9ICovCiAgXQp9OwppbXBvcnQgQ2xpZW50TGlzdE1vZGFsIGZyb20gIkAvY29tcG9uZW50L2NvbW1vbi9DbGllbnRMaXN0TW9kYWwiOwppbXBvcnQgUmVnaW9uVHJlZSBmcm9tICJAL2NvbXBvbmVudC9jb21tb24vUmVnaW9uVHJlZSI7CmltcG9ydCB7IG1hcEdldHRlcnMgfSBmcm9tICJ2dWV4IjsKaW1wb3J0IHsgQ3VzdG9tZXJQcmljZUFkanVzdG1lbnRBZGQsIGFkZEN1c3RvbWVyVHlwZVByaWNlQWRqdXN0bWVudCwgZ2V0Q3VzdG9tZXJQcmljZUJ5R29vZHNJZHMsIGdldEN1c3RvbWVyVHlwZVByaWNlQnlHb29kc0lkcyB9IGZyb20gIkAvYXBpL1ByaWNlIjsKaW1wb3J0IHsgZ2V0QWxsTWVyY2hhbnRMaXN0IH0gZnJvbSAiQC9hcGkvTWVyY2hhbnRzIjsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICJBZGRCYXNlRGF0YSIsCiAgY29tcG9uZW50czogewogICAgLy8gR29vZHNDYXRlZ29yeSwKICAgIEJyYW5kU2VsTW9kZWwsCiAgICBUaW55bWNlLAogICAgVXBsb2FkUWluaXUsCiAgICBBZGRDYXRlLAogICAgQWRkQnJhbmQsCiAgICBSZWdpb25UcmVlLAogICAgQ2xpZW50TGlzdE1vZGFsLAogICAgQ3VzdG9tZXJQcmljZSwKICAgIEN1c3RvbWVyVHlwZVByaWNlLAogICAgTGFkZGVyUHJpY2UKICB9LAoKICBkYXRhKCkgewogICAgY29uc3QgdmFsaWRhdGVVbml0ID0gKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaykgPT4gewogICAgICBpZiAodmFsdWUudW5pdE5hbWUgPT09ICIiKSB7CiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7forr7nva7ln7rmnKzljZXkvY0iKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgfQogICAgfTsKCiAgICByZXR1cm4gewogICAgICB1bml0aXNNYXN0ZXI6ICIiLAogICAgICB1bml0X2luZGV4OiAwLAogICAgICBza3VfaW5kZXg6IDAsCiAgICAgIGxhZGRlclByaWNlOiBbXSwKICAgICAgZW5hYmxlZExhZGRlcjogMCwKICAgICAgbGFkZGVyX3ByaWNlX3Nob3c6IGZhbHNlLAogICAgICAvLyDpmLbmoq/ku7flvLnnqpcKICAgICAgdHlwZV9wcmljZV9zaG93OiBmYWxzZSwKICAgICAgLy8g5a6i5oi357G75Z6L5Lu35by556qXCiAgICAgIGN1c3RvbWVyVHlwZVByaWNlT3BlbjogZmFsc2UsCiAgICAgIC8vIOWuouaIt+exu+Wei+S7t+W8ueeql+W8gOWFswogICAgICBjdXN0b21lclR5cGVQcmljZTogW10sCiAgICAgIC8vIOWuouaIt+exu+Wei+S7t+W8ueeql+aVsOaNrgogICAgICBjdXN0b21lclByaWNlT3BlbjogZmFsc2UsCiAgICAgIGN1c3RvbWVyUHJpY2U6IFtdLAogICAgICBhcHBvaW50X3ByaWNlX3Nob3c6IGZhbHNlLAogICAgICAvLyDlrqLmiLfmjIflrprku7flvLnnqpcKICAgICAgY3VzdG9tZXJfc2hvdzogZmFsc2UsCiAgICAgIC8vIOe7j+iQpeWxj+iUvS0+5a6i5oi35YiX6KGo5by556qX6YCJ5oupCiAgICAgIGN1c3RvbWVyX2xpc3Q6IFtdLAogICAgICAvLyDnu4/okKXlsY/olL0tPuWuouaIt+WIl+ihqAogICAgICBjdXN0b21lcl90eXBlX2NoZWNrOiBbXSwKICAgICAgLy8g57uP6JCl5bGP6JS9LT7lrqLmiLfnsbvlnovpgInmi6nmlbDnu4QKICAgICAgY3VzdG9tZXJfdHlwZV9saXN0OiBbXSwKICAgICAgLy8g57uP6JCl5bGP6JS9LT7lrqLmiLfnsbvlnovliJfooagKICAgICAgcmVnaW9uX2FycjogW10sCiAgICAgIC8vIOe7j+iQpeWxj+iUvS0+5b2T5YmN5ZWG5ZOB5bey6YCJ5oup6L+H55qE5Yy65Z+fCiAgICAgIHBhZ2VfdGFiczogIjEiLAogICAgICAvLyDpobXpnaJ0YWLliIfmjaIKICAgICAgZXhwcmVzc19saXN0OiBbXSwKICAgICAgLy8g6L+Q6LS55qih54mI5YiX6KGoCiAgICAgIGlzRWRpdFNwZWM6IDUsCiAgICAgIC8vIDUg6KGo56S65q2k5ZWG5ZOB5LuO5pyq6YeH6LSt6L+H77yM5YWB6K6455So5oi36ZqP5oSP57yW6L6R5Y2V5L2N5ZKM5bGe5oCn77ybNCDooajnpLrllYblk4Hlt7Lnu4/ph4fotK3ov4fvvIzpmpDol4/mt7vliqDlsZ7mgKfmjInpkq7vvIzpgb/lhY1za3VpZOmHjee7hAogICAgICAvLyDorqHph4/ljZXkvY0KICAgICAgc2VsZl9zcGVjX3ZhbDogIiIsCiAgICAgIC8vIOiHquWumuS5ieWxnuaAp+WAvOi+k+WFpeahhgogICAgICBzcGVjX25hbWVfaW5kZXg6IDAsCiAgICAgIC8vIOWxnuaAp+WQjWluZGV4CiAgICAgIHNlbGZfc3BlY19pbnB1dDogZmFsc2UsCiAgICAgIC8vIOaYvuekuuiHquWumuS5ieWxnuaAp+WAvOi+k+WFpeahhgogICAgICBzcGVjX21vZGVsOiBmYWxzZSwKICAgICAgLy8g6YCJ5oup5bGe5oCn5YC85by556qXCiAgICAgIHNwZWNfaXRlbV9jaGVjazogW10sCiAgICAgIC8vIOWxnuaAp+WAvOW8ueeql+WNlemAiXZhbHVlCiAgICAgIGlzX2luZGV0ZXJtaW5hdGVfc3BlYzogZmFsc2UsCiAgICAgIC8vIOaJuemHj+mAieaLqeWxnuaAp+WAvCDlhajpgInpgInmi6nmoYbnirbmgIEKICAgICAgc3BlY19jaGVja19hbGw6IGZhbHNlLAogICAgICAvLyDlsZ7mgKflgLwg5YWo6YCJ6YCJ5oup5qGGdmFsdWUKICAgICAgc3BlY19kYXRhOiBbXSwKICAgICAgLy8g5bGe5oCn5YiX6KGoCiAgICAgIHNwZWNfZGF0YV9jaGlsZDogW10sCiAgICAgIC8vIOWxnuaAp+WAvOWIl+ihqAogICAgICBzcGVjX3RhYmxlX0RhdGE6IFtdLAogICAgICAvLyDop4TmoLzmmI7nu4YKICAgICAgc2t1X2xpc3Q6IFsvLyDllYblk4HlsZ7mgKfliJfooagKICAgICAgewogICAgICAgIHNwZWNfZGF0YV9jaGlsZDogW10sCiAgICAgICAgZ3JvdXBTcGVjSWQ6ICIiLAogICAgICAgIHNlbGZfc3BlY192YWw6ICIiLAogICAgICAgIHNlbGZfc3BlY19pbnB1dDogZmFsc2UsCiAgICAgICAgZ3JvdXBTcGVjTmFtZTogIiIsCiAgICAgICAgcGFyYW1zOiBbXQogICAgICB9XSwKICAgICAgYWRkX21vZGVsOiBmYWxzZSwKICAgICAgLy8g5paw5bu65YiG57G7CiAgICAgIGRpYWxvZ1RpdGxlOiAi5paw5bu65YiG57G7IiwKICAgICAgcGlkX2FycjogW10sCiAgICAgIGFkZF9CcmFuZDogZmFsc2UsCiAgICAgIC8vIOaWsOWinuWTgeeJjAogICAgICBwYWdlTmFtZTogIiIsCiAgICAgIC8vIOaaguWtmOaVsOaNruWPguaVsAogICAgICBsb2FkaW5nOiBmYWxzZSwKICAgICAgaW1nX2xpc3Q6IFtdLAogICAgICAvLyDlhbPplK7or40KICAgICAgZHluYW1pY1RhZ3M6IFtdLAogICAgICBpbnB1dFZpc2libGU6IGZhbHNlLAogICAgICBpbnB1dFZhbHVlOiAiIiwKICAgICAgLy8g5YWz6ZSu6K+NIEVORAogICAgICBhc3Npc3RfbW9kZWw6IGZhbHNlLAogICAgICBlZGl0X2Fzc2lzdF9tb2RlbDogZmFsc2UsCiAgICAgIGFzc2lzdF9pbmRleDogMCwKICAgICAgdW5pdF9vcHRpb25zOiBbXSwKICAgICAgLy8g6K6h6YeP5Y2V5L2N5by556qXCiAgICAgIGFzc2lzdF9mb3JtOiB7CiAgICAgICAgdW5pdE5hbWU6ICIiLAogICAgICAgIGJhckNvZGU6ICIiLAogICAgICAgIGlzTWFzdGVyOiA0LAogICAgICAgIGlzRGVmYXVsdDogNCwKICAgICAgICBpc0VkaXRTcGVjOiA1LAogICAgICAgIHVuaXRJZDogIiIsCiAgICAgICAgY29udmVyc2lvbjogIiIKICAgICAgfSwKICAgICAgc2VsX2JyYW5kOiBmYWxzZSwKICAgICAgLy8g5omT5byA5ZOB54mM6YCJ5oup5by556qXCiAgICAgIHNlbF9zaG9wOiBmYWxzZSwKICAgICAgLy8g5omT5byA5bqX6ZO66YCJ5oup5by556qXCiAgICAgIG1hc3Rlcl91bml0X25hbWU6ICIiLAogICAgICBiYXNlX2Zvcm06IHsKICAgICAgICAvLyAg5Z+65pys5L+h5oGvCiAgICAgICAgZW5hYmxlU3RhdHVzOiA1LAogICAgICAgIC8vIOaYr+WQpuS4iuaetgogICAgICAgIGlzRGlzdHJpYnV0aW9uOiA0LAogICAgICAgIC8v6LSf5bqT5a2Y6ZSA5ZSuCiAgICAgICAgaXNTaGllbGQ6IDQsCiAgICAgICAgLy8g57uP6JCl5bGP6JS9IDTlhbPpl60gNeW8gOWQrwogICAgICAgIGlzRXE6IDQsCiAgICAgICAgLy8g5oqE56CB5ZWG5ZOBCiAgICAgICAgc3BlY1R5cGU6IDEsCiAgICAgICAgLy8g5piv5ZCm5aSa6KeE5qC8CiAgICAgICAgZGVsVW5pdElkczogW10sCiAgICAgICAgLy8g6L6F5Yqp5Y2V5L2N5Yig6ZmkZGVsVW5pdElkcyAodW5pdElkKQogICAgICAgIGRlbFNwZWNTa3VJZHM6IFtdLAogICAgICAgIC8vIOWxnuaAp+WIoOmZpGRlbFNwZWNTa3VJZHPvvIjov5nkuKrnlKhpZO+8iQogICAgICAgIGJyYW5jaFVuaXQ6IFtdLAogICAgICAgIGJyYW5kTmFtZTogIiIsCiAgICAgICAgY2F0ZWdvcnlJZDogIiIsCiAgICAgICAgYXNzaXN0Q2F0ZWdvcnlJZDogIiIsCiAgICAgICAgY2F0ZWdvcnlQYXRoOiBbXSwKICAgICAgICAvLyDliIbnsbvpgInmi6kKICAgICAgICBhc3Npc3RDYXRlZ29yeVBhdGg6IFtdLAogICAgICAgIC8vIOWIhuexu+mAieaLqQogICAgICAgIHVuaXREYXRhOiBbXSwKICAgICAgICBtYXN0ZXJVbml0OiB7CiAgICAgICAgICBiYXJDb2RlOiAiIiwKICAgICAgICAgIHdlaWdodDogIiIsCiAgICAgICAgICBpc01hc3RlcjogNSwKICAgICAgICAgIGlzRGVmYXVsdDogNSwKICAgICAgICAgIHVuaXROYW1lOiAiIiwKICAgICAgICAgIHVuaXRJZDogIiIKICAgICAgICB9LAogICAgICAgIGRlc2NyaWJlOiAiIiwKICAgICAgICB0aXRsZTogIiIsCiAgICAgICAgc3RvcmFnZTogIiIsCiAgICAgICAgY29kZTogIiIsCiAgICAgICAgYmFyQ29kZTogIiIsCiAgICAgICAgLy8g5ZWG5ZOB5p2h56CBCiAgICAgICAgd2VpZ2h0OiAiIiwKICAgICAgICAvLyDllYblk4Hph43ph48KICAgICAgICBleHBpcmVUaW1lOiAiIiwKICAgICAgICBicmFuZElkOiAiIiwKICAgICAgICB0YWc6ICIiLAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICBzYWxlc1Nob3A6ICIiLAogICAgICAgIGltYWdlczogW10sCiAgICAgICAgZGVsaXZlcnlTdXBJZHM6IFsiMSIsICIyIl0sCiAgICAgICAgLy8g54mp5rWB5pSv5oyBIOWbuuWumuWAvCAxIOW/q+mAkiAyIOiHquaPkCDkvKDlj4LmoLzlvI/vvJoxLDIKICAgICAgICBleHByZXNzVHlwZTogMSwKICAgICAgICAvLyDlv6vpgJLov5DotLkgMSDljIXpgq4gMiDov5DotLnmqKHniYggMyDlm7rlrprotLnnlKgKICAgICAgICBleHByZXNzRmVlOiAiIiwKICAgICAgICAvLyDlm7rlrprotLnnlKgKICAgICAgICBzaG93RXhwcmVzczogNSwKICAgICAgICAvLyDmmK/lkKblsZXnpLrlv6vpgJIgNeWxleekuiA05LiN5bGV56S6CiAgICAgICAgcnVsZUlkOiAiIiwKICAgICAgICAvLyDov5DotLnmqKHniYhpZAogICAgICAgIG5vdEFyZWE6IFtdLAogICAgICAgIC8v57uP6JCl5bGP6JS95Zyw5Yy6CiAgICAgICAgbm90Q3VzdG9tZXJUeXBlOiAiIiwKICAgICAgICAvL+e7j+iQpeWxj+iUvSDlrqLmiLfnsbvlnovlsY/olL0KICAgICAgICBub3RDdXN0b21lcjogIiIsCiAgICAgICAgLy/nu4/okKXlsY/olL0g5a6i5oi35bGP6JS9CiAgICAgICAgbWVyY2hhbnRJZDogIiIgLy/llYbmiLdJRAoKICAgICAgfSwKICAgICAgc2VsX2NpdGllczogW10sCiAgICAgIC8vIOWVhuaIt+WIl+ihqAogICAgICBiYXNlX3J1bGVzOiB7CiAgICAgICAgLy8g5Z+65pys5L+h5oGv6aqM6K+BCiAgICAgICAgaW1hZ2VzOiBbewogICAgICAgICAgdHlwZTogImFycmF5IiwKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+S4iuS8oOWVhuWTgeWbvueJhyIsCiAgICAgICAgICB0cmlnZ2VyOiAiY2hhbmdlIgogICAgICAgIH1dLAogICAgICAgIHRpdGxlOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5ZWG5ZOB5ZCN56ewIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIGNhdGVnb3J5SWQ6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICLor7fpgInmi6nllYblk4HliIbnsbsiLAogICAgICAgICAgdHJpZ2dlcjogImNoYW5nZSIKICAgICAgICB9XSwKICAgICAgICBleHBpcmVUaW1lOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36L6T5YWl5ZWG5ZOB5L+d6LSo5pyfIiwKICAgICAgICAgIHRyaWdnZXI6ICJibHVyIgogICAgICAgIH1dLAogICAgICAgIC8vIGJyYW5kSWQ6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36YCJ5oup5ZWG5ZOB5ZOB54mMJywgdHJpZ2dlcjogJ2NoYW5nZScgfV0sCiAgICAgICAgLy8gZGVzY3JpYmU6IFt7IHJlcXVpcmVkOiB0cnVlLCBtZXNzYWdlOiAn6K+36L6T5YWl5ZWG5ZOB5o+P6L+wJywgdHJpZ2dlcjogJ2JsdXInIH1dLAogICAgICAgIG1hc3RlclVuaXQ6IFt7CiAgICAgICAgICB2YWxpZGF0b3I6IHZhbGlkYXRlVW5pdCwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0sCiAgICAgICAgZGVsaXZlcnlTdXBJZHM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIHR5cGU6ICJhcnJheSIsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36YCJ5oup54mp5rWB5pSv5oyBIiwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0sCiAgICAgICAgcnVsZUlkOiBbewogICAgICAgICAgcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36YCJ5oup6L+Q6LS55qih5p2/IiwKICAgICAgICAgIHRyaWdnZXI6ICJjaGFuZ2UiCiAgICAgICAgfV0sCiAgICAgICAgZXhwcmVzc0ZlZTogW3sKICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLAogICAgICAgICAgbWVzc2FnZTogIuivt+i+k+WFpei/kOi0uSIsCiAgICAgICAgICB0cmlnZ2VyOiAiYmx1ciIKICAgICAgICB9XSAvLyBicmFuY2hVbml0OiBbeyByZXF1aXJlZDogdHJ1ZSwgdHlwZTogJ2FycmF5JywgbWVzc2FnZTogJ+ivt+iuvue9rui+heWKqeWNleS9jScsIHRyaWdnZXI6ICdjaGFuZ2UnIH1dCiAgICAgICAgLy8gdGFnOiBbeyByZXF1aXJlZDogdHJ1ZSwgbWVzc2FnZTogJ+ivt+iuvue9ruWVhuWTgeWFs+mUruivjScsIHRyaWdnZXI6ICdjaGFuZ2UnIH1dCgogICAgICB9LAogICAgICBnb29kc19pZDogMCwKICAgICAgbGlzdF9wYWdlX2RhdGE6ICIxXzEwIiwKICAgICAgdW5pdF9kYXRhOiBbXSwKICAgICAgLy8g5Y2V5L2N5piO57uGCiAgICAgIHRhYnNfYWN0aXZlOiAiIiwKICAgICAgLy8g5aSa5bGe5oCn5Y2V5L2N5YiH5o2iCiAgICAgIGlzTmV3OiA1LAogICAgICAvLyA1IOagh+ekuui/meaYr+S4gOS4quacgOi/keaWsOWinueahOWVhuWTge+8jOWfuuacrOWNleS9jeS4uuacgOWwj+WNleS9je+8jDTmoIfnpLrov5nmmK/kuYvliY3nmoTogIHmlbDmja7vvIzln7rmnKzljZXkvY3kuLrmnIDlpKfljZXkvY0KICAgICAgY2F0ZWdvcnlfZGF0YTogW10sCiAgICAgIC8v5ZWG5ZOB5YiG57G75YiX6KGoCiAgICAgIGNhdGVfcHJvcHM6IHsKICAgICAgICBsYWJlbDogInRpdGxlIiwKICAgICAgICB2YWx1ZTogImlkIiwKICAgICAgICBjaGVja1N0cmljdGx5OiB0cnVlCiAgICAgIH0sCiAgICAgIGFzc2lzdF9jYXRlOiBbewogICAgICAgIGFzc2lzdENhdGVnb3J5UGF0aDogW10KICAgICAgfV0sCiAgICAgIHNrdV9pZDogIiIKICAgIH07CiAgfSwKCiAgY29tcHV0ZWQ6IHsgLi4ubWFwR2V0dGVycyh7CiAgICAgIHNhbGVQcmljZVRpbWVzOiAiTVVzZXIvc2FsZVByaWNlVGltZXMiLAogICAgICBzeXN0ZW1UeXBlOiAiTVVzZXIvc3lzdGVtVHlwZSIgLy8g5b2T5YmN5ZCO5Y+wCgogICAgfSkKICB9LAoKICBhc3luYyBjcmVhdGVkKCkgewogICAgLy8g5ZWG5oi3566h55CGCiAgICBhd2FpdCB0aGlzLmdldEFsbE1lcmNoYW50TGlzdCgpOyAvLyDllYblk4HliIbnsbvliJfooagKCiAgICBhd2FpdCB0aGlzLmdldEFsbENhdGVnb3J5UG9zdCgpOwogICAgdGhpcy5wYWdlTmFtZSA9IHRoaXMuJHJvdXRlLm5hbWU7IC8vIOWxnuaAp+euoeeQhgoKICAgIGF3YWl0IHRoaXMuU3BlY01hbmFnZWdldEFsbCgpOwogICAgYXdhaXQgdGhpcy5nZXRBbGxVbml0KCk7IC8vIOWuouaIt+exu+WeiwoKICAgIGF3YWl0IHRoaXMuZ2V0QWxsQ3VzdG9tZXJTb3VyY2UoKTsKCiAgICBpZiAodGhpcy4kcm91dGUucGFyYW1zLmlkKSB7CiAgICAgIHRoaXMuZ29vZHNfaWQgPSB0aGlzLiRyb3V0ZS5wYXJhbXMuaWQ7CiAgICAgIHRoaXMubGlzdF9wYWdlX2RhdGEgPSB0aGlzLiRyb3V0ZS5wYXJhbXMucGFnZTsKICAgICAgYXdhaXQgdGhpcy5nZXRHb29kc0Jhc2ljSW5mb0J5SWQoKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIOiOt+WPluaaguWtmOS/oeaBrwogICAgICBhd2FpdCB0aGlzLmdldFBhdXNlU2F2ZSgpOwogICAgfQoKICAgIGF3YWl0IHRoaXMuZ2V0QWxsRXhwcmVzc1J1bGUoKTsKICB9LAoKICBtZXRob2RzOiB7CiAgICAvLyDojrflj5bov5DotLnmqKHniYgKICAgIGFzeW5jIGdldEFsbEV4cHJlc3NSdWxlKCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0QWxsRXhwcmVzc1J1bGUoKTsKICAgICAgdGhpcy5leHByZXNzX2xpc3QgPSBkYXRhOwogICAgfSwKCiAgICBpc0RlZmF1bHRDaGFuZ2UodmFsLCBpbmRleCwgc0luZGV4KSB7CiAgICAgIGlmICh2YWwgPT09IDUpIHsKICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnVuaXRfZGF0YSk7CgogICAgICAgIGlmICh0aGlzLmJhc2VfZm9ybS5zcGVjVHlwZSA9PT0gMikgewogICAgICAgICAgdGFyZ2V0LmZvckVhY2goKGl0ZW0sIGluZGV4VSkgPT4gewogICAgICAgICAgICBpdGVtLnNwZWNfdGFibGVfRGF0YS5mb3JFYWNoKChpdGVtQiwgaW5kZXhCKSA9PiB7CiAgICAgICAgICAgICAgaWYgKGluZGV4VSAhPT0gc0luZGV4KSB7CiAgICAgICAgICAgICAgICBpdGVtQi5pc0RlZmF1bHQgPSA0OwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoaW5kZXhCICE9PSBpbmRleCkgewogICAgICAgICAgICAgICAgICBpdGVtQi5pc0RlZmF1bHQgPSA0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGFyZ2V0LmZvckVhY2goKGl0ZW0sIGluZGV4VSkgPT4gewogICAgICAgICAgICBpZiAoaW5kZXhVICE9PSBpbmRleCkgewogICAgICAgICAgICAgIGl0ZW0uaXNEZWZhdWx0ID0gNDsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnVuaXRfZGF0YSA9IHRhcmdldDsKICAgICAgfQogICAgfSwKCiAgICAvLyDor7fmsYLln7rmnKzljZXkvY3mlbDmja4KICAgIGFzeW5jIGdldEFsbFVuaXQoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRBbGxVbml0KHsKICAgICAgICBwYWdlOiAxLAogICAgICAgIHBhZ2VTaXplOiA5OQogICAgICB9KTsKICAgICAgdGhpcy51bml0X29wdGlvbnMgPSBkYXRhOwogICAgfSwKCiAgICBtb2RlbENsb3NlKCkgewogICAgICB0aGlzLmFkZF9tb2RlbCA9IGZhbHNlOwogICAgfSwKCiAgICAvLyDmiZPlvIDmlrDlop7lvLnnqpcKICAgIG9wZW5Nb2RlbCh0aXRsZSwgcm93KSB7CiAgICAgIHRoaXMuYWRkX21vZGVsID0gdHJ1ZTsKICAgICAgdGhpcy5kaWFsb2dUaXRsZSA9IHRpdGxlOwoKICAgICAgaWYgKHRpdGxlID09PSAi5paw5bu65a2Q5YiG57G7IikgewogICAgICAgIGxldCBsaW5rID0gcm93LmxpbmsgPyByb3cubGluay5zcGxpdCgiLCIpLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtKTsKICAgICAgICB9KSA6IFtdOwogICAgICAgIGxpbmsucHVzaChyb3cuaWQpOwogICAgICAgIHRoaXMucGlkX2FyciA9IGxpbms7CiAgICAgIH0KICAgIH0sCgogICAgLy8g5paw5aKeL+e8lui+keWIhuexuwogICAgYXN5bmMgc3ViQ2F0ZWdvcnkoKSB7CiAgICAgIHRoaXMuZ2V0QWxsQ2F0ZWdvcnlQb3N0KCk7CiAgICAgIHRoaXMuJG1lc3NhZ2UoIuaWsOW7uuWIhuexu+aIkOWKnyIpOwogICAgfSwKCiAgICAvLyDmlrDlu7rlk4HniYwKICAgIHN1Ym1pdEJyYW5kKCkgewogICAgICB0aGlzLmFkZF9CcmFuZCA9IGZhbHNlOwogICAgfSwKCiAgICAvLyDmt7vliqDmmoLlrZgKICAgIGFzeW5jIEFkZFRlbSgpIHsKICAgICAgY29uc3QgcGFyYW1zID0geyAuLi50aGlzLmJhc2VfZm9ybSwKICAgICAgICBzcGVjR3JvdXA6IHRoaXMuc2t1X2xpc3QsCiAgICAgICAgc3BlY011bHRpcGxlOiB0aGlzLnNwZWNfdGFibGVfRGF0YSwKICAgICAgICB0YWc6IHRoaXMuZHluYW1pY1RhZ3MsCiAgICAgICAgYXNzaXN0X2NhdGU6IHRoaXMuYXNzaXN0X2NhdGUKICAgICAgfTsKICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGFkZFBhdXNlU2F2ZSh7CiAgICAgICAga2V5OiB0aGlzLnBhZ2VOYW1lLAogICAgICAgIGRhdGE6IHBhcmFtcwogICAgICB9KTsKICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7CiAgICAgIHRoaXMuJG1lc3NhZ2UoewogICAgICAgIHR5cGU6ICJzdWNjZXNzIiwKICAgICAgICBtZXNzYWdlOiAi5pqC5a2Y5oiQ5YqfIgogICAgICB9KTsKCiAgICAgIGlmICh0aGlzLnN5c3RlbVR5cGUgPT09IDMpIHsKICAgICAgICB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoYC9nb29kcy9zYWxlL01lcmNoYW50c0dvb2RzYCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kY2xvc2VDdXJyZW50R29FZGl0KGAvZ29vZHMvc2FsZS9QdWJsaXNoR29vZHNgKTsKICAgICAgfQogICAgfSwKCiAgICAvLyDliKDpmaTmmoLlrZjkv6Hmga8KICAgIGFzeW5jIGRlbFBhdXNlU2F2ZSgpIHsKICAgICAgY29uc3QgZGF0YSA9IGRlbFBhdXNlU2F2ZSh7CiAgICAgICAga2V5OiB0aGlzLnBhZ2VOYW1lCiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDojrflj5bmmoLlrZjkv6Hmga8KICAgIGFzeW5jIGdldFBhdXNlU2F2ZSgpIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldFBhdXNlU2F2ZSh7CiAgICAgICAga2V5OiB0aGlzLnBhZ2VOYW1lCiAgICAgIH0pOwogICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZGF0YSkgPT09ICJ7fSIpIHJldHVybjsKICAgICAgdGhpcy5iYXNlX2Zvcm0gPSB7IC4uLmRhdGEsCiAgICAgICAgY2F0ZWdvcnlQYXRoOiBBcnJheS5pc0FycmF5KGRhdGEuY2F0ZWdvcnlQYXRoKSA/IGRhdGEuY2F0ZWdvcnlQYXRoIDogW10sCiAgICAgICAgYXNzaXN0Q2F0ZWdvcnlQYXRoOiBBcnJheS5pc0FycmF5KGRhdGEuYXNzaXN0Q2F0ZWdvcnlQYXRoKSA/IGRhdGEuYXNzaXN0Q2F0ZWdvcnlQYXRoIDogW10KICAgICAgfTsKICAgICAgdGhpcy5hc3Npc3RfY2F0ZSA9IGRhdGEuYXNzaXN0X2NhdGUgfHwgW3sKICAgICAgICBhc3Npc3RDYXRlZ29yeVBhdGg6IFtdCiAgICAgIH1dOwogICAgICB0aGlzLnNrdV9saXN0ID0gZGF0YS5zcGVjR3JvdXAgfHwgW107CiAgICAgIHRoaXMuc3BlY190YWJsZV9EYXRhID0gZGF0YS5zcGVjTXVsdGlwbGUgfHwgW107CiAgICAgIHRoaXMuZHluYW1pY1RhZ3MgPSBkYXRhLnRhZyB8fCBbXTsKCiAgICAgIGlmIChkYXRhLmltYWdlcykgewogICAgICAgIHRoaXMuaW1nX2xpc3QgPSBkYXRhLmltYWdlcy5tYXAoaXRlbSA9PiB7CiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICBuYW1lOiAiIiwKICAgICAgICAgICAgdXJsOiBpdGVtCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAoKICAgIC8vIOinhOagvOWbvueJhwogICAgdXBsb2FkU3BlY1N1Y2Nlc3ModmFsLCBpbmRleCwgaW5kZXhVKSB7CiAgICAgIGxldCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnVuaXRfZGF0YSk7CgogICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUgPT09IDEpIHsKICAgICAgICB0YXJnZXRbaW5kZXhdLnNwZWNJbWFnZSA9IHsKICAgICAgICAgIG5hbWU6ICIiLAogICAgICAgICAgdXJsOiB2YWwKICAgICAgICB9OwogICAgICB9IGVsc2UgewogICAgICAgIHRhcmdldFtpbmRleFVdLnNwZWNfdGFibGVfRGF0YVtpbmRleF0uc3BlY0ltYWdlID0gewogICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICB1cmw6IHZhbAogICAgICAgIH07CiAgICAgIH0KCiAgICAgIHRoaXMudW5pdF9kYXRhID0gdGFyZ2V0OwogICAgfSwKCiAgICAvLyDmt7vliqDop4TmoLzpobnnm64KICAgIGFkZFNrdVAoKSB7CiAgICAgIGlmICghdGhpcy5nb29kc19pZCkgewogICAgICAgIHRoaXMuc2t1X2xpc3QucHVzaCh7CiAgICAgICAgICBzcGVjX2RhdGFfY2hpbGQ6IFtdLAogICAgICAgICAgc2VsZl9zcGVjX2lucHV0OiBmYWxzZSwKICAgICAgICAgIHNlbGZfc3BlY192YWw6ICIiLAogICAgICAgICAgZ3JvdXBTcGVjSWQ6ICIiLAogICAgICAgICAgZ3JvdXBTcGVjTmFtZTogIiIsCiAgICAgICAgICBwYXJhbXM6IFtdCiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy4kY29uZmlybSgi5paw5aKe6KeE5qC85Lya5a+86Ie05Y6f5pyJ5bqT5a2Y6YeN572uLOivt+iwqOaFjuaTjeS9nCEg5piv5ZCm57un57utPyIsICLmj5DnpLoiLCB7CiAgICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIue7p+e7reaWsOWiniIsCiAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAi5Y+W5raIIiwKICAgICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICAgIH0pLnRoZW4oKCkgPT4gewogICAgICAgICAgdGhpcy5za3VfbGlzdC5wdXNoKHsKICAgICAgICAgICAgc3BlY19kYXRhX2NoaWxkOiBbXSwKICAgICAgICAgICAgc2VsZl9zcGVjX2lucHV0OiBmYWxzZSwKICAgICAgICAgICAgc2VsZl9zcGVjX3ZhbDogIiIsCiAgICAgICAgICAgIGdyb3VwU3BlY0lkOiAiIiwKICAgICAgICAgICAgZ3JvdXBTcGVjTmFtZTogIiIsCiAgICAgICAgICAgIHBhcmFtczogW10KICAgICAgICAgIH0pOwogICAgICAgIH0pOwogICAgICB9CiAgICB9LAoKICAgIC8vIOinhOagvOaYjuWIh+aNogogICAgZ3JvdXBTcGVjSWRDaGFuZ2UodmFsLCBpbmRleFMpIHsKICAgICAgbGV0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMuc2t1X2xpc3QpOwogICAgICBjb25zdCBzcGVjRGF0YUl0ZW0gPSB0aGlzLnNwZWNfZGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdmFsKTsKICAgICAgdGFyZ2V0W2luZGV4U10uZ3JvdXBTcGVjTmFtZSA9IHNwZWNEYXRhSXRlbS5zcGVjTmFtZTsKICAgICAgdGFyZ2V0W2luZGV4U10uc3BlY19kYXRhX2NoaWxkID0gc3BlY0RhdGFJdGVtLmNoaWxkIHx8IFtdOwogICAgICB0YXJnZXRbaW5kZXhTXS5wYXJhbXMgPSBbXTsKICAgICAgdGhpcy5za3VfbGlzdCA9IHRhcmdldDsgLy8g6YeN5o6S6KeE5qC857uE5ZCICiAgICAgIC8vIHRoaXMuc3BlY0dyb3VwUmVzdCgpCiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc2t1X2xpc3QpCiAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuc3BlY190YWJsZV9EYXRhKQogICAgfSwKCiAgICAvLyDph43mjpLop4TmoLznu4TlkIgKICAgIHNwZWNHcm91cFJlc3QoKSB7CiAgICAgIC8vIOe8lui+kemhtemdouWtmOWCqOivpuaDheaOpeWPo+i/lOWbnuinhOagvOe7hOWQiGlkCiAgICAgIC8vIHRoaXMuc3BlY190YWJsZV9EYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgIC8vICAgaWYgKGl0ZW0uc3BlY0dyb3VwSGFzaCAmJiB0aGlzLmJhc2VfZm9ybS5kZWxTcGVjU2t1SWRzLmluZGV4T2YoaXRlbS5zcGVjR3JvdXBIYXNoKSA9PT0gLTEpIHsKICAgICAgLy8gICAgIHRoaXMuYmFzZV9mb3JtLmRlbFNwZWNTa3VJZHMucHVzaChpdGVtLnNwZWNHcm91cEhhc2gpCiAgICAgIC8vICAgfQogICAgICAvLyB9KQogICAgICBjb25zdCBza3VBcnIgPSB0aGlzLnNrdV9saXN0Lm1hcChpdGVtID0+IHsKICAgICAgICBpdGVtLnBhcmFtcyA9IGl0ZW0ucGFyYW1zLm1hcChpdGVtUCA9PiB7CiAgICAgICAgICByZXR1cm4geyAuLi5pdGVtUCwKICAgICAgICAgICAgZ3JvdXBTcGVjTmFtZTogaXRlbS5ncm91cFNwZWNOYW1lCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHJldHVybiBpdGVtLnBhcmFtczsKICAgICAgfSk7CiAgICAgIGxldCBza3VBcnJEbyA9IFtdOwoKICAgICAgaWYgKHNrdUFyci5sZW5ndGgpIHsKICAgICAgICBza3VBcnJEbyA9IHRoaXMuZG9FeGNoYW5nZShza3VBcnIpOwogICAgICB9IC8vIOWkh+S7veS4gOS7veinhOagvOaYjue7hu+8jOeUqOadpeWhq+WFhemHjeaOkuinhOagvOe7hOS5i+WJjeeahOWbvueJhwoKCiAgICAgIGNvbnN0IGNsb25lVW5pdERhdGEgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnVuaXRfZGF0YSk7CiAgICAgIHRoaXMudW5pdF9kYXRhID0gdGhpcy51bml0X2RhdGEubWFwKChpdGVtLCBpbmRleCkgPT4gewogICAgICAgIGNvbnN0IGNsb25lU3BlY0dyb3VwID0gY2xvbmVVbml0RGF0YVtpbmRleF0uc3BlY190YWJsZV9EYXRhIHx8IFtdOwogICAgICAgIHJldHVybiB7IC4uLml0ZW0sCiAgICAgICAgICBzcGVjX3RhYmxlX0RhdGE6IHNrdUFyckRvLm1hcChpdGVtU3AgPT4gewogICAgICAgICAgICBjb25zdCBpbmRleFNTID0gY2xvbmVTcGVjR3JvdXAuZmluZEluZGV4KGl0ZW1DID0+IGl0ZW1DLmlkID09PSBpdGVtU3AuaWQpOwogICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtU3AsCiAgICAgICAgICAgICAgYmFyQ29kZTogaW5kZXhTUyA+IC0xID8gY2xvbmVTcGVjR3JvdXBbaW5kZXhTU10uYmFyQ29kZSA6IGl0ZW1TcC5iYXJDb2RlLAogICAgICAgICAgICAgIHdlaWdodDogaW5kZXhTUyA+IC0xID8gY2xvbmVTcGVjR3JvdXBbaW5kZXhTU10ud2VpZ2h0IDogaXRlbVNwLndlaWdodCwKICAgICAgICAgICAgICBpc0RlZmF1bHQ6IGluZGV4U1MgPiAtMSA/IGNsb25lU3BlY0dyb3VwW2luZGV4U1NdLmlzRGVmYXVsdCA6IGl0ZW1TcC5pc0RlZmF1bHQsCiAgICAgICAgICAgICAgc3BlY0ltYWdlOiBpbmRleFNTID4gLTEgPyBjbG9uZVNwZWNHcm91cFtpbmRleFNTXS5zcGVjSW1hZ2UgOiBpdGVtU3Auc3BlY0ltYWdlLAogICAgICAgICAgICAgIGludmVudG9yeTogaW5kZXhTUyA+IC0xID8gY2xvbmVTcGVjR3JvdXBbaW5kZXhTU10uaW52ZW50b3J5IDogaXRlbVNwLmludmVudG9yeSB8fCAwLAogICAgICAgICAgICAgIGlzRWRpdFNwZWM6IGluZGV4U1MgPiAtMSA/IGNsb25lU3BlY0dyb3VwW2luZGV4U1NdLmlzRWRpdFNwZWMgOiBpdGVtU3AuaXNFZGl0U3BlYyB8fCA1LAogICAgICAgICAgICAgIHNhbGVQcmljZTogaW5kZXhTUyA+IC0xID8gY2xvbmVTcGVjR3JvdXBbaW5kZXhTU10uc2FsZVByaWNlIDogaXRlbVNwLnNhbGVQcmljZSwKICAgICAgICAgICAgICBlbmFibGVkTGFkZGVyOiBpbmRleFNTID4gLTEgPyBjbG9uZVNwZWNHcm91cFtpbmRleFNTXS5lbmFibGVkTGFkZGVyIDogaXRlbVNwLmVuYWJsZWRMYWRkZXIsCiAgICAgICAgICAgICAgbGFkZGVyUHJpY2U6IGluZGV4U1MgPiAtMSA/IGNsb25lU3BlY0dyb3VwW2luZGV4U1NdLmxhZGRlclByaWNlIDogaXRlbVNwLmxhZGRlclByaWNlLAogICAgICAgICAgICAgIG1hcmtldFByaWNlOiBpbmRleFNTID4gLTEgPyBjbG9uZVNwZWNHcm91cFtpbmRleFNTXS5tYXJrZXRQcmljZSA6IGl0ZW1TcC5tYXJrZXRQcmljZSwKICAgICAgICAgICAgICBtZW1iZXJQcmljZTogaW5kZXhTUyA+IC0xID8gY2xvbmVTcGVjR3JvdXBbaW5kZXhTU10ubWVtYmVyUHJpY2UgOiBpdGVtU3AubWVtYmVyUHJpY2UsCiAgICAgICAgICAgICAgc2V0TnVtOiBpbmRleFNTID4gLTEgPyBjbG9uZVNwZWNHcm91cFtpbmRleFNTXS5zZXROdW0gOiBpdGVtU3Auc2V0TnVtIHx8IDEsCiAgICAgICAgICAgICAgaXNTYWxlOiBpbmRleFNTID4gLTEgPyBjbG9uZVNwZWNHcm91cFtpbmRleFNTXS5pc1NhbGUgOiBpdGVtU3AuaXNTYWxlIHx8IDUsCiAgICAgICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2U6IGluZGV4U1MgPiAtMSA/IGNsb25lU3BlY0dyb3VwW2luZGV4U1NdLmN1c3RvbWVyVHlwZVByaWNlIDogaXRlbVNwLmN1c3RvbWVyVHlwZVByaWNlIHx8IFtdLAogICAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlT3BlbjogaW5kZXhTUyA+IC0xID8gY2xvbmVTcGVjR3JvdXBbaW5kZXhTU10uY3VzdG9tZXJUeXBlUHJpY2VPcGVuIDogaXRlbVNwLmN1c3RvbWVyVHlwZVByaWNlT3BlbiB8fCBmYWxzZSwKICAgICAgICAgICAgICBjdXN0b21lclByaWNlOiBpbmRleFNTID4gLTEgPyBjbG9uZVNwZWNHcm91cFtpbmRleFNTXS5jdXN0b21lclByaWNlIDogaXRlbVNwLmN1c3RvbWVyUHJpY2UgfHwgW10sCiAgICAgICAgICAgICAgY3VzdG9tZXJQcmljZU9wZW46IGluZGV4U1MgPiAtMSA/IGNsb25lU3BlY0dyb3VwW2luZGV4U1NdLmN1c3RvbWVyUHJpY2VPcGVuIDogaXRlbVNwLmN1c3RvbWVyUHJpY2VPcGVuIHx8IGZhbHNlCiAgICAgICAgICAgIH07CiAgICAgICAgICB9KQogICAgICAgIH07CiAgICAgIH0pOyAvLyDliKTmlq3mmK/lkKbmmK/lpJrlsZ7mgKcKCiAgICAgIHRoaXMuYmFzZV9mb3JtLnNwZWNUeXBlID0gdGhpcy51bml0X2RhdGEuc29tZShpdGVtID0+IGl0ZW0uc3BlY190YWJsZV9EYXRhICYmIGl0ZW0uc3BlY190YWJsZV9EYXRhLmxlbmd0aCA+IDApID8gMiA6IDE7CgogICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUgPT09IDIgJiYgIXRoaXMudGFic19hY3RpdmUpIHsKICAgICAgICB0aGlzLnRhYnNfYWN0aXZlID0gdGhpcy51bml0X2RhdGFbMF0udW5pdE5hbWU7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6KeE5qC857uE5ZCICiAgICBkb0V4Y2hhbmdlKGRvdWJsZUFycmF5cykgewogICAgICBjb25zdCBsZW4gPSBkb3VibGVBcnJheXMubGVuZ3RoOwoKICAgICAgaWYgKGxlbiA+PSAyKSB7CiAgICAgICAgY29uc3QgbGVuMSA9IGRvdWJsZUFycmF5c1swXS5sZW5ndGg7CiAgICAgICAgY29uc3QgbGVuMiA9IGRvdWJsZUFycmF5c1sxXS5sZW5ndGg7CiAgICAgICAgY29uc3QgbmV3bGVuID0gbGVuMSAqIGxlbjI7CiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBBcnJheShuZXdsZW4pOwogICAgICAgIGxldCBpbmRleCA9IDA7CgogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuMTsgaSsrKSB7CiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxlbjI7IGorKykgewogICAgICAgICAgICB0ZW1wW2luZGV4XSA9IHsKICAgICAgICAgICAgICBncm91cFNwZWNJZDogZG91YmxlQXJyYXlzWzBdW2ldLmdyb3VwU3BlY0lkICsgIl8iICsgZG91YmxlQXJyYXlzWzFdW2pdLmdyb3VwU3BlY0lkLAogICAgICAgICAgICAgIGdyb3VwU3BlY05hbWU6IGRvdWJsZUFycmF5c1swXVtpXS5ncm91cFNwZWNOYW1lICsgIl8iICsgZG91YmxlQXJyYXlzWzFdW2pdLmdyb3VwU3BlY05hbWUsCiAgICAgICAgICAgICAgaWQ6IGRvdWJsZUFycmF5c1swXVtpXS5pZCArICJfIiArIGRvdWJsZUFycmF5c1sxXVtqXS5pZCwKICAgICAgICAgICAgICBzcGVjTmFtZTogZG91YmxlQXJyYXlzWzBdW2ldLnNwZWNOYW1lICsgIl8iICsgZG91YmxlQXJyYXlzWzFdW2pdLnNwZWNOYW1lLAogICAgICAgICAgICAgIHNwZWNJbWFnZTogewogICAgICAgICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICAgICAgICB1cmw6ICIiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBzZXROdW06IDEsCiAgICAgICAgICAgICAgaXNTYWxlOiA1LAogICAgICAgICAgICAgIHNhbGVQcmljZTogMC4wMSwKICAgICAgICAgICAgICBlbmFibGVkTGFkZGVyOiAwLAogICAgICAgICAgICAgIGxhZGRlclByaWNlOiBbXSwKICAgICAgICAgICAgICBtYXJrZXRQcmljZTogMC4wMSwKICAgICAgICAgICAgICBtZW1iZXJQcmljZTogIiIsCiAgICAgICAgICAgICAgYmFyQ29kZTogIiIsCiAgICAgICAgICAgICAgd2VpZ2h0OiAiIiwKICAgICAgICAgICAgICBpc0RlZmF1bHQ6IDQsCiAgICAgICAgICAgICAgLy8g5a6i5oi357G75Z6L5ZKM5a6i5oi35b+r6YCf6LCD5Lu3CiAgICAgICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2U6IFtdLAogICAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlT3BlbjogZmFsc2UsCiAgICAgICAgICAgICAgY3VzdG9tZXJQcmljZTogW10sCiAgICAgICAgICAgICAgY3VzdG9tZXJQcmljZU9wZW46IGZhbHNlCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsZXQgbmV3QXJyYXkgPSBuZXcgQXJyYXkobGVuIC0gMSk7CiAgICAgICAgbmV3QXJyYXlbMF0gPSB0ZW1wOwoKICAgICAgICBpZiAobGVuID4gMikgewogICAgICAgICAgbGV0IF9jb3VudCA9IDE7CgogICAgICAgICAgZm9yIChsZXQgaSA9IDI7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICBuZXdBcnJheVtfY291bnRdID0gZG91YmxlQXJyYXlzW2ldOwogICAgICAgICAgICBfY291bnQrKzsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0aGlzLmRvRXhjaGFuZ2UobmV3QXJyYXkpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBkb3VibGVBcnJheXNbMF0ubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgc3BlY0ltYWdlOiB7CiAgICAgICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICAgICAgdXJsOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICBzZXROdW06IDEsCiAgICAgICAgICAgIGlzU2FsZTogNSwKICAgICAgICAgICAgYmFyQ29kZTogIiIsCiAgICAgICAgICAgIHdlaWdodDogIiIsCiAgICAgICAgICAgIGlzRGVmYXVsdDogNCwKICAgICAgICAgICAgc2FsZVByaWNlOiAwLjAxLAogICAgICAgICAgICBlbmFibGVkTGFkZGVyOiAwLAogICAgICAgICAgICBsYWRkZXJQcmljZTogW10sCiAgICAgICAgICAgIG1hcmtldFByaWNlOiAwLjAxLAogICAgICAgICAgICBtZW1iZXJQcmljZTogIiIsCiAgICAgICAgICAgIC8vIOWuouaIt+exu+Wei+WSjOWuouaIt+W/q+mAn+iwg+S7twogICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZTogW10sCiAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlT3BlbjogZmFsc2UsCiAgICAgICAgICAgIGN1c3RvbWVyUHJpY2U6IFtdLAogICAgICAgICAgICBjdXN0b21lclByaWNlT3BlbjogZmFsc2UKICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH0sCgogICAgLy8g6Ieq5a6a5LmJ5bGe5oCn5YC86L6T5YWl5qGG56Gu5a6aICDmt7vliqDoh6rlrprkuYnlsZ7mgKcKICAgIGFzeW5jIHNlbGZTcGVjQ29uZmlybShpbmRleCkgewogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnNrdV9saXN0KTsKCiAgICAgIGlmICghdGFyZ2V0W2luZGV4XS5zZWxmX3NwZWNfdmFsKSB7CiAgICAgICAgdGFyZ2V0W2luZGV4XS5zZWxmX3NwZWNfaW5wdXQgPSBmYWxzZTsKICAgICAgICB0aGlzLnNrdV9saXN0ID0gdGFyZ2V0OwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGRlZmluZVNwZWMoewogICAgICAgIHNwZWNOYW1lOiB0YXJnZXRbaW5kZXhdLnNlbGZfc3BlY192YWwsCiAgICAgICAgcGlkOiB0YXJnZXRbaW5kZXhdLmdyb3VwU3BlY0lkLAogICAgICAgIGhpZGRlbjogNAogICAgICB9KTsKICAgICAgdGFyZ2V0W2luZGV4XS5zZWxmX3NwZWNfaW5wdXQgPSBmYWxzZTsKICAgICAgdGFyZ2V0W2luZGV4XS5wYXJhbXMucHVzaCh7CiAgICAgICAgc3BlY05hbWU6IGRhdGEuc3BlY05hbWUsCiAgICAgICAgaWQ6IGRhdGEuaWQsCiAgICAgICAgZ3JvdXBTcGVjSWQ6IHRhcmdldFtpbmRleF0uZ3JvdXBTcGVjSWQKICAgICAgfSk7CiAgICAgIHRhcmdldFtpbmRleF0uc2VsZl9zcGVjX3ZhbCA9ICIiOwogICAgICB0aGlzLnNrdV9saXN0ID0gdGFyZ2V0OyAvLyDph43mjpLop4TmoLznu4TlkIgKCiAgICAgIHRoaXMuc3BlY0dyb3VwUmVzdCgpOwogICAgfSwKCiAgICAvLyDmlrDlop7op4TmoLzlgLwKICAgIGFkZFNwZWNWYWwoaW5kZXhTKSB7CiAgICAgIHRoaXMuc3BlY19tb2RlbCA9IHRydWU7CiAgICAgIHRoaXMuc3BlY19kYXRhX2NoaWxkID0gdGhpcy5za3VfbGlzdFtpbmRleFNdLnNwZWNfZGF0YV9jaGlsZDsKICAgICAgdGhpcy5zcGVjX25hbWVfaW5kZXggPSBpbmRleFM7CiAgICAgIHRoaXMuc3BlY19pdGVtX2NoZWNrID0gdGhpcy5za3VfbGlzdFtpbmRleFNdLnBhcmFtcy5tYXAoaXRlbSA9PiBpdGVtLmlkKTsgLy8g5L2/55So5bGe5oCn5YC85Y2V6YCJ5pa55rOV77yM5Li65LqG6K6+572u5YWo6YCJ6YCJ5oup5qGG54q25oCBCgogICAgICB0aGlzLnNwZWNJdGVtQ2hhbmdlKHRoaXMuc3BlY19pdGVtX2NoZWNrKTsKICAgIH0sCgogICAgLy8g6YCJ5oup5bGe5oCn5YC8CiAgICBzZWxTcGVjVmFsKCkgewogICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnNrdV9saXN0KTsKICAgICAgY29uc3Qgc3BlY3ZhbCA9IHRoaXMuc3BlY19kYXRhX2NoaWxkLmZpbHRlcihpdGVtID0+IHsKICAgICAgICByZXR1cm4gdGhpcy5zcGVjX2l0ZW1fY2hlY2suZmluZEluZGV4KGl0ZW1TID0+IGl0ZW1TID09PSBpdGVtLmlkKSA+IC0xOwogICAgICB9KS5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHNwZWNOYW1lOiBpdGVtLnNwZWNOYW1lLAogICAgICAgICAgaWQ6IGl0ZW0uaWQsCiAgICAgICAgICBncm91cFNwZWNJZDogaXRlbS5waWQKICAgICAgICB9OwogICAgICB9KTsKICAgICAgdGFyZ2V0W3RoaXMuc3BlY19uYW1lX2luZGV4XS5wYXJhbXMgPSB0aGlzLiRfY29tbW9uLnVuaXF1ZSh0YXJnZXRbdGhpcy5zcGVjX25hbWVfaW5kZXhdLnBhcmFtcy5jb25jYXQoc3BlY3ZhbCksIFsiaWQiXSk7CiAgICAgIHRoaXMuc2t1X2xpc3QgPSB0YXJnZXQ7CiAgICAgIHRoaXMuc3BlY19tb2RlbCA9IGZhbHNlOyAvLyDph43mjpLop4TmoLznu4TlkIgKCiAgICAgIHRoaXMuc3BlY0dyb3VwUmVzdCgpOwogICAgfSwKCiAgICAvLyDlsZ7mgKflgLzlhajpgIkKICAgIGNoZWNrQWxsU3BlY0NoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5pc19pbmRldGVybWluYXRlX3NwZWMgPSBmYWxzZTsKCiAgICAgIGlmICh2YWwpIHsKICAgICAgICB0aGlzLnNwZWNfaXRlbV9jaGVjayA9IHRoaXMuc3BlY19kYXRhX2NoaWxkLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuc3BlY19pdGVtX2NoZWNrID0gW107CiAgICAgIH0KICAgIH0sCgogICAgLy8g5bGe5oCn5YC85Y2V6YCJCiAgICBzcGVjSXRlbUNoYW5nZSh2YWwpIHsKICAgICAgbGV0IGNoZWNrZWRDb3VudCA9IHZhbC5sZW5ndGg7CiAgICAgIHRoaXMuc3BlY19jaGVja19hbGwgPSBjaGVja2VkQ291bnQgPT09IHRoaXMuc3BlY19kYXRhX2NoaWxkLmxlbmd0aDsKICAgICAgdGhpcy5pc19pbmRldGVybWluYXRlX3NwZWMgPSBjaGVja2VkQ291bnQgPiAwICYmIGNoZWNrZWRDb3VudCA8IHRoaXMuc3BlY19kYXRhX2NoaWxkLmxlbmd0aDsKICAgIH0sCgogICAgLy8g5Yig6Zmk6KeE5qC85YC8CiAgICBkZWxTcGVjVmFsKGluZGV4QywgaW5kZXhTLCBpdGVtQykgewogICAgICB0aGlzLiRjb25maXJtKCLnoa7lrpropoHliKDpmaTor6Xop4TmoLzlgLzlkJc/IiwgIuaPkOekuiIsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogIuehruWumiIsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogIuWPlua2iCIsCiAgICAgICAgdHlwZTogIndhcm5pbmciCiAgICAgIH0pLnRoZW4oYXN5bmMgKCkgPT4gewogICAgICAgIC8vIOe8lui+kemhtemdouinhOagvOaYjue7huaTjeS9nAogICAgICAgIGlmICh0aGlzLmdvb2RzX2lkKSB7CiAgICAgICAgICB0aGlzLmJhc2VfZm9ybS5kZWxTcGVjU2t1SWRzID0gdGhpcy5zcGVjX3RhYmxlX0RhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zcGVjTmFtZS5pbmRleE9mKGl0ZW1DLnNwZWNOYW1lKSA+IC0xKS5tYXAoaXRlbU0gPT4gewogICAgICAgICAgICByZXR1cm4gaXRlbU0uc3BlY0dyb3VwSGFzaDsKICAgICAgICAgIH0pOwogICAgICAgIH0gLy8g5paw5aKe6aG16Z2i6KeE5qC85piO57uG5pON5L2cCgoKICAgICAgICB0aGlzLnVuaXRfZGF0YSA9IHRoaXMudW5pdF9kYXRhLm1hcChpdGVtVSA9PiB7CiAgICAgICAgICByZXR1cm4geyAuLi5pdGVtVSwKICAgICAgICAgICAgc3BlY190YWJsZV9EYXRhOiBpdGVtVS5zcGVjX3RhYmxlX0RhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5zcGVjTmFtZS5pbmRleE9mKGl0ZW1DLnNwZWNOYW1lKSA9PT0gLTEpCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMuc2t1X2xpc3QpOwogICAgICAgIHRhcmdldFtpbmRleFNdLnBhcmFtcy5zcGxpY2UoaW5kZXhDLCAxKTsKICAgICAgICB0aGlzLnNrdV9saXN0ID0gdGFyZ2V0OwogICAgICB9KTsKICAgIH0sCgogICAgLy8g5Yig6Zmk6KeE5qC857uECiAgICBkZWxHcm91cFNwZWNJZChpbmRleFMpIHsKICAgICAgdGhpcy4kY29uZmlybSgi56Gu5a6a6KaB5Yig6Zmk6K+l6KeE5qC857uE5ZCXPyIsICLmj5DnpLoiLCB7CiAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICLnoa7lrpoiLAogICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICLlj5bmtogiLAogICAgICAgIHR5cGU6ICJ3YXJuaW5nIgogICAgICB9KS50aGVuKGFzeW5jICgpID0+IHsKICAgICAgICB0aGlzLnNrdV9saXN0LnNwbGljZShpbmRleFMsIDEpOwoKICAgICAgICBpZiAodGhpcy5nb29kc19pZCkgewogICAgICAgICAgdGhpcy5iYXNlX2Zvcm0uZGVsU3BlY1NrdUlkcyA9IHRoaXMuYmFzZV9mb3JtLnNwZWNNdWx0aXBsZS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgIHJldHVybiBpdGVtLnNwZWNHcm91cEhhc2g7CiAgICAgICAgICB9KTsKICAgICAgICB9IC8vIOmHjeaOkuinhOagvOe7hOWQiAoKCiAgICAgICAgdGhpcy5zcGVjR3JvdXBSZXN0KCk7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDojrflj5blsZ7mgKfliJfooagKICAgIGFzeW5jIFNwZWNNYW5hZ2VnZXRBbGwoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhLAogICAgICAgIHBhZ2VUb3RhbAogICAgICB9ID0gYXdhaXQgU3BlY01hbmFnZWdldEFsbCh7CiAgICAgICAgcGFnZTogMSwKICAgICAgICBwYWdlU2l6ZTogNTAKICAgICAgfSk7CiAgICAgIHRoaXMuc3BlY19kYXRhID0gZGF0YS5maWx0ZXIoaXRlbSA9PiBpdGVtLnNwZWNOYW1lICE9PSAi6K6h6YeP5Y2V5L2NIik7IC8vIHRoaXMudW5pdF9vcHRpb25zID0gZGF0YS5maW5kKGl0ZW0gPT4gaXRlbS5zcGVjTmFtZSA9PT0gJ+iuoemHj+WNleS9jScpLmNoaWxkCiAgICB9LAoKICAgIC8vIOmAieaLqeWbvueJhwogICAgdXBsb2FkU3VjY2Vzcyh2YWwsIHJlcywgZmlsZSwgZmlsZUxpc3QpIHsKICAgICAgY29uc3QgaW1nQXJyID0gZmlsZUxpc3QubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmNvbnRlbnQ7CiAgICAgIH0pOwoKICAgICAgaWYgKHRoaXMuYmFzZV9mb3JtLmltYWdlcy5sZW5ndGgpIHsKICAgICAgICB0aGlzLmJhc2VfZm9ybS5pbWFnZXMgPSB0aGlzLmJhc2VfZm9ybS5pbWFnZXMuY29uY2F0KGltZ0Fycik7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5iYXNlX2Zvcm0uaW1hZ2VzID0gaW1nQXJyOwogICAgICB9CgogICAgICB0aGlzLmltZ19saXN0ID0gdGhpcy5iYXNlX2Zvcm0uaW1hZ2VzLm1hcChpdGVtID0+IHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICBjb250ZW50OiBpdGVtCiAgICAgICAgfTsKICAgICAgfSk7CiAgICB9LAoKICAgIGltZ1NvcnRDaGFuZ2UoZmlsZUxpc3QpIHsKICAgICAgdGhpcy5iYXNlX2Zvcm0uaW1hZ2VzID0gZmlsZUxpc3QubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmNvbnRlbnQ7CiAgICAgIH0pOwogICAgfSwKCiAgICB1cGxvYWRSZW1vdmUoZmlsZSwgZmlsZUxpc3QpIHsKICAgICAgdGhpcy5iYXNlX2Zvcm0uaW1hZ2VzID0gZmlsZUxpc3QubWFwKGl0ZW0gPT4gewogICAgICAgIHJldHVybiBpdGVtLmNvbnRlbnQ7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDlhbPplK7or43liKDpmaQKICAgIGhhbmRsZUNsb3NlKHRhZykgewogICAgICB0aGlzLmR5bmFtaWNUYWdzLnNwbGljZSh0aGlzLmR5bmFtaWNUYWdzLmluZGV4T2YodGFnKSwgMSk7CiAgICB9LAoKICAgIC8vIOWFs+mUruivjeaYvuekuui+k+WFpeahhgogICAgc2hvd0lucHV0KCkgewogICAgICB0aGlzLmlucHV0VmlzaWJsZSA9IHRydWU7CiAgICAgIHRoaXMuJG5leHRUaWNrKF8gPT4gewogICAgICAgIHRoaXMuJHJlZnMuc2F2ZVRhZ0lucHV0LiRyZWZzLmlucHV0LmZvY3VzKCk7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDlhbPplK7or43mmL7npLrovpPlhaXnoa7lrpoKICAgIGhhbmRsZUlucHV0Q29uZmlybSgpIHsKICAgICAgbGV0IGlucHV0VmFsdWUgPSB0aGlzLmlucHV0VmFsdWU7CgogICAgICBpZiAoaW5wdXRWYWx1ZSkgewogICAgICAgIHRoaXMuZHluYW1pY1RhZ3MucHVzaChpbnB1dFZhbHVlKTsKICAgICAgfQoKICAgICAgdGhpcy5pbnB1dFZpc2libGUgPSBmYWxzZTsKICAgICAgdGhpcy5pbnB1dFZhbHVlID0gIiI7CiAgICB9LAoKICAgIC8vIOWFs+mUruivjUVORAogICAgLy8g6K6+572u6K6h6YeP5Y2V5L2NCiAgICAvLyDliKDpmaTovoXliqnljZXkvY0KICAgIGRlbEZ1VW5pdChyb3csIGl0KSB7CiAgICAgIHRoaXMuYmFzZV9mb3JtLmJyYW5jaFVuaXQuc3BsaWNlKGl0LCAxKTsKCiAgICAgIGlmICh0aGlzLmdvb2RzX2lkKSB7CiAgICAgICAgaWYgKHJvdy51bml0SWQgJiYgdGhpcy5iYXNlX2Zvcm0uZGVsVW5pdElkcy5pbmRleE9mKHJvdy51bml0SWQpID09PSAtMSkgewogICAgICAgICAgdGhpcy5iYXNlX2Zvcm0uZGVsVW5pdElkcy5wdXNoKHJvdy51bml0SWQpOwogICAgICAgIH0KCiAgICAgICAgY29uc3Qgc3BlYyA9IHRoaXMudW5pdF9kYXRhLmZpbmQoaXRlbSA9PiBpdGVtLnVuaXROYW1lID09PSByb3cudW5pdE5hbWUpOwoKICAgICAgICBpZiAoc3BlYyAmJiBzcGVjLnNwZWNHcm91cEhhc2gpIHsKICAgICAgICAgIGlmICh0aGlzLmJhc2VfZm9ybS5kZWxTcGVjU2t1SWRzLmluZGV4T2Yoc3BlYy5zcGVjR3JvdXBIYXNoKSA9PT0gLTEpIHsKICAgICAgICAgICAgdGhpcy5iYXNlX2Zvcm0uZGVsU3BlY1NrdUlkcy5wdXNoKHNwZWMuc3BlY0dyb3VwSGFzaCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICB0aGlzLnVuaXRfZGF0YS5zcGxpY2UoaXQgKyAxLCAxKTsKICAgIH0sCgogICAgLy8g5paw5aKe6L6F5Yqp5Y2V5L2NCiAgICBhZGRGdVVuaXQoKSB7CiAgICAgIHRoaXMuYXNzaXN0X21vZGVsID0gdHJ1ZTsKICAgICAgdGhpcy5lZGl0X2Fzc2lzdF9tb2RlbCA9IGZhbHNlOwogICAgICB0aGlzLmFzc2lzdF9mb3JtID0gewogICAgICAgIHVuaXROYW1lOiAiIiwKICAgICAgICBpc01hc3RlcjogNCwKICAgICAgICB1bml0SWQ6ICIiLAogICAgICAgIGNvbnZlcnNpb246ICIiCiAgICAgIH07CiAgICB9LAoKICAgIC8vIOS/ruaUuemZhOWNleS9jQogICAgRWRpdEZ1VW5pdChpdCkgewogICAgICB0aGlzLmFzc2lzdF9tb2RlbCA9IHRydWU7CiAgICAgIHRoaXMuZWRpdF9hc3Npc3RfbW9kZWwgPSB0cnVlOwogICAgICB0aGlzLmFzc2lzdF9mb3JtID0gdGhpcy5iYXNlX2Zvcm0uYnJhbmNoVW5pdFtpdF07CiAgICAgIHRoaXMuYXNzaXN0X2luZGV4ID0gaXQ7CiAgICB9LAoKICAgIC8vIOW8ueeql+aPkOS6pCDovoXliqnljZXkvY0KICAgIHN1YkFzc2lzdCgpIHsKICAgICAgaWYgKCF0aGlzLmFzc2lzdF9mb3JtLmNvbnZlcnNpb24pIHsKICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuivt+i+k+WFpeWNleS9jeaNoueul+WFs+ezuyIpOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgaWYgKCF0aGlzLmFzc2lzdF9mb3JtLnVuaXROYW1lKSB7CiAgICAgICAgdGhpcy4kbWVzc2FnZS53YXJuaW5nKCLor7fpgInmi6novoXliqnljZXkvY0iKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIHRoaXMuYmFzZV9mb3JtLmJyYW5jaFVuaXQucHVzaCh7IC4uLnRoaXMuYXNzaXN0X2Zvcm0sCiAgICAgICAgaXNFZGl0U3BlYzogNQogICAgICB9KTsKCiAgICAgIGlmICh0aGlzLmJhc2VfZm9ybS5zcGVjVHlwZSA9PT0gMikgewogICAgICAgIGNvbnN0IHNwZWNUYWJsZURhdGEgPSB0aGlzLnVuaXRfZGF0YVswXSA/IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMudW5pdF9kYXRhWzBdLnNwZWNfdGFibGVfRGF0YSB8fCBbXSkgOiBbXTsKICAgICAgICB0aGlzLnVuaXRfZGF0YS5wdXNoKHsgLi4udGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy5hc3Npc3RfZm9ybSksCiAgICAgICAgICAuLi50aGlzLiRfY29tbW9uLmRlZXBDbG9uZShwcmljZURhdGFMaSksCiAgICAgICAgICBpc01hc3RlcjogNCwKICAgICAgICAgIGlzRWRpdFNwZWM6IDUsCiAgICAgICAgICBzcGVjSW1hZ2U6IHsKICAgICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICAgIHVybDogIiIKICAgICAgICAgIH0sCiAgICAgICAgICBzcGVjX3RhYmxlX0RhdGE6IHNwZWNUYWJsZURhdGEKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnVuaXRfZGF0YS5wdXNoKHsgLi4udGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy5hc3Npc3RfZm9ybSksCiAgICAgICAgICAuLi50aGlzLiRfY29tbW9uLmRlZXBDbG9uZShwcmljZURhdGFMaSksCiAgICAgICAgICBpc01hc3RlcjogNCwKICAgICAgICAgIGlzRWRpdFNwZWM6IDUsCiAgICAgICAgICBzcGVjSW1hZ2U6IHsKICAgICAgICAgICAgbmFtZTogIiIsCiAgICAgICAgICAgIHVybDogIiIKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSAvLyDph43mjpLop4TmoLznu4TlkIgKCgogICAgICB0aGlzLnNwZWNHcm91cFJlc3QoKTsKICAgICAgdGhpcy5hc3Npc3RfbW9kZWwgPSBmYWxzZTsKICAgIH0sCgogICAgLy8g5Z+65pys5Y2V5L2N5YiH5o2iCiAgICBtYXN0ZXJVbml0Q2hhbmdlKHZhbCkgewogICAgICB0aGlzLmJhc2VfZm9ybS5tYXN0ZXJVbml0LnVuaXROYW1lID0gdGhpcy51bml0X29wdGlvbnMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHZhbCkudW5pdE5hbWU7CiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy51bml0X2RhdGEuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5pc01hc3RlciA9PT0gNSk7CgogICAgICBpZiAoaW5kZXggPT09IC0xKSB7CiAgICAgICAgdGhpcy51bml0X2RhdGEudW5zaGlmdCh7IC4uLnRoaXMuYmFzZV9mb3JtLm1hc3RlclVuaXQsCiAgICAgICAgICAuLi50aGlzLiRfY29tbW9uLmRlZXBDbG9uZShwcmljZURhdGFMaSksCiAgICAgICAgICBpc01hc3RlcjogNSwKICAgICAgICAgIHNwZWNJbWFnZTogewogICAgICAgICAgICBuYW1lOiAiIiwKICAgICAgICAgICAgdXJsOiAiIgogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuJHNldCh0aGlzLnVuaXRfZGF0YSwgaW5kZXgsIHsgLi4udGhpcy51bml0X2RhdGFbaW5kZXhdLAogICAgICAgICAgLi4udGhpcy5iYXNlX2Zvcm0ubWFzdGVyVW5pdAogICAgICAgIH0pOwogICAgICB9IC8vIOmHjeaOkuinhOagvOe7hOWQiAoKCiAgICAgIHRoaXMuc3BlY0dyb3VwUmVzdCgpOwoKICAgICAgaWYgKHRoaXMuYmFzZV9mb3JtLnNwZWNUeXBlID09PSAyKSB7CiAgICAgICAgdGhpcy50YWJzX2FjdGl2ZSA9IHRoaXMudW5pdF9kYXRhWzBdLnVuaXROYW1lOwogICAgICB9CiAgICB9LAoKICAgIC8vIOi+heWKqeWNleS9jeWIh+aNogogICAgYnJhbmNoVW5pdENoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5hc3Npc3RfZm9ybS51bml0TmFtZSA9IHRoaXMudW5pdF9vcHRpb25zLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSB2YWwpLnVuaXROYW1lOwogICAgfSwKCiAgICAvLyDojrflj5bor6bmg4UKICAgIGFzeW5jIGdldEdvb2RzQmFzaWNJbmZvQnlJZCgpIHsKICAgICAgY29uc3QgewogICAgICAgIGRhdGEKICAgICAgfSA9IGF3YWl0IGdldFF1aWNrR29vZHNJbmZvKHRoaXMuZ29vZHNfaWQpOwogICAgICB0aGlzLnJlZ2lvbl9hcnIgPSBkYXRhLm5vdEFyZWE7CiAgICAgIHRoaXMuY3VzdG9tZXJfdHlwZV9jaGVjayA9IGRhdGEubm90Q3VzdG9tZXJUeXBlID8gZGF0YS5ub3RDdXN0b21lclR5cGUuc3BsaXQoIiwiKS5tYXAoaXRlbSA9PiBwYXJzZUludChpdGVtKSkgOiBbXTsKICAgICAgdGhpcy5jdXN0b21lcl9saXN0ID0gZGF0YS5ub3RDdXN0b21lckxpc3RzIHx8IFtdOwogICAgICB0aGlzLmlzRWRpdFNwZWMgPSBkYXRhLmlzRWRpdFNwZWM7IC8vIHJldHVybgoKICAgICAgbGV0IG1hc3RlclVuaXQgPSBkYXRhLnVuaXREYXRhLmZpbmQoaXRlbSA9PiBpdGVtLmlzTWFzdGVyID09PSA1KSB8fCB7CiAgICAgICAgYmFyQ29kZTogIiIsCiAgICAgICAgd2VpZ2h0OiAiIiwKICAgICAgICBpc01hc3RlcjogNSwKICAgICAgICBpc0RlZmF1bHQ6IDUsCiAgICAgICAgdW5pdE5hbWU6ICIiLAogICAgICAgIHVuaXRJZDogIiIKICAgICAgfTsKICAgICAgdGhpcy5pc05ldyA9IG1hc3RlclVuaXQgPyBtYXN0ZXJVbml0LmlzTmV3IHx8IDQgOiA0OwogICAgICBsZXQgYnJhbmNoVW5pdCA9IFtdOwoKICAgICAgaWYgKGRhdGEuc3BlY1R5cGUgPT09IDIpIHsKICAgICAgICBjb25zdCB1bml0RGF0YSA9IGRhdGEudW5pdERhdGEuZmlsdGVyKGl0ZW0gPT4gaXRlbS5pc01hc3RlciA9PT0gNCk7CiAgICAgICAgYnJhbmNoVW5pdCA9ICh1bml0RGF0YSB8fCBbXSkubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgaXNFZGl0U3BlYzogZGF0YS5pc0VkaXRTcGVjCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9IGVsc2UgaWYgKGRhdGEuc3BlY1R5cGUgPT09IDEpIHsKICAgICAgICBjb25zdCB1bml0RGF0YSA9IGRhdGEuc3BlY011bHRpcGxlLmZpbHRlcihpdGVtID0+IGl0ZW0uaXNNYXN0ZXIgPT09IDQpOwogICAgICAgIGJyYW5jaFVuaXQgPSAodW5pdERhdGEgfHwgW10pLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGNvbnZlcnNpb246IGl0ZW0uY29udmVyc2lvbiwKICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsCiAgICAgICAgICAgIGlzTWFzdGVyOiBpdGVtLmlzTWFzdGVyLAogICAgICAgICAgICB1bml0SWQ6IGl0ZW0udW5pdElkLAogICAgICAgICAgICB1bml0TmFtZTogaXRlbS51bml0TmFtZSwKICAgICAgICAgICAgaXNFZGl0U3BlYzogaXRlbS5pc0VkaXRTcGVjCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9CgogICAgICB0aGlzLmJhc2VfZm9ybSA9IHsgLi4uZGF0YSwKICAgICAgICBtYXN0ZXJVbml0OiBtYXN0ZXJVbml0LAogICAgICAgIHN0b3JhZ2U6IGRhdGEuc3RvcmFnZSwKICAgICAgICBkZWxVbml0SWRzOiBbXSwKICAgICAgICBkZWxTcGVjU2t1SWRzOiBbXSwKICAgICAgICBzcGVjVHlwZTogZGF0YS5zcGVjVHlwZSwKICAgICAgICBicmFuY2hVbml0OiBicmFuY2hVbml0LAogICAgICAgIGNhdGVnb3J5UGF0aDogZGF0YS5jYXRlZ29yeVBhdGggPyBkYXRhLmNhdGVnb3J5UGF0aC5zcGxpdCgiLCIpLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiBwYXJzZUludChpdGVtKTsKICAgICAgICB9KSA6IFtdLAogICAgICAgIGNhdGVnb3J5SWQ6IGRhdGEuY2F0ZWdvcnlJZCwKICAgICAgICBhc3Npc3RDYXRlZ29yeUlkOiBkYXRhLmFzc2lzdENhdGVnb3J5SWQsCiAgICAgICAgYXNzaXN0Q2F0ZWdvcnlQYXRoOiBkYXRhLmFzc2lzdENhdGVnb3J5UGF0aCB8fCBbXSwKICAgICAgICBpc0VxOiBkYXRhLmlzRXEsCiAgICAgICAgLy8g5oqE56CB5ZWG5ZOBCiAgICAgICAgaXNEaXN0cmlidXRpb246IGRhdGEuaXNEaXN0cmlidXRpb24sCiAgICAgICAgLy8g6LSf5bqT5a2Y6ZSA5ZSuCiAgICAgICAgaXNTaGllbGQ6IGRhdGEuaXNTaGllbGQsCiAgICAgICAgLy8g57uP6JCl5bGP6JS9CiAgICAgICAgZGVsaXZlcnlTdXBJZHM6IGRhdGEuZGVsaXZlcnlTdXBJZHMuc3BsaXQoIiwiKSwKICAgICAgICAvLyDnianmtYHmlK/mjIEg5Zu65a6a5YC8IDEg5b+r6YCSIDIg6Ieq5o+QIOS8oOWPguagvOW8j++8mjEsMgogICAgICAgIGV4cHJlc3NUeXBlOiBkYXRhLmV4cHJlc3NUeXBlLAogICAgICAgIC8vIOW/q+mAkui/kOi0uSAxIOWMhemCriAyIOi/kOi0ueaooeeJiCAzIOWbuuWumui0ueeUqAogICAgICAgIGV4cHJlc3NGZWU6IGRhdGEuZXhwcmVzc0ZlZSwKICAgICAgICAvLyDlm7rlrprotLnnlKgKICAgICAgICBzaG93RXhwcmVzczogZGF0YS5zaG93RXhwcmVzcywKICAgICAgICAvLyDmmK/lkKblsZXnpLrlv6vpgJIgNeWxleekuiA05LiN5bGV56S6CiAgICAgICAgcnVsZUlkOiBkYXRhLnJ1bGVJZCAvLyDov5DotLnmqKHniYhpZAoKICAgICAgfTsgLy8g5Ymv5YiG57G7CgogICAgICBpZiAoZGF0YS5hc3Npc3RDYXRlZ29yeVBhdGggJiYgZGF0YS5hc3Npc3RDYXRlZ29yeVBhdGgubGVuZ3RoKSB7CiAgICAgICAgdGhpcy5hc3Npc3RfY2F0ZSA9IGRhdGEuYXNzaXN0Q2F0ZWdvcnlQYXRoLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGFzc2lzdENhdGVnb3J5UGF0aDogaXRlbS5zcGxpdCgiLCIpLm1hcChpdGVtZSA9PiB7CiAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlSW50KGl0ZW1lKTsKICAgICAgICAgICAgfSkKICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5hc3Npc3RfY2F0ZSA9IFt7CiAgICAgICAgICBhc3Npc3RDYXRlZ29yeVBhdGg6IFtdCiAgICAgICAgfV07CiAgICAgIH0KCiAgICAgIHRoaXMuaW1nX2xpc3QgPSBkYXRhLmltYWdlcy5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIG5hbWU6ICIiLAogICAgICAgICAgdXJsOiBpdGVtCiAgICAgICAgfTsKICAgICAgfSk7CiAgICAgIHRoaXMuZHluYW1pY1RhZ3MgPSBkYXRhLnRhZy5maWx0ZXIoaXRlbSA9PiAhIWl0ZW0pOyAvLyDlpJrop4TmoLzmlbDmja4KCiAgICAgIGlmIChwYXJzZUludCh0aGlzLmJhc2VfZm9ybS5zcGVjVHlwZSkgPT09IDIpIHsKICAgICAgICB0aGlzLnNrdV9saXN0ID0gZGF0YS5zcGVjR3JvdXAubWFwKGl0ZW0gPT4gewogICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgc3BlY19kYXRhX2NoaWxkOiB0aGlzLnNwZWNfZGF0YS5maW5kKGl0ZW1GID0+IGl0ZW1GLmlkID09PSBpdGVtLmdyb3VwU3BlYy5zcGVjSWQpLmNoaWxkLAogICAgICAgICAgICBncm91cFNwZWNJZDogaXRlbS5ncm91cFNwZWMuc3BlY0lkLAogICAgICAgICAgICBncm91cFNwZWNOYW1lOiBpdGVtLmdyb3VwU3BlYy5zcGVjTmFtZSwKICAgICAgICAgICAgc2VsZl9zcGVjX3ZhbDogIiIsCiAgICAgICAgICAgIHNlbGZfc3BlY19pbnB1dDogZmFsc2UsCiAgICAgICAgICAgIHBhcmFtczogaXRlbS5wYXJhbXMubWFwKGl0ZW1DID0+IHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgaWQ6IGl0ZW1DLnNwZWNWYWx1ZUlkLAogICAgICAgICAgICAgICAgc3BlY05hbWU6IGl0ZW1DLnNwZWNWYWx1ZU5hbWUsCiAgICAgICAgICAgICAgICBncm91cFNwZWNJZDogaXRlbS5ncm91cFNwZWMuc3BlY0lkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSkKICAgICAgICAgIH07CiAgICAgICAgfSk7CiAgICAgICAgdGhpcy51bml0X2RhdGEgPSBkYXRhLnVuaXREYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgIGNvbnN0IHNwZWNUYWJsZURhdGEgPSBkYXRhLnNwZWNNdWx0aXBsZS5maWx0ZXIoaXRlbVUgPT4gaXRlbVUudW5pdElkID09PSBpdGVtLnVuaXRJZCkubWFwKGl0ZW1TUCA9PiB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgaXNFZGl0U3BlYzogaXRlbVNQLmlzRWRpdFNwZWMsCiAgICAgICAgICAgICAgaW52ZW50b3J5OiBpdGVtU1AuaW52ZW50b3J5IC0gMCwKICAgICAgICAgICAgICBzcGVjR3JvdXBIYXNoOiBpdGVtU1Auc3BlY0dyb3VwSGFzaCwKICAgICAgICAgICAgICBpZF9EOiBpdGVtU1AuaWQsCiAgICAgICAgICAgICAgY29udmVyc2lvbjogaXRlbVNQLmNvbnZlcnNpb24sCiAgICAgICAgICAgICAgdW5pdElkOiBpdGVtU1AudW5pdElkLAogICAgICAgICAgICAgIHNwZWNOYW1lOiAoaXRlbVNQLnNwZWNHcm91cCB8fCBbXSkubWFwKGl0ZW1QID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtUC5zcGVjVmFsdWVOYW1lOwogICAgICAgICAgICAgIH0pLmpvaW4oIl8iKSwKICAgICAgICAgICAgICBpZDogKGl0ZW1TUC5zcGVjR3JvdXAgfHwgW10pLm1hcChpdGVtUCA9PiB7CiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVAuc3BlY1ZhbHVlSWQ7CiAgICAgICAgICAgICAgfSkuam9pbigiXyIpLAogICAgICAgICAgICAgIGdyb3VwU3BlY0lkOiAoaXRlbVNQLnNwZWNHcm91cCB8fCBbXSkubWFwKGl0ZW1QID0+IHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtUC5zcGVjSWQ7CiAgICAgICAgICAgICAgfSkuam9pbigiXyIpLAogICAgICAgICAgICAgIGdyb3VwU3BlY05hbWU6IChpdGVtU1Auc3BlY0dyb3VwIHx8IFtdKS5tYXAoaXRlbVAgPT4gewogICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1QLnNwZWNOYW1lOwogICAgICAgICAgICAgIH0pLmpvaW4oIl8iKSwKICAgICAgICAgICAgICBzcGVjSW1hZ2U6IHsKICAgICAgICAgICAgICAgIG5hbWU6ICIiLAogICAgICAgICAgICAgICAgdXJsOiBpdGVtU1Auc3BlY0ltYWdlIHx8ICIiCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICBiYXJDb2RlOiBpdGVtU1AuYmFyQ29kZSwKICAgICAgICAgICAgICB3ZWlnaHQ6IGl0ZW1TUC53ZWlnaHQsCiAgICAgICAgICAgICAgaXNEZWZhdWx0OiBpdGVtU1AuaXNEZWZhdWx0LAogICAgICAgICAgICAgIHNhbGVQcmljZTogaXRlbVNQLnNhbGVQcmljZS5zYWxlUHJpY2UsCiAgICAgICAgICAgICAgZW5hYmxlZExhZGRlcjogaXRlbVNQLnNhbGVQcmljZS5lbmFibGVkTGFkZGVyLAogICAgICAgICAgICAgIGxhZGRlclByaWNlOiBpdGVtU1Auc2FsZVByaWNlLmxhZGRlclByaWNlLAogICAgICAgICAgICAgIG1hcmtldFByaWNlOiBpdGVtU1Auc2FsZVByaWNlLm1hcmtldFByaWNlLAogICAgICAgICAgICAgIG1lbWJlclByaWNlOiBpdGVtU1AubWVtYmVyUHJpY2UsCiAgICAgICAgICAgICAgc2V0TnVtOiBpdGVtU1Auc2FsZVByaWNlLnNldE51bSwKICAgICAgICAgICAgICBpc1NhbGU6IGl0ZW1TUC5pc1NhbGUgfHwgNSwKICAgICAgICAgICAgICAvLyDlrqLmiLfnsbvlnovlkozlrqLmiLflv6vpgJ/osIPku7cKICAgICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZTogW10sCiAgICAgICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2VPcGVuOiBmYWxzZSwKICAgICAgICAgICAgICBjdXN0b21lclByaWNlOiBbXSwKICAgICAgICAgICAgICBjdXN0b21lclByaWNlT3BlbjogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgc3BlY190YWJsZV9EYXRhOiBzcGVjVGFibGVEYXRhCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICAgIHRoaXMudGFic19hY3RpdmUgPSB0aGlzLnVuaXRfZGF0YVswXS51bml0TmFtZTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnVuaXRfZGF0YSA9IGRhdGEuc3BlY011bHRpcGxlLm1hcChpdGVtID0+IHsKICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIGlzRWRpdFNwZWM6IGl0ZW0uaXNFZGl0U3BlYywKICAgICAgICAgICAgaW52ZW50b3J5OiBpdGVtLmludmVudG9yeSAtIDAsCiAgICAgICAgICAgIHNwZWNHcm91cEhhc2g6IGl0ZW0uc3BlY0dyb3VwSGFzaCwKICAgICAgICAgICAgaWRfRDogaXRlbS5pZCwKICAgICAgICAgICAgaXNNYXN0ZXI6IGl0ZW0uaXNNYXN0ZXIsCiAgICAgICAgICAgIGNvbnZlcnNpb246IGl0ZW0uY29udmVyc2lvbiwKICAgICAgICAgICAgdW5pdE5hbWU6IGl0ZW0udW5pdE5hbWUsCiAgICAgICAgICAgIHVuaXRJZDogaXRlbS51bml0SWQsCiAgICAgICAgICAgIHNwZWNJbWFnZTogewogICAgICAgICAgICAgIG5hbWU6ICIiLAogICAgICAgICAgICAgIHVybDogaXRlbS5zcGVjSW1hZ2UgfHwgIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYmFyQ29kZTogaXRlbS5iYXJDb2RlLAogICAgICAgICAgICB3ZWlnaHQ6IGl0ZW0ud2VpZ2h0LAogICAgICAgICAgICBpc0RlZmF1bHQ6IGl0ZW0uaXNEZWZhdWx0LAogICAgICAgICAgICBzYWxlUHJpY2U6IGl0ZW0uc2FsZVByaWNlLnNhbGVQcmljZSwKICAgICAgICAgICAgZW5hYmxlZExhZGRlcjogaXRlbS5zYWxlUHJpY2UuZW5hYmxlZExhZGRlciwKICAgICAgICAgICAgbGFkZGVyUHJpY2U6IGl0ZW0uc2FsZVByaWNlLmxhZGRlclByaWNlLAogICAgICAgICAgICBtYXJrZXRQcmljZTogaXRlbS5zYWxlUHJpY2UubWFya2V0UHJpY2UsCiAgICAgICAgICAgIG1lbWJlclByaWNlOiBpdGVtLm1lbWJlclByaWNlLAogICAgICAgICAgICBzZXROdW06IGl0ZW0uc2FsZVByaWNlLnNldE51bSwKICAgICAgICAgICAgaXNTYWxlOiBpdGVtLmlzU2FsZSB8fCA1LAogICAgICAgICAgICAvLyDlrqLmiLfnsbvlnovlkozlrqLmiLflv6vpgJ/osIPku7cKICAgICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2U6IFtdLAogICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZU9wZW46IGZhbHNlLAogICAgICAgICAgICBjdXN0b21lclByaWNlOiBbXSwKICAgICAgICAgICAgY3VzdG9tZXJQcmljZU9wZW46IGZhbHNlCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9IC8vIOiOt+WPluaMh+WumuWVhuWTgeeahOacgOWQjueUn+aViOeahOWuouaIt+iwg+S7t+WNleaVsOaNrgoKCiAgICAgIGF3YWl0IHRoaXMuZ2V0Q3VzdG9tZXJQcmljZUJ5R29vZHNJZHMoKTsgLy/ojrflj5bmjIflrprllYblk4HnmoTmnIDlkI7nlJ/mlYjnmoTlrqLmiLfnsbvlnovosIPku7fmlbDmja4KCiAgICAgIGF3YWl0IHRoaXMuZ2V0Q3VzdG9tZXJUeXBlUHJpY2VCeUdvb2RzSWRzKCk7CiAgICB9LAoKICAgIC8vIOWPkeW4g+WVhuWTgQogICAgYXN5bmMgc3VibWl0R29vZHMoKSB7CiAgICAgIC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHRoaXMudW5pdF9kYXRhKSkKICAgICAgLy8gY29uc29sZS5sb2codGhpcy51bml0X2RhdGEpCiAgICAgIC8vIHJldHVybgogICAgICB0aGlzLiRyZWZzWyJiYXNlX2Zvcm0iXS52YWxpZGF0ZShhc3luYyB2YWxpZCA9PiB7CiAgICAgICAgaWYgKHZhbGlkKSB7CiAgICAgICAgICBsZXQgc3BlY0dyb3VwID0gW107CiAgICAgICAgICBsZXQgc3BlY011bHRpcGxlID0gW107CgogICAgICAgICAgaWYgKHRoaXMuYmFzZV9mb3JtLnNwZWNUeXBlID09PSAyKSB7CiAgICAgICAgICAgIC8vIOWkmuinhOagvAogICAgICAgICAgICBzcGVjR3JvdXAgPSB0aGlzLnNrdV9saXN0Lm1hcChpdGVtID0+IHsKICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgZ3JvdXBTcGVjOiB7CiAgICAgICAgICAgICAgICAgIHNwZWNOYW1lOiBpdGVtLmdyb3VwU3BlY05hbWUsCiAgICAgICAgICAgICAgICAgIHNwZWNJZDogaXRlbS5ncm91cFNwZWNJZAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHBhcmFtczogaXRlbS5wYXJhbXMubWFwKGl0ZW0gPT4gewogICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHNwZWNWYWx1ZUlkOiBpdGVtLmlkLAogICAgICAgICAgICAgICAgICAgIHNwZWNWYWx1ZU5hbWU6IGl0ZW0uc3BlY05hbWUKICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHRoaXMudW5pdF9kYXRhLmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgICAgICAgaXRlbS5zcGVjX3RhYmxlX0RhdGEuZm9yRWFjaChpdGVtU1AgPT4gewogICAgICAgICAgICAgICAgbGV0IHNwZWNJZEcgPSAoaXRlbVNQLmlkICsgIiIpLnNwbGl0KCJfIik7CiAgICAgICAgICAgICAgICBsZXQgc3BlY05hbWVHID0gaXRlbVNQLnNwZWNOYW1lLnNwbGl0KCJfIik7CiAgICAgICAgICAgICAgICBsZXQgZ3JvdXBTcGVjTmFtZUcgPSBpdGVtU1AuZ3JvdXBTcGVjTmFtZS5zcGxpdCgiXyIpOwogICAgICAgICAgICAgICAgbGV0IGdyb3VwU3BlY0lkRyA9IChpdGVtU1AuZ3JvdXBTcGVjSWQgKyAiIikuc3BsaXQoIl8iKTsKICAgICAgICAgICAgICAgIGxldCBzcGVjR3JvdXBTID0gZ3JvdXBTcGVjSWRHLm1hcCgoaXRlbVVVLCBpbmRleFVVKSA9PiB7CiAgICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgc3BlY0lkOiBncm91cFNwZWNJZEdbaW5kZXhVVV0sCiAgICAgICAgICAgICAgICAgICAgc3BlY05hbWU6IGdyb3VwU3BlY05hbWVHW2luZGV4VVVdLAogICAgICAgICAgICAgICAgICAgIHNwZWNWYWx1ZU5hbWU6IHNwZWNOYW1lR1tpbmRleFVVXSwKICAgICAgICAgICAgICAgICAgICBzcGVjVmFsdWVJZDogc3BlY0lkR1tpbmRleFVVXQogICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBsZXQgc2FsZVByaWNlUyA9IHsKICAgICAgICAgICAgICAgICAgY29udmVyc2lvbjogaXRlbS5jb252ZXJzaW9uIHx8IDAsCiAgICAgICAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtLnVuaXROYW1lICsgIl8iICsgaXRlbVNQLnNwZWNOYW1lLAogICAgICAgICAgICAgICAgICB1bml0SWQ6IGl0ZW0udW5pdElkLAogICAgICAgICAgICAgICAgICBpc01hc3RlcjogaXRlbS5pc01hc3RlciwKICAgICAgICAgICAgICAgICAgZGVsZXRlU3RhdHVzOiBpdGVtU1AuZGVsZXRlU3RhdHVzIHx8IDQsCiAgICAgICAgICAgICAgICAgIGVuYWJsZWRMYWRkZXI6IGl0ZW1TUC5lbmFibGVkTGFkZGVyLAogICAgICAgICAgICAgICAgICBzYWxlUHJpY2VBcmVhVHlwZTogMSwKICAgICAgICAgICAgICAgICAgc2FsZVByaWNlOiBpdGVtU1Auc2FsZVByaWNlLAogICAgICAgICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbVNQLmxhZGRlclByaWNlLAogICAgICAgICAgICAgICAgICBtYXJrZXRQcmljZTogaXRlbVNQLm1hcmtldFByaWNlLAogICAgICAgICAgICAgICAgICBtZW1iZXJQcmljZTogaXRlbVNQLm1lbWJlclByaWNlLAogICAgICAgICAgICAgICAgICBzZXROdW06IGl0ZW1TUC5zZXROdW0sCiAgICAgICAgICAgICAgICAgIGlzU2FsZTogaXRlbVNQLmlzU2FsZQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGxldCBjdXN0b21lclByaWNlID0gW107CiAgICAgICAgICAgICAgICBpdGVtU1AuY3VzdG9tZXJQcmljZS5mb3JFYWNoKGl0ZW1QID0+IHsKICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLnByaWNlSWQpIHsKICAgICAgICAgICAgICAgICAgICBjdXN0b21lclByaWNlLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IGl0ZW1QLnByaWNlLAogICAgICAgICAgICAgICAgICAgICAgdW5pdE5hbWU6IGl0ZW1QLnVuaXROYW1lLAogICAgICAgICAgICAgICAgICAgICAgYWRqUHJpY2V0YWc6IGl0ZW1QLmFkalByaWNldGFnLAogICAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJOYW1lOiBpdGVtUC5uYW1lLAogICAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJJZDogaXRlbVAuaWQsCiAgICAgICAgICAgICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbVAubGFkZGVyUHJpY2UKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBsZXQgY3VzdG9tZXJUeXBlUHJpY2UgPSBbXTsKICAgICAgICAgICAgICAgIGl0ZW1TUC5jdXN0b21lclR5cGVQcmljZS5mb3JFYWNoKGl0ZW1QID0+IHsKICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLnByaWNlSWQpIHsKICAgICAgICAgICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtUC5wcmljZSwKICAgICAgICAgICAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtUC51bml0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgIGFkalByaWNldGFnOiBpdGVtUC5hZGpQcmljZXRhZywKICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyTmFtZTogaXRlbVAubmFtZSwKICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyVHlwZTogaXRlbVAuaWQsCiAgICAgICAgICAgICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbVAubGFkZGVyUHJpY2UKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICBzcGVjTXVsdGlwbGUucHVzaCh7CiAgICAgICAgICAgICAgICAgIHVuaXRJZDogaXRlbS51bml0SWQsCiAgICAgICAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtLnVuaXROYW1lLAogICAgICAgICAgICAgICAgICBpc01hc3RlcjogaXRlbS5pc01hc3RlciwKICAgICAgICAgICAgICAgICAgY29udmVyc2lvbjogaXRlbS5jb252ZXJzaW9uIHx8IDAsCiAgICAgICAgICAgICAgICAgIHNwZWNJbWFnZTogaXRlbVNQLnNwZWNJbWFnZS51cmwsCiAgICAgICAgICAgICAgICAgIGlzRGVmYXVsdDogaXRlbVNQLmlzRGVmYXVsdCwKICAgICAgICAgICAgICAgICAgYmFyQ29kZTogaXRlbVNQLmJhckNvZGUsCiAgICAgICAgICAgICAgICAgIHdlaWdodDogaXRlbVNQLndlaWdodCwKICAgICAgICAgICAgICAgICAgc3BlY0dyb3VwOiBzcGVjR3JvdXBTLAogICAgICAgICAgICAgICAgICBzYWxlUHJpY2U6IHNhbGVQcmljZVMsCiAgICAgICAgICAgICAgICAgIGN1c3RvbWVyUHJpY2U6IGN1c3RvbWVyUHJpY2UsCiAgICAgICAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlOiBjdXN0b21lclR5cGVQcmljZQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8g5Y2V6KeE5qC8CiAgICAgICAgICAgIHNwZWNNdWx0aXBsZSA9IHRoaXMudW5pdF9kYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgICAgICBjb25zdCBzYWxlUHJpY2VTID0gewogICAgICAgICAgICAgICAgY29udmVyc2lvbjogaXRlbS5jb252ZXJzaW9uIHx8IDAsCiAgICAgICAgICAgICAgICB1bml0TmFtZTogaXRlbS51bml0TmFtZSwKICAgICAgICAgICAgICAgIHVuaXRJZDogaXRlbS51bml0SWQsCiAgICAgICAgICAgICAgICBpc01hc3RlcjogaXRlbS5pc01hc3RlciwKICAgICAgICAgICAgICAgIGRlbGV0ZVN0YXR1czogaXRlbS5kZWxldGVTdGF0dXMgfHwgNCwKICAgICAgICAgICAgICAgIGVuYWJsZWRMYWRkZXI6IGl0ZW0uZW5hYmxlZExhZGRlciwKICAgICAgICAgICAgICAgIHNhbGVQcmljZUFyZWFUeXBlOiAxLAogICAgICAgICAgICAgICAgc2FsZVByaWNlOiBpdGVtLnNhbGVQcmljZSwKICAgICAgICAgICAgICAgIGxhZGRlclByaWNlOiBpdGVtLmxhZGRlclByaWNlLAogICAgICAgICAgICAgICAgbWFya2V0UHJpY2U6IGl0ZW0ubWFya2V0UHJpY2UsCiAgICAgICAgICAgICAgICBtZW1iZXJQcmljZTogaXRlbS5tZW1iZXJQcmljZSwKICAgICAgICAgICAgICAgIHNldE51bTogaXRlbS5zZXROdW0sCiAgICAgICAgICAgICAgICBpc1NhbGU6IGl0ZW0uaXNTYWxlCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBsZXQgY3VzdG9tZXJQcmljZSA9IFtdOwogICAgICAgICAgICAgIGl0ZW0uY3VzdG9tZXJQcmljZS5mb3JFYWNoKGl0ZW1QID0+IHsKICAgICAgICAgICAgICAgIGlmICghaXRlbVAucHJpY2VJZCkgewogICAgICAgICAgICAgICAgICBjdXN0b21lclByaWNlLnB1c2goewogICAgICAgICAgICAgICAgICAgIHByaWNlOiBpdGVtUC5wcmljZSwKICAgICAgICAgICAgICAgICAgICB1bml0TmFtZTogaXRlbVAudW5pdE5hbWUsCiAgICAgICAgICAgICAgICAgICAgYWRqUHJpY2V0YWc6IGl0ZW1QLmFkalByaWNldGFnLAogICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyTmFtZTogaXRlbVAubmFtZSwKICAgICAgICAgICAgICAgICAgICBjdXN0b21lcklkOiBpdGVtUC5pZCwKICAgICAgICAgICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbVAubGFkZGVyUHJpY2UKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgbGV0IGN1c3RvbWVyVHlwZVByaWNlID0gW107CiAgICAgICAgICAgICAgaXRlbS5jdXN0b21lclR5cGVQcmljZS5mb3JFYWNoKGl0ZW1QID0+IHsKICAgICAgICAgICAgICAgIGlmICghaXRlbVAucHJpY2VJZCkgewogICAgICAgICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBwcmljZTogaXRlbVAucHJpY2UsCiAgICAgICAgICAgICAgICAgICAgYWRqUHJpY2V0YWc6IGl0ZW1QLmFkalByaWNldGFnLAogICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyTmFtZTogaXRlbVAubmFtZSwKICAgICAgICAgICAgICAgICAgICBjdXN0b21lclR5cGU6IGl0ZW1QLmlkLAogICAgICAgICAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtUC51bml0TmFtZSwKICAgICAgICAgICAgICAgICAgICBsYWRkZXJQcmljZTogaXRlbVAubGFkZGVyUHJpY2UKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIGJhckNvZGU6IGl0ZW0uYmFyQ29kZSwKICAgICAgICAgICAgICAgIHdlaWdodDogaXRlbS53ZWlnaHQsCiAgICAgICAgICAgICAgICBpc0RlZmF1bHQ6IGl0ZW0uaXNEZWZhdWx0LAogICAgICAgICAgICAgICAgdW5pdElkOiBpdGVtLnVuaXRJZCwKICAgICAgICAgICAgICAgIHVuaXROYW1lOiBpdGVtLnVuaXROYW1lLAogICAgICAgICAgICAgICAgaXNNYXN0ZXI6IGl0ZW0uaXNNYXN0ZXIsCiAgICAgICAgICAgICAgICBjb252ZXJzaW9uOiBpdGVtLmNvbnZlcnNpb24gfHwgMCwKICAgICAgICAgICAgICAgIHNwZWNJbWFnZTogaXRlbS5zcGVjSW1hZ2UudXJsLAogICAgICAgICAgICAgICAgc3BlY0dyb3VwOiBbXSwKICAgICAgICAgICAgICAgIHNhbGVQcmljZTogc2FsZVByaWNlUywKICAgICAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlOiBjdXN0b21lclR5cGVQcmljZSwKICAgICAgICAgICAgICAgIGN1c3RvbWVyUHJpY2U6IGN1c3RvbWVyUHJpY2UKICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KCiAgICAgICAgICBjb25zdCBpc0ZTYWxlID0gc3BlY011bHRpcGxlLmV2ZXJ5KGl0ZW0gPT4gaXRlbS5zYWxlUHJpY2UuaXNTYWxlID09PSA0KTsKCiAgICAgICAgICBpZiAoaXNGU2FsZSkgewogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLndhcm5pbmcoIuiHs+WwkeS/neeVmeS4gOadoeinhOagvOeahOmUgOWUrueKtuaAgeS4uuOAkOWQr+eUqOOAkSIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9CgogICAgICAgICAgY29uc3QgdW5pdERhdGEgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLmJhc2VfZm9ybS5icmFuY2hVbml0KTsKICAgICAgICAgIHVuaXREYXRhLnVuc2hpZnQodGhpcy5iYXNlX2Zvcm0ubWFzdGVyVW5pdCk7CiAgICAgICAgICBjb25zdCBub3RDdXN0b21lciA9IHRoaXMuY3VzdG9tZXJfbGlzdC5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgICAgfSk7IC8vIOWJr+WIhuexu+aVsOaNrue7hOijhQoKICAgICAgICAgIGxldCBhc3Npc3RDYXRlZ29yeVBhdGggPSBbXTsKICAgICAgICAgIGxldCBhc3Npc3RDYXRlZ29yeUlkID0gW107IC8vIOi/h+a7pOWPquaciemAieaLqeWIhuexu+eahOaVsOaNrgoKICAgICAgICAgIGNvbnN0IGFzc2lzdENhdGUgPSB0aGlzLmFzc2lzdF9jYXRlLmZpbHRlcihpdGVtID0+ICEhaXRlbS5hc3Npc3RDYXRlZ29yeVBhdGgubGVuZ3RoKTsKICAgICAgICAgIGFzc2lzdENhdGUuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgICAgYXNzaXN0Q2F0ZWdvcnlQYXRoLnB1c2goaXRlbS5hc3Npc3RDYXRlZ29yeVBhdGguam9pbigiLCIpKTsKICAgICAgICAgICAgYXNzaXN0Q2F0ZWdvcnlJZC5wdXNoKGl0ZW0uYXNzaXN0Q2F0ZWdvcnlQYXRoW2l0ZW0uYXNzaXN0Q2F0ZWdvcnlQYXRoLmxlbmd0aCAtIDFdKTsKICAgICAgICAgIH0pOwogICAgICAgICAgY29uc3QgcGFyYW1zID0gewogICAgICAgICAgICBtZXJjaGFudElkOiB0aGlzLmJhc2VfZm9ybS5tZXJjaGFudElkLAogICAgICAgICAgICBjYXRlZ29yeVBhdGg6IHRoaXMuYmFzZV9mb3JtLmNhdGVnb3J5UGF0aC5qb2luKCIsIiksCiAgICAgICAgICAgIGNhdGVnb3J5SWQ6IHRoaXMuYmFzZV9mb3JtLmNhdGVnb3J5SWQsCiAgICAgICAgICAgIGFzc2lzdENhdGVnb3J5UGF0aDogYXNzaXN0Q2F0ZWdvcnlQYXRoLAogICAgICAgICAgICBhc3Npc3RDYXRlZ29yeUlkOiBhc3Npc3RDYXRlZ29yeUlkLmpvaW4oIiwiKSwKICAgICAgICAgICAgdGl0bGU6IHRoaXMuYmFzZV9mb3JtLnRpdGxlLAogICAgICAgICAgICBzdG9yYWdlOiB0aGlzLmJhc2VfZm9ybS5zdG9yYWdlLAogICAgICAgICAgICBkZWxVbml0SWRzOiB0aGlzLmJhc2VfZm9ybS5kZWxVbml0SWRzLAogICAgICAgICAgICBkZWxTcGVjU2t1SWRzOiB0aGlzLmJhc2VfZm9ybS5kZWxTcGVjU2t1SWRzLAogICAgICAgICAgICBzcGVjVHlwZTogdGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUsCiAgICAgICAgICAgIGNyZWF0ZVVzZXJOYW1lOiB0aGlzLnVzZXJOYW1lLAogICAgICAgICAgICBzcGVjR3JvdXA6IHNwZWNHcm91cCwKICAgICAgICAgICAgc3BlY011bHRpcGxlOiBzcGVjTXVsdGlwbGUsCiAgICAgICAgICAgIHVuaXREYXRhOiB1bml0RGF0YSwKICAgICAgICAgICAgZGVzY3JpYmU6IHRoaXMuYmFzZV9mb3JtLmRlc2NyaWJlLAogICAgICAgICAgICBjb2RlOiB0aGlzLmJhc2VfZm9ybS5jb2RlLAogICAgICAgICAgICBiYXJDb2RlOiB0aGlzLmJhc2VfZm9ybS5iYXJDb2RlLAogICAgICAgICAgICB3ZWlnaHQ6IHRoaXMuYmFzZV9mb3JtLndlaWdodCwKICAgICAgICAgICAgZXhwaXJlVGltZTogdGhpcy5iYXNlX2Zvcm0uZXhwaXJlVGltZSwKICAgICAgICAgICAgYnJhbmRJZDogdGhpcy5iYXNlX2Zvcm0uYnJhbmRJZCwKICAgICAgICAgICAgdGFnOiB0aGlzLmR5bmFtaWNUYWdzLmpvaW4oIiwiKSwKICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuYmFzZV9mb3JtLmRlc2NyaXB0aW9uLAogICAgICAgICAgICBub1NhbGVzU2hvcDogIiIsCiAgICAgICAgICAgIGltYWdlczogdGhpcy5iYXNlX2Zvcm0uaW1hZ2VzLAogICAgICAgICAgICBlbmFibGVTdGF0dXM6IHRoaXMuYmFzZV9mb3JtLmVuYWJsZVN0YXR1cywKICAgICAgICAgICAgaXNFcTogdGhpcy5iYXNlX2Zvcm0uaXNFcSwKICAgICAgICAgICAgLy/mioTnoIHllYblk4EKICAgICAgICAgICAgaXNEaXN0cmlidXRpb246IHRoaXMuYmFzZV9mb3JtLmlzRGlzdHJpYnV0aW9uLAogICAgICAgICAgICAvL+aYr+WQpui0n+W6k+WtmOmUgOWUrgogICAgICAgICAgICBpc1NoaWVsZDogdGhpcy5iYXNlX2Zvcm0uaXNTaGllbGQsCiAgICAgICAgICAgIC8v57uP6JCl5bGP6JS9CiAgICAgICAgICAgIGRlbGl2ZXJ5U3VwSWRzOiB0aGlzLmJhc2VfZm9ybS5kZWxpdmVyeVN1cElkcy5qb2luKCIsIiksCiAgICAgICAgICAgIC8vIOeJqea1geaUr+aMgSDlm7rlrprlgLwgMSDlv6vpgJIgMiDoh6rmj5Ag5Lyg5Y+C5qC85byP77yaMSwyCiAgICAgICAgICAgIGV4cHJlc3NUeXBlOiB0aGlzLmJhc2VfZm9ybS5leHByZXNzVHlwZSwKICAgICAgICAgICAgLy8g5b+r6YCS6L+Q6LS5IDEg5YyF6YKuIDIg6L+Q6LS55qih54mIIDMg5Zu65a6a6LS555SoCiAgICAgICAgICAgIGV4cHJlc3NGZWU6IHRoaXMuYmFzZV9mb3JtLmV4cHJlc3NGZWUsCiAgICAgICAgICAgIC8vIOWbuuWumui0ueeUqAogICAgICAgICAgICBzaG93RXhwcmVzczogdGhpcy5iYXNlX2Zvcm0uc2hvd0V4cHJlc3MsCiAgICAgICAgICAgIC8vIOaYr+WQpuWxleekuuW/q+mAkiA15bGV56S6IDTkuI3lsZXnpLoKICAgICAgICAgICAgcnVsZUlkOiB0aGlzLmJhc2VfZm9ybS5ydWxlSWQsCiAgICAgICAgICAgIC8vIOi/kOi0ueaooeeJiGlkCiAgICAgICAgICAgIG5vdEFyZWE6IHRoaXMuYmFzZV9mb3JtLmlzU2hpZWxkID09PSA1ID8gdGhpcy5iYXNlX2Zvcm0ubm90QXJlYSA6IFtdLAogICAgICAgICAgICAvLyDnu4/okKXlsY/olL3lnLDljLoKICAgICAgICAgICAgbm90Q3VzdG9tZXJUeXBlOiB0aGlzLmJhc2VfZm9ybS5pc1NoaWVsZCA9PT0gNSA/IHRoaXMuY3VzdG9tZXJfdHlwZV9jaGVjay5qb2luKCIsIikgOiAiIiwKICAgICAgICAgICAgLy/nu4/okKXlsY/olL0g5a6i5oi357G75Z6L5bGP6JS9CiAgICAgICAgICAgIG5vdEN1c3RvbWVyOiB0aGlzLmJhc2VfZm9ybS5pc1NoaWVsZCA9PT0gNSA/IG5vdEN1c3RvbWVyLmpvaW4oIiwiKSA6ICIiLAogICAgICAgICAgICAvL+e7j+iQpeWxj+iUvSDlrqLmiLflsY/olL0KICAgICAgICAgICAgaXNTdG9yZTogdGhpcy5zeXN0ZW1UeXBlID09PSAzCiAgICAgICAgICB9OyAvLyBjb25zb2xlLmxvZyhwYXJhbXMpCiAgICAgICAgICAvLyByZXR1cm4KCiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgbGV0IHRhcmdldCA9IHt9OwoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICh0aGlzLiRyb3V0ZS5wYXJhbXMuaWQpIHsKICAgICAgICAgICAgICB0YXJnZXQgPSBhd2FpdCBlZGl0UXVpY2tHb29kcyh7IC4uLnBhcmFtcywKICAgICAgICAgICAgICAgIGlkOiB0aGlzLmdvb2RzX2lkLAogICAgICAgICAgICAgICAgYmFzaWNHb29kc0lkOiB0aGlzLmJhc2VfZm9ybS5iYXNpY0dvb2RzSWQKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0YXJnZXQgPSBhd2FpdCBhZGRCYXNpY0FuZFB1Ymxpc2hHb29kcyhwYXJhbXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgdHlwZTogInN1Y2Nlc3MiLAogICAgICAgICAgICAgIG1lc3NhZ2U6ICLmj5DkuqTmiJDlip8iCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhd2FpdCB0aGlzLmRlbFBhdXNlU2F2ZSgpOwoKICAgICAgICAgICAgaWYgKHRoaXMuc3lzdGVtVHlwZSA9PT0gMykgewogICAgICAgICAgICAgIGF3YWl0IHRoaXMuJGNsb3NlQ3VycmVudEdvRWRpdChgL2dvb2RzL3NhbGUvTWVyY2hhbnRzR29vZHNgKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBhd2FpdCB0aGlzLiRjbG9zZUN1cnJlbnRHb0VkaXQoYC9nb29kcy9zYWxlL1B1Ymxpc2hHb29kc2ApOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDllYblk4HliIbnsbvpgInmi6kKICAgIGNhdGVnb3J5Q2hhbmdlKHZhbCkgewogICAgICB0aGlzLmJhc2VfZm9ybS5jYXRlZ29yeUlkID0gdmFsW3ZhbC5sZW5ndGggLSAxXTsKICAgIH0sCgogICAgLy8g5ZWG5ZOB5Ymv5YiG57G76YCJ5oupCiAgICBjYXRlZ29yeUFzc2lzdENoYW5nZSh2YWwpIHsKICAgICAgdGhpcy5iYXNlX2Zvcm0uYXNzaXN0Q2F0ZWdvcnlJZCA9IHZhbFt2YWwubGVuZ3RoIC0gMV07CiAgICB9LAoKICAgIC8vIOWTgeeJjOmAieaLqQogICAgYnJhbmRDb25maXJtKHZhbCkgewogICAgICBpZiAodmFsLmxlbmd0aCA+IDEpIHsKICAgICAgICB0aGlzLiRtZXNzYWdlKHsKICAgICAgICAgIHR5cGU6ICJlcnJvciIsCiAgICAgICAgICBtZXNzYWdlOiAi6K+36YCJ5oup5LiA5Liq5ZOB54mM77yBIgogICAgICAgIH0pOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgdGhpcy5iYXNlX2Zvcm0uYnJhbmROYW1lID0gdmFsWzBdLnRpdGxlOwogICAgICB0aGlzLmJhc2VfZm9ybS5icmFuZElkID0gdmFsWzBdLmlkOwogICAgfSwKCiAgICAvLyDorqHnrpfluILlnLrku7cKICAgIHNhbGVQcmljZUJsdXIoaW5kZXgsIGluZGV4VSkgewogICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUgPT09IDEpIHsKICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnVuaXRfZGF0YSk7CiAgICAgICAgY29uc3QgbWFya2V0UHJpY2UgPSB0aGlzLiROUC50aW1lcyh0YXJnZXRbaW5kZXhdLnNhbGVQcmljZSwgdGhpcy5zYWxlUHJpY2VUaW1lcyk7CiAgICAgICAgdGFyZ2V0W2luZGV4XSA9IHsgLi4udGFyZ2V0W2luZGV4XSwKICAgICAgICAgIG1hcmtldFByaWNlOiBtYXJrZXRQcmljZQogICAgICAgIH07IC8vIOW9k+WJjeWkseWOu+eEpueCueeahOS4uuS4u+WNleS9jQoKICAgICAgICBpZiAodGFyZ2V0W2luZGV4XS5pc01hc3RlciA9PT0gNSkgewogICAgICAgICAgLy8g5Y2V5L2N5o2i566X5YWz57O75a2Y5Zyo5LiU6L+Z5Liq5Y2V5L2N5Li66L6F5Yqp5Y2V5L2N5LiU5b2T5YmN5Y2V5L2N5pyq6K6+572u6L+H5Lu35qC8CiAgICAgICAgICB0YXJnZXQuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgICAgaWYgKGl0ZW0uY29udmVyc2lvbiAmJiBpdGVtLmlzTWFzdGVyID09PSA0ICYmICFpdGVtLnNhbGVQcmljZSkgewogICAgICAgICAgICAgIGl0ZW0uc2FsZVByaWNlID0gdGhpcy4kTlAudGltZXModGFyZ2V0W2luZGV4XS5zYWxlUHJpY2UsIGl0ZW0uY29udmVyc2lvbik7CiAgICAgICAgICAgICAgaXRlbS5tYXJrZXRQcmljZSA9IHRoaXMuJE5QLnRpbWVzKG1hcmtldFByaWNlLCBpdGVtLmNvbnZlcnNpb24pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIHRoaXMudW5pdF9kYXRhID0gdGFyZ2V0OwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMudW5pdF9kYXRhW2luZGV4VV0uc3BlY190YWJsZV9EYXRhW2luZGV4XS5tYXJrZXRQcmljZSA9IHRoaXMuJE5QLnRpbWVzKHRoaXMudW5pdF9kYXRhW2luZGV4VV0uc3BlY190YWJsZV9EYXRhW2luZGV4XS5zYWxlUHJpY2UsIHRoaXMuc2FsZVByaWNlVGltZXMpOwogICAgICB9CiAgICB9LAoKICAgIC8vIOS8muWRmOS7t+WkseWOu+eEpueCuQogICAgbWVtYmVyUHJpY2VCbHVyKGluZGV4KSB7CiAgICAgIC8vIOagueaNruavlOS+i+iHquWKqOaNoueulyDkvJrlkZjku7cKICAgICAgaWYgKHRoaXMuYmFzZV9mb3JtLnNwZWNUeXBlID09PSAxKSB7CiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy51bml0X2RhdGEpOwogICAgICAgIHRhcmdldC5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgaWYgKGl0ZW0uY29udmVyc2lvbiAmJiBpdGVtLmlzTWFzdGVyID09PSA0KSB7CiAgICAgICAgICAgIGl0ZW0ubWVtYmVyUHJpY2UgPSB0aGlzLiROUC50aW1lcyh0YXJnZXRbaW5kZXhdLm1lbWJlclByaWNlLCBpdGVtLmNvbnZlcnNpb24pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIHRoaXMudW5pdF9kYXRhID0gdGFyZ2V0OwogICAgICB9CiAgICB9LAoKICAgIC8vIOinhOagvOaYjue7huWQjOatpeaVsOaNrgogICAgb3RoZXJTZXRQcmljZShyb3csIGluZGV4KSB7CiAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMudW5pdF9kYXRhKTsKICAgICAgdGFyZ2V0W2luZGV4XS5zcGVjX3RhYmxlX0RhdGEgPSB0YXJnZXRbaW5kZXhdLnNwZWNfdGFibGVfRGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgIG1hcmtldFByaWNlOiByb3cubWFya2V0UHJpY2UsCiAgICAgICAgICBtZW1iZXJQcmljZTogcm93Lm1lbWJlclByaWNlLAogICAgICAgICAgc2FsZVByaWNlOiByb3cuc2FsZVByaWNlLAogICAgICAgICAgZW5hYmxlZExhZGRlcjogcm93LmVuYWJsZWRMYWRkZXIsCiAgICAgICAgICBsYWRkZXJQcmljZTogcm93LmxhZGRlclByaWNlLAogICAgICAgICAgc2V0TnVtOiByb3cuc2V0TnVtLAogICAgICAgICAgaXNTYWxlOiByb3cuaXNTYWxlIHx8IDUsCiAgICAgICAgICBzcGVjSW1hZ2U6IHJvdy5zcGVjSW1hZ2UsCiAgICAgICAgICBiYXJDb2RlOiByb3cuYmFyQ29kZSwKICAgICAgICAgIHdlaWdodDogcm93LndlaWdodCwKICAgICAgICAgIC8vIOWuouaIt+exu+Wei+WSjOWuouaIt+W/q+mAn+iwg+S7twogICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2U6IHJvdy5jdXN0b21lclR5cGVQcmljZSwKICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlT3Blbjogcm93LmN1c3RvbWVyVHlwZVByaWNlT3BlbiwKICAgICAgICAgIGN1c3RvbWVyUHJpY2U6IHJvdy5jdXN0b21lclByaWNlLAogICAgICAgICAgY3VzdG9tZXJQcmljZU9wZW46IHJvdy5jdXN0b21lclByaWNlT3BlbgogICAgICAgIH07CiAgICAgIH0pOwogICAgICB0aGlzLnVuaXRfZGF0YSA9IHRhcmdldDsKICAgIH0sCgogICAgLy8g6KeE5qC85piO57uG5Yig6ZmkCiAgICBzcGVjRGV0YWlsRGVsKHJvdywgaW5kZXgpIHsKICAgICAgbGV0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMudW5pdF9kYXRhKTsKCiAgICAgIGlmICh0aGlzLmdvb2RzX2lkKSB7CiAgICAgICAgaWYgKHRoaXMuYmFzZV9mb3JtLmRlbFNwZWNTa3VJZHMuaW5kZXhPZihyb3cuc3BlY0dyb3VwSGFzaCkgPT09IC0xKSB7CiAgICAgICAgICB0aGlzLmJhc2VfZm9ybS5kZWxTcGVjU2t1SWRzLnB1c2gocm93LnNwZWNHcm91cEhhc2gpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgdGFyZ2V0ID0gdGFyZ2V0Lm1hcChpdGVtID0+IHsKICAgICAgICBpdGVtLnNwZWNfdGFibGVfRGF0YS5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgIHJldHVybiBpdGVtOwogICAgICB9KTsgLy8gdGFyZ2V0WzBdLnNwZWNfdGFibGVfRGF0YS5zcGxpY2UoaW5kZXgsIDEpCgogICAgICBjb25zdCBzcGVjTmFtZUFyciA9IHJvdy5zcGVjTmFtZS5pbmRleE9mKCJfIikgPyByb3cuc3BlY05hbWUuc3BsaXQoIl8iKSA6IHJvdy5zcGVjTmFtZTsKICAgICAgbGV0IGlzRmFsc2VWYWwgPSAiIjsKCiAgICAgIGZvciAobGV0IGkgaW4gc3BlY05hbWVBcnIpIHsKICAgICAgICBsZXQgaXRlbVMgPSBzcGVjTmFtZUFycltpXTsKICAgICAgICBjb25zdCBpc0hhdmUgPSB0YXJnZXQuc29tZShpdGVtVSA9PiB7CiAgICAgICAgICByZXR1cm4gaXRlbVUuc3BlY190YWJsZV9EYXRhLmZpbmQoaXRlbSA9PiBpdGVtLnNwZWNOYW1lLmluZGV4T2YoaXRlbVMpID4gLTEpOwogICAgICAgIH0pOwoKICAgICAgICBpZiAoIWlzSGF2ZSkgewogICAgICAgICAgaXNGYWxzZVZhbCA9IGl0ZW1TOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9IC8vIGNvbnNvbGUubG9nKCJpc1N0YXksIiwgaXNGYWxzZVZhbCk7CgoKICAgICAgaWYgKGlzRmFsc2VWYWwpIHsKICAgICAgICB0aGlzLnNrdV9saXN0LmZvckVhY2goaXRlbSA9PiB7CiAgICAgICAgICBjb25zdCBpbmRleFAgPSBpdGVtLnBhcmFtcy5maW5kSW5kZXgoaXRlbVAgPT4gaXRlbVAuc3BlY05hbWUgPT09IGlzRmFsc2VWYWwpOwoKICAgICAgICAgIGlmIChpbmRleFAgPiAtMSkgewogICAgICAgICAgICBpdGVtLnBhcmFtcy5zcGxpY2UoaW5kZXhQLCAxKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfQoKICAgICAgdGhpcy51bml0X2RhdGEgPSB0YXJnZXQ7CiAgICB9LAoKICAgIC8vIOmAieaLqeWVhumTugogICAgc2VsQ2hvc2UodmFsLCByb3cpIHsKICAgICAgdGhpcy5iYXNlX2Zvcm0uc2hvcElkID0gcm93WzBdLmlkOwogICAgICB0aGlzLmJhc2VfZm9ybS5zaG9wTmFtZSA9IHJvd1swXS5uYW1lOwogICAgfSwKCiAgICAvLyDlnLDljLrpgInmi6kKICAgIHNlbFJlZ2lvbihyb3cpIHsKICAgICAgdGhpcy5iYXNlX2Zvcm0ubm90QXJlYSA9IHJvdy5tYXAoaXRlbSA9PiB7CiAgICAgICAgcmV0dXJuIGl0ZW0uY29kZVBhdGg7CiAgICAgIH0pOwogICAgfSwKCiAgICAvLyDojrflj5blrqLmiLfnsbvlnosKICAgIGFzeW5jIGdldEFsbEN1c3RvbWVyU291cmNlKCkgewogICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0QWxsQ3VzdG9tZXJTb3VyY2UoewogICAgICAgIHBhZ2U6IDEsCiAgICAgICAgcGFnZVNpemU6IDUwCiAgICAgIH0pOwogICAgICB0aGlzLmN1c3RvbWVyX3R5cGVfbGlzdCA9IGRhdGEuZGF0YTsKICAgIH0sCgogICAgLy8g6YCJ5oup5a6i5oi3CiAgICBjdXN0b21lclNlbCh2YWwpIHsKICAgICAgdGhpcy5jdXN0b21lcl9saXN0ID0gdmFsOwogICAgfSwKCiAgICAvLyDliKDpmaTlrqLmiLcKICAgIGRlbGV0ZUN1c3RvbWVyKGluZGV4KSB7CiAgICAgIHRoaXMuY3VzdG9tZXJfbGlzdC5zcGxpY2UoaW5kZXgsIDEpOwogICAgfSwKCiAgICAvLyDmiZPlvIDmjIflrprku7flvLnnqpcKICAgIG9wZW5Nb2RhbChpbmRleCwga2V5LCByb3csIGluZGV4VSkgewogICAgICAvLyDojrflj5bpmLbmoq/ku7fmlbDmja7vvIzlgZrpmLbmoq/ku7fosIPku7cKICAgICAgaWYgKHJvdykgewogICAgICAgIHRoaXMudW5pdGlzTWFzdGVyID0gcm93LmlzTWFzdGVyOwogICAgICAgIHRoaXMuc2t1X2lkID0gcm93LmlkOwogICAgICAgIHRoaXMubGFkZGVyUHJpY2UgPSByb3cubGFkZGVyUHJpY2U7CiAgICAgICAgdGhpcy5lbmFibGVkTGFkZGVyID0gcm93LmVuYWJsZWRMYWRkZXI7CgogICAgICAgIGlmIChrZXkgPT09ICJ0eXBlX3ByaWNlX3Nob3ciKSB7CiAgICAgICAgICAvLyDlrqLmiLfnsbvlnovmjIflrprku7fosIPku7fmlbDmja4KICAgICAgICAgIHRoaXMuY3VzdG9tZXJUeXBlUHJpY2VPcGVuID0gcm93LmN1c3RvbWVyVHlwZVByaWNlT3BlbjsKICAgICAgICAgIHRoaXMuY3VzdG9tZXJUeXBlUHJpY2UgPSByb3cuY3VzdG9tZXJUeXBlUHJpY2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoa2V5ID09PSAiYXBwb2ludF9wcmljZV9zaG93IikgewogICAgICAgICAgLy8g5a6i5oi35oyH5a6a5Lu36LCD5Lu35pWw5o2uCiAgICAgICAgICB0aGlzLmN1c3RvbWVyUHJpY2VPcGVuID0gcm93LmN1c3RvbWVyUHJpY2VPcGVuOwogICAgICAgICAgdGhpcy5jdXN0b21lclByaWNlID0gcm93LmN1c3RvbWVyUHJpY2U7CiAgICAgICAgfQogICAgICB9CgogICAgICB0aGlzLnNrdV9pbmRleCA9IGluZGV4OwoKICAgICAgaWYgKGluZGV4VSA+IC0xKSB7CiAgICAgICAgdGhpcy51bml0X2luZGV4ID0gaW5kZXhVOwogICAgICB9CgogICAgICB0aGlzW2tleV0gPSB0cnVlOwogICAgfSwKCiAgICAvLyDmjIflrprku7fmlbDmja7noa7lrpoKICAgIGFwcG9pbnRQcmljZUNvbmZpcm0oY3VzdG9tZXJQcmljZU9wZW4sIGN1c3RvbWVyUHJpY2UpIHsKICAgICAgY29uc29sZS5sb2coY3VzdG9tZXJQcmljZSk7CgogICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUgPT09IDEpIHsKICAgICAgICAvLyDljZXop4TmoLwKICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnVuaXRfZGF0YSk7CiAgICAgICAgdGFyZ2V0W3RoaXMuc2t1X2luZGV4XS5jdXN0b21lclByaWNlT3BlbiA9IGN1c3RvbWVyUHJpY2VPcGVuOwogICAgICAgIHRhcmdldFt0aGlzLnNrdV9pbmRleF0uY3VzdG9tZXJQcmljZSA9IGN1c3RvbWVyUHJpY2VPcGVuID8gY3VzdG9tZXJQcmljZSA6IFtdOwogICAgICAgIHRoaXMudW5pdF9kYXRhID0gdGFyZ2V0OwogICAgICB9IGVsc2UgewogICAgICAgIC8vIOWkmuinhOagvAogICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuJF9jb21tb24uZGVlcENsb25lKHRoaXMudW5pdF9kYXRhKTsKICAgICAgICB0YXJnZXRbdGhpcy51bml0X2luZGV4XS5zcGVjX3RhYmxlX0RhdGFbdGhpcy5za3VfaW5kZXhdLmN1c3RvbWVyUHJpY2VPcGVuID0gY3VzdG9tZXJQcmljZU9wZW47CiAgICAgICAgdGFyZ2V0W3RoaXMudW5pdF9pbmRleF0uc3BlY190YWJsZV9EYXRhW3RoaXMuc2t1X2luZGV4XS5jdXN0b21lclByaWNlID0gY3VzdG9tZXJQcmljZU9wZW4gPyBjdXN0b21lclByaWNlIDogW107CiAgICAgICAgdGhpcy51bml0X2RhdGEgPSB0YXJnZXQ7CiAgICAgIH0KICAgIH0sCgogICAgLy8g5oyH5a6a5Lu35pWw5o2u5Y+W5raICiAgICBhcHBvaW50UHJpY2VDYW5jZWwoKSB7CiAgICAgIHRoaXMuYXBwb2ludF9wcmljZV9zaG93ID0gZmFsc2U7CiAgICB9LAoKICAgIHR5cGVQcmljZUNvbmZpcm0oY3VzdG9tZXJUeXBlUHJpY2VPcGVuLCBjdXN0b21lclR5cGVQcmljZSkgewogICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUgPT09IDEpIHsKICAgICAgICAvLyDljZXop4TmoLwKICAgICAgICBjb25zdCB0YXJnZXQgPSB0aGlzLiRfY29tbW9uLmRlZXBDbG9uZSh0aGlzLnVuaXRfZGF0YSk7CiAgICAgICAgdGFyZ2V0W3RoaXMuc2t1X2luZGV4XS5jdXN0b21lclR5cGVQcmljZU9wZW4gPSBjdXN0b21lclR5cGVQcmljZU9wZW47CiAgICAgICAgdGFyZ2V0W3RoaXMuc2t1X2luZGV4XS5jdXN0b21lclR5cGVQcmljZSA9IGN1c3RvbWVyVHlwZVByaWNlT3BlbiA/IGN1c3RvbWVyVHlwZVByaWNlIDogW107CiAgICAgICAgdGhpcy51bml0X2RhdGEgPSB0YXJnZXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g5aSa6KeE5qC8CiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy51bml0X2RhdGEpOwogICAgICAgIHRhcmdldFt0aGlzLnVuaXRfaW5kZXhdLnNwZWNfdGFibGVfRGF0YVt0aGlzLnNrdV9pbmRleF0uY3VzdG9tZXJUeXBlUHJpY2VPcGVuID0gY3VzdG9tZXJUeXBlUHJpY2VPcGVuOwogICAgICAgIHRhcmdldFt0aGlzLnVuaXRfaW5kZXhdLnNwZWNfdGFibGVfRGF0YVt0aGlzLnNrdV9pbmRleF0uY3VzdG9tZXJUeXBlUHJpY2UgPSBjdXN0b21lclR5cGVQcmljZU9wZW4gPyBjdXN0b21lclR5cGVQcmljZSA6IFtdOwogICAgICAgIHRoaXMudW5pdF9kYXRhID0gdGFyZ2V0OwogICAgICB9CiAgICB9LAoKICAgIHR5cGVQcmljZUNhbmNlbCgpIHsKICAgICAgdGhpcy50eXBlX3ByaWNlX3Nob3cgPSBmYWxzZTsKICAgIH0sCgogICAgLy8g6Zi25qKv5Lu36K6+572uCiAgICBsYWRkZXJQcmljZUNvbmZpcm0oZW5hYmxlZExhZGRlciwgbGFkZGVyUHJpY2UpIHsKICAgICAgaWYgKHRoaXMuYmFzZV9mb3JtLnNwZWNUeXBlID09PSAxKSB7CiAgICAgICAgLy8g5Y2V6KeE5qC8CiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy51bml0X2RhdGEpOwoKICAgICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uaXNFcSA9PT0gNSkgewogICAgICAgICAgLy8g5oqE56CB5ZWG5ZOB5qC55o2u5q+U5L6L6Ieq5Yqo5o2i566X6ZSA5ZSu5Lu3CiAgICAgICAgICB0YXJnZXQuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgICAgaXRlbS5lbmFibGVkTGFkZGVyID0gZW5hYmxlZExhZGRlcjsKCiAgICAgICAgICAgIGlmIChlbmFibGVkTGFkZGVyKSB7CiAgICAgICAgICAgICAgaWYgKGl0ZW0uY29udmVyc2lvbiAmJiBpdGVtLmlzTWFzdGVyID09PSA0KSB7CiAgICAgICAgICAgICAgICBpdGVtLmxhZGRlclByaWNlID0gbGFkZGVyUHJpY2UubWFwKGxhZGRlciA9PiB7CiAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmxhZGRlciwKICAgICAgICAgICAgICAgICAgICBwcmljZTogdGhpcy4kTlAudGltZXMobGFkZGVyLnByaWNlLCBpdGVtLmNvbnZlcnNpb24pCiAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaXRlbS5sYWRkZXJQcmljZSA9IGxhZGRlclByaWNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBpdGVtLmxhZGRlclByaWNlID0gW107CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0YXJnZXRbdGhpcy5za3VfaW5kZXhdLmVuYWJsZWRMYWRkZXIgPSBlbmFibGVkTGFkZGVyOwogICAgICAgICAgdGFyZ2V0W3RoaXMuc2t1X2luZGV4XS5sYWRkZXJQcmljZSA9IGVuYWJsZWRMYWRkZXIgPyBsYWRkZXJQcmljZSA6IFtdOwogICAgICAgIH0KCiAgICAgICAgdGhpcy51bml0X2RhdGEgPSB0YXJnZXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g5aSa6KeE5qC8CiAgICAgICAgY29uc3QgdGFyZ2V0ID0gdGhpcy4kX2NvbW1vbi5kZWVwQ2xvbmUodGhpcy51bml0X2RhdGEpOwogICAgICAgIHRhcmdldFt0aGlzLnVuaXRfaW5kZXhdLnNwZWNfdGFibGVfRGF0YVt0aGlzLnNrdV9pbmRleF0uZW5hYmxlZExhZGRlciA9IGVuYWJsZWRMYWRkZXI7CiAgICAgICAgdGFyZ2V0W3RoaXMudW5pdF9pbmRleF0uc3BlY190YWJsZV9EYXRhW3RoaXMuc2t1X2luZGV4XS5sYWRkZXJQcmljZSA9IGVuYWJsZWRMYWRkZXIgPyBsYWRkZXJQcmljZSA6IFtdOwogICAgICAgIHRoaXMudW5pdF9kYXRhID0gdGFyZ2V0OwogICAgICB9CiAgICB9LAoKICAgIGxhZGRlclByaWNlQ2FuY2VsKCkgewogICAgICB0aGlzLmxhZGRlcl9wcmljZV9zaG93ID0gZmFsc2U7CiAgICB9LAoKICAgIC8vIOWuouaIt+iwg+S7t+WNlQogICAgYXN5bmMgQ3VzdG9tZXJQcmljZUFkanVzdG1lbnRBZGQocGFyYW1zKSB7CiAgICAgIGlmICghcGFyYW1zLmxlbmd0aCkgcmV0dXJuOwogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgQ3VzdG9tZXJQcmljZUFkanVzdG1lbnRBZGQocGFyYW1zKTsKICAgIH0sCgogICAgLy8g5a6i5oi357G75Z6L6LCD5Lu35Y2VCiAgICBhc3luYyBhZGRDdXN0b21lclR5cGVQcmljZUFkanVzdG1lbnQocGFyYW1zKSB7CiAgICAgIGlmICghcGFyYW1zLmxlbmd0aCkgcmV0dXJuOwogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgYWRkQ3VzdG9tZXJUeXBlUHJpY2VBZGp1c3RtZW50KHBhcmFtcyk7CiAgICB9LAoKICAgIC8vIOWVhuWTgeWIhuexu+WIl+ihqAogICAgYXN5bmMgZ2V0QWxsQ2F0ZWdvcnlQb3N0KCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0QWxsQ2F0ZWdvcnlQb3N0KHsKICAgICAgICBlbmFibGVTdGF0dXM6IDUKICAgICAgfSk7CgogICAgICBpZiAoSlNPTi5zdHJpbmdpZnkoZGF0YSkgPT09ICJ7fSIpIHsKICAgICAgICB0aGlzLmNhdGVnb3J5X2RhdGEgPSBbXTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmNhdGVnb3J5X2RhdGEgPSBkYXRhOwogICAgICB9CiAgICB9LAoKICAgIC8vIOiHquWumuS5iemAieaLqeWNs+aUueWPmAogICAgY2xpY2tDaGFuZ2UoZXZlbnQpIHsKICAgICAgZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5maXJzdENoaWxkLmNsaWNrKCk7CiAgICB9LAoKICAgIGRlbEFzc2lzdENhdGUoaW5kZXgpIHsKICAgICAgdGhpcy5hc3Npc3RfY2F0ZS5zcGxpY2UoaW5kZXgsIDEpOwogICAgfSwKCiAgICBhZGRBc3Npc3RDYXRlKCkgewogICAgICB0aGlzLmFzc2lzdF9jYXRlLnB1c2goewogICAgICAgIGFzc2lzdENhdGVnb3J5UGF0aDogW10KICAgICAgfSk7CiAgICB9LAoKICAgIC8vIOiOt+WPluWVhuaIt+WIl+ihqAogICAgYXN5bmMgZ2V0QWxsTWVyY2hhbnRMaXN0KCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YQogICAgICB9ID0gYXdhaXQgZ2V0QWxsTWVyY2hhbnRMaXN0KCk7CiAgICAgIHRoaXMuc2VsX2NpdGllcyA9IGRhdGE7CiAgICB9LAoKICAgIC8vIOaKhOeggeWVhuWTgeWIh+aNogogICAgaXNFcUNoYW5nZSh2YWwpIHsKICAgICAgaWYgKHRoaXMuaXNFZGl0U3BlYyAhPT0gNCAmJiB2YWwgPT09IDUpIHsKICAgICAgICB0aGlzLmJhc2VfZm9ybS5tYXN0ZXJVbml0ID0gewogICAgICAgICAgaXNEZWZhdWx0OiA1LAogICAgICAgICAgaXNNYXN0ZXI6IDUsCiAgICAgICAgICB3ZWlnaHQ6ICIiLAogICAgICAgICAgdW5pdE5hbWU6ICIiLAogICAgICAgICAgdW5pdElkOiAiIiwKICAgICAgICAgIGJhckNvZGU6ICIiCiAgICAgICAgfTsKICAgICAgICB0aGlzLmJhc2VfZm9ybS5icmFuY2hVbml0ID0gW107CiAgICAgICAgdGhpcy51bml0X2RhdGEgPSBbXTsKICAgICAgfQogICAgfSwKCiAgICAvLyDojrflj5bmjIflrprllYblk4HnmoTmnIDlkI7nlJ/mlYjnmoTlrqLmiLfosIPku7fljZXmlbDmja4KICAgIGFzeW5jIGdldEN1c3RvbWVyUHJpY2VCeUdvb2RzSWRzKCkgewogICAgICBjb25zdCB7CiAgICAgICAgZGF0YSwKICAgICAgICBwYWdlVG90YWwKICAgICAgfSA9IGF3YWl0IGdldEN1c3RvbWVyUHJpY2VCeUdvb2RzSWRzKHsKICAgICAgICBnb29kc0lkOiB0aGlzLmdvb2RzX2lkLAogICAgICAgIHBhZ2U6IDEsCiAgICAgICAgcGFnZVNpemU6IDIwMAogICAgICB9KTsKICAgICAgdGhpcy5jdXN0b21lclByaWNlID0gZGF0YTsKICAgIH0sCgogICAgLy8g6I635Y+W5oyH5a6a5ZWG5ZOB55qE5pyA5ZCO55Sf5pWI55qE5a6i5oi357G75Z6L6LCD5Lu35pWw5o2uCiAgICBhc3luYyBnZXRDdXN0b21lclR5cGVQcmljZUJ5R29vZHNJZHMoKSB7CiAgICAgIGNvbnN0IHsKICAgICAgICBkYXRhCiAgICAgIH0gPSBhd2FpdCBnZXRDdXN0b21lclR5cGVQcmljZUJ5R29vZHNJZHMoewogICAgICAgIGdvb2RzSWQ6IHRoaXMuZ29vZHNfaWQsCiAgICAgICAgcGFnZTogMSwKICAgICAgICBwYWdlU2l6ZTogMjAKICAgICAgfSk7CiAgICAgIHRoaXMuY3VzdG9tZXJUeXBlUHJpY2UgPSBkYXRhOwogICAgICB0aGlzLmFkanVzdG1lbnREYXRhKCk7CiAgICB9LAoKICAgIGFkanVzdG1lbnREYXRhKCkgewogICAgICBpZiAodGhpcy5iYXNlX2Zvcm0uc3BlY1R5cGUgPT09IDEpIHsKICAgICAgICB0aGlzLnVuaXRfZGF0YSA9IHRoaXMudW5pdF9kYXRhLm1hcChpdGVtID0+IHsKICAgICAgICAgIC8v5a6i5oi357G75Z6L5Lu3CiAgICAgICAgICBsZXQgY3VzdG9tZXJUeXBlUHJpY2UgPSBbXTsKICAgICAgICAgIHRoaXMuY3VzdG9tZXJUeXBlUHJpY2UuZm9yRWFjaCh0eXBlID0+IHsKICAgICAgICAgICAgaWYgKHR5cGUuc2FsZVByaWNlICYmIHR5cGUuc2FsZVByaWNlLmxlbmd0aCkgewogICAgICAgICAgICAgIHR5cGUuc2FsZVByaWNlLmZvckVhY2gocGl0ZW0gPT4gewogICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHBpdGVtLnNrdUlkKSA9PT0gaXRlbS5pZF9EKSB7CiAgICAgICAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlLnB1c2goewogICAgICAgICAgICAgICAgICAgIGFkalByaWNldGFnOiBwaXRlbS5hZGpQcmljZXRhZywKICAgICAgICAgICAgICAgICAgICBsYWRkZXJQcmljZTogcGl0ZW0ubGFkZGVyUHJpY2UgfHwgW10sCiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHBpdGVtLnByaWNlLAogICAgICAgICAgICAgICAgICAgIG5hbWU6IHR5cGUuY3VzdG9tZXJUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICBpZDogdHlwZS5jdXN0b21lclR5cGUsCiAgICAgICAgICAgICAgICAgICAgcHJpY2VJZDogdHlwZS5pZAogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7IC8v5a6i5oi35Lu3CgogICAgICAgICAgbGV0IGN1c3RvbWVyUHJpY2UgPSBbXTsKICAgICAgICAgIHRoaXMuY3VzdG9tZXJQcmljZS5mb3JFYWNoKHR5cGUgPT4gewogICAgICAgICAgICBpZiAodHlwZS5zYWxlUHJpY2UgJiYgdHlwZS5zYWxlUHJpY2UubGVuZ3RoKSB7CiAgICAgICAgICAgICAgdHlwZS5zYWxlUHJpY2UuZm9yRWFjaChwaXRlbSA9PiB7CiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQocGl0ZW0uc2t1SWQpID09PSBpdGVtLmlkX0QpIHsKICAgICAgICAgICAgICAgICAgY3VzdG9tZXJQcmljZS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICBhZGpQcmljZXRhZzogcGl0ZW0uYWRqUHJpY2V0YWcsCiAgICAgICAgICAgICAgICAgICAgbGFkZGVyUHJpY2U6IHBpdGVtLmxhZGRlclByaWNlIHx8IFtdLAogICAgICAgICAgICAgICAgICAgIHByaWNlOiBwaXRlbS5wcmljZSwKICAgICAgICAgICAgICAgICAgICBuYW1lOiB0eXBlLmN1c3RvbWVyTmFtZSwKICAgICAgICAgICAgICAgICAgICBpZDogdHlwZS5jdXN0b21lcklkLAogICAgICAgICAgICAgICAgICAgIHByaWNlSWQ6IHR5cGUuaWQKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwKICAgICAgICAgICAgLy8g5a6i5oi357G75Z6L5ZKM5a6i5oi35b+r6YCf6LCD5Lu3CiAgICAgICAgICAgIGN1c3RvbWVyVHlwZVByaWNlOiBjdXN0b21lclR5cGVQcmljZSwKICAgICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2VPcGVuOiBjdXN0b21lclR5cGVQcmljZS5sZW5ndGggPiAwLAogICAgICAgICAgICBjdXN0b21lclByaWNlOiBjdXN0b21lclByaWNlLAogICAgICAgICAgICBjdXN0b21lclByaWNlT3BlbjogY3VzdG9tZXJQcmljZS5sZW5ndGggPiAwCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMudW5pdF9kYXRhID0gdGhpcy51bml0X2RhdGEubWFwKGl0ZW1VID0+IHsKICAgICAgICAgIHJldHVybiB7IC4uLml0ZW1VLAogICAgICAgICAgICBzcGVjX3RhYmxlX0RhdGE6IGl0ZW1VLnNwZWNfdGFibGVfRGF0YS5tYXAoaXRlbSA9PiB7CiAgICAgICAgICAgICAgLy/lrqLmiLfnsbvlnovku7cKICAgICAgICAgICAgICBsZXQgY3VzdG9tZXJUeXBlUHJpY2UgPSBbXTsKICAgICAgICAgICAgICB0aGlzLmN1c3RvbWVyVHlwZVByaWNlLmZvckVhY2godHlwZSA9PiB7CiAgICAgICAgICAgICAgICBpZiAodHlwZS5zYWxlUHJpY2UgJiYgdHlwZS5zYWxlUHJpY2UubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgIHR5cGUuc2FsZVByaWNlLmZvckVhY2gocGl0ZW0gPT4gewogICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChwaXRlbS5za3VJZCkgPT09IGl0ZW0uaWRfRCkgewogICAgICAgICAgICAgICAgICAgICAgY3VzdG9tZXJUeXBlUHJpY2UucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGFkalByaWNldGFnOiBwaXRlbS5hZGpQcmljZXRhZywKICAgICAgICAgICAgICAgICAgICAgICAgbGFkZGVyUHJpY2U6IHBpdGVtLmxhZGRlclByaWNlIHx8IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogcGl0ZW0ucHJpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHR5cGUuY3VzdG9tZXJUeXBlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHR5cGUuY3VzdG9tZXJUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBwcmljZUlkOiB0eXBlLmlkCiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOyAvL+WuouaIt+S7twoKICAgICAgICAgICAgICBsZXQgY3VzdG9tZXJQcmljZSA9IFtdOwogICAgICAgICAgICAgIHRoaXMuY3VzdG9tZXJQcmljZS5mb3JFYWNoKHR5cGUgPT4gewogICAgICAgICAgICAgICAgaWYgKHR5cGUuc2FsZVByaWNlICYmIHR5cGUuc2FsZVByaWNlLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICB0eXBlLnNhbGVQcmljZS5mb3JFYWNoKHBpdGVtID0+IHsKICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQocGl0ZW0uc2t1SWQpID09PSBpdGVtLmlkX0QpIHsKICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbWVyUHJpY2UucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgIGFkalByaWNldGFnOiBwaXRlbS5hZGpQcmljZXRhZywKICAgICAgICAgICAgICAgICAgICAgICAgbGFkZGVyUHJpY2U6IHBpdGVtLmxhZGRlclByaWNlIHx8IFtdLAogICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogcGl0ZW0ucHJpY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHR5cGUuY3VzdG9tZXJOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBpZDogdHlwZS5jdXN0b21lcklkLAogICAgICAgICAgICAgICAgICAgICAgICBwcmljZUlkOiB0eXBlLmlkCiAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0sCiAgICAgICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZTogY3VzdG9tZXJUeXBlUHJpY2UsCiAgICAgICAgICAgICAgICBjdXN0b21lclR5cGVQcmljZU9wZW46IGN1c3RvbWVyVHlwZVByaWNlLmxlbmd0aCA+IDAsCiAgICAgICAgICAgICAgICBjdXN0b21lclByaWNlOiBjdXN0b21lclByaWNlLAogICAgICAgICAgICAgICAgY3VzdG9tZXJQcmljZU9wZW46IGN1c3RvbWVyUHJpY2UubGVuZ3RoID4gMAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0pCiAgICAgICAgICB9OwogICAgICAgIH0pOwogICAgICB9CgogICAgICBjb25zb2xlLmxvZygiIHRoaXMudW5pdF9kYXRhOiIsIHRoaXMudW5pdF9kYXRhKTsKICAgIH0KCiAgfQp9Ow=="},{"version":3,"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4zCA;AACA;AACA,gE,CACA;;AACA;AACA;AACA,6D,CACA;;AACA;AACA;AACA;AACA,SACAA,UADA,EAEAC,UAFA,EAGAC,gBAHA,EAIAC,iBAJA,EAKAC,cALA,EAMAC,uBANA,EAOAC,kBAPA,QAQA,aARA;AASA;AACA;EACAC,gBADA;EAEAC,eAFA;EAGAC,eAHA;EAIAC,aAJA;EAKAC,SALA;EAMAC,SANA;EAOAC,oBAPA;EAQA;EACAC,qBATA;EAUAC,4BAVA;EAWAC,iBAXA;EAYAC,wBAZA;EAaAC;IACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAdA;AAbA;AA8BA;AACA;AACA;AACA,SACAC,0BADA,EAEAC,8BAFA,EAGAC,0BAHA,EAIAC,8BAJA,QAKA,aALA;AAMA;AACA;EACAC,mBADA;EAEAC;IACA;IACAC,aAFA;IAGAC,OAHA;IAIAC,WAJA;IAKAC,OALA;IAMAC,QANA;IAOAC,UAPA;IAQAC,eARA;IASAC,aATA;IAUAC,iBAVA;IAWAC;EAXA,CAFA;;EAeAC;IACA;MACA;QACAC;MACA,CAFA,MAEA;QACAA;MACA;IACA,CANA;;IAOA;MACAC,gBADA;MAEAC,aAFA;MAGAC,YAHA;MAIArB,eAJA;MAKAX,gBALA;MAMAiC,wBANA;MAMA;MACAC,sBAPA;MAOA;MACA1B,4BARA;MAQA;MACAD,qBATA;MASA;MACAG,wBAVA;MAWAD,iBAXA;MAYA0B,yBAZA;MAYA;MACAC,oBAbA;MAaA;MACAC,iBAdA;MAcA;MACAC,uBAfA;MAeA;MACAC,sBAhBA;MAgBA;MACAC,cAjBA;MAiBA;MACAC,cAlBA;MAkBA;MACAC,gBAnBA;MAmBA;MACAC,aApBA;MAoBA;MACA;MACAC,iBAtBA;MAsBA;MACAC,kBAvBA;MAuBA;MACAC,sBAxBA;MAwBA;MACAC,iBAzBA;MAyBA;MACAC,mBA1BA;MA0BA;MACAC,4BA3BA;MA2BA;MACAC,qBA5BA;MA4BA;MACAC,aA7BA;MA6BA;MACAC,mBA9BA;MA8BA;MACAC,mBA/BA;MA+BA;MACAC,WACA;MACA;QACAF,mBADA;QAEAG,eAFA;QAGAX,iBAHA;QAIAE,sBAJA;QAKAU,iBALA;QAMAC;MANA,CAFA,CAhCA;MA2CAC,gBA3CA;MA2CA;MACAC,mBA5CA;MA6CAC,WA7CA;MA8CAC,gBA9CA;MA8CA;MACAC,YA/CA;MA+CA;MACAC,cAhDA;MAiDAC,YAjDA;MAkDA;MACAC,eAnDA;MAoDAC,mBApDA;MAqDAC,cArDA;MAsDA;MACAC,mBAvDA;MAwDAC,wBAxDA;MAyDAC,eAzDA;MA0DAC,gBA1DA;MA2DA;MACAC;QACAC,YADA;QAEAC,WAFA;QAGAC,WAHA;QAIAC,YAJA;QAKAjC,aALA;QAMAkC,UANA;QAOAC;MAPA,CA5DA;MAqEAC,gBArEA;MAqEA;MACAC,eAtEA;MAsEA;MACAC,oBAvEA;MAwEAC;QACA;QACAC,eAFA;QAEA;QACAC,iBAHA;QAGA;QACAC,WAJA;QAIA;QACAC,OALA;QAKA;QACAC,WANA;QAMA;QACAC,cAPA;QAOA;QACAC,iBARA;QAQA;QACAC,cATA;QAUAC,aAVA;QAWAC,cAXA;QAYAC,oBAZA;QAaAC,gBAbA;QAaA;QACAC,sBAdA;QAcA;QACAC,YAfA;QAgBAC;UACAvB,WADA;UAEAwB,UAFA;UAGAvB,WAHA;UAIAC,YAJA;UAKAH,YALA;UAMAI;QANA,CAhBA;QAwBAsB,YAxBA;QAyBAC,SAzBA;QA0BAC,WA1BA;QA2BAC,QA3BA;QA4BA5B,WA5BA;QA4BA;QACAwB,UA7BA;QA6BA;QACAK,cA9BA;QA+BAC,WA/BA;QAgCAC,OAhCA;QAiCAC,eAjCA;QAkCAC,aAlCA;QAmCAC,UAnCA;QAoCAC,0BApCA;QAoCA;QACAC,cArCA;QAqCA;QACAC,cAtCA;QAsCA;QACAC,cAvCA;QAuCA;QACAC,UAxCA;QAwCA;QACAC,WAzCA;QAyCA;QACAC,mBA1CA;QA0CA;QACAC,eA3CA;QA2CA;QACAC,cA5CA,CA4CA;;MA5CA,CAxEA;MAsHAC,cAtHA;MAsHA;MACAC;QACA;QACAX,SACA;UACAY,aADA;UAEAC,cAFA;UAGAC,kBAHA;UAIAC;QAJA,CADA,CAFA;QAUAvB,QACA;UAAAqB;UAAAC;UAAAC;QAAA,CADA,CAVA;QAaA/B,aACA;UAAA6B;UAAAC;UAAAC;QAAA,CADA,CAbA;QAgBApB,aACA;UAAAkB;UAAAC;UAAAC;QAAA,CADA,CAhBA;QAmBA;QACA;QACA1B;UAAA2B;UAAAD;QAAA,EArBA;QAsBAd,iBACA;UACAY,cADA;UAEAD,aAFA;UAGAE,kBAHA;UAIAC;QAJA,CADA,CAtBA;QA8BAV,SACA;UAAAQ;UAAAC;UAAAC;QAAA,CADA,CA9BA;QAiCAZ,aACA;UAAAU;UAAAC;UAAAC;QAAA,CADA,CAjCA,CAoCA;QACA;;MArCA,CAvHA;MA8JAE,WA9JA;MA+JAC,sBA/JA;MAgKAC,aAhKA;MAgKA;MACAC,eAjKA;MAiKA;MACAC,QAlKA;MAkKA;MACAC,iBAnKA;MAmKA;MACAC;QACAC,cADA;QAEAC,WAFA;QAGAC;MAHA,CApKA;MAyKAC,cACA;QACAxC;MADA,CADA,CAzKA;MA8KAyC;IA9KA;EAgLA,CAvMA;;EAwMAC,YACA;MACAC,sCADA;MAEAC,8BAFA,CAEA;;IAFA;EADA,CAxMA;;EA8MA;IACA;IACA,gCAFA,CAGA;;IACA;IACA,iCALA,CAMA;;IACA;IACA,wBARA,CASA;;IACA;;IACA;MACA;MACA;MACA;IACA,CAJA,MAIA;MACA;MACA;IACA;;IACA;EACA,CAlOA;;EAmOAC;IACA;IACA;MACA;QAAAhH;MAAA;MAEA;IACA,CANA;;IAOAiH;MACA;QACA;;QACA;UACAC;YACAC;cACA;gBACAC;cACA,CAFA,MAEA;gBACA;kBACAA;gBACA;cACA;YACA,CARA;UASA,CAVA;QAWA,CAZA,MAYA;UACAF;YACA;cACAC;YACA;UACA,CAJA;QAKA;;QACA;MACA;IACA,CA/BA;;IAgCA;IACA;MACA;QAAAnH;MAAA;QACAqH,OADA;QAEAC;MAFA;MAKA;IACA,CAxCA;;IAyCAC;MACA;IACA,CA3CA;;IA4CA;IACAC;MACA;MACA;;MACA;QACA,sBACAC;UACA;QACA,CAFA,CADA,GAIA,EAJA;QAKAC;QACA;MACA;IACA,CAzDA;;IA0DA;IACA;MACA;MACA;IACA,CA9DA;;IA+DA;IACAC;MACA;IACA,CAlEA;;IAmEA;IACA;MACA,iBACA,iBADA;QAEAC,wBAFA;QAGAC,kCAHA;QAIAhD,qBAJA;QAKA8B;MALA;MAOA;MACA;QACAmB,kBADA;QAEA9H;MAFA;MAIA;MAEA;QACA4F,eADA;QAEAE;MAFA;;MAIA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CA5FA;;IA6FA;IACA;MACA;QACAgC;MADA;IAGA,CAlGA;;IAmGA;IACA;MACA;QAAA9H;MAAA;QACA8H;MADA;MAIA;MACA,mBACA,OADA;QAEA5D,iDACAlE,iBADA,GAEA,EAJA;QAKAmE,6DACAnE,uBADA,GAEA;MAPA;MASA;QAAAmE;MAAA;MACA;MACA;MACA;;MACA;QACA;UACA;YACA/E,QADA;YAEA2I;UAFA;QAIA,CALA;MAMA;IACA,CA/HA;;IAgIA;IACAC;MACA;;MACA;QACAd;UACA9H,QADA;UAEA2I;QAFA;MAIA,CALA,MAKA;QACAb;UACA9H,QADA;UAEA2I;QAFA;MAIA;;MACA;IACA,CA/IA;;IAgJA;IACAE;MACA;QACA;UACAzG,mBADA;UAEAN,sBAFA;UAGAF,iBAHA;UAIAW,eAJA;UAKAC,iBALA;UAMAC;QANA;MAQA,CATA,MASA;QACA,cACA,4BADA,EAEA,IAFA,EAGA;UACAqG,yBADA;UAEAC,sBAFA;UAGAvC;QAHA,CAHA,EAQAwC,IARA,CAQA;UACA;YACA5G,mBADA;YAEAN,sBAFA;YAGAF,iBAHA;YAIAW,eAJA;YAKAC,iBALA;YAMAC;UANA;QAQA,CAjBA;MAkBA;IACA,CA/KA;;IAgLA;IACAwG;MACA;MACA;MACAnB;MACAA;MACAA;MACA,uBANA,CAOA;MACA;MACA;MACA;IACA,CA5LA;;IA6LA;IACAoB;MACA;MACA;MACA;MACA;MACA;MACA;MA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CAsB,MADA,CACAvC,kDADA,EAEAwC,GAFA,CAEAK;YACA;UACA,CAJA;QAKA,CARA,CASA;;;QACA;UACA,SACA,QADA;YAEAvI,8CACA0F,oDADA;UAFA;QAMA,CAPA;QASA;QACAD;QACA;MACA,CA1BA;IA2BA,CAlfA;;IAmfA;IACA+C;MACA;QACA/B,uBADA;QAEAC,sBAFA;QAGAvC;MAHA,GAIAwC,IAJA,CAIA;QACA;;QACA;UACA,+DACAjB;YACA;UACA,CAHA;QAKA,CARA,CASA;;;QACA;MACA,CAfA;IAgBA,CArgBA;;IAugBA;IACA;MACA;QAAAnH;QAAAkK;MAAA;QACA7C,OADA;QAEAC;MAFA;MAKA,+DANA,CAOA;IACA,CAhhBA;;IAihBA;IACA6C;MACA;QACA;MACA,CAFA;;MAIA;QACA;MACA,CAFA,MAEA;QACA;MACA;;MACA;QACA;UACA/K,QADA;UAEAgL;QAFA;MAIA,CALA;IAMA,CAliBA;;IAmiBAC;MACA;QACA;MACA,CAFA;IAGA,CAviBA;;IAwiBAC;MACA;QACA;MACA,CAFA;IAGA,CA5iBA;;IA6iBA;IACAC;MACA;IACA,CAhjBA;;IAijBA;IACAC;MACA;MACA;QACA;MACA,CAFA;IAGA,CAvjBA;;IAwjBA;IACAC;MACA;;MACA;QACA;MACA;;MACA;MACA;IACA,CAhkBA;;IAikBA;IACA;IACA;IACAC;MACA;;MACA;QACA,IACAjD,cACA,oDAFA,EAGA;UACA;QACA;;QACA,iCACAN,sCADA;;QAGA;UACA,IACA,+DADA,EAEA;YACA;UACA;QACA;MACA;;MACA;IACA,CAzlBA;;IA0lBA;IACAwD;MACA;MACA;MACA;QACA9H,YADA;QAEAE,WAFA;QAGAE,UAHA;QAIAC;MAJA;IAMA,CApmBA;;IAqmBA;IACA0H;MACA;MACA;MACA;MACA;IACA,CA3mBA;;IA4mBA;IACAC;MACA;QACA;QACA;MACA;;MACA;QACA;QACA;MACA;;MACA,iCACA,mBADA;QAEA9J;MAFA;;MAIA;QACA,0CACA,gEADA,GAEA,EAFA;QAGA,sBACA,4CADA;UAEA,uCAFA;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CApBA;MAsBA;IACA,CA/uCA;;IAgvCA;IACA+N;MACA;;MACA;QACA;UACA;QACA;MACA;;MAEA3F;QACAC;QACA;MACA,CAHA,EARA,CAYA;;MACA,gDACAM,uBADA,GAEAA,YAFA;MAGA;;MACA;QACA;QACA;UACA,kCACAN,yCADA;QAGA,CAJA;;QAKA;UACA2F;UACA;QACA;MACA,CA5BA,CA8BA;;;MACA;QACA;UACA,qCACAxB,sCADA;;UAGA;YACAnE;UACA;QACA,CAPA;MAQA;;MACA;IACA,CA3xCA;;IA6xCA;IACA4F;MACA;MACA;IACA,CAjyCA;;IAkyCA;IACAC;MACA;QACA;MACA,CAFA;IAGA,CAvyCA;;IAwyCA;IACA;MACA;QACA3F,OADA;QAEAC;MAFA;MAKA;IACA,CAhzCA;;IAizCA;IACA2F;MACA;IACA,CApzCA;;IAqzCA;IACAC;MACA;IACA,CAxzCA;;IAyzCA;IACAC;MACA;MACA;QACA;QACA;QACA;QACA;;QACA;UACA;UACA;UACA;QACA;;QACA;UACA;UACA;UACA;QACA;MACA;;MACA;;MACA;QACA;MACA;;MACA;IACA,CAj1CA;;IAk1CA;IACAC;MACAC;;MACA;QACA;QACA;QACAnG;QACAA,2DACArI,aADA,GAEA,EAFA;QAGA;MACA,CARA,MAQA;QACA;QACA;QACAqI,wCACA,cADA,EAEApI,iBAFA,GAEAA,iBAFA;QAGAoI,wCACA,cADA,EAEArI,aAFA,GAEAC,sCAFA;QAGA;MACA;IACA,CAx2CA;;IAy2CA;IACAwO;MACA;IACA,CA52CA;;IA62CAC;MACA;QACA;QACA;QACArG;QACAA,mEACAvI,iBADA,GAEA,EAFA;QAGA;MACA,CARA,MAQA;QACA;QACA;QACAuI,wCACA,cADA,EAEAtI,qBAFA,GAEAA,qBAFA;QAGAsI,wCACA,cADA,EAEAvI,iBAFA,GAEAC,8CAFA;QAGA;MACA;IACA,CAj4CA;;IAk4CA4O;MACA;IACA,CAp4CA;;IAq4CA;IACAC;MACA;QACA;QACA;;QACA;UACA;UACAvG;YACAC;;YACA;cACA;gBACAA;kBACA,SACA,SADA;oBAEA0E;kBAFA;gBAIA,CALA;cAMA,CAPA,MAOA;gBACA1E;cACA;YACA,CAXA,MAWA;cACAA;YACA;UACA,CAhBA;QAiBA,CAnBA,MAmBA;UACAD;UACAA,qDACAnI,WADA,GAEA,EAFA;QAGA;;QACA;MACA,CA7BA,MA6BA;QACA;QACA;QACAmI,wCACA,cADA,EAEA9I,aAFA,GAEAA,aAFA;QAGA8I,wCACA,cADA,EAEAnI,WAFA,GAEAX,gCAFA;QAGA;MACA;IACA,CA/6CA;;IAg7CAsP;MACA;IACA,CAl7CA;;IAm7CA;IACA;MACA;MACA;QAAA1N;MAAA;IACA,CAv7CA;;IAw7CA;IACA;MACA;MACA;QAAAA;MAAA;IACA,CA57CA;;IA67CA;IACA;MACA;QAAAA;MAAA;QACAuD;MADA;;MAIA;QACA;MACA,CAFA,MAEA;QACA;MACA;IACA,CAx8CA;;IAy8CA;IACAoK;MACAC;IACA,CA58CA;;IA68CAC;MACA;IACA,CA/8CA;;IAg9CAC;MACA;QACA3J;MADA;IAGA,CAp9CA;;IAq9CA;IACA;MACA;QAAAnE;MAAA;MACA;IACA,CAz9CA;;IA09CA;IACA+N;MACA;QACA;UACA/K,YADA;UAEAD,WAFA;UAGAuB,UAHA;UAIAzB,YAJA;UAKAI,UALA;UAMAH;QANA;QAQA;QACA;MACA;IACA,CAx+CA;;IAy+CA;IACA;MACA;QAAA9C;QAAAkK;MAAA;QACA8D,sBADA;QAEA3G,OAFA;QAGAC;MAHA;MAKA;IACA,CAj/CA;;IAk/CA;IACA;MACA;QAAAtH;MAAA;QACAgO,sBADA;QAEA3G,OAFA;QAGAC;MAHA;MAKA;MACA;IACA,CA3/CA;;IA4/CA2G;MACA;QACA;UACA;UACA;UACA;YACA;cACArI;gBACA;kBACAjH;oBACAmN,8BADA;oBAEA/M,oCAFA;oBAGA8M,kBAHA;oBAIAzM,2BAJA;oBAKA6J,qBALA;oBAMAiF;kBANA;gBAQA;cACA,CAXA;YAYA;UACA,CAfA,EAHA,CAmBA;;UACA;UACA;YACA;cACAtI;gBACA;kBACA/G;oBACAiN,8BADA;oBAEA/M,oCAFA;oBAGA8M,kBAHA;oBAIAzM,uBAJA;oBAKA6J,mBALA;oBAMAiF;kBANA;gBAQA;cACA,CAXA;YAYA;UACA,CAfA;UAgBA,SACA,OADA;YAEA;YACAvP,oCAHA;YAIAC,mDAJA;YAKAC,4BALA;YAMAC;UANA;QAQA,CA7CA;MA8CA,CA/CA,MA+CA;QACA;UACA,SACA,QADA;YAEA2C;cACA;cACA;cACA;gBACA;kBACAmE;oBACA;sBACAjH;wBACAmN,8BADA;wBAEA/M,oCAFA;wBAGA8M,kBAHA;wBAIAzM,2BAJA;wBAKA6J,qBALA;wBAMAiF;sBANA;oBAQA;kBACA,CAXA;gBAYA;cACA,CAfA,EAHA,CAmBA;;cACA;cACA;gBACA;kBACAtI;oBACA;sBACA/G;wBACAiN,8BADA;wBAEA/M,oCAFA;wBAGA8M,kBAHA;wBAIAzM,uBAJA;wBAKA6J,mBALA;wBAMAiF;sBANA;oBAQA;kBACA,CAXA;gBAYA;cACA,CAfA;cAgBA,SACA,OADA;gBAEAvP,oCAFA;gBAGAC,mDAHA;gBAIAC,4BAJA;gBAKAC;cALA;YAOA,CA5CA;UAFA;QAgDA,CAjDA;MAkDA;;MACAuO;IACA;;EAjmDA;AAnOA","names":["getAllUnit","defineSpec","SpecManagegetAll","getQuickGoodsInfo","editQuickGoods","addBasicAndPublishGoods","getAllCategoryPost","enabledLadder","marketPrice","memberPrice","salePrice","setNum","isSale","salePriceAreaType","customerTypePrice","customerTypePriceOpen","customerPrice","customerPriceOpen","ladderPrice","CustomerPriceAdjustmentAdd","addCustomerTypePriceAdjustment","getCustomerPriceByGoodsIds","getCustomerTypePriceByGoodsIds","name","components","BrandSelModel","Tinymce","UploadQiniu","AddCate","AddBrand","RegionTree","ClientListModal","CustomerPrice","CustomerTypePrice","LadderPrice","data","callback","unitisMaster","unit_index","sku_index","ladder_price_show","type_price_show","appoint_price_show","customer_show","customer_list","customer_type_check","customer_type_list","region_arr","page_tabs","express_list","isEditSpec","self_spec_val","spec_name_index","self_spec_input","spec_model","spec_item_check","is_indeterminate_spec","spec_check_all","spec_data","spec_data_child","spec_table_Data","sku_list","groupSpecId","groupSpecName","params","add_model","dialogTitle","pid_arr","add_Brand","pageName","loading","img_list","dynamicTags","inputVisible","inputValue","assist_model","edit_assist_model","assist_index","unit_options","assist_form","unitName","barCode","isMaster","isDefault","unitId","conversion","sel_brand","sel_shop","master_unit_name","base_form","enableStatus","isDistribution","isShield","isEq","specType","delUnitIds","delSpecSkuIds","branchUnit","brandName","categoryId","assistCategoryId","categoryPath","assistCategoryPath","unitData","masterUnit","weight","describe","title","storage","code","expireTime","brandId","tag","description","salesShop","images","deliverySupIds","expressType","expressFee","showExpress","ruleId","notArea","notCustomerType","notCustomer","merchantId","sel_cities","base_rules","type","required","message","trigger","validator","goods_id","list_page_data","unit_data","tabs_active","isNew","category_data","cate_props","label","value","checkStrictly","assist_cate","sku_id","computed","salePriceTimes","systemType","methods","isDefaultChange","target","item","itemB","page","pageSize","modelClose","openModel","row","link","submitBrand","specGroup","specMultiple","key","url","uploadSpecSuccess","addSkuP","confirmButtonText","cancelButtonText","then","groupSpecIdChange","specGroupRest","skuArrDo","itemC","indexSS","cloneSpecGroup","itemSp","specImage","inventory","doExchange","temp","doubleArrays","id","specName","index","newArray","_count","pid","hidden","addSpecVal","selSpecVal","filter","map","checkAllSpecChange","specItemChange","checkedCount","delSpecVal","itemM","delGroupSpecId","pageTotal","uploadSuccess","content","imgSortChange","uploadRemove","handleClose","showInput","handleInputConfirm","delFuUnit","addFuUnit","EditFuUnit","subAssist","masterUnitChange","branchUnitChange","itemF","child","itemU","itemSP","specGroupHash","id_D","itemP","join","groupSpec","specId","specValueId","specValueName","deleteStatus","price","adjPricetag","customerName","customerId","customerType","assistCate","createUserName","noSalesShop","isStore","basicGoodsId","categoryChange","categoryAssistChange","brandConfirm","salePriceBlur","memberPriceBlur","otherSetPrice","specDetailDel","isFalseVal","selChose","selRegion","customerSel","deleteCustomer","openModal","appointPriceConfirm","console","appointPriceCancel","typePriceConfirm","typePriceCancel","ladderPriceConfirm","ladderPriceCancel","clickChange","event","delAssistCate","addAssistCate","isEqChange","goodsId","adjustmentData","priceId"],"sourceRoot":"src/views/goods/sale","sources":["AddGoodsOneStore.vue"],"sourcesContent":["\n\n \n \n \n 暂存\n \n \n 提交保存\n \n \n \n \n \n \n \n \n \n \n \n \n 商品相册\n \n (温馨提示:建议上传尺寸375px*375px,格式:jpg,jpeg,png;\n 大小:建议小于1M。)\n \n \n \n \n \n \n \n \n \n \n 基本信息\n \n \n \n \n \n \n \n \n \n \n \n 【新建品牌】\n \n \n \n \n \n \n \n \n \n \n 天\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ scope.data.title }}\n \n \n \n 【新建分类】\n \n \n \n \n \n \n {{ scope.data.title }}\n \n \n \n 【添加】\n \n 1\"\n size=\"mini\"\n type=\"text\"\n @click=\"delAssistCate(index)\"\n >\n 【删除】\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ tag }}\n \n \n \n + 新增\n \n \n \n \n \n \n \n \n \n \n 商品单位\n \n 【单位管理】\n \n \n 【刷新】\n \n \n (温馨提示:基本单位一经设置不允许修改,基本单位应为最小度量单位)\n \n \n \n \n \n *\n 基本单位\n \n \n \n :\n \n \n \n \n \n \n \n \n 1{{ base_form.masterUnit.unitName }}={{ itemA.conversion\n }}{{ itemA.unitName }}\n \n \n 1{{ itemA.unitName }}={{ itemA.conversion\n }}{{ base_form.masterUnit.unitName }}\n \n \n \n + 新增\n \n \n \n \n \n \n \n 商品属性\n \n 【属性管理】\n \n \n 【刷新】\n \n \n (温馨提示:在该商品【采购之前】若不设置商品属性,在该商品【采购之后】,属性不允许重新设置,请谨慎操作!)\n \n \n (温馨提示:请确认当前属性是否有库存,一旦删除该属性无法售卖;新增规格会导致原有库存重置;请谨慎操作!)\n \n \n \n \n \n \n \n \n \n \n \n \n {{ itemC.specName }}\n \n \n + 新增\n \n \n \n \n \n + 自定义属性值\n \n \n \n \n 添加规格项目\n \n \n \n \n \n \n 规格明细\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{\n scope.row.isEditSpec === 5 ? \"无记录\" : scope.row.inventory\n }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 已设置\n \n \n 去设置\n \n \n \n \n \n \n 已设置\n \n \n 去设置\n \n \n \n \n \n \n 已设置\n \n \n 去设置\n \n \n \n \n \n \n \n \n 规格明细\n \n \n \n \n \n \n {{\n scope.row.specName.indexOf(\"_\") > -1\n ? scope.row.specName.split(\"_\")[index] || \"\"\n : scope.row.specName\n }}\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{\n scope.row.isEditSpec === 5\n ? \"无记录\"\n : scope.row.inventory\n }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 已设置\n \n \n 去设置\n \n \n \n \n \n \n 已设置\n \n \n 去设置\n \n \n \n \n \n \n 已设置\n \n \n 去设置\n \n \n \n \n \n \n 删除\n \n \n 同步\n \n \n \n \n \n \n \n \n \n \n 物流设置\n \n \n \n 快递\n 自提\n \n \n 【配送方式配置】\n \n \n \n \n \n 包邮\n 运费模版\n 统一运费\n \n \n \n \n \n \n \n \n \n \n \n \n \n 元\n \n \n \n \n 不展示\n 展示\n \n \n \n \n \n 商品详情\n \n \n \n \n \n \n\n \n \n \n \n 符合以下条件的客户用将无法看到此商品\n \n \n \n \n 地区屏蔽\n \n \n \n \n \n \n \n 客户类型屏蔽\n \n \n 暂无客户类型\n \n \n \n {{ item.name }}\n \n \n \n \n \n \n 客户屏蔽\n \n \n 选择客户\n \n \n \n \n \n \n \n \n \n \n \n \n 删除\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n 1\n {{ base_form.masterUnit.unitName }}\n =\n \n \n \n \n \n \n \n \n \n \n \n 1\n \n \n \n \n \n =\n \n \n \n {{ base_form.masterUnit.unitName }}\n \n \n \n \n 取 消\n 确 定\n \n \n \n \n \n 全选\n \n \n \n \n {{ item.specName }}\n \n \n \n 取 消\n 确 定\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n"]}]}
基本信息
\n 【配送方式配置】\n