{"remainingRequest":"D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\thread-loader\\dist\\cjs.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\babel-loader\\lib\\index.js!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\@vue\\cli-plugin-babel\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!D:\\jenkins\\workspace\\dataShare-fvue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataServices\\dataServiceAPI\\index.vue?vue&type=script&lang=js","dependencies":[{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\src\\views\\dataServices\\dataServiceAPI\\index.vue","mtime":1736448933040},{"path":"D:\\jenkins\\workspace\\dataShare-fvue\\babel.config.js","mtime":1733906004399},{"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:aW1wb3J0IF9yZWdlbmVyYXRvclJ1bnRpbWUgZnJvbSAiRDovamVua2lucy93b3Jrc3BhY2UvZGF0YVNoYXJlLWZ2dWUvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3JlZ2VuZXJhdG9yUnVudGltZS5qcyI7CmltcG9ydCBfYXN5bmNUb0dlbmVyYXRvciBmcm9tICJEOi9qZW5raW5zL3dvcmtzcGFjZS9kYXRhU2hhcmUtZnZ1ZS9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vYXN5bmNUb0dlbmVyYXRvci5qcyI7CmltcG9ydCBfb2JqZWN0U3ByZWFkIGZyb20gIkQ6L2plbmtpbnMvd29ya3NwYWNlL2RhdGFTaGFyZS1mdnVlL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RTcHJlYWQyLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC1pbmRleC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LnNwbGljZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5qc29uLnN0cmluZ2lmeS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwovLwoKaW1wb3J0IEFQSSBmcm9tICdAL2FwaS9idXNpbmVzcy9kYXRhU2VydmljZUFQSSc7CmltcG9ydCBTZXJ2aWNlRGlhbG9nIGZyb20gJy4uL2RhdGFTZXJ2aWNlQVBJL1NlcnZpY2VEaWFsb2cudnVlJzsKaW1wb3J0IERldGFpbERpYWxvZyBmcm9tICcuL0RldGFpbERpYWxvZy52dWUnOwppbXBvcnQgQWRkRGlhbG9nIGZyb20gJ0Avdmlld3MvZGF0YVNlcnZpY2VzL2RhdGFTZXJ2aWNlQVBJL0FkZERpYWxvZy52dWUnOwppbXBvcnQgdGFibGVNaXhpbiBmcm9tICdAL21peGlucy90YWJsZS5qcyc7IC8vIOWIl+ihqG1peGlucwppbXBvcnQgU2hvd0RpYWxvZyBmcm9tICdAL3ZpZXdzL2RhdGFTZXJ2aWNlcy9kYXRhU2VydmljZUFQSS9TaG93RGlhbG9nLnZ1ZSc7CmV4cG9ydCBkZWZhdWx0IHsKICBjb21wb25lbnRzOiB7CiAgICBEZXRhaWxEaWFsb2c6IERldGFpbERpYWxvZywKICAgIFNlcnZpY2VEaWFsb2c6IFNlcnZpY2VEaWFsb2csCiAgICBTaG93RGlhbG9nOiBTaG93RGlhbG9nLAogICAgQWRkRGlhbG9nOiBBZGREaWFsb2cKICB9LAogIG1peGluczogW3RhYmxlTWl4aW5dLAogIGRhdGE6IGZ1bmN0aW9uIGRhdGEoKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwogICAgLy8g5qCRCiAgICB2YXIgVFJFRV9DT05GSUcgPSB7CiAgICAgIG5hbWU6ICcnLAogICAgICB0cmVlSWQ6ICcnLAogICAgICB0cmVlUHJvcHM6IHsKICAgICAgICB2YWx1ZTogJ2lkJywKICAgICAgICBsYWJlbDogJ25hbWUnCiAgICAgIH0sCiAgICAgIGV4cGFuZEFsbDogZmFsc2UsCiAgICAgIGRlZmF1bHRFeHBhbmRlZEtleXM6IFsnMCddLAogICAgICAvLyDmraTlpIRmaWVsZHPlhoXphY3nva7lr7nosaHlsZ7mgKfljIXmi6w6IGxhYmVsL3Byb3AvcnVsZXMvdHlwZSjmnprkuL46c3dpdGNoL251bWJlci9pbnB1dCjpu5jorqQpKS9zcGFuLwogICAgICB0cmVlRmllbGRzOiBbewogICAgICAgIGxhYmVsOiAn5o6l5Y+j55uu5b2V5ZCN56ewJywKICAgICAgICBwcm9wOiAnbmFtZScsCiAgICAgICAgbGFiZWxXaWR0aDogJzEyMCcsCiAgICAgICAgcnVsZXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmjqXlj6Pnm67lvZXlkI3np7DkuI3og73kuLrnqbonCiAgICAgICAgfV0KICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5o6l5Y+j55uu5b2V57yW56CBJywKICAgICAgICBwcm9wOiAnY29kZScsCiAgICAgICAgbGFiZWxXaWR0aDogJzEyMCcsCiAgICAgICAgcnVsZXM6IFt7CiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgIG1lc3NhZ2U6ICfmjqXlj6Pnm67lvZXnvJbnoIHkuI3og73kuLrnqbonCiAgICAgICAgfV0KICAgICAgfV0sCiAgICAgIGN1ck5vZGU6IHt9IC8vIOW9k+WJjemAieaLqeiKgueCuQogICAgfTsKICAgIC8vIHRhYmxl5YiX6KGoCiAgICB2YXIgVEFCTEVfQ09ORklHID0gewogICAgICAvLyBmaWx0ZXJzOiB7CiAgICAgIC8vICAgYXBpTW9kZTogMSwgLy8g6K+35rGC5pa55byP6buY6K6k5Li6R0VUCiAgICAgIC8vIH0sCiAgICAgIGNyZWF0ZWRMaXN0OiBbewogICAgICAgIGxhYmVsOiAnR0VUJywKICAgICAgICB2YWx1ZTogMQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICdQT1NUJywKICAgICAgICB2YWx1ZTogMAogICAgICB9XSwKICAgICAgLy8g5YiX6KGo6KGo5aS0CiAgICAgIGNvbHVtbnM6IFt7CiAgICAgICAgbGFiZWw6ICfmjqXlj6PlkI3np7AnLAogICAgICAgIHByb3A6ICdhcGlOYW1lJywKICAgICAgICB3aWR0aDogJzIwMHB4JywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwgewogICAgICAgIGxhYmVsOiAn5o6l5Y+j5o+P6L+wJywKICAgICAgICBwcm9wOiAnYXBpRGVzYycsCiAgICAgICAgd2lkdGg6ICcyMDBweCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aOpeWPo+WcsOWdgCcsCiAgICAgICAgcHJvcDogJ2FwaVVybCcsCiAgICAgICAgd2lkdGg6ICczMDBweCcsCiAgICAgICAgYWxpZ246ICdjZW50ZXInCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+aVsOaNruW6k+ihqOWQjScsCiAgICAgICAgcHJvcDogJ2RiQWxpYXMnLAogICAgICAgIHdpZHRoOiAnMTAwcHgnLAogICAgICAgIGFsaWduOiAnY2VudGVyJwogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfor7fmsYLmlrnlvI8nLAogICAgICAgIHByb3A6ICdhcGlNb2RlJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIHNsb3Q6ICdhcGlNb2RlJywKICAgICAgICB3aWR0aDogJzEwMHB4JywKICAgICAgICBhbGlnbjogJ2NlbnRlcicKICAgICAgfSwKICAgICAgLy8geyBsYWJlbDogJ+aOpeWPo+eKtuaAgScsIHByb3A6ICdzdGF0dXMnLCBkYXRhVHlwZTogJ3Nsb3QnLCBzbG90OiAnc3RhdHVzJywgYWxpZ246ICdjZW50ZXInIH0sCiAgICAgIHsKICAgICAgICBsYWJlbDogJ+aOpeWPo+eKtuaAgScsCiAgICAgICAgcHJvcDogJ3N0YXR1cycsCiAgICAgICAgd2lkdGg6ICcxNTAnLAogICAgICAgIGFsaWduOiAnY2VudGVyJywKICAgICAgICBkYXRhVHlwZTogJ3Nsb3QnLAogICAgICAgIC8vIOS9v+eUqOaPkuanvQogICAgICAgIHNsb3Q6ICdzdGF0dXMnIC8vIOaPkuanveWQje+8jOaQremFjSBkYXRhVHlwZTogJ3Nsb3QnIOS9v+eUqAogICAgICB9LCB7CiAgICAgICAgZGF0YVR5cGU6ICdvcHRpb24nLAogICAgICAgIGxhYmVsOiAn5pON5L2cJywKICAgICAgICBmaXhlZDogJ3JpZ2h0JywKICAgICAgICBvcGVyYXRpb246IFt7CiAgICAgICAgICBuYW1lOiAn5rWL6K+VJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXMtdW5mb2xkJywKICAgICAgICAgIGNvbG9yOiAnIzQwOWVmZicsCiAgICAgICAgICBjbGlja0Z1bjogZnVuY3Rpb24gY2xpY2tGdW4ocm93KSB7CiAgICAgICAgICAgIF90aGlzLnNob3dEcmF3ZXIocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5p+l55yL5pel5b+XJywKICAgICAgICAgIGljb246ICdlbC1pY29uLWRvY3VtZW50JywKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuc2VydmljZXNob3cocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5o6l5Y+j5paH5qGj5p+l55yLJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXRpY2tldHMnLAogICAgICAgICAgY29sb3I6ICcjNDA3Y2ZmJywKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMuZGV0YWlsc3Nob3cocm93KTsKICAgICAgICAgIH0KICAgICAgICB9LCB7CiAgICAgICAgICBuYW1lOiAn5Y+R5biDJywKICAgICAgICAgIGljb246ICdlbC1pY29uLXMtcHJvbW90aW9uJywKICAgICAgICAgIGNvbG9yOiAnI2ZhOTEyYScsCiAgICAgICAgICBzaG93SGlkZTogZnVuY3Rpb24gc2hvd0hpZGUocm93KSB7CiAgICAgICAgICAgIHJldHVybiByb3cuc3RhdHVzICE9PSAxOwogICAgICAgICAgfSwKICAgICAgICAgIGNsaWNrRnVuOiBmdW5jdGlvbiBjbGlja0Z1bihyb3cpIHsKICAgICAgICAgICAgX3RoaXMucHVibGlzaFRhYmxlKHJvdyk7CiAgICAgICAgICB9CiAgICAgICAgfSwgewogICAgICAgICAgbmFtZTogJ+WIoOmZpCcsCiAgICAgICAgICBpY29uOiAnZWwtaWNvbi1kZWxldGUnLAogICAgICAgICAgY29sb3I6ICdyZWQnLAogICAgICAgICAgY2xpY2tGdW46IGZ1bmN0aW9uIGNsaWNrRnVuKHJvdykgewogICAgICAgICAgICBfdGhpcy5kZWxBcGkocm93KTsKICAgICAgICAgIH0KICAgICAgICB9XQogICAgICB9XSwKICAgICAgZGVmYXVsdEZpbHRlcjogW3sKICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgcHJvcGVydHk6ICdjYXRhbG9nSWQnLAogICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICB2YWx1ZTogJycKICAgICAgfV0KICAgIH07CiAgICAvLyBkaWFsb2flvLnlh7oKICAgIHZhciBESUFMT0dfQ09ORklHID0gewogICAgICBkZXRhaWxWaXNpYmxlOiBmYWxzZSwKICAgICAgYWRkVmlzaWJsZTogZmFsc2UsCiAgICAgIGRpYWxvZ1NlcnZpY2U6IGZhbHNlLAogICAgICBkaWFsb2dEZXRhaWxzOiBmYWxzZSwKICAgICAgZHJhd2VyVmlzaWJsZTogZmFsc2UsCiAgICAgIC8vIOaOp+WItuaKveWxieaYvuekuuWSjOmakOiXj+eahOWPmOmHjwogICAgICBkZXRhaWxUaXRsZTogJ+e8lui+kScsCiAgICAgIGFkZFRpdGxlOiAn5paw5aKeJywKICAgICAgZGlhbG9nU2VydmljZVRpdGxlOiAn5p+l55yL5pel5b+XJywKICAgICAgZGlhbG9nRGV0YWlsc1RpdGxlOiAn5o6l5Y+j6K+m5oOFJywKICAgICAgZGlhbG9nZERhdGE6IHt9CiAgICB9OwogICAgcmV0dXJuIF9vYmplY3RTcHJlYWQoX29iamVjdFNwcmVhZChfb2JqZWN0U3ByZWFkKF9vYmplY3RTcHJlYWQoe30sIFRSRUVfQ09ORklHKSwgVEFCTEVfQ09ORklHKSwgRElBTE9HX0NPTkZJRyksIHt9LCB7CiAgICAgIC8vIOS4u+WIl+ihqGRpYWxvZ+ebuOWFswogICAgICBzdGF0dXM6ICcnLAogICAgICAvLyDliJ3lp4vljJbmjqXlj6PnirbmgIHkuLrnqboKICAgICAgdGFibGVEYXRhOiBbXSwKICAgICAgLy8g5Yid5aeL5YyW5YiX6KGo5Li656m65pWw57uECiAgICAgIHZhbHVlOiAnJywKICAgICAgcmVxdWVzdFVybDogJycsCiAgICAgIHJlcXVlc3RNZXRob2Q6ICdHRVQnLAogICAgICByZXNwb25zZURhdGE6IG51bGwKICAgIH0pOwogIH0sCiAgY29tcHV0ZWQ6IHsKICAgIC8vIOmFjee9ruWIl+ihqOaOpeWPo+aWueazle+8m+WPquaciemFjee9ruS6huivpeiuoeeul+WxnuaAp+aJjeS8muaJp+ihjHRhYmxlIG1peGluc+S4reeahGdldERhdGHmlrnms5UKICAgIGRhdGFNZXRob2Q6IGZ1bmN0aW9uIGRhdGFNZXRob2QoKSB7CiAgICAgIHJldHVybiBBUEkudHJlZXF1ZXJ5VGFibGU7CiAgICB9CiAgfSwKICBtZXRob2RzOiB7CiAgICAvLyBhcGlNb2Rl5qCH562+6aKc6ImyCiAgICBkZXRlcm1pbmVUYWdUeXBlOiBmdW5jdGlvbiBkZXRlcm1pbmVUYWdUeXBlKGFwaU1vZGUpIHsKICAgICAgcmV0dXJuIGFwaU1vZGUgPT09ICdHRVQnID8gJycgOiAnd2FybmluZyc7CiAgICB9LAogICAgLy8g5qCRCiAgICBnZXRUcmVlTm9kZXM6IGZ1bmN0aW9uIGdldFRyZWVOb2RlcygpIHsKICAgICAgdmFyIF90aGlzMiA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZSgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSR0cmVlQWN0aW9uLCBfeWllbGQkQVBJJHRyZWVBY3Rpb24yLCB2YWx1ZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnRyZWVBY3Rpb24oKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF95aWVsZCRBUEkkdHJlZUFjdGlvbiA9IF9jb250ZXh0LnNlbnQ7CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSR0cmVlQWN0aW9uMiA9IF95aWVsZCRBUEkkdHJlZUFjdGlvbi52YWx1ZTsKICAgICAgICAgICAgICB2YWx1ZSA9IF95aWVsZCRBUEkkdHJlZUFjdGlvbjIgPT09IHZvaWQgMCA/IFtdIDogX3lpZWxkJEFQSSR0cmVlQWN0aW9uMjsKICAgICAgICAgICAgICBfdGhpczIuZGVmYXVsdEV4cGFuZGVkS2V5cyA9IFsodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbHVlWzBdLmlkKSB8fCAnJ107CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgicmV0dXJuIiwgewogICAgICAgICAgICAgICAgZGF0YTogdmFsdWUgfHwgW10KICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIHJlbG9hZFRyZWU6IGZ1bmN0aW9uIHJlbG9hZFRyZWUoKSB7CiAgICAgIHRoaXMuJHJlZnMuYXBwQXN5bmNUcmVlLmdldFRyZWVEYXRhKCk7CiAgICB9LAogICAgLyoqDQogICAgICogQGRlc2NyaXB0aW9uOiB0cmVlQWN0aW9uc+aUr+aMgeWHveaVsOS5n+aUr+aMgeaVsOe7hO+8jOeUseS6juWunumZheWcuuaZr+W9k+S4rSDlj6/og73kvJrliqjmgIHorr7nva7mjInpkq7vvIzmlYXku6Xlh73mlbDnpLrkvovmnaXlsZXnpLoNCiAgICAgKiBAcGFyYW0geyp9IGRhdGEg5b2T5YmN54K55Ye76IqC54K55pWw5o2uDQogICAgICogQHJldHVybiB7Kn0g5b2T5YmN6IqC54K55bGV56S655qE5pON5L2c6aG55pWw57uEDQogICAgICovCiAgICB0cmVlQWN0aW9uczogZnVuY3Rpb24gdHJlZUFjdGlvbnMoZGF0YSkgewogICAgICAvLyDmoLnoioLngrnliKTmlq3mlrnlvI/ku6XkuJrliqHkuLrlh4bvvIzmraTlpITku4XkuLrnpLrkvosKICAgICAgcmV0dXJuIFt7CiAgICAgICAgbGFiZWw6ICfmt7vliqAnLAogICAgICAgIHR5cGU6ICdhZGQnLAogICAgICAgIG1ldGhvZDogdGhpcy5hZGROb2RlCiAgICAgIH0sIHsKICAgICAgICBsYWJlbDogJ+e8lui+kScsCiAgICAgICAgdHlwZTogJ2VkaXQnLAogICAgICAgIG1ldGhvZDogdGhpcy5lZGl0Tm9kZQogICAgICB9LCB7CiAgICAgICAgbGFiZWw6ICfliKDpmaQnLAogICAgICAgIHR5cGU6ICdkZWxldGUnLAogICAgICAgIG1ldGhvZDogdGhpcy5kZWxOb2RlCiAgICAgIH1dOwogICAgfSwKICAgIG9uVHJlZU5vZGVDbGljazogZnVuY3Rpb24gb25UcmVlTm9kZUNsaWNrKG5vZGUpIHsKICAgICAgdmFyIF90aGlzJGN1ck5vZGU7CiAgICAgIHRoaXMudHJlZUlkID0gbm9kZS5pZDsKICAgICAgLy8g5p6E5bu65p+l6K+i5Y+C5pWw5a+56LGh77yM5oyJ54Wn5L2g5o+Q5L6b55qE5qC85byP56S65L6LCiAgICAgIHZhciBxdWVyeVBhcmFtcyA9IHsKICAgICAgICBncm91cFJlbGF0aW9uOiAnQU5EJywKICAgICAgICBncm91cFRyZWU6IHt9LAogICAgICAgIHBhcmFtczoge30sCiAgICAgICAgcXVlcnlzOiBbewogICAgICAgICAgZ3JvdXA6ICdtYWluJywKICAgICAgICAgIG9wZXJhdGlvbjogJ0VRVUFMJywKICAgICAgICAgIHBhcmVudEdyb3VwOiAnJywKICAgICAgICAgIHByb3BlcnR5OiAnJywKICAgICAgICAgIHJlbGF0aW9uOiAnQU5EJywKICAgICAgICAgIHZhbHVlOiB7fQogICAgICAgIH0sIHsKICAgICAgICAgIGdyb3VwOiAnbWFpbicsCiAgICAgICAgICBvcGVyYXRpb246ICdFUVVBTCcsCiAgICAgICAgICBwYXJlbnRHcm91cDogJycsCiAgICAgICAgICBwcm9wZXJ0eTogJ2NhdGFsb2dJZCcsCiAgICAgICAgICByZWxhdGlvbjogJ0FORCcsCiAgICAgICAgICB2YWx1ZTogdGhpcy50cmVlSWQKICAgICAgICB9XSwKICAgICAgICBzb3J0ZXI6IFt7CiAgICAgICAgICBkaXJlY3Rpb246ICdBU0MnLAogICAgICAgICAgcHJvcGVydHk6ICcnCiAgICAgICAgfV0KICAgICAgfTsKICAgICAgaWYgKG5vZGUuaWQgPT09ICgoX3RoaXMkY3VyTm9kZSA9IHRoaXMuY3VyTm9kZSkgPT09IG51bGwgfHwgX3RoaXMkY3VyTm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkY3VyTm9kZS5pZCkpIHJldHVybjsKICAgICAgdGhpcy5kZXB0TmFtZSA9IG5vZGUubGFiZWw7CiAgICAgIHRoaXMuY3VyTm9kZSA9IF9vYmplY3RTcHJlYWQoe30sIG5vZGUpOwogICAgICB0aGlzLmZvcm0gPSB0aGlzLiRvcHRpb25zLmRhdGEoKS5mb3JtOwogICAgICB0aGlzLmdldERhdGEocXVlcnlQYXJhbXMpOwogICAgfSwKICAgIC8vIOebruW9leaWsOWingogICAgYWRkTm9kZTogZnVuY3Rpb24gYWRkTm9kZShwYXJhbXMsIG5vZGUpIHsKICAgICAgdmFyIF90aGlzMyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIoKSB7CiAgICAgICAgdmFyIGNvZGUsIG5hbWUsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGFkZEFQSVRyZWUsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZTsKICAgICAgICAgICAgICBpZCA9IG5vZGUuaWQ7CiAgICAgICAgICAgICAgbmV3Tm9kZSA9IHsKICAgICAgICAgICAgICAgIGNvZGU6IGNvZGUsCiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICAgICAgcGFyZW50SWQ6IGlkCiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDM7CiAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSA2OwogICAgICAgICAgICAgIHJldHVybiBBUEkuYWRkQVBJVHJlZShuZXdOb2RlKTsKICAgICAgICAgICAgY2FzZSA2OgogICAgICAgICAgICAgIF95aWVsZCRBUEkkYWRkQVBJVHJlZSA9IF9jb250ZXh0Mi5zZW50OwogICAgICAgICAgICAgIHN0YXRlID0gX3lpZWxkJEFQSSRhZGRBUElUcmVlLnN0YXRlOwogICAgICAgICAgICAgIG1lc3NhZ2UgPSBfeWllbGQkQVBJJGFkZEFQSVRyZWUubWVzc2FnZTsKICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgIF90aGlzMy5yZWxvYWRUcmVlKCk7CiAgICAgICAgICAgICAgICBfdGhpczMuJG1lc3NhZ2Uuc3VjY2Vzcygn5re75Yqg6LWE5rqQ55uu5b2V5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKG1lc3NhZ2UgfHwgJ+a3u+WKoOaOpeWPo+ebruW9leWksei0pe+8gScpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDE1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX2NvbnRleHQyLnQwID0gX2NvbnRleHQyWyJjYXRjaCJdKDMpOwogICAgICAgICAgICAgIF90aGlzMy4kbWVzc2FnZS53YXJuaW5nKF9jb250ZXh0Mi50MCB8fCAn5re75Yqg5o6l5Y+j55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTIsIG51bGwsIFtbMywgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIOebruW9lee8lui+kQogICAgZWRpdE5vZGU6IGZ1bmN0aW9uIGVkaXROb2RlKHBhcmFtcykgewogICAgICB2YXIgX3RoaXM0ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlMygpIHsKICAgICAgICB2YXIgY29kZSwgbmFtZSwgcGFyZW50SWQsIGlkLCBuZXdOb2RlLCBfeWllbGQkQVBJJGVkaXRBUElUcmUsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3JSdW50aW1lKCkud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7CiAgICAgICAgICB3aGlsZSAoMSkgc3dpdGNoIChfY29udGV4dDMucHJldiA9IF9jb250ZXh0My5uZXh0KSB7CiAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICBjb2RlID0gcGFyYW1zLmNvZGUsIG5hbWUgPSBwYXJhbXMubmFtZSwgcGFyZW50SWQgPSBwYXJhbXMucGFyZW50SWQsIGlkID0gcGFyYW1zLmlkOwogICAgICAgICAgICAgIG5ld05vZGUgPSB7CiAgICAgICAgICAgICAgICBjb2RlOiBjb2RlLAogICAgICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIHBhcmVudElkOiBwYXJlbnRJZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAyOwogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gNTsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmVkaXRBUElUcmVlKG5ld05vZGUpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgX3lpZWxkJEFQSSRlZGl0QVBJVHJlID0gX2NvbnRleHQzLnNlbnQ7CiAgICAgICAgICAgICAgc3RhdGUgPSBfeWllbGQkQVBJJGVkaXRBUElUcmUuc3RhdGU7CiAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkZWRpdEFQSVRyZS5tZXNzYWdlOwogICAgICAgICAgICAgIGlmIChzdGF0ZSkgewogICAgICAgICAgICAgICAgX3RoaXM0LnJlbG9hZFRyZWUoKTsKICAgICAgICAgICAgICAgIF90aGlzNC4kbWVzc2FnZS5zdWNjZXNzKCfnvJbovpHotYTmupDnm67lvZXmiJDlip/vvIEnKTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn57yW6L6R5o6l5Y+j55uu5b2V5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTQ7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAxMTsKICAgICAgICAgICAgICBfY29udGV4dDMudDAgPSBfY29udGV4dDNbImNhdGNoIl0oMik7CiAgICAgICAgICAgICAgX3RoaXM0LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQzLnQwIHx8ICfnvJbovpHmjqXlj6Pnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlMywgbnVsbCwgW1syLCAxMV1dKTsKICAgICAgfSkpKCk7CiAgICB9LAogICAgLy8g55uu5b2V5Yig6ZmkCiAgICBkZWxOb2RlOiBmdW5jdGlvbiBkZWxOb2RlKHBhcmFtcywgbm9kZSkgewogICAgICB2YXIgX3RoaXM1ID0gdGhpczsKICAgICAgcmV0dXJuIF9hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNCgpIHsKICAgICAgICB2YXIgX3lpZWxkJEFQSSRyZW1vdmVBUElULCBzdGF0ZSwgbWVzc2FnZTsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZSgpLndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkgewogICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAwOwogICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMzsKICAgICAgICAgICAgICByZXR1cm4gQVBJLnJlbW92ZUFQSVRyZWUobm9kZS5pZCk7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICBfeWllbGQkQVBJJHJlbW92ZUFQSVQgPSBfY29udGV4dDQuc2VudDsKICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkcmVtb3ZlQVBJVC5zdGF0ZTsKICAgICAgICAgICAgICBtZXNzYWdlID0gX3lpZWxkJEFQSSRyZW1vdmVBUElULm1lc3NhZ2U7CiAgICAgICAgICAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgICAgICAgICBfdGhpczUucmVsb2FkVHJlZSgpOwogICAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOi1hOa6kOebruW9leaIkOWKn++8gScpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBfdGhpczUuJG1lc3NhZ2Uud2FybmluZyhtZXNzYWdlIHx8ICfliKDpmaTmjqXlj6Pnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxMjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgIF9jb250ZXh0NC5wcmV2ID0gOTsKICAgICAgICAgICAgICBfY29udGV4dDQudDAgPSBfY29udGV4dDRbImNhdGNoIl0oMCk7CiAgICAgICAgICAgICAgX3RoaXM1LiRtZXNzYWdlLndhcm5pbmcoX2NvbnRleHQ0LnQwIHx8ICfliKDpmaTotYTmjqXlj6Pnm67lvZXlpLHotKXvvIEnKTsKICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ0LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNCwgbnVsbCwgW1swLCA5XV0pOwogICAgICB9KSkoKTsKICAgIH0sCiAgICAvLyB0YWJsZeWIl+ihqOaWsOWingogICAgYWRkRGF0YTogZnVuY3Rpb24gYWRkRGF0YSgpIHsKICAgICAgdGhpcy5hZGRUaXRsZSA9ICfmlrDlop5BUEnmjqXlj6MnOwogICAgICB0aGlzLmRpYWxvZ2REYXRhID0gewogICAgICAgIGNhdGFsb2dJZDogdGhpcy5jdXJOb2RlLmlkCiAgICAgIH07CiAgICAgIHRoaXMuYWRkVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgLy8gdGFibGXliJfooajnvJbovpEKICAgIGVkaXREYXRhOiBmdW5jdGlvbiBlZGl0RGF0YShyb3cpIHsKICAgICAgdGhpcy5kZXRhaWxUaXRsZSA9ICJcdTdGMTZcdThGOTEgLSAiLmNvbmNhdChyb3cuYXBpTmFtZSk7CiAgICAgIHRoaXMuZGlhbG9nZERhdGEgPSByb3c7CiAgICAgIHRoaXMuZGV0YWlsVmlzaWJsZSA9IHRydWU7CiAgICB9LAogICAgLy8gdGFibGXliJfooajliKDpmaQKICAgIGRlbEFwaTogZnVuY3Rpb24gZGVsQXBpKHJvdykgewogICAgICB2YXIgX3RoaXM2ID0gdGhpczsKICAgICAgdGhpcy4kY29uZmlybSgiXHU2QjY0XHU2NENEXHU0RjVDXHU1QzA2XHU2QzM4XHU0RTQ1XHU1MjIwXHU5NjY0XHU4QkU1XHU2M0E1XHU1M0UzXHU5ODc5XHVGRjA4Ii5jb25jYXQocm93LmFwaU5hbWUsICJcdUZGMDksIFx1NjYyRlx1NTQyNlx1N0VFN1x1N0VFRD8iKSwgJ+aPkOekuicsIHsKICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ+ehruWumicsCiAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgdHlwZTogJ3dhcm5pbmcnCiAgICAgIH0pLnRoZW4oLyojX19QVVJFX18qL19hc3luY1RvR2VuZXJhdG9yKC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3JSdW50aW1lKCkubWFyayhmdW5jdGlvbiBfY2FsbGVlNSgpIHsKICAgICAgICB2YXIgaW5kZXg7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU1JChfY29udGV4dDUpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjsKICAgICAgICAgICAgICByZXR1cm4gQVBJLmRlbEFwaURhdGEocm93LmlkKTsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIF90aGlzNi5nZXREYXRhKCk7CiAgICAgICAgICAgICAgX3RoaXM2LiRtZXNzYWdlLnN1Y2Nlc3MoJ+WIoOmZpOaIkOWKnycpOwogICAgICAgICAgICAgIC8vIOaJvuWIsOimgeWIoOmZpOeahOaVsOaNruWcqHRhYmxlRGF0YeS4reeahOe0ouW8lQogICAgICAgICAgICAgIGluZGV4ID0gX3RoaXM2LnRhYmxlRGF0YS5maW5kSW5kZXgoZnVuY3Rpb24gKGl0ZW0pIHsKICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLmlkID09PSByb3cuaWQ7CiAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkgewogICAgICAgICAgICAgICAgLy8g5LuOdGFibGVEYXRh5pWw57uE5Lit5Yig6Zmk5a+55bqU55qE5pWw5o2uCiAgICAgICAgICAgICAgICBfdGhpczYudGFibGVEYXRhLnNwbGljZShpbmRleCwgMSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTUpOwogICAgICB9KSkpLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WIoOmZpOaVsOaNruWksei0pTonLCBlcnJvcik7CiAgICAgIH0pOwogICAgfSwKICAgIG9uQmVmb3JlR2V0RGF0YTogZnVuY3Rpb24gb25CZWZvcmVHZXREYXRhKHF1ZXJ5UGFyYW1zLCBmb3JtRGF0YSkgewogICAgICB0aGlzLnNldEZpbHRlclZhbHVlKHRoaXMucXVlcnlQYXJhbXMsIHRoaXMuZGVmYXVsdEZpbHRlciwgJ2NhdGFsb2dJZCcsIHRoaXMuY3VyTm9kZS5pZCk7CiAgICB9LAogICAgLy8g5paw5aKe56Gu5a6a5oyJ6ZKuCiAgICBvbkNvbmZpcm06IGZ1bmN0aW9uIG9uQ29uZmlybShkYXRhLCBwRGF0YSkgewogICAgICB0aGlzLmdldERhdGEoKTsKICAgIH0sCiAgICAvLyDmn6XnnIvml6Xlv5fmjInpkq4KICAgIHNlcnZpY2VzaG93OiBmdW5jdGlvbiBzZXJ2aWNlc2hvdyhyb3cpIHsKICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlVGl0bGUgPSAiXHU2N0U1XHU3NzBCXHU2NUU1XHU1RkQ3LSAiLmNvbmNhdChyb3cuYXBpTmFtZSk7CiAgICAgIHRoaXMuY3VycmVudFJvdyA9IHJvdzsKICAgICAgdmFyIHJvd0lkID0gcm93LmlkOyAvLyDojrflj5blvZPliY3ooYznmoRpZAogICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UgPSB0cnVlOwogICAgICAvLyBjb25zb2xlLmxvZygncm93cm93Jywgcm93LmlkKTsKICAgICAgdGhpcy4kcmVmcy5TZXJ2aWNlRGlhbG9nLmluaXREYXRhKHsKICAgICAgICBpZDogcm93SWQKICAgICAgfSk7IC8vIOWwhmlk5Lyg6YCS57uZU2VydmljZURpYWxvZ+e7hOS7tgogICAgfSwKICAgIC8vIOaOpeWPo+aWh+aho+afpeeciwogICAgZGV0YWlsc3Nob3c6IGZ1bmN0aW9uIGRldGFpbHNzaG93KHJvdykgewogICAgICB0aGlzLmRpYWxvZ0RldGFpbHNUaXRsZSA9ICJcdTYzQTVcdTUzRTNcdThCRTZcdTYwQzUtICIuY29uY2F0KHJvdy5hcGlOYW1lKTsKICAgICAgdGhpcy5jdXJyZW50Um93ID0gcm93OwogICAgICB0aGlzLmRpYWxvZ0RldGFpbHMgPSB0cnVlOwogICAgfSwKICAgIC8vIOa1i+ivleaMiemSrgogICAgc2hvd0RyYXdlcjogZnVuY3Rpb24gc2hvd0RyYXdlcigpIHsKICAgICAgdGhpcy5kcmF3ZXJWaXNpYmxlID0gdHJ1ZTsKICAgIH0sCiAgICAvLyDlj5HluIMKICAgIHB1Ymxpc2hUYWJsZTogZnVuY3Rpb24gcHVibGlzaFRhYmxlKGRhdGEpIHsKICAgICAgdmFyIF90aGlzNyA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTcoKSB7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU3JChfY29udGV4dDcpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0Ny5wcmV2ID0gX2NvbnRleHQ3Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIC8vIHRoaXMuY3VycmVudFJvdyA9IGRhdGE7CiAgICAgICAgICAgICAgLy8gdGhpcy5wdXRPdXRWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICBfdGhpczcuJGNvbmZpcm0oIlx1NkI2NFx1NjRDRFx1NEY1Q1x1NUMwNlx1NTNEMVx1NUUwM1x1RkYwOCIuY29uY2F0KGRhdGEuYXBpTmFtZSwgIlx1RkYwOSwgXHU2NjJGXHU1NDI2XHU3RUU3XHU3RUVEPyIpLCAn5o+Q56S6JywgewogICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICfnoa7lrponLAogICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dDogJ+WPlua2iCcsCiAgICAgICAgICAgICAgICB0eXBlOiAnd2FybmluZycKICAgICAgICAgICAgICB9KS50aGVuKC8qI19fUFVSRV9fKi9fYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7CiAgICAgICAgICAgICAgICB2YXIgX3lpZWxkJEFQSSR4eHgsIHN0YXRlLCBtZXNzYWdlOwogICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHsKICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ni5wcmV2ID0gMDsKICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMzsKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBUEkueHh4KGRhdGEuaWQpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgIF95aWVsZCRBUEkkeHh4ID0gX2NvbnRleHQ2LnNlbnQ7CiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IF95aWVsZCRBUEkkeHh4LnN0YXRlOwogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IF95aWVsZCRBUEkkeHh4Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmdldERhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coMTExMTEpOwogICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuJG1lc3NhZ2Uuc3VjY2Vzcygn6LWE5rqQ6aG55Y+R5biD5oiQ5Yqf77yBJyk7CiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygyMjIyKTsKICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LiRtZXNzYWdlLndhcm5pbmcobWVzc2FnZSB8fCAn6LWE5rqQ6aG55Y+R5biD5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDEyOwogICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2LnByZXYgPSA5OwogICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ2LnQwID0gX2NvbnRleHQ2WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coMzIzMzMpOwogICAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy4kbWVzc2FnZS53YXJuaW5nKGVyciB8fCAn6LWE5rqQ6aG55Y+R5biD5aSx6LSl77yBJyk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgICBjYXNlICJlbmQiOgogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sIF9jYWxsZWU2LCBudWxsLCBbWzAsIDldXSk7CiAgICAgICAgICAgICAgfSkpKS5jYXRjaChmdW5jdGlvbiAoKSB7fSk7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgY2FzZSAiZW5kIjoKICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTsKICAgICAgICAgIH0KICAgICAgICB9LCBfY2FsbGVlNyk7CiAgICAgIH0pKSgpOwogICAgfSwKICAgIC8vIGPmtYvor5XmjInpkq7lj5HpgIEKICAgIHNlbmRSZXF1ZXN0OiBmdW5jdGlvbiBzZW5kUmVxdWVzdCgpIHsKICAgICAgdmFyIF90aGlzOCA9IHRoaXM7CiAgICAgIHJldHVybiBfYXN5bmNUb0dlbmVyYXRvcigvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yUnVudGltZSgpLm1hcmsoZnVuY3Rpb24gX2NhbGxlZTgoKSB7CiAgICAgICAgdmFyIG9wdGlvbnMsIHJlc3BvbnNlLCByZXN1bHQ7CiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvclJ1bnRpbWUoKS53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDgpIHsKICAgICAgICAgIHdoaWxlICgxKSBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHsKICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgIF9jb250ZXh0OC5wcmV2ID0gMDsKICAgICAgICAgICAgICBvcHRpb25zID0gewogICAgICAgICAgICAgICAgbWV0aG9kOiBfdGhpczgucmVxdWVzdE1ldGhvZAogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgaWYgKF90aGlzOC5yZXF1ZXN0TWV0aG9kID09PSAnUE9TVCcpIHsKICAgICAgICAgICAgICAgIC8vIOeugOWNleekuuS+i++8jOWunumZheS4reWPr+agueaNruaOpeWPo+mcgOaxguWujOWWhOivt+axguS9k+etieWGheWuuQogICAgICAgICAgICAgICAgb3B0aW9ucy5ib2R5ID0gSlNPTi5zdHJpbmdpZnkoe30pOwogICAgICAgICAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gewogICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDU7CiAgICAgICAgICAgICAgcmV0dXJuIGZldGNoKF90aGlzOC5yZXF1ZXN0VXJsLCBvcHRpb25zKTsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgIHJlc3BvbnNlID0gX2NvbnRleHQ4LnNlbnQ7CiAgICAgICAgICAgICAgX2NvbnRleHQ4Lm5leHQgPSA4OwogICAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICByZXN1bHQgPSBfY29udGV4dDguc2VudDsKICAgICAgICAgICAgICBfdGhpczgucmVzcG9uc2VEYXRhID0gSlNPTi5zdHJpbmdpZnkocmVzdWx0LCBudWxsLCAyKTsKICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDE1OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDEyOgogICAgICAgICAgICAgIF9jb250ZXh0OC5wcmV2ID0gMTI7CiAgICAgICAgICAgICAgX2NvbnRleHQ4LnQwID0gX2NvbnRleHQ4WyJjYXRjaCJdKDApOwogICAgICAgICAgICAgIF90aGlzOC5yZXNwb25zZURhdGEgPSAiXHU4QkY3XHU2QzQyXHU1MUZBXHU5NTE5OiAiLmNvbmNhdChfY29udGV4dDgudDAubWVzc2FnZSk7CiAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgIGNhc2UgImVuZCI6CiAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OC5zdG9wKCk7CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZTgsIG51bGwsIFtbMCwgMTJdXSk7CiAgICAgIH0pKSgpOwogICAgfQogIH0KfTs="},null]}