{"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\\electronicFence\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\xcjy-fvue\\src\\views\\patrolAndRescue\\infoMgmtPatrolsRescues\\electronicFence\\index.vue","mtime":1747731025566},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9yZWdlbmVyYXRvclJ1bnRpbWUuanMiOwppbXBvcnQgX2FzeW5jVG9HZW5lcmF0b3IgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UveGNqeS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9hc3luY1RvR2VuZXJhdG9yLmpzIjsKaW1wb3J0IF9zbGljZWRUb0FycmF5IGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL3hjanktZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vc2xpY2VkVG9BcnJheS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnB1c2guanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuaXRlcmF0b3IuY29uc3RydWN0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5pdGVyYXRvci5tYXAuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC5rZXlzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC5leGVjLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNlYXJjaC5qcyI7Ci8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCi8vCgppbXBvcnQgeyBsYXp5QU1hcEFwaUxvYWRlckluc3RhbmNlIH0gZnJvbSAndnVlLWFtYXAnOwppbXBvcnQgeyBlZGl0UG9pbnRTYXZpbmcsIGdldEZlbmVjLCBnZXRUcmVlLCBwb2ludFNhdmluZywgdGFibGVEZWxldGUgfSBmcm9tICdAL2FwaS9wYXRyb2xBbmRSZXNjdWUvaW5mb01nbXRQYXRyb2xzUmVzY3Vlcy9lbGVjdHJvbmljRmVuY2UnOwppbXBvcnQgdHJlZVNpZGUgZnJvbSAnQC9jb21wb25lbnRzL3RyZWVTaWRlL2luZGV4LnZ1ZSc7CndpbmRvdy5fQU1hcFNlY3VyaXR5Q29uZmlnID0gewogIHNlY3VyaXR5SnNDb2RlOiAnMzMwMzVlOTNmN2YwN2Q0NGVjNTJjNzFmM2JkNjRiMjknIC8v5L2g55qE56eY6ZKlCn07CmV4cG9ydCBkZWZhdWx0IHsKICBuYW1lOiAnVGFibGVQYWdlJywKICBjb21wb25lbnRzOiB7CiAgICB0cmVlU2lkZTogdHJlZVNpZGUKICB9LAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICByZXR1cm4gewogICAgICBtYXBMb2FkaW5nOiBmYWxzZSwKICAgICAgcm9hZElkOiAnJywKICAgICAgcm9hZExpc3Q6IFtdLAogICAgICB0cmVlTG9hZGluZzogZmFsc2UsCiAgICAgIHRyZWVEYXRhOiBbXSwKICAgICAgLy/lt6bovrnmoJEKICAgICAgZGVmYXVsdFByb3BzOiB7CiAgICAgICAgY2hpbGRyZW46ICdjaGlsZHJlbicsCiAgICAgICAgbGFiZWw6ICduYW1lJwogICAgICB9LAogICAgICBjZW50ZXI6IFsxMDYuNTQ3ODc2NywgMjkuNTY0NzM5OF0sCiAgICAgIC8vIOWcsOWbvuS4reW/g+eCuQogICAgICB6b29tOiAxMSwKICAgICAgbWFwOiB1bmRlZmluZWQsCiAgICAgIHBvbHlnb246IG51bGwsCiAgICAgIC8v5b2T5YmN55qE57uY5Yi25Zu+5bGCCiAgICAgIGN1cnJlbnRPdmVybGF5OiB1bmRlZmluZWQsCiAgICAgIC8v5o6n5Yi257uY5Yi25ZyG5b2i55qE5Y+Y6YePCiAgICAgIGlzQ2lyY2xlOiB0cnVlLAogICAgICAvL+aOp+WItue7mOWItuWkmuWPmOWei+eahOWPmOmHjwogICAgICBpc1BvbHlnb246IHRydWUsCiAgICAgIGFjdGl2ZUVkaXRvcjogdW5kZWZpbmVkLAogICAgICBlZGl0b3JPcHRpb25zOiB1bmRlZmluZWQsCiAgICAgIHBhdGg6IFtdLAogICAgICBpc3Bsb3Q6IGZhbHNlLAogICAgICBpc0VkaXQ6IGZhbHNlLAogICAgICBtYXBBZGRyZXNzOiAnJywKICAgICAgcG9pTGlzdERhdGE6IFtdLAogICAgICBhdXRvQ29tcGxldGVDb21wb25lbnQ6IHVuZGVmaW5lZCwKICAgICAgcGxhY2VTZWFyY2hDb21wb25lbnQ6IHVuZGVmaW5lZCwKICAgICAgc2hvd3NlYXJjaFJlc3VsdDogZmFsc2UsCiAgICAgIHNob3dJbmZvOiBmYWxzZSwKICAgICAgaW5mb1dpbmRvd1Bvc2l0aW9uOiB7fSwKICAgICAgaW5mb1dpbmRvd0NvbnRlbnQ6ICfngrnlh7vlj7PplK7kv53lrZgnLAogICAgICBsbmdsYXQ6ICcnLAogICAgICBpc0ZpcnN0OiBmYWxzZQogICAgfTsKICB9LAogIGNyZWF0ZWQ6IGZ1bmN0aW9uIGNyZWF0ZWQoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgLy8g6I635Y+W5qCR5b2i55uu5b2VCiAgICB0aGlzLmdldE9yZ1RyZWVEYXRhKGZ1bmN0aW9uICh0cmVlRGF0YSkgewogICAgICAvLyDlm57osIPkuK3pu5jorqTpgInkuK3nrKzkuIDpobnlubblsIblhbZpZOS9nOS4uuWPguaVsOivt+axguihqOagvAogICAgICBfdGhpcy50cmVlSXRlbSA9IHRyZWVEYXRhWzBdIHx8IHt9OwogICAgICBpZiAoX3RoaXMudHJlZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkgewogICAgICAgIF90aGlzLmlzcGxvdCA9IGZhbHNlOwogICAgICAgIF90aGlzLnJvYWRMaXN0ID0gX3RoaXMudHJlZUl0ZW0uY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChpdGVtKSB7CiAgICAgICAgICByZXR1cm4gaXRlbS5pZDsKICAgICAgICB9KTsKICAgICAgfQogICAgICBfdGhpcy5kcmF3U2F2ZWRQb2x5Z29uKCk7CiAgICAgIF90aGlzLiRuZXh0VGljayhmdW5jdGlvbiAoXykgewogICAgICAgIHZhciBfdGhpcyQkcmVmcyR0cmVlU2lkZSwgX3RyZWVEYXRhJCwgX3RoaXMkJHJlZnMkdHJlZVNpZGUyOwogICAgICAgIChfdGhpcyQkcmVmcyR0cmVlU2lkZSA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZSA9PT0gdm9pZCAwIHx8IF90aGlzJCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoKF90cmVlRGF0YSQgPSB0cmVlRGF0YVswXSkgPT09IG51bGwgfHwgX3RyZWVEYXRhJCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyZWVEYXRhJC5pZCk7CiAgICAgICAgKF90aGlzJCRyZWZzJHRyZWVTaWRlMiA9IF90aGlzLiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZTIgPT09IHZvaWQgMCB8fCBfdGhpcyQkcmVmcyR0cmVlU2lkZTIuZXhwYW5kSGFuZGxlKHRydWUsIDIpOwogICAgICAgIF90aGlzLmlzRmlyc3QgPSB0cnVlOwogICAgICB9KTsKICAgIH0pOwogIH0sCiAgbW91bnRlZDogZnVuY3Rpb24gbW91bnRlZCgpIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgbGF6eUFNYXBBcGlMb2FkZXJJbnN0YW5jZS5sb2FkKCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHsKICAgICAgX3RoaXMyLmluaXRNYXAoKTsKICAgIH0pOwogIH0sCiAgbWV0aG9kczogewogICAgY2xlYXJMbmdsYXQ6IGZ1bmN0aW9uIGNsZWFyTG5nbGF0KCkgewogICAgICB0aGlzLm1hcC5jbGVhck1hcCgpOyAvLyDmuIXpmaTmiYDmnInopobnm5bnianvvIjngrnmoIflv5fvvIkKICAgIH0sCiAgICBjaGFuZ2VMbmdMYXQ6IGZ1bmN0aW9uIGNoYW5nZUxuZ0xhdCgpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIGlmICghdGhpcy5sbmdsYXQpIHJldHVybjsKICAgICAgdmFyIF90aGlzJGxuZ2xhdCRzcGxpdCA9IHRoaXMubG5nbGF0LnNwbGl0KCcsJyksCiAgICAgICAgX3RoaXMkbG5nbGF0JHNwbGl0MiA9IF9zbGljZWRUb0FycmF5KF90aGlzJGxuZ2xhdCRzcGxpdCwgMiksCiAgICAgICAgbG5nID0gX3RoaXMkbG5nbGF0JHNwbGl0MlswXSwKICAgICAgICBsYXQgPSBfdGhpcyRsbmdsYXQkc3BsaXQyWzFdOwogICAgICBBTWFwLmNvbnZlcnRGcm9tKFtOdW1iZXIobG5nKSwgTnVtYmVyKGxhdCldLCAnR1BTJywgZnVuY3Rpb24gKHN0YXR1cywgcmVzdWx0KSB7CiAgICAgICAgY29uc29sZS5sb2coJ+i9rOaNouaIkOWKnycsIHJlc3VsdCk7CiAgICAgICAgaWYgKHJlc3VsdC5pbmZvID09PSAnb2snKSB7CiAgICAgICAgICB2YXIgcmVzTG5nbGF0ID0gcmVzdWx0LmxvY2F0aW9uc1swXTsKICAgICAgICAgIF90aGlzMy5tYXJrZXJSZXN1bHQoewogICAgICAgICAgICBuYW1lOiAn6auY5b635Z2Q5qCH77yaJyArIHJlc0xuZ2xhdC5sbmcgKyAnLCcgKyByZXNMbmdsYXQubGF0LAogICAgICAgICAgICBsb2NhdGlvbjogewogICAgICAgICAgICAgIGxuZzogcmVzTG5nbGF0LmxuZywKICAgICAgICAgICAgICBsYXQ6IHJlc0xuZ2xhdC5sYXQKICAgICAgICAgICAgfQogICAgICAgICAgfSwgJ2dwc1RyYW5zZm9ybScpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9LAogICAgLyoqIOWIneWni+WMluaQnOe0oiAqL21hcFNlYXJjaEluaXQ6IGZ1bmN0aW9uIG1hcFNlYXJjaEluaXQoKSB7CiAgICAgIHZhciBhdXRvT3B0aW9ucyA9IHsKICAgICAgICBpbnB1dDogJ3RpcElucHV0JwogICAgICB9OwogICAgICB0aGlzLmF1dG9Db21wbGV0ZUNvbXBvbmVudCA9IG5ldyBBTWFwLkF1dG9jb21wbGV0ZShhdXRvT3B0aW9ucyk7CiAgICAgIC8vIOazqOWGjHBsYWNlU2VhcmNo57uE5Lu2CiAgICAgIHRoaXMucGxhY2VTZWFyY2hDb21wb25lbnQgPSBuZXcgQU1hcC5QbGFjZVNlYXJjaCh7CiAgICAgICAgY2l0eTogJ+mHjeW6hicgLy/ln47luIIKICAgICAgfSk7CiAgICB9LAogICAgc2VhcmNoS2V5V29yZDogZnVuY3Rpb24gc2VhcmNoS2V5V29yZCgpIHsKICAgICAgdmFyIF90aGlzNCA9IHRoaXM7CiAgICAgIGlmICh0aGlzLm1hcEFkZHJlc3MgIT09ICcnKSB7CiAgICAgICAgdGhpcy5wbGFjZVNlYXJjaENvbXBvbmVudC5zZWFyY2godGhpcy5tYXBBZGRyZXNzLCBmdW5jdGlvbiAoc3RhdHVzLCByZXN1bHQpIHsKICAgICAgICAgIGlmIChzdGF0dXMgPT09ICdjb21wbGV0ZScgJiYgcmVzdWx0LmluZm8gPT09ICdPSycpIHsKICAgICAgICAgICAgX3RoaXM0LnNob3dzZWFyY2hSZXN1bHQgPSB0cnVlOwogICAgICAgICAgICBfdGhpczQucG9pTGlzdERhdGEgPSByZXN1bHQucG9pTGlzdC5wb2lzOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX3RoaXM0LnNob3dzZWFyY2hSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgX3RoaXM0LnBvaUxpc3REYXRhID0gW107CiAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZSh7CiAgICAgICAgICAgICAgbWVzc2FnZTogJ+ayoeacieafpeWIsOe7k+aenCcsCiAgICAgICAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucG9pTGlzdERhdGEgPSBbXTsKICAgICAgICB0aGlzLnNob3dzZWFyY2hSZXN1bHQgPSBmYWxzZTsKICAgICAgICB0aGlzLm1hcC5jbGVhck1hcCgpOwogICAgICB9CiAgICB9LAogICAgbWFya2VyUmVzdWx0OiBmdW5jdGlvbiBtYXJrZXJSZXN1bHQoZGF0YSwgdHlwZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgdGhpcy5zaG93c2VhcmNoUmVzdWx0ID0gZmFsc2U7CiAgICAgIHRoaXMuYWRkcmVzcyA9IGRhdGEubmFtZTsKICAgICAgdmFyIG1hcmtlciA9IG5ldyBBTWFwLk1hcmtlcih7CiAgICAgICAgcG9zaXRpb246IFtOdW1iZXIoZGF0YS5sb2NhdGlvbi5sbmcpLCBOdW1iZXIoZGF0YS5sb2NhdGlvbi5sYXQpXQogICAgICB9KTsKICAgICAgdGhpcy5tYXAuY2xlYXJNYXAoKTsgLy8g5riF6Zmk5omA5pyJ6KaG55uW54mp77yI54K55qCH5b+X77yJCiAgICAgIHRoaXMubWFwLmFkZChtYXJrZXIpOyAvLyDmt7vliqDngrnmoIflv5cKICAgICAgdGhpcy5zaG93SW5mb1dpbmRvdyhtYXJrZXIsIHR5cGUpOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICBfdGhpczUubWFwLnNldENlbnRlcihkYXRhLmxvY2F0aW9uKTsKICAgICAgICBfdGhpczUubWFwLnNldFpvb20oMTUpOwogICAgICB9LCA1MCk7CiAgICAgIHZhciB0aGlzUG9zaXRpb24gPSB7CiAgICAgICAgYWRkcmVzczogdGhpcy5hZGRyZXNzLAogICAgICAgIGxuZzogZGF0YS5sb2NhdGlvbi5sbmcsCiAgICAgICAgbGF0OiBkYXRhLmxvY2F0aW9uLmxhdAogICAgICB9OwogICAgICB0aGlzLiRlbWl0KCdzZWxlY3QnLCB0aGlzUG9zaXRpb24pOwogICAgfSwKICAgIHNob3dJbmZvV2luZG93OiBmdW5jdGlvbiBzaG93SW5mb1dpbmRvdyhtYXJrZXIsIHR5cGUpIHsKICAgICAgdmFyIGluZm9XaW5kb3cgPSBuZXcgQU1hcC5JbmZvV2luZG93KHsKICAgICAgICBpc0N1c3RvbTogdHJ1ZSwKICAgICAgICAvL+aYr+WQpuiHquWumuS5ieS/oeaBr+eql+S9kwogICAgICAgIGNvbnRlbnQ6ICI8ZGl2IHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Y29sb3I6IzAwMDAwMDsgcGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogNXB4O2JvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7XCI+ICIuY29uY2F0KHR5cGUgPT09ICdncHNUcmFuc2Zvcm0nID8gJycgOiAn5Zyw5Z2A77yaJykuY29uY2F0KHRoaXMuYWRkcmVzcywgIjwvZGl2PiIpLAogICAgICAgIGNsb3NlV2hlbkNsaWNrTWFwOiB0cnVlLAogICAgICAgIHpJbmRleDogOTk5LAogICAgICAgIG9mZnNldDogbmV3IEFNYXAuUGl4ZWwoMTYsIC0zNSkKICAgICAgfSk7CiAgICAgIGluZm9XaW5kb3cub3Blbih0aGlzLm1hcCwgbWFya2VyLmdldFBvc2l0aW9uKCkpOwogICAgfSwKICAgIC8vIOiOt+WPlui3r+auteagkQogICAgZ2V0T3JnVHJlZURhdGE6IGZ1bmN0aW9uIGdldE9yZ1RyZWVEYXRhKGNhbGxiYWNrKSB7CiAgICAgIHZhciBfdGhpczYgPSB0aGlzOwogICAgICByZXR1cm4gX2FzeW5jVG9HZW5lcmF0b3IoLyojX19QVVJFX18qL19yZWdlbmVyYXRvclJ1bnRpbWUoKS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7CiAgICAgICAgdmFyIF95aWVsZCRnZXRUcmVlLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gMDsKICAgICAgICAgICAgICBfdGhpczYudHJlZUxvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBnZXRUcmVlKCk7CiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBfeWllbGQkZ2V0VHJlZSA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkZ2V0VHJlZS52YWx1ZTsKICAgICAgICAgICAgICBfdGhpczYudHJlZURhdGEgPSBfdGhpczYudHJhbnNmb3JtVHJlZURhdGEodmFsdWUpOwogICAgICAgICAgICBjYXNlIDc6CiAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDc7CiAgICAgICAgICAgICAgX3RoaXM2LnRyZWVMb2FkaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgY2FsbGJhY2sgJiYgY2FsbGJhY2soX3RoaXM2LnRyZWVEYXRhKTsKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDcpOwogICAgICAgICAgICBjYXNlIDExOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgbnVsbCwgW1swLCwgNywgMTFdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHRyYW5zZm9ybVRyZWVEYXRhOiBmdW5jdGlvbiB0cmFuc2Zvcm1UcmVlRGF0YShkYXRhKSB7CiAgICAgIHJldHVybiBkYXRhLm1hcChmdW5jdGlvbiAoaXRlbSkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICBpZDogaXRlbS5pZCwKICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSwKICAgICAgICAgIC8vIOS4gOe6p+ebruW9leeahCBsYWJlbAogICAgICAgICAgY2hpbGRyZW46IGl0ZW0udGVhbUxpc3QubWFwKGZ1bmN0aW9uIChncmlkKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgaWQ6IGdyaWQuaWQsCiAgICAgICAgICAgICAgaXNEcmF3OiBncmlkLmlzRHJhdywKICAgICAgICAgICAgICBuYW1lOiBncmlkLm5hbWUgKyAnKCcgKyAoZ3JpZC5pc0RyYXcgPT09ICcxJyA/ICflt7Lnu5jlm74nIDogJ+acque7mOWbvicpICsgJyknIC8vIOS6jOe6p+ebruW9leeahCBsYWJlbAogICAgICAgICAgICB9OwogICAgICAgICAgfSkKICAgICAgICB9OwogICAgICB9KTsKICAgIH0sCiAgICBjdXJyZW50Q2hhbmdlOiBmdW5jdGlvbiBjdXJyZW50Q2hhbmdlKG5vZGVJdGVtKSB7CiAgICAgIGlmIChub2RlSXRlbS5jaGlsZHJlbiAmJiBub2RlSXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7CiAgICAgICAgdGhpcy5pc3Bsb3QgPSBmYWxzZTsKICAgICAgICB0aGlzLnJvYWRJZCA9ICcnOwogICAgICAgIHRoaXMucm9hZExpc3QgPSBub2RlSXRlbS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgIHJldHVybiBpdGVtLmlkOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuaXNwbG90ID0gdHJ1ZTsKICAgICAgICB0aGlzLmlzRWRpdCA9IG5vZGVJdGVtLmlzRHJhdyA9PT0gJzEnOwogICAgICAgIHRoaXMucm9hZExpc3QgPSBbXTsKICAgICAgICB0aGlzLnJvYWRJZCA9IG5vZGVJdGVtID09PSBudWxsIHx8IG5vZGVJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBub2RlSXRlbS5pZDsKICAgICAgfQogICAgICB0aGlzLmlzUG9seWdvbiA9IHRydWU7CiAgICAgIHRoaXMuY2xlYXJBbGxEcmF3aW5ncygpOwogICAgICB0aGlzLmNsZWFyUG9seWdvbnMoKTsKICAgICAgdGhpcy5kcmF3U2F2ZWRQb2x5Z29uKCk7CiAgICB9LAogICAgLy/lnLDlm77liJ3lp4vljJYKICAgIGluaXRNYXA6IGZ1bmN0aW9uIGluaXRNYXAoKSB7CiAgICAgIHZhciBfdGhpczcgPSB0aGlzOwogICAgICB0aGlzLm1hcCA9IG5ldyBBTWFwLk1hcCgnbWFwQ29udGFpbmVyJywgewogICAgICAgIGNlbnRlcjogdGhpcy5jZW50ZXIsCiAgICAgICAgem9vbTogdGhpcy56b29tLAogICAgICAgIGxheWVyczogW25ldyBBTWFwLlRpbGVMYXllcigpIC8vIOm7mOiupOaZrumAmuWcsOWbvuWbvuWxggogICAgICAgIF0KICAgICAgfSk7CiAgICAgIC8vIOaQnOe0ogogICAgICB0aGlzLm1hcFNlYXJjaEluaXQoKTsKICAgICAgLy8g5Zue5pi+ICDliKTmlq3nrKzkuIDmrKHotbBjcmVhdGVk6YeM6Z2iIOS5i+WQjui1sOi/mQogICAgICBpZiAodGhpcy5pc0ZpcnN0KSB7CiAgICAgICAgdGhpcy5kcmF3U2F2ZWRQb2x5Z29uKCk7CiAgICAgIH0KICAgICAgLy8g5Yid5aeL5YyWIE1vdXNlVG9vbAogICAgICBBTWFwLnBsdWdpbignQU1hcC5Nb3VzZVRvb2wnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgX3RoaXM3LmRyYXdpbmdNYW5hZ2VyID0gbmV3IEFNYXAuTW91c2VUb29sKF90aGlzNy5tYXApOyAvLyDliJ3lp4vljJYgTW91c2VUb29sCiAgICAgIH0pOwogICAgICAvLyAvL2VkaXRvck9wdGlvbnMg5piv5LiA5Liq6YWN572u5a+56LGh77yM5LiT6Zeo55So5LqO5o6n5Yi25Zyw5Zu+5LiK57yW6L6R5Yqf6IO955qE5qC35byP5ZKM6KGM5Li677yM5bCk5YW25piv5LiOIE1vdXNlVG9vbCDphY3lkIjkvb/nlKjml7bvvIzog73lpJ/lr7nnu5jliLbnmoTlm77lvaLov5vooYznvJbovpHvvIjkvovlpoLnp7vliqjmoIforrDngrnjgIHkv67mlLnlpJrovrnlvaLoioLngrnnrYnvvInjgIIKICAgICAgdGhpcy5lZGl0b3JPcHRpb25zID0gewogICAgICAgIGVkaXRNYXJrZXJPcHRpb25zOiB7CiAgICAgICAgICBpY29uOiBuZXcgQU1hcC5JY29uKHsKICAgICAgICAgICAgc2l6ZTogbmV3IEFNYXAuU2l6ZSgxNiwgMTYpLAogICAgICAgICAgICAvLyDlm77moIflpKflsI8KICAgICAgICAgICAgaW1hZ2U6ICdodHRwczovL3dlYmFwaS5hbWFwLmNvbS90aGVtZS92MS4zL21hcmtlcnMvbi9tYXJrX2IucG5nJwogICAgICAgICAgfSksCiAgICAgICAgICBvZmZzZXQ6IG5ldyBBTWFwLlBpeGVsKC04LCAtOCkgLy8g5Zu+5qCH5YGP56e76YePCiAgICAgICAgfSwKICAgICAgICAvLyDphY3nva7lj6/np7vliqjnmoTmoIforrDngrnnmoTmoLflvI8KICAgICAgICBtb3ZlTWFya2VyT3B0aW9uczogewogICAgICAgICAgaWNvbjogbmV3IEFNYXAuSWNvbih7CiAgICAgICAgICAgIHNpemU6IG5ldyBBTWFwLlNpemUoMjAsIDIwKSwKICAgICAgICAgICAgaW1hZ2U6ICdodHRwczovL3dlYmFwaS5hbWFwLmNvbS90aGVtZS92MS4zL21hcmtlcnMvbi9tYXJrX3IucG5nJwogICAgICAgICAgfSksCiAgICAgICAgICBvZmZzZXQ6IG5ldyBBTWFwLlBpeGVsKC0xMCwgLTEwKQogICAgICAgIH0sCiAgICAgICAgLy8g6YWN572u5aSa6L655b2iL+e6v+adoeS4remXtOiKgueCueeahOagt+W8jwogICAgICAgIG1pZE1hcmtlck9wdGlvbnM6IHsKICAgICAgICAgIGljb246IG5ldyBBTWFwLkljb24oewogICAgICAgICAgICBzaXplOiBuZXcgQU1hcC5TaXplKDE0LCAxNCksCiAgICAgICAgICAgIGltYWdlOiAnaHR0cHM6Ly93ZWJhcGkuYW1hcC5jb20vdGhlbWUvdjEuMy9tYXJrZXJzL24vbWFya19yLnBuZycKICAgICAgICAgIH0pLAogICAgICAgICAgb2Zmc2V0OiBuZXcgQU1hcC5QaXhlbCgtNywgLTcpCiAgICAgICAgfQogICAgICB9OwogICAgICAvLyDnm5HlkKzlnIblvaLnu5jliLblrozmiJDkuovku7YKICAgICAgdGhpcy5kcmF3aW5nTWFuYWdlci5vbignZHJhdycsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIGlmIChfdGhpczcuY3VycmVudE92ZXJsYXkpIHsKICAgICAgICAgIF90aGlzNy5tYXAucmVtb3ZlKF90aGlzNy5jdXJyZW50T3ZlcmxheSk7CiAgICAgICAgfQogICAgICAgIF90aGlzNy5jdXJyZW50T3ZlcmxheSA9IGV2ZW50Lm9iajsKICAgICAgICB2YXIgc2hhcGUgPSBldmVudC5vYmo7IC8vIOiOt+WPlue7mOWItueahOWbvuW9ouWvueixoQoKICAgICAgICBpZiAoc2hhcGUgaW5zdGFuY2VvZiBBTWFwLlBvbHlnb24pIHsKICAgICAgICAgIHNoYXBlLnNldE9wdGlvbnMoewogICAgICAgICAgICBkcmFnZ2FibGU6IHRydWUKICAgICAgICAgIH0pOwogICAgICAgICAgc2hhcGUub24oJ2RyYWdlbmQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBuZXdQYXRoID0gc2hhcGUuZ2V0UGF0aCgpOyAvLyDojrflj5bmi5bmi73lkI7nmoTot6/lvoQKICAgICAgICAgICAgY29uc29sZS5sb2coJ+aLluaLveWQjueahOWkmui+ueW9oicsIG5ld1BhdGgpOwogICAgICAgICAgfSk7CiAgICAgICAgICBfdGhpczcucGF0aCA9IHNoYXBlLmdldFBhdGgoKTsgLy8g6I635Y+W5aSa6L655b2i55qE6Lev5b6E54K5CiAgICAgICAgICBjb25zb2xlLmxvZygn57uY5Yi25a6M5oiQ55qE5Zu+5b2i57G75Z6LOiDlpJrovrnlvaLmiJbnn6nlvaInKTsKICAgICAgICAgIGNvbnNvbGUubG9nKCfpobbngrnnu4/nuqzluqbmlbDnu4Q6JywgX3RoaXM3LnBhdGgpOwogICAgICAgICAgLy8gdGhpcy5kcmF3aW5nTWFuYWdlci5jbG9zZSgpOwogICAgICAgICAgX3RoaXM3LmRyYXdQb2x5Z29uKCk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0sCiAgICAvL+Wkmui+ueW9oue7mOWItuW8gOWQrwogICAgcG9seWdvbkNsaWNrOiBmdW5jdGlvbiBwb2x5Z29uQ2xpY2soKSB7CiAgICAgIHRoaXMuZHJhd2luZ01hbmFnZXIuY2xvc2UoKTsKICAgICAgdGhpcy5pc1BvbHlnb24gPSAhdGhpcy5pc1BvbHlnb247CiAgICAgIGlmICh0aGlzLmlzUG9seWdvbikgewogICAgICAgIHRoaXMuZHJhd2luZ01hbmFnZXIuY2xvc2UoKTsgLy8g5YWz6Zet57uY5Zu+5qih5byPCiAgICAgICAgdGhpcy5lbmFibGVFZGl0aW5nKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gaWYgKHRoaXMuY3VycmVudE92ZXJsYXkpIHsKICAgICAgICAvLyAgIHRoaXMuY2xlYXJBbGxEcmF3aW5ncygpOwogICAgICAgIC8vIH0KICAgICAgICB0aGlzLmRyYXdQb2x5Z29uKCk7CiAgICAgIH0KICAgIH0sCiAgICAvL+W8gOWQr+e7mOWItuWbvuW9oue8lui+keaooeW8jwogICAgZW5hYmxlRWRpdGluZzogZnVuY3Rpb24gZW5hYmxlRWRpdGluZygpIHsKICAgICAgaWYgKCF0aGlzLmN1cnJlbnRPdmVybGF5KSB7CiAgICAgICAgYWxlcnQoJ+ivt+WFiOe7mOWItuWbvuW9ou+8gScpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBpZiAodGhpcy5jdXJyZW50T3ZlcmxheSBpbnN0YW5jZW9mIEFNYXAuUG9seWdvbikgewogICAgICAgIGlmICh0aGlzLmFjdGl2ZUVkaXRvcikgewogICAgICAgICAgdGhpcy5hY3RpdmVFZGl0b3IuY2xvc2UoKTsgLy8g5YWz6Zet5LmL5YmN55qE57yW6L6R5ZmoCiAgICAgICAgfQogICAgICAgIHRoaXMuYWN0aXZlRWRpdG9yID0gbmV3IEFNYXAuUG9seUVkaXRvcih0aGlzLm1hcCwgdGhpcy5jdXJyZW50T3ZlcmxheSwgdGhpcy5lZGl0b3JPcHRpb25zKTsKICAgICAgICB0aGlzLmFjdGl2ZUVkaXRvci5vcGVuKCk7CiAgICAgIH0KICAgIH0sCiAgICAvL+a4heepuuaJgOaciee7mOWItuWbvuW9ogogICAgY2xlYXJBbGxBcGk6IGZ1bmN0aW9uIGNsZWFyQWxsQXBpKCkgewogICAgICB2YXIgX3RoaXM4ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgn56Gu5a6a5Yig6Zmk6K+l5Yy65Z+f5ZCX77yfJywgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruiupCcsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHsKICAgICAgICB2YXIgX3lpZWxkJHRhYmxlRGVsZXRlLCBzdGF0ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0MikgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAyOwogICAgICAgICAgICAgIHJldHVybiB0YWJsZURlbGV0ZShfdGhpczgucm9hZElkKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCR0YWJsZURlbGV0ZSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJHRhYmxlRGVsZXRlLnN0YXRlOwogICAgICAgICAgICAgIGlmICghc3RhdGUpIHsKICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX3RoaXM4LmlzUG9seWdvbiA9IHRydWU7CiAgICAgICAgICAgICAgX3RoaXM4LiRtZXNzYWdlLnN1Y2Nlc3MoIlx1NTIyMFx1OTY2NFx1NjIxMFx1NTI5RiIpOwogICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gOTsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXM4LmdldE9yZ1RyZWVEYXRhKGZ1bmN0aW9uICh0cmVlRGF0YSkgewogICAgICAgICAgICAgICAgX3RoaXM4LmRyYXdTYXZlZFBvbHlnb24oKTsKICAgICAgICAgICAgICAgIF90aGlzOC5pc0VkaXQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIF90aGlzOC4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgdmFyIF90aGlzOCQkcmVmcyR0cmVlU2lkZSwgX3RoaXM4JCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAgICAgICAgICAgKF90aGlzOCQkcmVmcyR0cmVlU2lkZSA9IF90aGlzOC4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXM4JCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXM4JCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoX3RoaXM4LnJvYWRJZCk7CiAgICAgICAgICAgICAgICAgIChfdGhpczgkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXM4LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczgkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXM4JCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgMik7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF90aGlzOC5jbGVhckFsbERyYXdpbmdzKCk7CiAgICAgICAgICAgICAgX3RoaXM4LmNsZWFyUG9seWdvbnMoKTsKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMik7CiAgICAgIH0pKSkuY2F0Y2goZnVuY3Rpb24gKF8pIHsKICAgICAgICByZXR1cm4gXzsKICAgICAgfSk7CiAgICB9LAogICAgY2xlYXJBbGw6IGZ1bmN0aW9uIGNsZWFyQWxsKCkgewogICAgICB0aGlzLmlzUG9seWdvbiA9IGZhbHNlOwogICAgICB0aGlzLmlzRWRpdCA9IGZhbHNlOwogICAgICB0aGlzLmVuYWJsZUVkaXRpbmcoKTsKICAgICAgdGhpcy5jbGVhckFsbERyYXdpbmdzKCk7CiAgICAgIHRoaXMuY2xlYXJQb2x5Z29ucygpOwogICAgfSwKICAgIC8v55So5p2l5riF56m65omA5pyJ55qE57uY5Yi25Zu+5b2iCiAgICBjbGVhckFsbERyYXdpbmdzOiBmdW5jdGlvbiBjbGVhckFsbERyYXdpbmdzKCkgewogICAgICB0aGlzLm1hcC5jbGVhck1hcCgpOwogICAgfSwKICAgIC8v55So5p2l5riF56m657uY5Yi25aSa6L655b2i5Zu+5b2iCiAgICBjbGVhclBvbHlnb25zOiBmdW5jdGlvbiBjbGVhclBvbHlnb25zKCkgewogICAgICB0aGlzLm1hcC5jbGVhck1hcCgpOwogICAgfSwKICAgIC8v5aSa6L655b2i5Zue5pi+CiAgICBkcmF3UG9seWdvbjogZnVuY3Rpb24gZHJhd1BvbHlnb24oKSB7CiAgICAgIHRoaXMuZHJhd2luZ01hbmFnZXIucG9seWdvbih7CiAgICAgICAgc3Ryb2tlQ29sb3I6ICdyZWQnLAogICAgICAgIC8vIOaPj+i+ueminOiJsgogICAgICAgIHN0cm9rZU9wYWNpdHk6IDEsCiAgICAgICAgLy8g5o+P6L656YCP5piO5bqmCiAgICAgICAgc3Ryb2tlV2VpZ2h0OiAzLAogICAgICAgIC8vIOaPj+i+ueWuveW6pgogICAgICAgIGZpbGxDb2xvcjogJ3JlZCcsCiAgICAgICAgLy8g5aGr5YWF6aKc6ImyCiAgICAgICAgZmlsbE9wYWNpdHk6IDAuNSAvLyDloavlhYXpgI/mmI7luqYKICAgICAgfSk7CiAgICB9LAogICAgLy8g5L+d5a2YCiAgICBwcmVzZXJ2YXRpb246IGZ1bmN0aW9uIHByZXNlcnZhdGlvbigpIHsKICAgICAgdmFyIF90aGlzOSA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoKSB7CiAgICAgICAgdmFyIHBhcmFtLCBfcmVmMiwgc3RhdGU7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIHBhcmFtID0gewogICAgICAgICAgICAgICAgaWQ6IF90aGlzOS5pc0VkaXQgPyBfdGhpczkuaWQgOiAnJywKICAgICAgICAgICAgICAgIHRlYW1JZDogX3RoaXM5LnJvYWRJZCwKICAgICAgICAgICAgICAgIGNvb3JkaW5hdGU6IEpTT04uc3RyaW5naWZ5KF90aGlzOS5wYXRoKQogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgaWYgKCFfdGhpczkuaXNFZGl0KSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA0OwogICAgICAgICAgICAgIHJldHVybiBlZGl0UG9pbnRTYXZpbmcocGFyYW0pOwogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAxMDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gOTsKICAgICAgICAgICAgICByZXR1cm4gcG9pbnRTYXZpbmcocGFyYW0pOwogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgIGNhc2UgMTA6CiAgICAgICAgICAgICAgX3JlZjIgPSBfY29udGV4dDMudDA7CiAgICAgICAgICAgICAgc3RhdGUgPSBfcmVmMi5zdGF0ZTsKICAgICAgICAgICAgICBpZiAoIXN0YXRlKSB7CiAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF90aGlzOS5pc1BvbHlnb24gPSB0cnVlOwogICAgICAgICAgICAgIF90aGlzOS5jbGVhckFsbERyYXdpbmdzKCk7CiAgICAgICAgICAgICAgX3RoaXM5LmNsZWFyUG9seWdvbnMoKTsKICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE4OwogICAgICAgICAgICAgIHJldHVybiBfdGhpczkuZ2V0T3JnVHJlZURhdGEoZnVuY3Rpb24gKHRyZWVEYXRhKSB7CiAgICAgICAgICAgICAgICBfdGhpczkuZHJhd1NhdmVkUG9seWdvbigpOwogICAgICAgICAgICAgICAgX3RoaXM5LmRyYXdpbmdNYW5hZ2VyLmNsb3NlKCk7CiAgICAgICAgICAgICAgICBfdGhpczkuaXNFZGl0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIF90aGlzOS4kbmV4dFRpY2soZnVuY3Rpb24gKF8pIHsKICAgICAgICAgICAgICAgICAgdmFyIF90aGlzOSQkcmVmcyR0cmVlU2lkZSwgX3RoaXM5JCRyZWZzJHRyZWVTaWRlMjsKICAgICAgICAgICAgICAgICAgKF90aGlzOSQkcmVmcyR0cmVlU2lkZSA9IF90aGlzOS4kcmVmcy50cmVlU2lkZSkgPT09IG51bGwgfHwgX3RoaXM5JCRyZWZzJHRyZWVTaWRlID09PSB2b2lkIDAgfHwgX3RoaXM5JCRyZWZzJHRyZWVTaWRlLnNldEN1cnJlbnRLZXkoX3RoaXM5LnJvYWRJZCk7CiAgICAgICAgICAgICAgICAgIChfdGhpczkkJHJlZnMkdHJlZVNpZGUyID0gX3RoaXM5LiRyZWZzLnRyZWVTaWRlKSA9PT0gbnVsbCB8fCBfdGhpczkkJHJlZnMkdHJlZVNpZGUyID09PSB2b2lkIDAgfHwgX3RoaXM5JCRyZWZzJHRyZWVTaWRlMi5leHBhbmRIYW5kbGUodHJ1ZSwgMik7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICBfdGhpczkuJG1lc3NhZ2Uuc3VjY2Vzcygn5L+d5a2Y5oiQ5YqfJyk7CiAgICAgICAgICAgIGNhc2UgMTk6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTMpOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyDlm57mmL4g6K+m5oOFCiAgICBkcmF3U2F2ZWRQb2x5Z29uOiBmdW5jdGlvbiBkcmF3U2F2ZWRQb2x5Z29uKCkgewogICAgICB2YXIgX3RoaXMxMCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoKSB7CiAgICAgICAgdmFyIHRlYW1JZHMsIGRlYWxQb2x5Z29uQXJyLCBfeWllbGQkZ2V0RmVuZWMsIHN0YXRlLCB2YWx1ZSwgaSwgX3ZhbHVlJGksIGFycmF5LCBwYXRoOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfdGhpczEwLm1hcExvYWRpbmcgPSB0cnVlOwogICAgICAgICAgICAgIHRlYW1JZHMgPSBbXTsKICAgICAgICAgICAgICBkZWFsUG9seWdvbkFyciA9IFtdOwogICAgICAgICAgICAgIGlmIChfdGhpczEwLnJvYWRMaXN0Lmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRlYW1JZHMgPSBfdGhpczEwLnJvYWRMaXN0OwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0ZWFtSWRzLnB1c2goX3RoaXMxMC5yb2FkSWQpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDY7CiAgICAgICAgICAgICAgcmV0dXJuIGdldEZlbmVjKHRlYW1JZHMpOwogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgX3lpZWxkJGdldEZlbmVjID0gX2NvbnRleHQ0LnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkZ2V0RmVuZWMuc3RhdGU7CiAgICAgICAgICAgICAgdmFsdWUgPSBfeWllbGQkZ2V0RmVuZWMudmFsdWU7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczEwLm1hcExvYWRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIOWIpOaWreWmguaenOaYr+e8lui+keaXtgogICAgICAgICAgICAgICAgaWYgKF90aGlzMTAuaXNFZGl0KSB7CiAgICAgICAgICAgICAgICAgIF90aGlzMTAuaWQgPSB2YWx1ZVswXS5pZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICBhcnJheSA9IEpTT04ucGFyc2UoKF92YWx1ZSRpID0gdmFsdWVbaV0pID09PSBudWxsIHx8IF92YWx1ZSRpID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdmFsdWUkaS5jb29yZGluYXRlKTsKICAgICAgICAgICAgICAgICAgcGF0aCA9IGFycmF5Lm1hcChmdW5jdGlvbiAoY29vcmQpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFNYXAuTG5nTGF0KGNvb3JkLmxuZywgY29vcmQubGF0KTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgIF90aGlzMTAucG9seWdvbiA9IG5ldyBBTWFwLlBvbHlnb24oewogICAgICAgICAgICAgICAgICAgIHBhdGg6IHBhdGgsCiAgICAgICAgICAgICAgICAgICAgLy8g5L2/55So5L+d5a2Y55qE6aG254K55Z2Q5qCH5pWw57uE5p2l57uY5Yi25aSa6L655b2iCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlQ29sb3I6ICdyZWQnLAogICAgICAgICAgICAgICAgICAgIC8vIOaPj+i+ueminOiJsgogICAgICAgICAgICAgICAgICAgIHN0cm9rZU9wYWNpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgLy8g5o+P6L656YCP5piO5bqmCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlV2VpZ2h0OiAzLAogICAgICAgICAgICAgICAgICAgIC8vIOaPj+i+ueWuveW6pgogICAgICAgICAgICAgICAgICAgIGZpbGxDb2xvcjogJ3JlZCcsCiAgICAgICAgICAgICAgICAgICAgLy8g5aGr5YWF6aKc6ImyCiAgICAgICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IDAuNQogICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgZGVhbFBvbHlnb25BcnIucHVzaChfdGhpczEwLnBvbHlnb24pOwogICAgICAgICAgICAgICAgICBfdGhpczEwLnBvbHlnb24uc2V0TWFwKF90aGlzMTAubWFwKTsKICAgICAgICAgICAgICAgICAgX3RoaXMxMC5tYXAuYWRkKGRlYWxQb2x5Z29uQXJyKTsKICAgICAgICAgICAgICAgICAgX3RoaXMxMC5tYXAuc2V0Rml0VmlldyhkZWFsUG9seWdvbkFycik7CiAgICAgICAgICAgICAgICAgIF90aGlzMTAuY3VycmVudE92ZXJsYXkgPSBfdGhpczEwLnBvbHlnb247CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpOwogICAgICAgICAgfQogICAgICAgIH0sIF9jYWxsZWU0KTsKICAgICAgfSkpKCk7CiAgICB9CiAgfQp9Ow=="},null]}