{"remainingRequest":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\bindUser\\components\\TablePage\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\bindUser\\components\\TablePage\\index.vue","mtime":1750709332732},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\babel.config.js","mtime":1741314102158},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\thread-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9vYmplY3RTcHJlYWQgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLml0ZXJhdG9yLm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IHsgcmVmaW5lUmVxdWVzdEJvZHksIHNldFF1ZXJ5VmFsdWUgfSBmcm9tICdAL3V0aWxzL3JlcXVlc3RXcmFwcGVycyc7CmltcG9ydCBwYWdpbmF0aW9uIGZyb20gJ0AvY29tcG9uZW50cy9TdXBlclBhZ2luYXRpb24vaW5kZXgudnVlJzsKaW1wb3J0IHsgVGFibGVNaXhpbiB9IGZyb20gJ0AvbWl4aW5zL3RhYmxlTWl4aW4nOwppbXBvcnQgdHJlZVNpZGUgZnJvbSAnQC9jb21wb25lbnRzL3RyZWVTaWRlL2luZGV4LnZ1ZSc7CmltcG9ydCBTZWFyY2hDb21tb24gZnJvbSAnQC9jb21wb25lbnRzL1NlYXJjaENvbW1vbi9pbmRleC52dWUnOwppbXBvcnQgeyBnZXRUcmVlLCB0YWJsZURhdGEsIHRhYmxlRGVsZXRlLCB0cmVlRGVsZXRlIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvYmluZFVzZXInOwppbXBvcnQgUHViU3ViIGZyb20gJ3B1YnN1Yi1qcyc7CmltcG9ydCB7IGRpY3Rpb25hcnlFc2NhcGUgfSBmcm9tICdAL3V0aWxzL2RpY3Rpb25hcnknOwovLyDot6/mrrUKaW1wb3J0IHsgdGFibGVEYXRhIGFzIGxvYWRSb2FkIH0gZnJvbSAnQC9hcGkvcGF0cm9sQW5kUmVzY3VlL2luZm9NZ210UGF0cm9sc1Jlc2N1ZXMvcm9hZFNlY3Rpb25JbmZvJzsKaW1wb3J0IENhckNob2ljZURpYWxvZyBmcm9tICdAL3ZpZXdzL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL2JpbmRVc2VyL2NvbXBvbmVudHMvQ2FyQ2hvaWNlRGlhbG9nJzsKLy8g5pWR5o+054K5CmltcG9ydCB7IHRhYmxlRGF0YSBhcyByZXNjdWVQb2ludCB9IGZyb20gJ0AvYXBpL3BhdHJvbEFuZFJlc2N1ZS9pbmZvTWdtdFBhdHJvbHNSZXNjdWVzL3Jlc2N1ZVNpdGVNZ210JzsKZXhwb3J0IGRlZmF1bHQgewogIG5hbWU6ICdUYWJsZVBhZ2UnLAogIGNvbXBvbmVudHM6IHsKICAgIENhckNob2ljZURpYWxvZzogQ2FyQ2hvaWNlRGlhbG9nLAogICAgcGFnaW5hdGlvbjogcGFnaW5hdGlvbiwKICAgIHRyZWVTaWRlOiB0cmVlU2lkZSwKICAgIFNlYXJjaENvbW1vbjogU2VhcmNoQ29tbW9uCiAgfSwKICBtaXhpbnM6IFtUYWJsZU1peGluXSwKICBkYXRhOiBmdW5jdGlvbiBkYXRhKCkgewogICAgcmV0dXJuIHsKICAgICAgYWRkRWRpdEZvcm06IHsKICAgICAgICBjYXI6IHt9CiAgICAgIH0sCiAgICAgIGNhckRhdGE6IHt9LAogICAgICBjYXJDaG9pY2VEaWFsb2c6IGZhbHNlLAogICAgICBpc0FkZERpc2FibGVkOiB0cnVlLAogICAgICAvLyDmlrDlop7mjInpkq7mmK/lkKbnpoHnlKgKICAgICAgcHViU3ViOiBudWxsLAogICAgICB0YWJsZU1heEhlaWdodDogJzYwMHB4JywKICAgICAgbG9hZGluZzogZmFsc2UsCiAgICAgIHRyZWVMb2FkaW5nOiB0cnVlLAogICAgICB0YWJsZUxvYWRpbmc6IGZhbHNlLAogICAgICB0cmVlRGF0YTogW10sCiAgICAgIC8v5bem6L655qCRCiAgICAgIHRhYkxpc3Q6IFsn6KGM5pS/57u05bqmJ10sCiAgICAgIC8v5bem6L65dGFiCiAgICAgIGRlZmF1bHRQcm9wczogewogICAgICAgIGNoaWxkcmVuOiAnY2hpbGRyZW4nLAogICAgICAgIGxhYmVsOiAnbmFtZScKICAgICAgfSwKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgY3VycmVudERhdGFEZWw6IFtdLAogICAgICBvcHRpb25MaXN0OiBbewogICAgICAgIHRpdGxlOiAn55So5oi35aeT5ZCNJywKICAgICAgICBwcm9wOiAndG0ubmFtZV8nLAogICAgICAgIHR5cGU6ICdpbnB1dCcsCiAgICAgICAgZGVmYXVsdDogdHJ1ZQogICAgICB9LCB7CiAgICAgICAgdGl0bGU6ICfotKblj7flkI0nLAogICAgICAgIHByb3A6ICdhY2NvdW50JywKICAgICAgICB0eXBlOiAnaW5wdXQnLAogICAgICAgIGRlZmF1bHQ6IHRydWUKICAgICAgfSwgewogICAgICAgIHRpdGxlOiAn55S16K+dJywKICAgICAgICBwcm9wOiAndG0udGVsXycsCiAgICAgICAgdHlwZTogJ2lucHV0JywKICAgICAgICBkZWZhdWx0OiB0cnVlCiAgICAgIH1dLAogICAgICBwYXJhbXM6IHsKICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgcGFnZVNpemU6IDIwLAogICAgICAgICAgcGFnZTogMSwKICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgfSwKICAgICAgICBxdWVyeXM6IFt7CiAgICAgICAgICBvcGVyYXRpb246ICdJTicsCiAgICAgICAgICBwcm9wZXJ0eTogJ2JtLnRlYW1faWRfJwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAncXVpY2snLAogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICByZWxhdGlvbjogJ09SJywKICAgICAgICAgIHByb3BlcnR5OiAnYWNjb3VudCcKICAgICAgICB9LCB7CiAgICAgICAgICBncm91cDogJ3F1aWNrJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0xJS0UnLAogICAgICAgICAgcmVsYXRpb246ICdPUicsCiAgICAgICAgICBwcm9wZXJ0eTogJ3RtLm5hbWVfJwogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAncXVpY2snLAogICAgICAgICAgb3BlcmF0aW9uOiAnTElLRScsCiAgICAgICAgICByZWxhdGlvbjogJ09SJywKICAgICAgICAgIHByb3BlcnR5OiAndG0udGVsXycKICAgICAgICB9XSwKICAgICAgICBzb3J0ZXI6IFtdCiAgICAgIH0sCiAgICAgIHRyZWVEaWFsb2c6IGZhbHNlLAogICAgICAvLyDnp5Hnm67kv6Hmga/lvLnlsYIKICAgICAgdHJlZUl0ZW1JZDogJycsCiAgICAgIC8vIOagkeW9ouebruW9lWlkCiAgICAgIHRyZWVJdGVtOiB7fSwKICAgICAgLy8g5qCR5b2i6IqC54K56YCJ5Lit5a+56LGhCiAgICAgIHRyZWVJdGVtUGFyZW50SWQ6ICcnLAogICAgICAvLyDmoJHlvaLnm67lvZXniLbnuqdpZAogICAgICByZXNjdWVQb2ludE9wdGlvbnM6IFtdLAogICAgICByb2FkT3B0aW9uczogW10KICAgIH07CiAgfSwKICBjcmVhdGVkOiBmdW5jdGlvbiBjcmVhdGVkKCkgewogICAgdmFyIF90aGlzID0gdGhpczsKICAgIC8vIOiOt+WPluagkeW9ouebruW9lS0KICAgIHRoaXMuZ2V0T3JnVHJlZURhdGEoZnVuY3Rpb24gKHRyZWVEYXRhKSB7CiAgICAgIGNvbnNvbGUubG9nKHRyZWVEYXRhLCAndHJlZURhdGEnKTsKICAgICAgLy8g5Zue6LCD5Lit6buY6K6k6YCJ5Lit56ys5LiA6aG55bm25bCG5YW2aWTkvZzkuLrlj4LmlbDor7fmsYLooajmoLwKICAgICAgX3RoaXMudHJlZUl0ZW0gPSB0cmVlRGF0YVswXSB8fCB7fTsKICAgICAgdmFyIGFycmF5ID0gW107CiAgICAgIGlmIChfdGhpcy50cmVlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgYXJyYXkgPSBfdGhpcy50cmVlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIF90aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIHZhciBfdGhpcyQkcmVmcyR0cmVlU2lkZSwgX3RyZWVEYXRhJCwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyOwogICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZSA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZSA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoKF90cmVlRGF0YSQgPSB0cmVlRGF0YVswXSkgPT09IG51bGwgfHwgX3RyZWVEYXRhJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyZWVEYXRhJC5pZCk7IC8v6YCa6L+HICRyZWZzIOiOt+WPlnRyZWVTaWRl57uE5Lu25byV55So77yM5bm26LCD55SoIHNldEN1cnJlbnRLZXnmlrnms5Xorr7nva7lvZPliY3pgInkuK3nmoTmoJHoioLngrnjgIIKICAgICAgICAoX3RoaXMkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXMuJHJlZnMudHJlZVNpZGUpID09PSBudWxsIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgMik7CiAgICAgIH0pOwogICAgICBzZXRRdWVyeVZhbHVlKF90aGlzLnBhcmFtcywgJ2JtLnRlYW1faWRfJywgYXJyYXkpOyAvL+WwhumAieS4reeahOagkeiKgueCueeahCBwYXRoIOiuvue9ruS4uuafpeivouWPguaVsOeahOS4gOmDqOWIhu+8jOeUqOS6juWQjue7reeahOihqOagvOaVsOaNruivt+axguOAggogICAgICBfdGhpcy5sb2FkRGF0YSgpOyAvL+WKoOi9veihqOagvOaVsOaNrgogICAgfSk7CiAgICB0aGlzLmxvYWRSb2FkRGF0YSgpOwogICAgdGhpcy5sb2FkUmVzY3VlUG9pbnREYXRhKCk7CiAgICAvLyB0aGlzLmxvYWREYXRhKCkKICB9LAogIG1vdW50ZWQ6IGZ1bmN0aW9uIG1vdW50ZWQoKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKICAgIHRoaXMucHViU3ViID0gUHViU3ViLnN1YnNjcmliZSgnVGFibGVQYWdlJywgZnVuY3Rpb24gKF8sIGRhdGEpIHsKICAgICAgc3dpdGNoIChkYXRhLnR5cGUpIHsKICAgICAgICBjYXNlICdhZGQnOgogICAgICAgICAgX3RoaXMyLnBhcmFtcy5wYWdlQmVhbi5wYWdlID0gMTsKICAgICAgICAgIF90aGlzMi5sb2FkRGF0YSgpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnZWRpdCc6CiAgICAgICAgICBfdGhpczIubG9hZERhdGEoKTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9KTsKICB9LAogIG1ldGhvZHM6IHsKICAgIC8vIOiOt+WPluWFrOWPuOagkS3lvILmraXmlrnms5XvvIznlKjkuo7ku47lkI7nq6/ojrflj5bmoJHlvaLmlbDmja4KICAgIGdldE9yZ1RyZWVEYXRhOiBmdW5jdGlvbiBnZXRPcmdUcmVlRGF0YShjYWxsYmFjaykgewogICAgICB2YXIgX3RoaXMzID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBfeWllbGQkZ2V0VHJlZSwgdmFsdWU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDA7CiAgICAgICAgICAgICAgX3RoaXMzLnRyZWVMb2FkaW5nID0gdHJ1ZTsgLy/lvIDlp4vliqDovb3ml7bmmL7npLrliqDovb3nirbmgIEKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNDsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgpOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX3lpZWxkJGdldFRyZWUgPSBfY29udGV4dC5zZW50OwogICAgICAgICAgICAgIHZhbHVlID0gX3lpZWxkJGdldFRyZWUudmFsdWU7CiAgICAgICAgICAgICAgLy8g6LCD55SoIEFQSSDojrflj5bmoJHlvaLmlbDmja4KICAgICAgICAgICAgICBfdGhpczMudHJlZURhdGEgPSBfdGhpczMudHJhbnNmb3JtVHJlZURhdGEodmFsdWUpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDc7CiAgICAgICAgICAgICAgX3RoaXMzLnRyZWVMb2FkaW5nID0gZmFsc2U7IC8vIOaXoOiuuuaIkOWKn+aIluWksei0pe+8jOmDveWFs+mXreWKoOi9veeKtuaAgQogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzMy50cmVlRGF0YSk7IC8vIOWmguaenOaPkOS+m+S6huWbnuiwg+WHveaVsO+8jOWImeiwg+eUqOWug+W5tuS8oOWFpeagkeW9ouaVsOaNrgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goNyk7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlLCBudWxsLCBbWzAsLCA3LCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgaGFuZGxlQ2FyU2VsZWN0OiBmdW5jdGlvbiBoYW5kbGVDYXJTZWxlY3QoKSB7CiAgICAgIHRoaXMubG9hZERhdGEoKTsKICAgIH0sCiAgICB0cmFuc2Zvcm1UcmVlRGF0YTogZnVuY3Rpb24gdHJhbnNmb3JtVHJlZURhdGEoZGF0YSkgewogICAgICB2YXIgY29tYmluYXRpb24gPSBkYXRhOwogICAgICBjb21iaW5hdGlvbi5uYW1lID0gZGF0YS5uYW1lICsgJygnICsgZGF0YS5tZW1iZXJOdW0gKyAnKSc7CiAgICAgIGNvbWJpbmF0aW9uLmNoaWxkcmVuID0gY29tYmluYXRpb24ub3JnTGlzdC5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgaWQ6IGl0ZW0uaWQsCiAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUgKyAnKCcgKyBpdGVtLm1lbWJlck51bSArICcpJywKICAgICAgICAgIC8vIOS4gOe6p+ebruW9leeahCBsYWJlbAogICAgICAgICAgY2hpbGRyZW46IGl0ZW0udGVhbUxpc3QubWFwKGZ1bmN0aW9uIChncmlkKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgaWQ6IGdyaWQuaWQsCiAgICAgICAgICAgICAgbmFtZTogZ3JpZC5uYW1lICsgJygnICsgZ3JpZC5tZW1iZXJOdW0gKyAnKScsCiAgICAgICAgICAgICAgLy8g5LqM57qn55uu5b2V55qEIGxhYmVsCiAgICAgICAgICAgICAgcGF0aDogZ3JpZC5wYXRoLAogICAgICAgICAgICAgIHJvYWRJZDogZ3JpZC5yb2FkSWQsCiAgICAgICAgICAgICAgcm9hZE5hbWU6IGdyaWQucm9hZE5hbWUKICAgICAgICAgICAgfTsKICAgICAgICAgIH0pCiAgICAgICAgfTsKICAgICAgfSk7CiAgICAgIHJldHVybiBbY29tYmluYXRpb25dOwogICAgfSwKICAgIGRpY3Rpb25hcnlFc2NhcGU6IGRpY3Rpb25hcnlFc2NhcGUsCiAgICAvLyDot6/mrrXkv6Hmga8KICAgIGxvYWRSb2FkRGF0YTogZnVuY3Rpb24gbG9hZFJvYWREYXRhKCkgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJGxvYWRSb2FkLCBfeWllbGQkbG9hZFJvYWQkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gbG9hZFJvYWQoewogICAgICAgICAgICAgICAgcGFnZUJlYW46IHsKICAgICAgICAgICAgICAgICAgcGFnZVNpemU6IC0xLAogICAgICAgICAgICAgICAgICBwYWdlOiAxLAogICAgICAgICAgICAgICAgICB0b3RhbDogMAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJGxvYWRSb2FkID0gX2NvbnRleHQyLnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJGxvYWRSb2FkJHJvd3MgPSBfeWllbGQkbG9hZFJvYWQucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJGxvYWRSb2FkJHJvd3MgPT09IHZvaWQgMCA/IHt9IDogX3lpZWxkJGxvYWRSb2FkJHJvd3M7CiAgICAgICAgICAgICAgX3RoaXM0LnJvYWRPcHRpb25zID0gcm93czsKICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsiY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfY29udGV4dDIudDApOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUyLCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOaVkeaPtOeCueS/oeaBrwogICAgbG9hZFJlc2N1ZVBvaW50RGF0YTogZnVuY3Rpb24gbG9hZFJlc2N1ZVBvaW50RGF0YSgpIHsKICAgICAgdmFyIF90aGlzNSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIF95aWVsZCRyZXNjdWVQb2ludCwgX3lpZWxkJHJlc2N1ZVBvaW50JHJvLCByb3dzOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDA7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiByZXNjdWVQb2ludCh7CiAgICAgICAgICAgICAgICBwYWdlQmVhbjogewogICAgICAgICAgICAgICAgICBwYWdlU2l6ZTogLTEsCiAgICAgICAgICAgICAgICAgIHBhZ2U6IDEsCiAgICAgICAgICAgICAgICAgIHRvdGFsOiAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkcmVzY3VlUG9pbnQgPSBfY29udGV4dDMuc2VudDsKICAgICAgICAgICAgICBfeWllbGQkcmVzY3VlUG9pbnQkcm8gPSBfeWllbGQkcmVzY3VlUG9pbnQucm93czsKICAgICAgICAgICAgICByb3dzID0gX3lpZWxkJHJlc2N1ZVBvaW50JHJvID09PSB2b2lkIDAgPyB7fSA6IF95aWVsZCRyZXNjdWVQb2ludCRybzsKICAgICAgICAgICAgICBfdGhpczUucmVzY3VlUG9pbnRPcHRpb25zID0gcm93czsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDEyOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSA5OwogICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IF9jb250ZXh0M1siY2F0Y2giXSgwKTsKICAgICAgICAgICAgICBjb25zb2xlLmxvZyhfY29udGV4dDMudDApOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWUzLCBudWxsLCBbWzAsIDldXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8v6I635Y+W56eR55uu5qCRCiAgICBnZXRUcmVlRGF0YTogZnVuY3Rpb24gZ2V0VHJlZURhdGEoY2FsbGJhY2spIHsKICAgICAgdmFyIF90aGlzNiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gZ2V0VHJlZSgnMycpOwogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQwID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnQxID0gewogICAgICAgICAgICAgICAgbmFtZTogJ+inhOeroOWItuW6picsCiAgICAgICAgICAgICAgICBlZGl0OiAxLAogICAgICAgICAgICAgICAgaWQ6ICcnLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6ICcnLAogICAgICAgICAgICAgICAgY2hpbGRyZW46IF9jb250ZXh0NC50MAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX3RoaXM2LnRyZWVEYXRhID0gW19jb250ZXh0NC50MV07CiAgICAgICAgICAgICAgLy8g5L+d6K+B6YeN5paw5Yi35paw5qCR5pWw5o2u5ZCO77yM6YCJ5Lit5pWI5p6c5LiN5aSx5pWICiAgICAgICAgICAgICAgaWYgKF90aGlzNi50cmVlSXRlbS5pZCkgewogICAgICAgICAgICAgICAgX3RoaXM2LiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgICAgICAgICAgICB2YXIgX3RoaXM2JCRyZWZzJHRyZWVTaWRlOwogICAgICAgICAgICAgICAgICAoX3RoaXM2JCRyZWZzJHRyZWVTaWRlID0gX3RoaXM2LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczYkJHJlZnMkdHJlZVNpZGUgPT09IHZvaWQgMCB8fCBfdGhpczYkJHJlZnMkdHJlZVNpZGUuc2V0Q3VycmVudEtleShfdGhpczYudHJlZUl0ZW0uaWQpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGNhbGxiYWNrICYmIGNhbGxiYWNrKF90aGlzNi50cmVlRGF0YSk7CiAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8v5bem6L655qCR6IqC54K5CiAgICBjdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBjdXJyZW50Q2hhbmdlKG5vZGVJdGVtKSB7CiAgICAgIGNvbnNvbGUubG9nKG5vZGVJdGVtLCAn5qCR6IqC54K554K55Ye7Jyk7CiAgICAgIC8vIOWIpOaWreaYr+WQpuaYr+S4gOe6p+ebruW9le+8iOaciSBjaGlsZHJlbiDlsZ7mgKfvvIkKICAgICAgaWYgKG5vZGVJdGVtLmNoaWxkcmVuICYmIG5vZGVJdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgICB0aGlzLmlzQWRkRGlzYWJsZWQgPSB0cnVlOyAvLyDnpoHnlKjmlrDlop7mjInpkq4KICAgICAgICB2YXIgYXJyYXkgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdibS50ZWFtX2lkXycsIGFycmF5KTsKICAgICAgICAvLyB0aGlzLiRtZXNzYWdlLndhcm5pbmcoJ+ivt+mAieaLqeS6jOe6p+ebruW9lei/m+ihjOaWsOWinuaTjeS9nCcpCiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pc0FkZERpc2FibGVkID0gZmFsc2U7IC8vIOWQr+eUqOaWsOWinuaMiemSrgogICAgICAgIC8vIOS/ruaUueWvueW6lOeahOWtl+auteWAvAogICAgICAgIHNldFF1ZXJ5VmFsdWUodGhpcy5wYXJhbXMsICdibS50ZWFtX2lkXycsIFtub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWRdIHx8IFtdKTsKICAgICAgfQoKICAgICAgLy8g5Yik5pat5aaC5p6c54K55Ye75pivIOWFqOmDqCDpu5jorqTkvKDnqbrmlbDnu4QKICAgICAgaWYgKG5vZGVJdGVtLm9yZ0xpc3QpIHsKICAgICAgICBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnYm0udGVhbV9pZF8nLCBbXSk7CiAgICAgIH0KCiAgICAgIC8vIOS/ruaUueWvueW6lOeahOWtl+auteWAvAogICAgICAvLyBzZXRRdWVyeVZhbHVlKHRoaXMucGFyYW1zLCAnY2F0YWxvZ19mdWxsX2lkXyAnLCBub2RlSXRlbT8uaWQgfHwgJycpCiAgICAgIHRoaXMudHJlZUl0ZW0gPSBub2RlSXRlbSB8fCB7fTsKICAgICAgdGhpcy5jYWxjVGFibGVIZWlnaHQoNTAwKTsKICAgICAgUHViU3ViLnB1Ymxpc2goJ1RyZWVJdGVtU2VsZWN0ZWQnLCB7CiAgICAgICAgaWQ6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0uaWQpIHx8ICcnLAogICAgICAgIG5hbWU6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ubmFtZSkgfHwgJycsCiAgICAgICAgcGF0aDogKG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5wYXRoKSB8fCAnJywKICAgICAgICByb2FkSWQ6IChub2RlSXRlbSA9PT0gbnVsbCB8fCBub2RlSXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogbm9kZUl0ZW0ucm9hZElkKSB8fCAnJyAvLyDnoa7kv53moJHoioLngrnmlbDmja7ljIXlkKsgcm9hZElkLy/njrDlnKjov5jmsqHmnIkKICAgICAgfSk7CiAgICAgIHRoaXMucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgPSAxOwogICAgICB0aGlzLmxvYWREYXRhKCk7CiAgICB9LAogICAgLy/ojrflj5bmlbDmja4KICAgIGxvYWREYXRhOiBmdW5jdGlvbiBsb2FkRGF0YSgpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoKSB7CiAgICAgICAgdmFyIF95aWVsZCR0YWJsZURhdGEsIF95aWVsZCR0YWJsZURhdGEkdG90YSwgdG90YWwsIF95aWVsZCR0YWJsZURhdGEkcm93cywgcm93czsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX3RoaXM3LnRhYmxlTG9hZGluZyA9IHRydWU7CiAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURhdGEocmVmaW5lUmVxdWVzdEJvZHkoX3RoaXM3LnBhcmFtcykpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSA9IF9jb250ZXh0NS5zZW50OwogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURhdGEkdG90YSA9IF95aWVsZCR0YWJsZURhdGEudG90YWw7CiAgICAgICAgICAgICAgdG90YWwgPSBfeWllbGQkdGFibGVEYXRhJHRvdGEgPT09IHZvaWQgMCA/IDAgOiBfeWllbGQkdGFibGVEYXRhJHRvdGE7CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGF0YSRyb3dzID0gX3lpZWxkJHRhYmxlRGF0YS5yb3dzOwogICAgICAgICAgICAgIHJvd3MgPSBfeWllbGQkdGFibGVEYXRhJHJvd3MgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJHRhYmxlRGF0YSRyb3dzOwogICAgICAgICAgICAgIF90aGlzNy5wYXJhbXMucGFnZUJlYW4udG90YWwgPSB0b3RhbDsKICAgICAgICAgICAgICBfdGhpczcudGFibGVEYXRhID0gcm93cy5tYXAoZnVuY3Rpb24gKHJvdykgewogICAgICAgICAgICAgICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgcm93KSwge30sIHsKICAgICAgICAgICAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCBfdGhpczcudHJlZUl0ZW0ubmFtZSAvLyDlpoLmnpwgcm93Lm9yZ05hbWUg5Li656m677yM5L2/55SoIHRyZWVJdGVtLm5hbWUKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIGNvbnNvbGUubG9nKF90aGlzNy50YWJsZURhdGEsICfmlbDmja4nKTsKICAgICAgICAgICAgICBfdGhpczcudGFibGVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDmoJHoioLngrnmk43kvZwKICAgIG9wZXJhdGVFdmVudDogZnVuY3Rpb24gb3BlcmF0ZUV2ZW50KHR5cGUsIGRhdGEpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgIGNhc2UgJ+aWsOWinic6CiAgICAgICAgICB0aGlzLnRyZWVJdGVtUGFyZW50SWQgPSBkYXRhLmlkOwogICAgICAgICAgdGhpcy50cmVlRGlhbG9nID0gdHJ1ZTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ+e8lui+kSc6CiAgICAgICAgICB0aGlzLnRyZWVJdGVtSWQgPSBkYXRhLmlkOwogICAgICAgICAgdGhpcy50cmVlSXRlbVBhcmVudElkID0gZGF0YS5wYXJlbnRJZDsKICAgICAgICAgIHRoaXMudHJlZURpYWxvZyA9IHRydWU7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICfliKDpmaQnOgogICAgICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6YCJ5Lit6L2m6L6G5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7orqQnLAogICAgICAgICAgICBjYW5jZWxCdXR0b25UZXh0OiAn5Y+W5raIJywKICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgICAgIHZhciBfeWllbGQkdHJlZURlbGV0ZSwgc3RhdGU7CiAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7CiAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDI7CiAgICAgICAgICAgICAgICAgIHJldHVybiB0cmVlRGVsZXRlKGRhdGEuaWQpOwogICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICBfeWllbGQkdHJlZURlbGV0ZSA9IF9jb250ZXh0Ni5zZW50OwogICAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCR0cmVlRGVsZXRlLnN0YXRlOwogICAgICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICBfdGhpczguJG1lc3NhZ2Uuc3VjY2VzcygiXHU1MjIwXHU5NjY0XHU4RjY2XHU4Rjg2XHU2MjEwXHU1MjlGIik7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLmVycm9yKCJcdTUyMjBcdTk2NjRcdThGNjZcdThGODZcdTU5MzFcdThEMjUiKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDc7CiAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczguZ2V0VHJlZURhdGEoKTsKICAgICAgICAgICAgICAgIGNhc2UgNzoKICAgICAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDYuc3RvcCgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwgX2NhbGxlZTYpOwogICAgICAgICAgfSkpKS5jYXRjaChmdW5jdGlvbiAoXykgewogICAgICAgICAgICByZXR1cm4gXzsKICAgICAgICAgIH0pOwogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0sCiAgICAvLyDnm67lvZXmlLnlj5gKICAgIGNhdGFsb2dDaGFuZ2U6IGZ1bmN0aW9uIGNhdGFsb2dDaGFuZ2UoZGlhbG9nTmFtZSkgewogICAgICB2YXIgX3RoaXM5ID0gdGhpczsKICAgICAgdGhpcy5nZXRUcmVlRGF0YShmdW5jdGlvbiAoXykgewogICAgICAgIHJldHVybiBfdGhpczlbZGlhbG9nTmFtZV0gPSBmYWxzZTsKICAgICAgfSk7CiAgICB9LAogICAgLy8g5bGV56S65by55bGCCiAgICBzaG93RGlhbG9nOiBmdW5jdGlvbiBzaG93RGlhbG9nKGRpYWxvZ05hbWUpIHsKICAgICAgaWYgKCFkaWFsb2dOYW1lKSByZXR1cm47CiAgICAgIGlmIChkaWFsb2dOYW1lID09PSAndXNlckNob2ljZScpIHsKICAgICAgICBpZiAoIXRoaXMuYWRkRWRpdEZvcm0udGVhbUlkKSB7CiAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCfor7flhYjpgInmi6nmlZHmj7TmtL7pgaPpmJ/kvI0nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8g5bCGIHRyZWVJdGVtIOeahCByb2FkSWQg5Lyg6YCS57uZIENhckNob2ljZURpYWxvZwogICAgICAgIHRoaXMuY2FyRGF0YSA9IF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZCh7fSwgdGhpcy50cmVlSXRlbSksIHt9LCB7CiAgICAgICAgICByb2FkSWQ6IHRoaXMudHJlZUl0ZW0ucm9hZElkIHx8ICcnCiAgICAgICAgfSk7CiAgICAgICAgdGhpc1tkaWFsb2dOYW1lICsgJ0RpYWxvZyddID0gdHJ1ZTsKICAgICAgfQogICAgfSwKICAgIC8vIOWIoOmZpAogICAgaGFuZGxlRGVsZXRlOiBmdW5jdGlvbiBoYW5kbGVEZWxldGUocm93KSB7CiAgICAgIHZhciBfdGhpczEwID0gdGhpczsKICAgICAgdGhpcy5jbGlja1RpbWVyID0gdHJ1ZTsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6K+l5Lq65ZGY5LiO6Zif5LyN55qE57uR5a6a5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNygpIHsKICAgICAgICB2YXIgaWRzLCBfeWllbGQkdGFibGVEZWxldGUsIHN0YXRlLCBtZXNzYWdlLCBfdGhpczEwJHBhcmFtcyRwYWdlQmUsIHBhZ2UsIHBhZ2VTaXplLCB0b3RhbCwgdG90YWxQYWdlczsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0NykgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgaWRzID0gcm93ID8gcm93LmlkIDogX3RoaXMxMC5jdXJyZW50RGF0YURlbC5qb2luKCk7CiAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURlbGV0ZShpZHMpOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgX3lpZWxkJHRhYmxlRGVsZXRlID0gX2NvbnRleHQ3LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkdGFibGVEZWxldGUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCR0YWJsZURlbGV0ZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXMxMC4kbWVzc2FnZS5zdWNjZXNzKCJcdTUyMjBcdTk2NjRcdTYyMTBcdTUyOUYiKTsKICAgICAgICAgICAgICBfdGhpczEwJHBhcmFtcyRwYWdlQmUgPSBfdGhpczEwLnBhcmFtcy5wYWdlQmVhbiwgcGFnZSA9IF90aGlzMTAkcGFyYW1zJHBhZ2VCZS5wYWdlLCBwYWdlU2l6ZSA9IF90aGlzMTAkcGFyYW1zJHBhZ2VCZS5wYWdlU2l6ZSwgdG90YWwgPSBfdGhpczEwJHBhcmFtcyRwYWdlQmUudG90YWw7CiAgICAgICAgICAgICAgdG90YWxQYWdlcyA9IE1hdGguY2VpbCh0b3RhbCAvIHBhZ2VTaXplKTsgLy8g6K6h566X5oC76aG15pWwCiAgICAgICAgICAgICAgaWYgKHRvdGFsUGFnZXMgPiAxICYmIHBhZ2UgPT09IHRvdGFsUGFnZXMpIHsKICAgICAgICAgICAgICAgIGlmIChfdGhpczEwLnRhYmxlRGF0YS5sZW5ndGggPT09IDEpIHsKICAgICAgICAgICAgICAgICAgLy8g5b2T5YmN6aG15Y+q5pyJ5LiA5p2h5pWw5o2uCiAgICAgICAgICAgICAgICAgIF90aGlzMTAucGFyYW1zLnBhZ2VCZWFuLnBhZ2UgLT0gMTsgLy8g6L+U5Zue5YmN5LiA6aG1CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMTM7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMTAubG9hZERhdGEoKTsKICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDE2OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIF90aGlzMTAuJG1lc3NhZ2UuZXJyb3IobWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgMTY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTcpOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uIChfKSB7CiAgICAgICAgcmV0dXJuIF87CiAgICAgIH0pOwogICAgfSwKICAgIC8v5L+u5pS5CiAgICBoYW5kbGVEYkNsaWNrOiBmdW5jdGlvbiBoYW5kbGVEYkNsaWNrKHJvdykgewogICAgICBpZiAodGhpcy5jbGlja1RpbWVyKSByZXR1cm4gdGhpcy5jbGlja1RpbWVyID0gZmFsc2U7CiAgICAgIC8vIOehruS/nSByb3cg5Lit5YyF5ZCrIG9yZ05hbWUKICAgICAgdmFyIHBheWxvYWQgPSBfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIHJvdyksIHt9LCB7CiAgICAgICAgcm9hZE5hbWU6IHJvdy5yb2FkTmFtZSB8fCB0aGlzLnRyZWVJdGVtLm5hbWUgLy8g5aaC5p6cIHJvdy5vcmdOYW1lIOS4uuepuu+8jOS9v+eUqCB0cmVlSXRlbS5uYW1lCiAgICAgIH0pOwogICAgICB0aGlzLmNoYW5nZVBhZ2UoJ0VkaXRBZGRQYWdlJywgcGF5bG9hZCk7CiAgICB9LAogICAgLy8g5pS55Y+Y6aG16Z2iCiAgICBjaGFuZ2VQYWdlOiBmdW5jdGlvbiBjaGFuZ2VQYWdlKCkgewogICAgICB2YXIgcGFnZU5hbWUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICcnOwogICAgICB2YXIgcm93ID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKICAgICAgaWYgKCFwYWdlTmFtZSkgcmV0dXJuOwogICAgICB2YXIgcGF5bG9hZCA9IHJvdy5pZCA/IHJvdyA6IHsKICAgICAgICBjYXRhbG9nSWQ6IHRoaXMudHJlZUl0ZW0uaWQsCiAgICAgICAgcm9hZE5hbWU6IHRoaXMudHJlZUl0ZW0ubmFtZSwKICAgICAgICBwYXRoOiB0aGlzLnRyZWVJdGVtLnBhdGgsCiAgICAgICAgY2xlYXJGb3JtOiB0cnVlIC8vIOa4heepuuihqOWNleagh+W/lwogICAgICB9OwogICAgICB0aGlzLiRlbWl0KCdjaGFuZ2VQYWdlJywgcGFnZU5hbWUsIGZ1bmN0aW9uIChfKSB7CiAgICAgICAgUHViU3ViLnB1Ymxpc2gocGFnZU5hbWUsIHBheWxvYWQpOwogICAgICB9LCByb3cuaWQgPyAn57yW6L6RJyA6ICfmt7vliqAnKTsKICAgIH0KICB9LAogIGJlZm9yZURlc3Ryb3k6IGZ1bmN0aW9uIGJlZm9yZURlc3Ryb3koKSB7CiAgICAvLyDlnKjnu4Tku7bplIDmr4HkuYvliY0g5riF6Zmk6K6i6ZiF5raI5oGvCiAgICBQdWJTdWIudW5zdWJzY3JpYmUodGhpcy5wdWJTdWIpOwogIH0KfTs="},null]}