{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataCollect\\dataCollectCompany\\dataSourceItem\\ModelAttr.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataCollect\\dataCollectCompany\\dataSourceItem\\ModelAttr.vue","mtime":1734375359944},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KDQppbXBvcnQgZm9ybSBmcm9tICdAL2FwaS9mb3JtLmpzJw0KaW1wb3J0IHV0aWxzIGZyb20gJ0AvaG90ZW50LXVpLXV0aWwuanMnDQoNCmV4cG9ydCBkZWZhdWx0IHsNCiAgbmFtZTogJ0J1c2luZXNzT2JqQXR0cicsDQogIHByb3BzOiBbDQogICAgJ29wZW5HcmFuZFNvbkF0dHInLA0KICAgICdhdHRyVGFibGVEYXRhJywNCiAgICAnZm9ybURhdGEnLA0KICAgICdlbnRJbmRleCcsDQogICAgJ2dyYW5kU29uSW5kZXgnLA0KICBdLA0KICB3YXRjaDogew0KICAgIG9wZW5HcmFuZFNvbkF0dHI6IGZ1bmN0aW9uICh2KSB7DQogICAgICB0aGlzLmlzT3BlbkdyYW5kU29uQXR0ciA9IHYNCiAgICB9LA0KICAgIGF0dHJUYWJsZURhdGE6IGZ1bmN0aW9uICh2KSB7DQogICAgICB0aGlzLnNvbkRhdGEgPSB2DQogICAgfSwNCiAgICBmb3JtRGF0YTogZnVuY3Rpb24gKHYpIHsNCiAgICAgIHRoaXMudGFibGVEYXRhID0gdg0KICAgIH0sDQogICAgZW50SW5kZXg6IGZ1bmN0aW9uICh2KSB7DQogICAgICB0aGlzLmluZGV4ID0gdg0KICAgIH0sDQogICAgZ3JhbmRTb25JbmRleDogZnVuY3Rpb24gKHYpIHsNCiAgICAgIHRoaXMuc29uSW5kZXggPSB2DQogICAgfSwNCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgaW5kZXg6IDAsDQogICAgICBzb25JbmRleDogMCwNCiAgICAgIGlzT3BlbkdyYW5kU29uQXR0cjogZmFsc2UsDQogICAgICBoaWRlQXR0cjogW10sDQogICAgICBzb25EYXRhOiBbXSwNCiAgICAgIHRhYmxlRGF0YTogW10sDQogICAgICBkYXRhVHlwZTogWw0KICAgICAgICB7a2V5OiAndmFyY2hhcicsIHZhbHVlOiAn5a2X56ym5LiyJ30sDQogICAgICAgIHtrZXk6ICdudW1iZXInLCB2YWx1ZTogJ+aVsOWtlyd9LA0KICAgICAgICB7a2V5OiAnZGF0ZScsIHZhbHVlOiAn5pel5pyfJ30sDQogICAgICAgIHtrZXk6ICdjbG9iJywgdmFsdWU6ICflpKfmlofmnKwnfSwNCiAgICAgIF0sDQogICAgICBkYXRlRm9ybWF0OiBbDQogICAgICAgIHtrZXk6ICd5eXl5LU1NLWRkIEhIOm1tOnNzJywgdmFsdWU6ICd5eXl5LU1NLWRkIEhIOm1tOnNzJ30sDQogICAgICAgIHtrZXk6ICd5eXl5LU1NLWRkJywgdmFsdWU6ICd5eXl5LU1NLWRkJ30sDQogICAgICBdLA0KICAgIH0NCiAgfSwNCiAgY29tcHV0ZWQ6IHsNCiAgICBhdHRyRGF0YTogZnVuY3Rpb24gKCkgew0KICAgICAgY29uc3QgZGF0YSA9IHRoaXMub3BlbkdyYW5kU29uQXR0cg0KICAgICAgICA/IHRoaXMuc29uRGF0YQ0KICAgICAgICA6IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0DQogICAgICByZXR1cm4gZGF0YQ0KICAgIH0sDQogIH0sDQogIGJlZm9yZURlc3Ryb3koKSB7DQogICAgLy/nu4Tku7bms6jplIDnp7vpmaTkuovku7bnm5HlkKzlmajvvIzku6XpmLLlpJrmrKHosIPnlKgNCiAgICB0aGlzLiRyb290LiRvZmYoJ3ZhbGlkYXRlRmllbGQnKQ0KICB9LA0KICBtZXRob2RzOiB7DQogICAgLy/moKHpqozlvZPliY3lrp7kvZPlrZfmrrUNCiAgICBjaGVja0VudEZ1bmModHlwZSkgew0KICAgICAgbGV0IGNoZWNrRW50RnVuY0RhdGEgPSB7DQogICAgICAgIHR5cGU6IHR5cGUsDQogICAgICAgIGZvcm1EYXRhOiBbdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdXSwNCiAgICAgIH0NCiAgICAgIHRoaXMuJHJvb3QuJGVtaXQoJ3ZhbGlkYXRlRmllbGQnLCBjaGVja0VudEZ1bmNEYXRhKQ0KICAgIH0sDQogICAgLy/ooajljZXmlbDmja7liqDovb0NCiAgICBnZXRGb3JtRGF0YSgpIHsNCiAgICAgIGNvbnN0IHRoaXNfID0gdGhpcw0KICAgICAgaWYgKHRoaXNfLmZvcm1EYXRhLmlkKSB7DQogICAgICAgIGZvcm0uZ2V0RW50RGF0YSh0aGlzXy5mb3JtRGF0YS5pZCwgKHJlc3ApID0+IHsNCiAgICAgICAgICByZXNwLmRhdGEuZW50cy5mb3JFYWNoKChlbnREYXRhLCBpbmRleCkgPT4gew0KICAgICAgICAgICAgaWYgKGVudERhdGEuaXNFeHRlcm5hbCA9PSAnMScgJiYgaW5kZXggPT0gMCkgew0KICAgICAgICAgICAgICBlbnREYXRhLnNob3cgPSAn5Li75a6e5L2TLeWklicNCiAgICAgICAgICAgIH0gZWxzZSBpZiAoZW50RGF0YS5pc0V4dGVybmFsID09ICcxJykgew0KICAgICAgICAgICAgICBlbnREYXRhLnNob3cgPSAn5a2Q5a6e5L2TLeWklicNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkgew0KICAgICAgICAgICAgICBlbnREYXRhLmlzQ2hlY2sgPSB0cnVlDQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoZW50RGF0YS5jaGlsZHJlbikgew0KICAgICAgICAgICAgICBlbnREYXRhLmNoaWxkcmVuLmZvckVhY2goKHYpID0+IHsNCiAgICAgICAgICAgICAgICBpZiAodi5pc0V4dGVybmFsID09ICcxJykgew0KICAgICAgICAgICAgICAgICAgdi5zaG93ID0gJ+WtmeWunuS9ky3lpJYnDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBlbnREYXRhLmF0dHJpYnV0ZUxpc3QubGVuZ3RoOyBxKyspIHsNCiAgICAgICAgICAgICAgaWYgKGVudERhdGEuYXR0cmlidXRlTGlzdFtxXSkgew0KICAgICAgICAgICAgICAgIGlmIChlbnREYXRhLmF0dHJpYnV0ZUxpc3RbcV0uaXNSZXF1aXJlZCA9PSAwKSB7DQogICAgICAgICAgICAgICAgICBlbnREYXRhLmF0dHJpYnV0ZUxpc3RbcV0uaXNSZXF1aXJlZCA9ICcwJw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICBlbnREYXRhLmF0dHJpYnV0ZUxpc3RbcV0uaXNSZXF1aXJlZCA9ICcxJw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVudERhdGEuYXR0cmlidXRlTGlzdC5sZW5ndGggLSAxIC0gcTsgaSsrKSB7DQogICAgICAgICAgICAgICAgaWYgKA0KICAgICAgICAgICAgICAgICAgZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2ldLmluZGV4ID4NCiAgICAgICAgICAgICAgICAgIGVudERhdGEuYXR0cmlidXRlTGlzdFtpICsgMV0uaW5kZXgNCiAgICAgICAgICAgICAgICApIHsNCiAgICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gZW50RGF0YS5hdHRyaWJ1dGVMaXN0W2ldDQogICAgICAgICAgICAgICAgICBlbnREYXRhLmF0dHJpYnV0ZUxpc3RbaV0gPSBlbnREYXRhLmF0dHJpYnV0ZUxpc3RbaSArIDFdDQogICAgICAgICAgICAgICAgICBlbnREYXRhLmF0dHJpYnV0ZUxpc3RbaSArIDFdID0gdGVtcA0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pDQogICAgICAgICAgcmVzcC5kYXRhLmVudHMuZm9yRWFjaCgoZGF0YSkgPT4gew0KICAgICAgICAgICAgZGF0YS5pc0NoZWNrID0gZmFsc2UNCiAgICAgICAgICB9KQ0KICAgICAgICAgIC8v6I635Y+W6YCJ5Lit5a6e5L2TDQogICAgICAgICAgcmVzcC5kYXRhLmVudHNbdGhpc18uZW50SW5kZXhdLmlzQ2hlY2sgPSB0cnVlDQogICAgICAgICAgdGhpc18uJGVtaXQoJ3VwZGF0ZTpmb3JtRGF0YScsIHJlc3AuZGF0YSkNCiAgICAgICAgfSkNCiAgICAgIH0NCiAgICB9LA0KICAgIC8v5Yi35paw5YWD5pWw5o2uDQogICAgcmVsb2FkQnlFbnRJZChlbnQpIHsNCiAgICAgIGxldCBpZCA9IGVudC5pZA0KICAgICAgaWYgKHRoaXMub3BlbkdyYW5kU29uQXR0ciAmJiBlbnQuY2hpbGRyZW4gJiYgZW50LmNoaWxkcmVuLmxlbmd0aCA+IDApIHsNCiAgICAgICAgaWQgPSBlbnQuY2hpbGRyZW5bdGhpcy5ncmFuZFNvbkluZGV4XS5pZA0KICAgICAgfQ0KICAgICAgbGV0IF90aGlzID0gdGhpcw0KICAgICAgZm9ybS5yZWxvYWRCeUVudElkKGlkLCBfdGhpcy5mb3JtRGF0YS5hbGlhcykudGhlbigocmVzcCkgPT4gew0KICAgICAgICBpZiAocmVzcC5zdGF0ZSkgew0KICAgICAgICAgIF90aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgIG1lc3NhZ2U6ICfliLfmlrDmiJDlip8s6Iul5a2X5q615pyJ5Y+Y5YyW6K+36YeN5paw5ouW5ou95a2X5q616K6+6K6h6KGo5Y2VJywNCiAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywNCiAgICAgICAgICB9KQ0KICAgICAgICAgIF90aGlzLmdldEZvcm1EYXRhKCkNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHttZXNzYWdlOiByZXNwLm1lc3NhZ2UsIHR5cGU6ICdlcnJvcid9KQ0KICAgICAgICB9DQogICAgICB9KQ0KICAgIH0sDQogICAgZW50Qmx1cihpbmRleCkgew0KICAgICAgdGhpcy4kZW1pdCgnZW50Qmx1cicsIGluZGV4KQ0KICAgICAgdGhpcy5jaGVja0VudEZ1bmModHJ1ZSkNCiAgICB9LA0KICAgIGNoaW5lc2VGb3JtYXQoaWQsIGxpc3QsIHBhcmFtLCBpbmRleCwgdikgew0KICAgICAgdGhpcy4kZW1pdCgnY2hpbmVzZUZvcm1hdCcsIGlkLCBsaXN0LCBwYXJhbSwgaW5kZXgsIHYpDQogICAgfSwNCiAgICAvL+aWsOWinuWtl+autQ0KICAgIGFkZEF0dHJSb3dzKCkgew0KICAgICAgbGV0IHJvdyA9IHsNCiAgICAgICAgY29tbWVudDogJycsDQogICAgICAgIG5hbWU6ICcnLA0KICAgICAgICBpc1JlcXVpcmVkOiAnMCcsDQogICAgICAgIGRhdGFUeXBlOiAndmFyY2hhcicsDQogICAgICAgIGZvcm1hdDogJycsDQogICAgICAgIGludExlbjogJycsDQogICAgICAgIGF0dHJMZW5ndGg6IDIwMCwNCiAgICAgICAgZGVjaW1hbExlbjogMCwNCiAgICAgICAgaXNOZXc6IHRydWUsDQogICAgICAgIGRlZmF1bHRWYWx1ZTogJycsDQogICAgICAgIGRlc2M6ICcnLA0KICAgICAgICBpbmRleDogdGhpcy5vcGVuR3JhbmRTb25BdHRyDQogICAgICAgICAgPyB0aGlzLnNvbkRhdGEubGVuZ3RoICsgMQ0KICAgICAgICAgIDogdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QubGVuZ3RoICsgMSwNCiAgICAgIH0NCiAgICAgIGlmICh0aGlzLm9wZW5HcmFuZFNvbkF0dHIpIHsNCiAgICAgICAgdGhpcy5zb25EYXRhLnB1c2gocm93KQ0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QucHVzaChyb3cpDQogICAgICB9DQogICAgfSwNCiAgICAvL+aVsOaNruexu+Wei+WIh+aNouiuvue9rum7mOiupOWAvA0KICAgIGRlZmF1bHREYXRhRm9ybWF0KHJvdywgaW5kZXgpIHsNCiAgICAgIGxldCBzZWxlY3RBdHRyID0gdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QNCiAgICAgIGlmICh0aGlzLm9wZW5HcmFuZFNvbkF0dHIpIHsNCiAgICAgICAgc2VsZWN0QXR0ciA9IHRoaXMuc29uRGF0YQ0KICAgICAgfQ0KICAgICAgc2VsZWN0QXR0cltpbmRleF0uYXR0ckxlbmd0aCA9IDANCiAgICAgIHNlbGVjdEF0dHJbaW5kZXhdLmRlY2ltYWxMZW4gPSAwDQogICAgICBzZWxlY3RBdHRyW2luZGV4XS5mb3JtYXQgPSAnJw0KICAgICAgaWYgKHJvdy5kYXRhVHlwZSA9PSAnZGF0ZScpIHsNCiAgICAgICAgc2VsZWN0QXR0cltpbmRleF0uZm9ybWF0ID0gJ3l5eXktTU0tZGQgSEg6bW06c3MnDQogICAgICB9IGVsc2UgaWYgKHJvdy5kYXRhVHlwZSA9PSAndmFyY2hhcicpIHsNCiAgICAgICAgc2VsZWN0QXR0cltpbmRleF0uYXR0ckxlbmd0aCA9IDIwMA0KICAgICAgfSBlbHNlIGlmIChyb3cuZGF0YVR5cGUgPT0gJ251bWJlcicpIHsNCiAgICAgICAgc2VsZWN0QXR0cltpbmRleF0uYXR0ckxlbmd0aCA9IDEwDQogICAgICAgIHNlbGVjdEF0dHJbaW5kZXhdLmRlY2ltYWxMZW4gPSAyDQogICAgICB9DQogICAgfSwNCiAgICBoYW5kbGVDb21tYW5kKHBhcmFtKSB7DQogICAgICBzd2l0Y2ggKHBhcmFtLmNvbW1hbmQpIHsNCiAgICAgICAgY2FzZSAnZGVsJzoNCiAgICAgICAgICB0aGlzLmRlbGV0ZUF0dHJSb3dzKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpDQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSAndXAnOg0KICAgICAgICAgIHRoaXMuYXR0clVwKHBhcmFtLnJvdywgcGFyYW0uaW5kZXgpDQogICAgICAgICAgYnJlYWsNCiAgICAgICAgY2FzZSAnZG93bic6DQogICAgICAgICAgdGhpcy5hdHRyRG93bihwYXJhbS5yb3csIHBhcmFtLmluZGV4KQ0KICAgICAgICAgIGJyZWFrDQogICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgYnJlYWsNCiAgICAgIH0NCiAgICB9LA0KDQogICAgLy8g5Yig6Zmk5a2X5q61IOS8quWIoOmZpCDorr7nva7lrZfmrrUgc3RhdHVzIOWAvCBoaWRlDQogICAgaXNEZWwocm93LCBpbmRleCkgew0KICAgICAgbGV0IGNvdW50ID0gMA0KICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QuZm9yRWFjaCgoaXRlbSkgPT4gew0KICAgICAgICBpZiAoaXRlbS5zdGF0dXMgPT09ICdoaWRlJykgew0KICAgICAgICAgIGNvdW50KysNCiAgICAgICAgfQ0KICAgICAgfSkNCiAgICAgIGlmIChjb3VudCA+PSB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdC5sZW5ndGggLSAxKSB7DQogICAgICAgIHRoaXMuJG1lc3NhZ2Uoe21lc3NhZ2U6ICfmnIDlkI7kuIDkuKrlrZfmrrXkuI3og73liKDpmaTvvIEnLCB0eXBlOiAnd2FybmluZyd9KQ0KICAgICAgICByZXR1cm4NCiAgICAgIH0NCiAgICAgIGlmICghdGhpcy5mb3JtRGF0YS5kZXBsb3llZCkgew0KICAgICAgICBmb3JtDQogICAgICAgICAgLmRlbGV0ZUF0dHIocm93LmlkKQ0KICAgICAgICAgIC50aGVuKChyZXNwKSA9PiB7DQogICAgICAgICAgICBpZiAocmVzcC5kYXRhLnN0YXRlKSB7DQogICAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe21lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlLCB0eXBlOiAnc3VjY2Vzcyd9KQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7bWVzc2FnZTogcmVzcC5kYXRhLm1lc3NhZ2UsIHR5cGU6ICdlcnJvcid9KQ0KICAgICAgICAgICAgICByZXR1cm4NCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9KQ0KICAgICAgICAgIC50aGVuKCgpID0+IHsNCiAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0LnNwbGljZShpbmRleCwgMSkNCiAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0LmZvckVhY2goDQogICAgICAgICAgICAgIChpdGVtLCBhdHRySW5kZXgpID0+IHsNCiAgICAgICAgICAgICAgICBpZiAoYXR0ckluZGV4ID09IGluZGV4KSB7DQogICAgICAgICAgICAgICAgICBpdGVtLmluZGV4ID0gaXRlbS5pbmRleCAtIDENCiAgICAgICAgICAgICAgICAgICsraW5kZXgNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICkNCiAgICAgICAgICAgIGZvcm0uc2F2ZUVudERhdGEodGhpcy5mb3JtRGF0YSkudGhlbigocmVzcCkgPT4gew0KICAgICAgICAgICAgICBpZiAocmVzcC5kYXRhLnN0YXRlKSB7DQogICAgICAgICAgICAgICAgdGhpcy5mb3JtRGF0YS5yZXYrKw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KQ0KICAgICAgICAgIH0pDQogICAgICB9IGVsc2Ugew0KICAgICAgICBmb3JtLnJlbW92ZUF0dHIocm93LCB0aGlzLmZvcm1EYXRhLmFsaWFzKS50aGVuKChyZXNwKSA9PiB7DQogICAgICAgICAgaWYgKHJlc3AuZGF0YS5zdGF0ZSkgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7DQogICAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlICsgJ++8jOW7uuaooeaVsOaNruW3suabtOaWsO+8gScsDQogICAgICAgICAgICAgIHR5cGU6ICdzdWNjZXNzJywNCiAgICAgICAgICAgIH0pDQogICAgICAgICAgICB0aGlzLiRlbWl0KCdnZXRGb3JtRGF0YScpDQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMuJG1lc3NhZ2Uoe21lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlLCB0eXBlOiAnZXJyb3InfSkNCiAgICAgICAgICAgIHJldHVybg0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgIH0NCiAgICB9LA0KICAgIC8v5Yig6Zmk5a2X5q61DQogICAgZGVsZXRlQXR0clJvd3Mocm93LCBpbmRleCkgew0KICAgICAgaWYgKCF0aGlzLm9wZW5HcmFuZFNvbkF0dHIpIHsNCiAgICAgICAgaWYgKHJvdy5pZCA9PSB1bmRlZmluZWQpIHsNCiAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdC5zcGxpY2UoaW5kZXgsIDEpDQogICAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QuZm9yRWFjaCgNCiAgICAgICAgICAgIChpdGVtLCBhdHRySW5kZXgpID0+IHsNCiAgICAgICAgICAgICAgaWYgKGF0dHJJbmRleCA9PSBpbmRleCkgew0KICAgICAgICAgICAgICAgIGl0ZW0uaW5kZXggPSBpdGVtLmluZGV4IC0gMQ0KICAgICAgICAgICAgICAgICsraW5kZXgNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICkNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgICB0aGlzLmlzRGVsKHJvdywgaW5kZXgpDQogICAgICB9IGVsc2Ugew0KICAgICAgICBpZiAoIXJvdy5pZCkgew0KICAgICAgICAgIHRoaXMuYXR0clRhYmxlRGF0YS5zcGxpY2UoaW5kZXgsIDEpDQogICAgICAgICAgdGhpcy5hdHRyVGFibGVEYXRhLmZvckVhY2goKGl0ZW0sIGkpID0+IHsNCiAgICAgICAgICAgIGlmIChpID09IGluZGV4KSB7DQogICAgICAgICAgICAgIGl0ZW0uaW5kZXggPSBpdGVtLmluZGV4IC0gMQ0KICAgICAgICAgICAgICArK2luZGV4DQogICAgICAgICAgICB9DQogICAgICAgICAgfSkNCiAgICAgICAgICByZXR1cm4NCiAgICAgICAgfQ0KICAgICAgICB0aGlzLmlzRGVsKHJvdywgaW5kZXgpDQogICAgICB9DQogICAgfSwNCiAgICBhdHRyVXAocm93LCBpbmRleCkgew0KICAgICAgaWYgKCF0aGlzLm9wZW5HcmFuZFNvbkF0dHIpIHsNCiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXhdLmluZGV4ID0NCiAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdFtpbmRleF0uaW5kZXggLSAxDQogICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0W2luZGV4IC0gMV0uaW5kZXggPQ0KICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0W2luZGV4IC0gMV0uaW5kZXggKyAxDQogICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0ID0gdXRpbHMuYXJyYXlNb3ZlKA0KICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0LA0KICAgICAgICAgIHJvdywNCiAgICAgICAgICAndXAnDQogICAgICAgICkNCiAgICAgIH0gZWxzZSB7DQogICAgICAgIHRoaXMuc29uRGF0YVtpbmRleF0uaW5kZXggPSB0aGlzLnNvbkRhdGFbaW5kZXhdLmluZGV4IC0gMQ0KICAgICAgICB0aGlzLnNvbkRhdGFbaW5kZXggLSAxXS5pbmRleCA9IHRoaXMuc29uRGF0YVtpbmRleCAtIDFdLmluZGV4ICsgMQ0KICAgICAgICB0aGlzLnNvbkRhdGEgPSB1dGlscy5hcnJheU1vdmUodGhpcy5zb25EYXRhLCByb3csICd1cCcpDQogICAgICB9DQogICAgfSwNCiAgICBhdHRyRG93bihyb3csIGluZGV4KSB7DQogICAgICBpZiAoIXRoaXMub3BlbkdyYW5kU29uQXR0cikgew0KICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdFtpbmRleF0uaW5kZXggPQ0KICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5hdHRyaWJ1dGVMaXN0W2luZGV4XS5pbmRleCArIDENCiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXggKyAxXS5pbmRleCA9DQogICAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3RbaW5kZXggKyAxXS5pbmRleCAtIDENCiAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QgPSB1dGlscy5hcnJheU1vdmUoDQogICAgICAgICAgdGhpcy5mb3JtRGF0YS5lbnRzW3RoaXMuZW50SW5kZXhdLmF0dHJpYnV0ZUxpc3QsDQogICAgICAgICAgcm93LA0KICAgICAgICAgICdkb3duJw0KICAgICAgICApDQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLnNvbkRhdGFbaW5kZXhdLmluZGV4ID0gdGhpcy5zb25EYXRhW2luZGV4XS5pbmRleCArIDENCiAgICAgICAgdGhpcy5zb25EYXRhW2luZGV4ICsgMV0uaW5kZXggPSB0aGlzLnNvbkRhdGFbaW5kZXggKyAxXS5pbmRleCAtIDENCiAgICAgICAgdGhpcy5zb25EYXRhID0gdXRpbHMuYXJyYXlNb3ZlKHRoaXMuc29uRGF0YSwgcm93LCAnZG93bicpDQogICAgICB9DQogICAgfSwNCiAgICByZWNvdmVyeShyb3cpIHsNCiAgICAgIGZvcm0ucmVjb3Zlcnkocm93LCB0aGlzLmZvcm1EYXRhLmFsaWFzKS50aGVuKChyZXNwKSA9PiB7DQogICAgICAgIGlmIChyZXNwLmRhdGEuc3RhdGUpIHsNCiAgICAgICAgICB0aGlzLiRtZXNzYWdlKHsNCiAgICAgICAgICAgIG1lc3NhZ2U6IHJlc3AuZGF0YS5tZXNzYWdlICsgJ++8jOW7uuaooeaVsOaNruW3suabtOaWsCcsDQogICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsDQogICAgICAgICAgfSkNCiAgICAgICAgICB0aGlzLiRlbWl0KCdnZXRGb3JtRGF0YScpDQogICAgICAgIH0NCiAgICAgIH0pDQogICAgfSwNCiAgICByZWZyZXNoQXR0cihjYikgew0KICAgICAgbGV0IHBhcmFtID0gew0KICAgICAgICBkc2FsaWFzOiB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uZHNOYW1lLA0KICAgICAgICBpc1RhYmxlOiAnMScsDQogICAgICAgIG9iak5hbWU6IHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS50YWJsZU5hbWUsDQogICAgICB9DQogICAgICBpZiAodGhpcy5vcGVuR3JhbmRTb25BdHRyKSB7DQogICAgICAgIHBhcmFtLm9iak5hbWUgPQ0KICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5jaGlsZHJlblsNCiAgICAgICAgICAgIHRoaXMuZ3JhbmRTb25JbmRleA0KICAgICAgICAgIF0udGFibGVOYW1lDQogICAgICAgIHBhcmFtLmRzYWxpYXMgPQ0KICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5jaGlsZHJlblt0aGlzLmdyYW5kU29uSW5kZXhdLmRzTmFtZQ0KICAgICAgfQ0KICAgICAgZm9ybQ0KICAgICAgICAuZ2V0SGlkZUF0dHIocGFyYW0ub2JqTmFtZSkNCiAgICAgICAgLnRoZW4oKHJlc3ApID0+IHsNCiAgICAgICAgICBpZiAocmVzcCkgew0KICAgICAgICAgICAgdGhpcy5oaWRlQXR0ciA9IHJlc3ANCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICAgIC50aGVuKCgpID0+IHsNCiAgICAgICAgICBmb3JtDQogICAgICAgICAgICAuZ2V0VGFibGVMaXN0KHBhcmFtKQ0KICAgICAgICAgICAgLnRoZW4oKHJlc3ApID0+IHsNCiAgICAgICAgICAgICAgdGhpcy5pc0V4aXQgPSBmYWxzZQ0KICAgICAgICAgICAgICB0aGlzLnJlZnJlc2hEYXRhID0gcmVzcA0KICAgICAgICAgICAgfSkNCiAgICAgICAgICAgIC50aGVuKCgpID0+IHsNCiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZnJlc2hEYXRhLmRhdGEubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWZyZXNoRGF0YS5kYXRhW2ldLm5hbWUgPT0gcGFyYW0ub2JqTmFtZSkgew0KICAgICAgICAgICAgICAgICAgLy8g5Yig6Zmk5Li76ZSu5ZKM5aSW6ZSuDQogICAgICAgICAgICAgICAgICB0aGlzLiRodHRwDQogICAgICAgICAgICAgICAgICAgIC5nZXQoDQogICAgICAgICAgICAgICAgICAgICAgJyR7Zm9ybX0vYm8vZGVmL3YxL3JlbG9hZEJ5RW50SWQ/ZW50SWQ9JyArDQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uaWQNCiAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcCkgPT4gew0KICAgICAgICAgICAgICAgICAgICAgIGxldCBqc29uID0gSlNPTi5wYXJzZSgNCiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHJlc3AuZGF0YS50YWJsZS5jb2x1bW5MaXN0KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvY2hhckxlbi9nLCAnYXR0ckxlbmd0aCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9maWVsZE5hbWUvZywgJ25hbWUnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvY29sdW1uVHlwZS9nLCAnZGF0YVR5cGUnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvZmRhdGFUeXBlL2csICdmY29sdW1uVHlwZScpDQogICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAgIGxldCBfdGhpcyA9IHRoaXMNCiAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHt9DQogICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGlkZUF0dHIubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGF0dHIgPSAnJw0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWRlQXR0ci5mb3JFYWNoKCh2KSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIgKz0gdi5maWVsZE5hbWUgKyAnLCcNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgICAgICBqc29uID0ganNvbi5maWx0ZXIoKHZhbHVlKSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAhYXR0ci5pbmNsdWRlcyh2YWx1ZS5maWVsZE5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICB9KQ0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVuR3JhbmRTb25BdHRyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uY2hpbGRyZW5bDQogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhbmRTb25JbmRleA0KICAgICAgICAgICAgICAgICAgICAgICAgXS5hdHRyaWJ1dGVMaXN0ID0ganNvbg0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9DQogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5jaGlsZHJlblsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyYW5kU29uSW5kZXgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgXQ0KICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdCA9IGpzb24NCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0NCiAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgZGF0YS5hdHRyaWJ1dGVMaXN0ID0gZGF0YS5hdHRyaWJ1dGVMaXN0LmZpbHRlcigoaXRlbSkgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IGl0ZW0ubmFtZS50b1VwcGVyQ2FzZSgpDQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAhaXRlbS5pc1BrICYmDQogICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAhPSAnRl9GT1JNX0RBVEFfUkVWXycgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsICE9ICdSRUZfSURfJyAmJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAoIV90aGlzLmZvcm1EYXRhLmVudHMuZmsgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgIT0gX3RoaXMuZm9ybURhdGEuZW50cy5may50b1VwcGVyQ2FzZSgpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgKQ0KICAgICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgICAgZGF0YS5hdHRyaWJ1dGVMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7DQogICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmluZGV4ID0gaW5kZXggKyAxDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS5hdHRyTGVuZ3RoID09IDAgJiYgaXRlbS5pbnRMZW4gIT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmF0dHJMZW5ndGggPSBpdGVtLmludExlbg0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICAgICAgdGhpcy4kbWVzc2FnZSh7bWVzc2FnZTogJ+WIt+aWsOaIkOWKnycsIHR5cGU6ICdzdWNjZXNzJ30pDQogICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0V4aXQgPSB0cnVlDQogICAgICAgICAgICAgICAgICAgIH0pDQogICAgICAgICAgICAgICAgICBicmVhaw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsNCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNFeGl0KSB7DQogICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcGVuR3JhbmRTb25BdHRyKSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybURhdGEuZW50c1t0aGlzLmVudEluZGV4XS5jaGlsZHJlblsNCiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyYW5kU29uSW5kZXgNCiAgICAgICAgICAgICAgICAgICAgXS5hdHRyaWJ1dGVMaXN0ID0gW10NCiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRHcmFuZFNvbkVudHNCeUluZGV4KA0KICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JhbmRTb25JbmRleCwNCiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVudEluZGV4DQogICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVudEluZGV4ID09IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICBmb3JtLnJlbW92ZUJ1c2luZXNzT2JqKHRoaXMuZm9ybURhdGEuaWQpLnRoZW4oKCkgPT4gew0KICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVEaWFsb2dDbG9zZSgpDQogICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EYXRhLmVudHNbdGhpcy5lbnRJbmRleF0uYXR0cmlidXRlTGlzdCA9IFtdDQogICAgICAgICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnZ2V0RW50c0J5SW5kZXgnLCB0aGlzLmVudEluZGV4KQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICB9LCA1MDApDQogICAgICAgICAgICAgIHRoaXMuaXNFeGl0ID0gZmFsc2UNCiAgICAgICAgICAgIH0pDQogICAgICAgIH0pDQogICAgfSwNCiAgfSwNCiAgbW91bnRlZCgpIHsNCiAgICBsZXQgX3RoaXMgPSB0aGlzDQogICAgZG9jdW1lbnQub25rZXlkb3duID0gZnVuY3Rpb24gKCkgew0KICAgICAgaWYgKF90aGlzLmZvcm1EYXRhLmVudHMgJiYgX3RoaXMuZm9ybURhdGEuZW50cy5sZW5ndGggPiAwKSB7DQogICAgICAgIGxldCBrZXkgPSB3aW5kb3cuZXZlbnQua2V5Q29kZQ0KICAgICAgICBpZiAoa2V5ID09IDExMykgew0KICAgICAgICAgIC8vPT0gODMgJiYgZXZlbnQuY3RybEtleQ0KICAgICAgICAgIF90aGlzLmFkZEF0dHJSb3dzKCkNCiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIF90aGlzLiRyZWZzLmF0dHJUYWJsZVNjcm9sbGJhckhlaWdodC5ib2R5V3JhcHBlci5zY3JvbGxUb3AgPQ0KICAgICAgICAgICAgICBfdGhpcy4kcmVmcy5hdHRyVGFibGVTY3JvbGxiYXJIZWlnaHQuYm9keVdyYXBwZXIuc2Nyb2xsSGVpZ2h0DQogICAgICAgICAgfSwgNTAwKQ0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICB9LA0KfQ0K"},null]}