{"remainingRequest":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\thread-loader\\dist\\cjs.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js!C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\quill\\modules\\toolbar.js","dependencies":[{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\quill\\modules\\toolbar.js","mtime":1787309795893},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\babel.config.js","mtime":1787567871334},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1787309791955},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\thread-loader\\dist\\cjs.js","mtime":1787309791954},{"path":"C:\\Users\\Admin\\Desktop\\education\\frontend\\node_modules\\babel-loader\\lib\\index.js","mtime":1787309793142}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0IF9kZWZpbmVQcm9wZXJ0eSBmcm9tICJDOi9Vc2Vycy9BZG1pbi9EZXNrdG9wL2VkdWNhdGlvbi9mcm9udGVuZC9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZGVmaW5lUHJvcGVydHkuanMiOwppbXBvcnQgX3NsaWNlZFRvQXJyYXkgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL3NsaWNlZFRvQXJyYXkuanMiOwppbXBvcnQgX2NsYXNzQ2FsbENoZWNrIGZyb20gIkM6L1VzZXJzL0FkbWluL0Rlc2t0b3AvZWR1Y2F0aW9uL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9jbGFzc0NhbGxDaGVjay5qcyI7CmltcG9ydCBfY3JlYXRlQ2xhc3MgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NyZWF0ZUNsYXNzLmpzIjsKaW1wb3J0IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIGZyb20gIkM6L1VzZXJzL0FkbWluL0Rlc2t0b3AvZWR1Y2F0aW9uL2Zyb250ZW5kL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLmpzIjsKaW1wb3J0IF9jYWxsU3VwZXIgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2NhbGxTdXBlci5qcyI7CmltcG9ydCBfaW5oZXJpdHMgZnJvbSAiQzovVXNlcnMvQWRtaW4vRGVza3RvcC9lZHVjYXRpb24vZnJvbnRlbmQvbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2luaGVyaXRzLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuZmluZC5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzLnJlZ2V4cC50by1zdHJpbmcuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5jb25zdHJ1Y3Rvci5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL2VzbmV4dC5pdGVyYXRvci5maW5kLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXNuZXh0Lml0ZXJhdG9yLmZvci1lYWNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5mb3ItZWFjaC5qcyI7CmltcG9ydCBEZWx0YSBmcm9tICdxdWlsbC1kZWx0YSc7CmltcG9ydCB7IEVtYmVkQmxvdCwgU2NvcGUgfSBmcm9tICdwYXJjaG1lbnQnOwppbXBvcnQgUXVpbGwgZnJvbSAnLi4vY29yZS9xdWlsbC5qcyc7CmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vY29yZS9sb2dnZXIuanMnOwppbXBvcnQgTW9kdWxlIGZyb20gJy4uL2NvcmUvbW9kdWxlLmpzJzsKdmFyIGRlYnVnID0gbG9nZ2VyKCdxdWlsbDp0b29sYmFyJyk7CnZhciBUb29sYmFyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTW9kdWxlKSB7CiAgZnVuY3Rpb24gVG9vbGJhcihxdWlsbCwgb3B0aW9ucykgewogICAgdmFyIF90aGlzOwogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvb2xiYXIpOwogICAgX3RoaXMgPSBfY2FsbFN1cGVyKHRoaXMsIFRvb2xiYXIsIFtxdWlsbCwgb3B0aW9uc10pOwogICAgaWYgKEFycmF5LmlzQXJyYXkoX3RoaXMub3B0aW9ucy5jb250YWluZXIpKSB7CiAgICAgIHZhciBfcXVpbGwkY29udGFpbmVyOwogICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIGNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAndG9vbGJhcicpOwogICAgICBhZGRDb250cm9scyhjb250YWluZXIsIF90aGlzLm9wdGlvbnMuY29udGFpbmVyKTsKICAgICAgKF9xdWlsbCRjb250YWluZXIgPSBxdWlsbC5jb250YWluZXIpID09PSBudWxsIHx8IF9xdWlsbCRjb250YWluZXIgPT09IHZvaWQgMCB8fCAoX3F1aWxsJGNvbnRhaW5lciA9IF9xdWlsbCRjb250YWluZXIucGFyZW50Tm9kZSkgPT09IG51bGwgfHwgX3F1aWxsJGNvbnRhaW5lciA9PT0gdm9pZCAwIHx8IF9xdWlsbCRjb250YWluZXIuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lciwgcXVpbGwuY29udGFpbmVyKTsKICAgICAgX3RoaXMuY29udGFpbmVyID0gY29udGFpbmVyOwogICAgfSBlbHNlIGlmICh0eXBlb2YgX3RoaXMub3B0aW9ucy5jb250YWluZXIgPT09ICdzdHJpbmcnKSB7CiAgICAgIF90aGlzLmNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoX3RoaXMub3B0aW9ucy5jb250YWluZXIpOwogICAgfSBlbHNlIHsKICAgICAgX3RoaXMuY29udGFpbmVyID0gX3RoaXMub3B0aW9ucy5jb250YWluZXI7CiAgICB9CiAgICBpZiAoIShfdGhpcy5jb250YWluZXIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkpIHsKICAgICAgZGVidWcuZXJyb3IoJ0NvbnRhaW5lciByZXF1aXJlZCBmb3IgdG9vbGJhcicsIF90aGlzLm9wdGlvbnMpOwogICAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMpOwogICAgfQogICAgX3RoaXMuY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ3FsLXRvb2xiYXInKTsKICAgIF90aGlzLmNvbnRyb2xzID0gW107CiAgICBfdGhpcy5oYW5kbGVycyA9IHt9OwogICAgaWYgKF90aGlzLm9wdGlvbnMuaGFuZGxlcnMpIHsKICAgICAgT2JqZWN0LmtleXMoX3RoaXMub3B0aW9ucy5oYW5kbGVycykuZm9yRWFjaChmdW5jdGlvbiAoZm9ybWF0KSB7CiAgICAgICAgdmFyIF90aGlzJG9wdGlvbnMkaGFuZGxlcjsKICAgICAgICB2YXIgaGFuZGxlciA9IChfdGhpcyRvcHRpb25zJGhhbmRsZXIgPSBfdGhpcy5vcHRpb25zLmhhbmRsZXJzKSA9PT0gbnVsbCB8fCBfdGhpcyRvcHRpb25zJGhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJG9wdGlvbnMkaGFuZGxlcltmb3JtYXRdOwogICAgICAgIGlmIChoYW5kbGVyKSB7CiAgICAgICAgICBfdGhpcy5hZGRIYW5kbGVyKGZvcm1hdCwgaGFuZGxlcik7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICAgIEFycmF5LmZyb20oX3RoaXMuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbiwgc2VsZWN0JykpLmZvckVhY2goZnVuY3Rpb24gKGlucHV0KSB7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgX3RoaXMuYXR0YWNoKGlucHV0KTsKICAgIH0pOwogICAgX3RoaXMucXVpbGwub24oUXVpbGwuZXZlbnRzLkVESVRPUl9DSEFOR0UsIGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF90aGlzJHF1aWxsJHNlbGVjdGlvbiA9IF90aGlzLnF1aWxsLnNlbGVjdGlvbi5nZXRSYW5nZSgpLAogICAgICAgIF90aGlzJHF1aWxsJHNlbGVjdGlvbjIgPSBfc2xpY2VkVG9BcnJheShfdGhpcyRxdWlsbCRzZWxlY3Rpb24sIDEpLAogICAgICAgIHJhbmdlID0gX3RoaXMkcXVpbGwkc2VsZWN0aW9uMlswXTsgLy8gcXVpbGwuZ2V0U2VsZWN0aW9uIHRyaWdnZXJzIHVwZGF0ZQogICAgICBfdGhpcy51cGRhdGUocmFuZ2UpOwogICAgfSk7CiAgICByZXR1cm4gX3RoaXM7CiAgfQogIF9pbmhlcml0cyhUb29sYmFyLCBfTW9kdWxlKTsKICByZXR1cm4gX2NyZWF0ZUNsYXNzKFRvb2xiYXIsIFt7CiAgICBrZXk6ICJhZGRIYW5kbGVyIiwKICAgIHZhbHVlOiBmdW5jdGlvbiBhZGRIYW5kbGVyKGZvcm1hdCwgaGFuZGxlcikgewogICAgICB0aGlzLmhhbmRsZXJzW2Zvcm1hdF0gPSBoYW5kbGVyOwogICAgfQogIH0sIHsKICAgIGtleTogImF0dGFjaCIsCiAgICB2YWx1ZTogZnVuY3Rpb24gYXR0YWNoKGlucHV0KSB7CiAgICAgIHZhciBfdGhpczIgPSB0aGlzOwogICAgICB2YXIgZm9ybWF0ID0gQXJyYXkuZnJvbShpbnB1dC5jbGFzc0xpc3QpLmZpbmQoZnVuY3Rpb24gKGNsYXNzTmFtZSkgewogICAgICAgIHJldHVybiBjbGFzc05hbWUuaW5kZXhPZigncWwtJykgPT09IDA7CiAgICAgIH0pOwogICAgICBpZiAoIWZvcm1hdCkgcmV0dXJuOwogICAgICBmb3JtYXQgPSBmb3JtYXQuc2xpY2UoJ3FsLScubGVuZ3RoKTsKICAgICAgaWYgKGlucHV0LnRhZ05hbWUgPT09ICdCVVRUT04nKSB7CiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpOwogICAgICB9CiAgICAgIGlmICh0aGlzLmhhbmRsZXJzW2Zvcm1hdF0gPT0gbnVsbCAmJiB0aGlzLnF1aWxsLnNjcm9sbC5xdWVyeShmb3JtYXQpID09IG51bGwpIHsKICAgICAgICBkZWJ1Zy53YXJuKCdpZ25vcmluZyBhdHRhY2hpbmcgdG8gbm9uZXhpc3RlbnQgZm9ybWF0JywgZm9ybWF0LCBpbnB1dCk7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHZhciBldmVudE5hbWUgPSBpbnB1dC50YWdOYW1lID09PSAnU0VMRUNUJyA/ICdjaGFuZ2UnIDogJ2NsaWNrJzsKICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgdmFyIHZhbHVlOwogICAgICAgIGlmIChpbnB1dC50YWdOYW1lID09PSAnU0VMRUNUJykgewogICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICAgICAgaWYgKGlucHV0LnNlbGVjdGVkSW5kZXggPCAwKSByZXR1cm47CiAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yCiAgICAgICAgICB2YXIgc2VsZWN0ZWQgPSBpbnB1dC5vcHRpb25zW2lucHV0LnNlbGVjdGVkSW5kZXhdOwogICAgICAgICAgaWYgKHNlbGVjdGVkLmhhc0F0dHJpYnV0ZSgnc2VsZWN0ZWQnKSkgewogICAgICAgICAgICB2YWx1ZSA9IGZhbHNlOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFsdWUgPSBzZWxlY3RlZC52YWx1ZSB8fCBmYWxzZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKGlucHV0LmNsYXNzTGlzdC5jb250YWlucygncWwtYWN0aXZlJykpIHsKICAgICAgICAgICAgdmFsdWUgPSBmYWxzZTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgICAgICAgdmFsdWUgPSBpbnB1dC52YWx1ZSB8fCAhaW5wdXQuaGFzQXR0cmlidXRlKCd2YWx1ZScpOwogICAgICAgICAgfQogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIH0KICAgICAgICBfdGhpczIucXVpbGwuZm9jdXMoKTsKICAgICAgICB2YXIgX3RoaXMyJHF1aWxsJHNlbGVjdGlvID0gX3RoaXMyLnF1aWxsLnNlbGVjdGlvbi5nZXRSYW5nZSgpLAogICAgICAgICAgX3RoaXMyJHF1aWxsJHNlbGVjdGlvMiA9IF9zbGljZWRUb0FycmF5KF90aGlzMiRxdWlsbCRzZWxlY3RpbywgMSksCiAgICAgICAgICByYW5nZSA9IF90aGlzMiRxdWlsbCRzZWxlY3RpbzJbMF07CiAgICAgICAgaWYgKF90aGlzMi5oYW5kbGVyc1tmb3JtYXRdICE9IG51bGwpIHsKICAgICAgICAgIF90aGlzMi5oYW5kbGVyc1tmb3JtYXRdLmNhbGwoX3RoaXMyLCB2YWx1ZSk7CiAgICAgICAgfSBlbHNlIGlmICgKICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yCiAgICAgICAgX3RoaXMyLnF1aWxsLnNjcm9sbC5xdWVyeShmb3JtYXQpLnByb3RvdHlwZSBpbnN0YW5jZW9mIEVtYmVkQmxvdCkgewogICAgICAgICAgdmFsdWUgPSBwcm9tcHQoIkVudGVyICIuY29uY2F0KGZvcm1hdCkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWFsZXJ0CiAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm47CiAgICAgICAgICBfdGhpczIucXVpbGwudXBkYXRlQ29udGVudHMobmV3IERlbHRhKCkKICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgRml4IG1lIGxhdGVyCiAgICAgICAgICAucmV0YWluKHJhbmdlLmluZGV4KQogICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBGaXggbWUgbGF0ZXIKICAgICAgICAgIC5kZWxldGUocmFuZ2UubGVuZ3RoKS5pbnNlcnQoX2RlZmluZVByb3BlcnR5KHt9LCBmb3JtYXQsIHZhbHVlKSksIFF1aWxsLnNvdXJjZXMuVVNFUik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF90aGlzMi5xdWlsbC5mb3JtYXQoZm9ybWF0LCB2YWx1ZSwgUXVpbGwuc291cmNlcy5VU0VSKTsKICAgICAgICB9CiAgICAgICAgX3RoaXMyLnVwZGF0ZShyYW5nZSk7CiAgICAgIH0pOwogICAgICB0aGlzLmNvbnRyb2xzLnB1c2goW2Zvcm1hdCwgaW5wdXRdKTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICJ1cGRhdGUiLAogICAgdmFsdWU6IGZ1bmN0aW9uIHVwZGF0ZShyYW5nZSkgewogICAgICB2YXIgZm9ybWF0cyA9IHJhbmdlID09IG51bGwgPyB7fSA6IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KHJhbmdlKTsKICAgICAgdGhpcy5jb250cm9scy5mb3JFYWNoKGZ1bmN0aW9uIChwYWlyKSB7CiAgICAgICAgdmFyIF9wYWlyID0gX3NsaWNlZFRvQXJyYXkocGFpciwgMiksCiAgICAgICAgICBmb3JtYXQgPSBfcGFpclswXSwKICAgICAgICAgIGlucHV0ID0gX3BhaXJbMV07CiAgICAgICAgaWYgKGlucHV0LnRhZ05hbWUgPT09ICdTRUxFQ1QnKSB7CiAgICAgICAgICB2YXIgb3B0aW9uID0gbnVsbDsKICAgICAgICAgIGlmIChyYW5nZSA9PSBudWxsKSB7CiAgICAgICAgICAgIG9wdGlvbiA9IG51bGw7CiAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdHNbZm9ybWF0XSA9PSBudWxsKSB7CiAgICAgICAgICAgIG9wdGlvbiA9IGlucHV0LnF1ZXJ5U2VsZWN0b3IoJ29wdGlvbltzZWxlY3RlZF0nKTsKICAgICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkoZm9ybWF0c1tmb3JtYXRdKSkgewogICAgICAgICAgICB2YXIgdmFsdWUgPSBmb3JtYXRzW2Zvcm1hdF07CiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC8iL2csICdcXCInKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBvcHRpb24gPSBpbnB1dC5xdWVyeVNlbGVjdG9yKCJvcHRpb25bdmFsdWU9XCIiLmNvbmNhdCh2YWx1ZSwgIlwiXSIpKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChvcHRpb24gPT0gbnVsbCkgewogICAgICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFRPRE8gZml4IG1lIGxhdGVyCiAgICAgICAgICAgIGlucHV0LnZhbHVlID0gJyc7IC8vIFRPRE8gbWFrZSBjb25maWd1cmFibGU/CiAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVE9ETyBmaXggbWUgbGF0ZXIKICAgICAgICAgICAgaW5wdXQuc2VsZWN0ZWRJbmRleCA9IC0xOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKHJhbmdlID09IG51bGwpIHsKICAgICAgICAgIGlucHV0LmNsYXNzTGlzdC5yZW1vdmUoJ3FsLWFjdGl2ZScpOwogICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCAnZmFsc2UnKTsKICAgICAgICB9IGVsc2UgaWYgKGlucHV0Lmhhc0F0dHJpYnV0ZSgndmFsdWUnKSkgewogICAgICAgICAgLy8gYm90aCBiZWluZyBudWxsIHNob3VsZCBtYXRjaCAoZGVmYXVsdCB2YWx1ZXMpCiAgICAgICAgICAvLyAnMScgc2hvdWxkIG1hdGNoIHdpdGggMSAoaGVhZGVycykKICAgICAgICAgIHZhciBfdmFsdWUgPSBmb3JtYXRzW2Zvcm1hdF07CiAgICAgICAgICB2YXIgaXNBY3RpdmUgPSBfdmFsdWUgPT09IGlucHV0LmdldEF0dHJpYnV0ZSgndmFsdWUnKSB8fCBfdmFsdWUgIT0gbnVsbCAmJiBfdmFsdWUudG9TdHJpbmcoKSA9PT0gaW5wdXQuZ2V0QXR0cmlidXRlKCd2YWx1ZScpIHx8IF92YWx1ZSA9PSBudWxsICYmICFpbnB1dC5nZXRBdHRyaWJ1dGUoJ3ZhbHVlJyk7CiAgICAgICAgICBpbnB1dC5jbGFzc0xpc3QudG9nZ2xlKCdxbC1hY3RpdmUnLCBpc0FjdGl2ZSk7CiAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIGlzQWN0aXZlLnRvU3RyaW5nKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgX2lzQWN0aXZlID0gZm9ybWF0c1tmb3JtYXRdICE9IG51bGw7CiAgICAgICAgICBpbnB1dC5jbGFzc0xpc3QudG9nZ2xlKCdxbC1hY3RpdmUnLCBfaXNBY3RpdmUpOwogICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLXByZXNzZWQnLCBfaXNBY3RpdmUudG9TdHJpbmcoKSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9XSk7Cn0oTW9kdWxlKTsKVG9vbGJhci5ERUZBVUxUUyA9IHt9OwpmdW5jdGlvbiBhZGRCdXR0b24oY29udGFpbmVyLCBmb3JtYXQsIHZhbHVlKSB7CiAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ2J1dHRvbicpOwogIGlucHV0LmNsYXNzTGlzdC5hZGQoInFsLSIuY29uY2F0KGZvcm1hdCkpOwogIGlucHV0LnNldEF0dHJpYnV0ZSgnYXJpYS1wcmVzc2VkJywgJ2ZhbHNlJyk7CiAgaWYgKHZhbHVlICE9IG51bGwpIHsKICAgIGlucHV0LnZhbHVlID0gdmFsdWU7CiAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAiIi5jb25jYXQoZm9ybWF0LCAiOiAiKS5jb25jYXQodmFsdWUpKTsKICB9IGVsc2UgewogICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgZm9ybWF0KTsKICB9CiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGlucHV0KTsKfQpmdW5jdGlvbiBhZGRDb250cm9scyhjb250YWluZXIsIGdyb3VwcykgewogIGlmICghQXJyYXkuaXNBcnJheShncm91cHNbMF0pKSB7CiAgICAvLyBAdHMtZXhwZWN0LWVycm9yCiAgICBncm91cHMgPSBbZ3JvdXBzXTsKICB9CiAgZ3JvdXBzLmZvckVhY2goZnVuY3Rpb24gKGNvbnRyb2xzKSB7CiAgICB2YXIgZ3JvdXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICBncm91cC5jbGFzc0xpc3QuYWRkKCdxbC1mb3JtYXRzJyk7CiAgICBjb250cm9scy5mb3JFYWNoKGZ1bmN0aW9uIChjb250cm9sKSB7CiAgICAgIGlmICh0eXBlb2YgY29udHJvbCA9PT0gJ3N0cmluZycpIHsKICAgICAgICBhZGRCdXR0b24oZ3JvdXAsIGNvbnRyb2wpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBmb3JtYXQgPSBPYmplY3Qua2V5cyhjb250cm9sKVswXTsKICAgICAgICB2YXIgdmFsdWUgPSBjb250cm9sW2Zvcm1hdF07CiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7CiAgICAgICAgICBhZGRTZWxlY3QoZ3JvdXAsIGZvcm1hdCwgdmFsdWUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhZGRCdXR0b24oZ3JvdXAsIGZvcm1hdCwgdmFsdWUpOwogICAgICAgIH0KICAgICAgfQogICAgfSk7CiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZ3JvdXApOwogIH0pOwp9CmZ1bmN0aW9uIGFkZFNlbGVjdChjb250YWluZXIsIGZvcm1hdCwgdmFsdWVzKSB7CiAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2VsZWN0Jyk7CiAgaW5wdXQuY2xhc3NMaXN0LmFkZCgicWwtIi5jb25jYXQoZm9ybWF0KSk7CiAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7CiAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7CiAgICBpZiAodmFsdWUgIT09IGZhbHNlKSB7CiAgICAgIG9wdGlvbi5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgU3RyaW5nKHZhbHVlKSk7CiAgICB9IGVsc2UgewogICAgICBvcHRpb24uc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsICdzZWxlY3RlZCcpOwogICAgfQogICAgaW5wdXQuYXBwZW5kQ2hpbGQob3B0aW9uKTsKICB9KTsKICBjb250YWluZXIuYXBwZW5kQ2hpbGQoaW5wdXQpOwp9ClRvb2xiYXIuREVGQVVMVFMgPSB7CiAgY29udGFpbmVyOiBudWxsLAogIGhhbmRsZXJzOiB7CiAgICBjbGVhbjogZnVuY3Rpb24gY2xlYW4oKSB7CiAgICAgIHZhciBfdGhpczMgPSB0aGlzOwogICAgICB2YXIgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbigpOwogICAgICBpZiAocmFuZ2UgPT0gbnVsbCkgcmV0dXJuOwogICAgICBpZiAocmFuZ2UubGVuZ3RoID09PSAwKSB7CiAgICAgICAgdmFyIGZvcm1hdHMgPSB0aGlzLnF1aWxsLmdldEZvcm1hdCgpOwogICAgICAgIE9iamVjdC5rZXlzKGZvcm1hdHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsKICAgICAgICAgIC8vIENsZWFuIGZ1bmN0aW9uYWxpdHkgaW4gZXhpc3RpbmcgYXBwcyBvbmx5IGNsZWFuIGlubGluZSBmb3JtYXRzCiAgICAgICAgICBpZiAoX3RoaXMzLnF1aWxsLnNjcm9sbC5xdWVyeShuYW1lLCBTY29wZS5JTkxJTkUpICE9IG51bGwpIHsKICAgICAgICAgICAgX3RoaXMzLnF1aWxsLmZvcm1hdChuYW1lLCBmYWxzZSwgUXVpbGwuc291cmNlcy5VU0VSKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLnF1aWxsLnJlbW92ZUZvcm1hdChyYW5nZS5pbmRleCwgcmFuZ2UubGVuZ3RoLCBRdWlsbC5zb3VyY2VzLlVTRVIpOwogICAgICB9CiAgICB9LAogICAgZGlyZWN0aW9uOiBmdW5jdGlvbiBkaXJlY3Rpb24odmFsdWUpIHsKICAgICAgdmFyIF90aGlzJHF1aWxsJGdldEZvcm1hdCA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KCksCiAgICAgICAgYWxpZ24gPSBfdGhpcyRxdWlsbCRnZXRGb3JtYXQuYWxpZ247CiAgICAgIGlmICh2YWx1ZSA9PT0gJ3J0bCcgJiYgYWxpZ24gPT0gbnVsbCkgewogICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCdhbGlnbicsICdyaWdodCcsIFF1aWxsLnNvdXJjZXMuVVNFUik7CiAgICAgIH0gZWxzZSBpZiAoIXZhbHVlICYmIGFsaWduID09PSAncmlnaHQnKSB7CiAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoJ2FsaWduJywgZmFsc2UsIFF1aWxsLnNvdXJjZXMuVVNFUik7CiAgICAgIH0KICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoJ2RpcmVjdGlvbicsIHZhbHVlLCBRdWlsbC5zb3VyY2VzLlVTRVIpOwogICAgfSwKICAgIGluZGVudDogZnVuY3Rpb24gaW5kZW50KHZhbHVlKSB7CiAgICAgIHZhciByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKCk7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgdmFyIGZvcm1hdHMgPSB0aGlzLnF1aWxsLmdldEZvcm1hdChyYW5nZSk7CiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3IKICAgICAgdmFyIGluZGVudCA9IHBhcnNlSW50KGZvcm1hdHMuaW5kZW50IHx8IDAsIDEwKTsKICAgICAgaWYgKHZhbHVlID09PSAnKzEnIHx8IHZhbHVlID09PSAnLTEnKSB7CiAgICAgICAgdmFyIG1vZGlmaWVyID0gdmFsdWUgPT09ICcrMScgPyAxIDogLTE7CiAgICAgICAgaWYgKGZvcm1hdHMuZGlyZWN0aW9uID09PSAncnRsJykgbW9kaWZpZXIgKj0gLTE7CiAgICAgICAgdGhpcy5xdWlsbC5mb3JtYXQoJ2luZGVudCcsIGluZGVudCArIG1vZGlmaWVyLCBRdWlsbC5zb3VyY2VzLlVTRVIpOwogICAgICB9CiAgICB9LAogICAgbGluazogZnVuY3Rpb24gbGluayh2YWx1ZSkgewogICAgICBpZiAodmFsdWUgPT09IHRydWUpIHsKICAgICAgICB2YWx1ZSA9IHByb21wdCgnRW50ZXIgbGluayBVUkw6Jyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tYWxlcnQKICAgICAgfQogICAgICB0aGlzLnF1aWxsLmZvcm1hdCgnbGluaycsIHZhbHVlLCBRdWlsbC5zb3VyY2VzLlVTRVIpOwogICAgfSwKICAgIGxpc3Q6IGZ1bmN0aW9uIGxpc3QodmFsdWUpIHsKICAgICAgdmFyIHJhbmdlID0gdGhpcy5xdWlsbC5nZXRTZWxlY3Rpb24oKTsKICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcgogICAgICB2YXIgZm9ybWF0cyA9IHRoaXMucXVpbGwuZ2V0Rm9ybWF0KHJhbmdlKTsKICAgICAgaWYgKHZhbHVlID09PSAnY2hlY2snKSB7CiAgICAgICAgaWYgKGZvcm1hdHMubGlzdCA9PT0gJ2NoZWNrZWQnIHx8IGZvcm1hdHMubGlzdCA9PT0gJ3VuY2hlY2tlZCcpIHsKICAgICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCdsaXN0JywgZmFsc2UsIFF1aWxsLnNvdXJjZXMuVVNFUik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCdsaXN0JywgJ3VuY2hlY2tlZCcsIFF1aWxsLnNvdXJjZXMuVVNFUik7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMucXVpbGwuZm9ybWF0KCdsaXN0JywgdmFsdWUsIFF1aWxsLnNvdXJjZXMuVVNFUik7CiAgICAgIH0KICAgIH0KICB9Cn07CmV4cG9ydCB7IFRvb2xiYXIgYXMgZGVmYXVsdCwgYWRkQ29udHJvbHMgfTs="},null]}