{
  "created_by": "Tampermonkey",
  "version": "1",
  "scripts": [
    {
      "name": "roc-activity-pax",
      "options": {
        "check_for_updates": true,
        "user_modified": null,
        "comment": null,
        "compatopts_for_requires": true,
        "compat_wrappedjsobject": false,
        "compat_metadata": false,
        "compat_foreach": false,
        "compat_powerful_this": null,
        "sandbox": null,
        "noframes": null,
        "unwrap": null,
        "run_at": null,
        "run_in": null,
        "tags": [],
        "override": {
          "use_includes": [],
          "orig_includes": [
            "https://www.reservistes.defense.gouv.fr/interne/activites/creer/reservistes/*"
          ],
          "merge_includes": true,
          "use_matches": [],
          "orig_matches": [],
          "merge_matches": true,
          "use_excludes": [],
          "orig_excludes": [],
          "merge_excludes": true,
          "use_connects": [],
          "orig_connects": [],
          "merge_connects": true,
          "use_blockers": [],
          "orig_run_at": "document-idle",
          "orig_run_in": [],
          "orig_noframes": null,
          "orig_tags": []
        }
      },
      "storage": {
        "ts": 0,
        "data": {}
      },
      "enabled": true,
      "position": 1,
      "file_url": "https://roc.53csr.fr/roc-activity-pax.user.js",
      "uuid": "e5662cdc-266d-4878-baf4-151c125e2214",
      "source": "Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgIHJvYy1hY3Rpdml0eS1wYXgKLy8gQHZlcnNpb24gICAgIDEuMQovLyBAZGVzY3JpcHRpb24gQ3LDqWUgdW4gYm91dG9uIHBvdXIgZXhwb3J0ZXIgbGVzIGFjdGl2aXTDqXMgYXUgZm9ybWF0IENTVgovLyBAYXV0aG9yICAgICAgUm9tYWluIENvbm5lc3NvbgovLyBAdXBkYXRlVVJMICAgaHR0cHM6Ly9yb2MuNTNjc3IuZnIvcm9jLWFjdGl2aXR5LXBheC51c2VyLmpzCi8vIEBkb3dubG9hZFVSTCBodHRwczovL3JvYy41M2Nzci5mci9yb2MtYWN0aXZpdHktcGF4LnVzZXIuanMKLy8gQGdyYW50ICAgICAgIEdNLnhtbEh0dHBSZXF1ZXN0Ci8vIEBpbmNsdWRlICAgICBodHRwczovL3d3dy5yZXNlcnZpc3Rlcy5kZWZlbnNlLmdvdXYuZnIvaW50ZXJuZS9hY3Rpdml0ZXMvY3JlZXIvcmVzZXJ2aXN0ZXMvKgovLyA9PS9Vc2VyU2NyaXB0PT0KCmZ1bmN0aW9uIGhpZGVNb2RhbCgpIHsKICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb2NNb2RhbCIpCiAgbW9kYWwuY2xhc3NOYW1lID0gbW9kYWwuY2xhc3NOYW1lLnJlcGxhY2UoIiBmci1tb2RhbC0tb3BlbmVkIiwgIiIpCn0KCmZ1bmN0aW9uIHNob3dNb2RhbCh0aXRsZSwgY29udGVudCkgewogIGxldCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb2NNb2RhbCIpCiAgaWYgKCFtb2RhbCkgewogICAgbW9kYWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaWFsb2cnKQogICAgbW9kYWwuaWQgPSAicm9jTW9kYWwiCiAgICBtb2RhbC5jbGFzc05hbWUgPSAiZnItbW9kYWwgZnItbW9kYWwtLW9wZW5lZCIKICAgIG1vZGFsLnJvbGUgPSAiZGlhbG9nIgoKICAgIGNvbnN0IGRpdkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgICBkaXZDb250YWluZXIuY2xhc3NOYW1lID0gImZyLWNvbnRhaW5lciBmci1jb250YWluZXItLWZsdWlkIGZyLWNvbnRhaW5lci1tZCIKICAgIG1vZGFsLmFwcGVuZENoaWxkKGRpdkNvbnRhaW5lcikKCiAgICBjb25zdCBkaXZHcmlkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKICAgIGRpdkdyaWQuY2xhc3NOYW1lID0gImZyLWdyaWQtcm93IGZyLWdyaWQtcm93LS1jZW50ZXIiCiAgICBkaXZDb250YWluZXIuYXBwZW5kQ2hpbGQoZGl2R3JpZCkKCiAgICBjb25zdCBkaXZDb2wgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogICAgZGl2Q29sLmNsYXNzTmFtZSA9ICJmci1jb2wtMTIgZnItY29sLW1kLTEyIGZyLWNvbC1sZy0xMiIKICAgIGRpdkdyaWQuYXBwZW5kQ2hpbGQoZGl2Q29sKQoKICAgIGNvbnN0IGRpdkJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogICAgZGl2Qm9keS5jbGFzc05hbWUgPSAiZnItbW9kYWxfX2JvZHkiCiAgICBkaXZDb2wuYXBwZW5kQ2hpbGQoZGl2Qm9keSkKCiAgICBjb25zdCBkaXZIZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogICAgZGl2SGVhZGVyLmNsYXNzTmFtZSA9ICJmci1tb2RhbF9faGVhZGVyIgogICAgZGl2Qm9keS5hcHBlbmRDaGlsZChkaXZIZWFkZXIpCgogICAgY29uc3QgYnV0dG9uQ2xvc2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKQogICAgYnV0dG9uQ2xvc2UuY2xhc3NOYW1lID0gImZyLWxpbmstLWNsb3NlIGZyLWxpbmsiCiAgICBidXR0b25DbG9zZS50eXBlID0gImJ1dHRvbiIKICAgIGJ1dHRvbkNsb3NlLmlubmVySFRNTCA9ICJGZXJtZXIiCiAgICBidXR0b25DbG9zZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgICAgaGlkZU1vZGFsKCkKICAgIH0pCiAgICBkaXZIZWFkZXIuYXBwZW5kQ2hpbGQoYnV0dG9uQ2xvc2UpCgogICAgY29uc3QgZGl2Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgICBkaXZDb250ZW50LmNsYXNzTmFtZSA9ICJmci1tb2RhbF9fY29udGVudCIKICAgIGRpdkJvZHkuYXBwZW5kQ2hpbGQoZGl2Q29udGVudCkKCiAgICBjb25zdCB0aXRsZUVsbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgxIikKICAgIHRpdGxlRWxtLmNsYXNzTmFtZSA9ICJmci1tb2RhbF9fdGl0bGUiCiAgICB0aXRsZUVsbS5pZCA9ICJyb2NNb2RhbFRpdGxlIgogICAgZGl2Q29udGVudC5hcHBlbmRDaGlsZCh0aXRsZUVsbSkKCiAgICBjb25zdCBkaXZEaXNwbGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKICAgIGRpdkRpc3BsYXkuY2xhc3NOYW1lID0gImZyLWRpc3BsYXkiCiAgICBkaXZEaXNwbGF5LmlkID0gInJvY01vZGFsQ29udGVudCIKICAgIGRpdkNvbnRlbnQuYXBwZW5kQ2hpbGQoZGl2RGlzcGxheSkKCiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1vZGFsKQogIH0KCgogIGNvbnN0IHRpdGxlRWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY01vZGFsVGl0bGUiKQogIHRpdGxlRWxtLmlubmVySFRNTCA9IHRpdGxlCiAgY29uc3QgY29udGVudEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb2NNb2RhbENvbnRlbnQiKQogIGNvbnRlbnRFbG0uaW5uZXJIVE1MID0gIiIKICBjb250ZW50RWxtLmFwcGVuZENoaWxkKGNvbnRlbnQpCgogIG1vZGFsLmNsYXNzTmFtZSArPSAiIGZyLW1vZGFsLS1vcGVuZWQiCn0KZnVuY3Rpb24gY3JlYXRlQnV0dG9uKHRleHQpIHsKICBjb25zdCBidXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKQogIGJ1dHRvbi50eXBlID0gImJ1dHRvbiIKICBidXR0b24uY2xhc3NOYW1lID0gImZyLWJ0biBmci1idG4tLXRlcnRpYXJ5IgogIGJ1dHRvbi5pbm5lckhUTUwgPSB0ZXh0CiAgcmV0dXJuIGJ1dHRvbgp9CgpmdW5jdGlvbiBjcmVhdGVTbWFsbEJ1dHRvbihpY29uKSB7CiAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikKICBidXR0b24udHlwZSA9ICJidXR0b24iCiAgYnV0dG9uLmNsYXNzTmFtZSA9IGljb24KICByZXR1cm4gYnV0dG9uCn0KCmZ1bmN0aW9uIGFkZEJ1dHRvbihjb250YWluZXIsIHRpdGxlLCBjYWxsYmFjaywgYnV0dG9uVHlwZSA9ICIiKSB7CiAgbGV0IGJ1dHRvbjsKICBpZiAoYnV0dG9uVHlwZSA9PSAic21hbGwiKSB7CiAgICBidXR0b24gPSBjcmVhdGVTbWFsbEJ1dHRvbih0aXRsZSkKICB9IGVsc2UgewogICAgYnV0dG9uID0gY3JlYXRlQnV0dG9uKHRpdGxlKQogIH0KICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjYWxsYmFjaykKICBjb250YWluZXIuYXBwZW5kQ2hpbGQoYnV0dG9uKQp9CmxldCBnX3Byb2dyZXNzaW9uX2NvdW50ID0gMAphc3luYyBmdW5jdGlvbiBzaG93UHJvZ3Jlc3Npb24ocHJvbWlzZXMsIGNhbGxiYWNrPXVuZGVmaW5lZCkgewogIGdfcHJvZ3Jlc3Npb25fY291bnQgPSAwCgogIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogIGNvbnRlbnQuaWQgPSAicm9jUHJvZ3Jlc3NCYXIiCiAgY29udGVudC5pbm5lckhUTUwgPSBgJHtnX3Byb2dyZXNzaW9uX2NvdW50fSAvICR7cHJvbWlzZXMubGVuZ3RofWAKICBzaG93TW9kYWwoIkNoYXJnZW1lbnQuLi4iLCBjb250ZW50KQoKICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMubWFwKChwcm9tKSA9PiBwcm9tLnRoZW4oKHJlcykgPT4gewogICAgICBnX3Byb2dyZXNzaW9uX2NvdW50ICs9IDEKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY1Byb2dyZXNzQmFyIikuaW5uZXJIVE1MID0gYCR7Z19wcm9ncmVzc2lvbl9jb3VudH0gLyAke3Byb21pc2VzLmxlbmd0aH1gCiAgICAgIGNhbGxiYWNrPy4ocmVzKQogICAgICByZXR1cm4gcmVzCiAgICB9KQogICkpCn0KYXN5bmMgZnVuY3Rpb24gc2VhcmNoUmVzZXJ2aXN0ZShiYXNlX3VybCwgbmlkKSB7CiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7YmFzZV91cmx9L2F1dG9jb21wbGV0ZS9yZXNlcnZpc3Rlc2AsIHsKICAgIG1ldGhvZDogIlBPU1QiLAogICAgaGVhZGVyczogewogICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIKICAgIH0sCiAgICBib2R5OiBuZXcgVVJMU2VhcmNoUGFyYW1zKHsKICAgICAgUmVzZXJ2aXN0ZTogbmlkLAogICAgICBUeXBlOiAiMSIKICAgIH0pCiAgfSkKICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKQogIGlmIChkYXRhLmxlbmd0aCA8PSAwKSB7CiAgICAvL25pZCBub3QgZm91bmQKICAgIHJldHVybgogIH0KICByZXR1cm4gZGF0YVswXQp9Cgpjb25zdCBCQVNFX1VSTCA9ICJodHRwczovL3d3dy5yZXNlcnZpc3Rlcy5kZWZlbnNlLmdvdXYuZnIvaW50ZXJuZSIKCmZ1bmN0aW9uIGFkZFJlc2VydmlzdGUodGJvZHksIHJlc2VydmlzdGVJZCwgcmVzZXJ2aXN0ZVR5cGUsIGxhc3RuYW1lLCBmaXJzdG5hbWUsIGdyYWRlLCB1bml0ZSwgdW5pdGVDb2RlLCB2bWEsIGVzciwgbnBqYSkgewogIGNvbnN0IHRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKQogIHRyLmNsYXNzTmFtZSA9ICJ0YWJsZS1saXN0ZS1hY3Rpdml0ZS1yZXNlcnZpc3RlLXJvdyIKICB0Ym9keS5hcHBlbmRDaGlsZCh0cikKCiAgbGV0IHRkCiAgbGV0IHAKICBsZXQgc3BhbgoKICB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJykKICB0ZC5jbGFzc05hbWUgPSAiZnItY29sLS1zbSIKICB0ci5hcHBlbmRDaGlsZCh0ZCkKCiAgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKQogIHRkLmFwcGVuZENoaWxkKHApCgogIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykKICBzcGFuLmNsYXNzTmFtZSA9ICJjcmVkby1yZXNlcnZpc3RlIgogIHNwYW4udGl0bGUgPSB1bml0ZQogIHNwYW4uaW5uZXJIVE1MID0gdW5pdGVDb2RlCiAgcC5hcHBlbmRDaGlsZChzcGFuKQoKICAvLy0tLS0tIE5vbQogIHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKQogIHRkLmNsYXNzTmFtZSA9ICJmci1jb2wtLWxnIgogIHRyLmFwcGVuZENoaWxkKHRkKQoKICBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpCiAgdGQuYXBwZW5kQ2hpbGQocCkKCiAgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKQogIHNwYW4uY2xhc3NOYW1lID0gImdyYWRlLXJlc2VydmlzdGUiCiAgc3Bhbi5pbm5lckhUTUwgPSBncmFkZQogIHAuYXBwZW5kQ2hpbGQoc3BhbikKCiAgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKQogIHNwYW4uY2xhc3NOYW1lPSJub20tcmVzZXJ2aXN0ZSBmci10ZXh0LS1ib2xkIgogIHNwYW4uYXJpYUNvbnRyb2xzID0gImFsZXJ0ZS1jcmVkby1ob3JzLXVuaXRlLWFjY3VlaWwiCiAgc3Bhbi5kYXRhRnJPcGVuZWQ9ImZhbHNlIgogIHNwYW4uZGF0YUZySnNNb2RhbEJ1dHRvbj0idHJ1ZSIKICBzcGFuLmlubmVySFRNTCA9IGAke2xhc3RuYW1lfSAke2ZpcnN0bmFtZX1gCiAgcC5hcHBlbmRDaGlsZChzcGFuKQoKICBsZXQgaW5wdXQKICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykKICBpbnB1dC50eXBlID0gJ2hpZGRlbicKICBpbnB1dC5pZCA9IGBjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtX21vZGVsZUFjdGl2aXRlUmVzZXJ2aXN0ZXNfMF9yZXNlcnZpc3RlSWRgCiAgaW5wdXQubmFtZT1gY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVzXVswXVtyZXNlcnZpc3RlSWRdYAogIGlucHV0LmNsYXNzTmFtZT0iaW5wdXQtcmVzZXJ2aXN0ZSIKICBpbnB1dC52YWx1ZT1yZXNlcnZpc3RlSWQKICBzcGFuLmFwcGVuZENoaWxkKGlucHV0KQoKICBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykKICBpbnB1dC50eXBlID0gJ2hpZGRlbicKICBpbnB1dC5pZCA9IGBjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtX21vZGVsZUFjdGl2aXRlUmVzZXJ2aXN0ZXNfMF9yZXNlcnZpc3RlVHlwZWAKICBpbnB1dC5uYW1lPWBjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUmVzZXJ2aXN0ZXNdWzBdW3Jlc2VydmlzdGVUeXBlXWAKICBpbnB1dC5jbGFzc05hbWU9ImlucHV0LXJlc2VydmlzdGUtdHlwZSIKICBpbnB1dC52YWx1ZT1yZXNlcnZpc3RlVHlwZQogIHNwYW4uYXBwZW5kQ2hpbGQoaW5wdXQpCiAgLy8tLS0tLSAvTm9tCgogIC8vLS0tLS0gVk1BCiAgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpCiAgdGQuY2xhc3NOYW1lID0gInRleHQtY2VudGVyIGZyLWNvbCIKICB0ci5hcHBlbmRDaGlsZCh0ZCkKCiAgcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKQogIHRkLmFwcGVuZENoaWxkKHApCgogIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykKICBzcGFuLmNsYXNzTmFtZSA9ICJ2bWEtcmVzZXJ2aXN0ZSIKICBzcGFuLmlubmVySFRNTCA9IHZtYQogIHAuYXBwZW5kQ2hpbGQoc3BhbikKICAvLy0tLS0tIC9WTUEKCiAgLy8tLS0tLSBFU1IKICB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJykKICB0ZC5jbGFzc05hbWUgPSAidGV4dC1jZW50ZXIgZnItY29sIgogIHRyLmFwcGVuZENoaWxkKHRkKQoKICBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpCiAgdGQuYXBwZW5kQ2hpbGQocCkKCiAgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKQogIHNwYW4uY2xhc3NOYW1lID0gImRhdGUtZmluLWVzci1yZXNlcnZpc3RlIgogIHNwYW4uaW5uZXJIVE1MID0gZXNyCiAgcC5hcHBlbmRDaGlsZChzcGFuKQogIC8vLS0tLS0gL0VTUgoKICAvLy0tLS0tIE5QSkEKICB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJykKICB0ZC5jbGFzc05hbWUgPSAidGV4dC1jZW50ZXIgZnItY29sIgogIHRyLmFwcGVuZENoaWxkKHRkKQoKICBwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpCiAgdGQuYXBwZW5kQ2hpbGQocCkKCiAgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKQogIHNwYW4uY2xhc3NOYW1lID0gIm5wamEtcmVzZXJ2aXN0ZSIKICBzcGFuLmlubmVySFRNTCA9IG5wamEKICBwLmFwcGVuZENoaWxkKHNwYW4pCiAgLy8tLS0tLSAvTlBKQQoKCiAgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpCiAgdGQuY2xhc3NOYW1lID0gInRleHQtY2VudGVyIGZyLWNvbC0teHMgYm91dG9uLXN1cHByaW1lciIKICB0ci5hcHBlbmRDaGlsZCh0ZCkKCiAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikKICBidXR0b24uY2xhc3NOYW1lID0gImJ0LXN1cHByaW1lciBmci1idG4gZnItYnRuLS1zbSBmci1idG4tLXRlcnRpYXJ5LW5vLW91dGxpbmUgZnItaWNvbi1jbG9zZS1jaXJjbGUtZmlsbCIKICBidXR0b24udHlwZSA9ICJidXR0b24iCiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgY29uc3QgdHIgPSBidXR0b24ucGFyZW50Tm9kZS5wYXJlbnROb2RlCiAgICB0ci5yZW1vdmUoKQogIH0pCiAgdGQuYXBwZW5kQ2hpbGQoYnV0dG9uKQp9CgpmdW5jdGlvbiBzaG93QWRkUGF4UmVzdWx0TW9kYWwocm93cywgcmVzdWx0cykgewogIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogIGNvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICJmbGV4IgogIGNvbnRlbnQuc3R5bGUuZmxleERpcmVjdGlvbiA9ICJjb2x1bW4iCiAgY29udGVudC5zdHlsZS5mbGV4R3JvdyA9ICIwIDEgMCIKICBjb250ZW50LnN0eWxlLmdhcCA9ICIxcmVtIgoKICBjb25zdCBub3RGb3VuZEluZGV4ID0gW10KICBmb3IgKGNvbnN0IGkgaW4gcmVzdWx0cykgewogICAgaWYgKCFyZXN1bHRzW2ldKSB7CiAgICAgIG5vdEZvdW5kSW5kZXgucHVzaChpKQogICAgfQogIH0KCiAgaWYgKG5vdEZvdW5kSW5kZXgubGVuZ3RoIDw9IDApIHsKICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpCiAgICBkZXNjcmlwdGlvbi5pbm5lckhUTUwgPSBgJHtyZXN1bHRzLmxlbmd0aH0gcGVyc29ubmVsKHMpIGFqb3V0w6kocylgCiAgICBjb250ZW50LmFwcGVuZENoaWxkKGRlc2NyaXB0aW9uKQogICAgc2hvd01vZGFsKCJJbXBvcnQgdGVybWluw6kiLCBjb250ZW50KQogICAgcmV0dXJuCiAgfQoKICBjb25zdCBkZXNjcmlwdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKQogIGRlc2NyaXB0aW9uLmlubmVySFRNTCA9IGAke25vdEZvdW5kSW5kZXgubGVuZ3RofSBwZXJzb25uZWwocykgbWFucXVhbnQocyk8YnIgLz4ke3Jlc3VsdHMubGVuZ3RoIC0gbm90Rm91bmRJbmRleC5sZW5ndGh9IHBlcnNvbm5lbChzKSBham91dMOpKHMpYAogIGNvbnRlbnQuYXBwZW5kQ2hpbGQoZGVzY3JpcHRpb24pCgogIGNvbnN0IHVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidWwiKQogIGNvbnRlbnQuYXBwZW5kQ2hpbGQodWwpCgogIGZvciAoY29uc3QgaSBvZiBub3RGb3VuZEluZGV4KSB7CiAgICBjb25zdCByb3cgPSByb3dzW2ldCgogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpCiAgICBsaS5pbm5lckhUTUwgPSByb3cuam9pbigiICIpCiAgICB1bC5hcHBlbmRDaGlsZChsaSkKICB9CgogIHNob3dNb2RhbCgiSW1wb3J0IHRlcm1pbsOpIiwgY29udGVudCkKfQoKZnVuY3Rpb24gc2hvd0FkZFBheE1vZGFsKCkgewogIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogIGNvbnRlbnQuc3R5bGUuZGlzcGxheSA9ICJmbGV4IgogIGNvbnRlbnQuc3R5bGUuZmxleERpcmVjdGlvbiA9ICJjb2x1bW4iCiAgY29udGVudC5zdHlsZS5mbGV4R3JvdyA9ICIwIDEgMCIKICBjb250ZW50LnN0eWxlLmdhcCA9ICIxcmVtIgoKICBjb25zdCBkZXNjcmlwdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKQogIGRlc2NyaXB0aW9uLmlubmVySFRNTCA9ICJDb2xsZXogbGVzIHBlcnNvbm5lbHMgZGVwdWlzIEdvb2dsZSBTaGVldDxici8+TGEgcHJlbWnDqHJlIGNvbG9ubmUgZG9pdCBjb250ZW5pciBsZSBOSUQiCiAgY29udGVudC5hcHBlbmRDaGlsZChkZXNjcmlwdGlvbikKCgogIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKQogIGlucHV0LmlkID0gInJvY0FkZFBheE1vZGFsSW5wdXQiCiAgY29udGVudC5hcHBlbmRDaGlsZChpbnB1dCkKCiAgY29uc3QgYnV0dG9uID0gY3JlYXRlQnV0dG9uKCJPSyIpCiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgYXN5bmMgKCkgPT4gewogICAgY29uc3QgdHh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY0FkZFBheE1vZGFsSW5wdXQiKS52YWx1ZQogICAgY29uc3Qgcm93cyA9IFtdCiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgdHh0LnNwbGl0KCJcbiIpKSB7CiAgICAgIGNvbnN0IGxpbmVTdHJpcCA9IGxpbmUudHJpbSgpCiAgICAgIGlmIChsaW5lU3RyaXAubGVuZ3RoIDw9IDApIHsKICAgICAgICBjb250aW51ZQogICAgICB9CiAgICAgIGNvbnN0IGNvbHMgPSBsaW5lU3RyaXAuc3BsaXQoIlx0IikKICAgICAgY29sc1swXSA9IGNvbHNbMF0ucmVwbGFjZSgvIC9nLCAiIikKICAgICAgd2hpbGUgKGNvbHNbMF0ubGVuZ3RoIDwgMTApIHsKICAgICAgICBjb2xzWzBdID0gIjAiICsgY29sc1swXQogICAgICB9CiAgICAgIHJvd3MucHVzaChjb2xzKQogICAgfQogICAgY29uc3QgcHJvbWlzZXMgPSByb3dzLm1hcCgocm93KSA9PiBzZWFyY2hSZXNlcnZpc3RlKEJBU0VfVVJMLCByb3dbMF0pKQogICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHNob3dQcm9ncmVzc2lvbihwcm9taXNlcywgKHJlcykgPT4gewogICAgICBpZiAoIXJlcyB8fMKgcmVzLmxlbmd0aCA8PSAwKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KICAgICAgLy8gUmVtb3ZlIHRoZSAibm8gcmVzZXJ2aXN0ZSIgbWVzc2FnZQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJsaXN0ZS12aWRlIilbMF0uc3R5bGUuZGlzcGxheSA9ICJub25lIgoKICAgICAgY29uc3QgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyX3Jlc2VydmlzdGUiKQogICAgICBhZGRSZXNlcnZpc3RlKHRib2R5LAogICAgICAgIHJlcy5yZXNlcnZpc3RlSWQsCiAgICAgICAgcmVzLnJlc2VydmlzdGVUeXBlLAogICAgICAgIHJlcy5yZXNlcnZpc3RlTm9tLAogICAgICAgIHJlcy5yZXNlcnZpc3RlUHJlbm9tLAogICAgICAgIHJlcy5yZWZHcmFkZUxpYmVsbGUsCiAgICAgICAgcmVzLnJlZlVuaXRlTGliZWxsZSwKICAgICAgICByZXMucmVmVW5pdGVDcmVkbywKICAgICAgICByZXMucmVzZXJ2aXN0ZURhdGVGaW5WbWEsCiAgICAgICAgcmVzLnJlc2VydmlzdGVEYXRlRmluRXNyLAogICAgICAgIHJlcy5yZXNlcnZpc3RlTm9tYnJlSm91cnNBY3Rpdml0ZVRvdGFsCiAgICAgICkKICAgIH0pCgogICAgc2hvd0FkZFBheFJlc3VsdE1vZGFsKHJvd3MsIHJlc3VsdHMpCiAgfSkKICBjb250ZW50LmFwcGVuZENoaWxkKGJ1dHRvbikKCgogIHNob3dNb2RhbCgiQWpvdXRlciBkZXMgcGVyc29ubmVscyIsIGNvbnRlbnQpCn0KCmZ1bmN0aW9uIHJlY2FsY3VsYXRlRm9ybUlucHV0SW5kZXhlcyh0Ym9keSkgewogIGxldCBpbmRleCA9IDAKICBmb3IgKGNvbnN0IHRyIG9mIHRib2R5LmNoaWxkcmVuKSB7CiAgICBjb25zdCBpbnB1dHMgPSB0ci5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpCiAgICBpZiAoaW5wdXRzLmxlbmd0aCA8PSAwKSB7CiAgICAgIGNvbnRpbnVlCiAgICB9CiAgICBmb3IgKGNvbnN0IGlucHV0IG9mIGlucHV0cykgewogICAgICBpZiAoaW5wdXQuaWQuZW5kc1dpdGgoIl9yZXNlcnZpc3RlSWQiKSkgewogICAgICAgIGlucHV0LmlkID0gYGNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1fbW9kZWxlQWN0aXZpdGVSZXNlcnZpc3Rlc18ke2luZGV4fV9yZXNlcnZpc3RlSWRgCiAgICAgICAgaW5wdXQubmFtZT1gY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVzXVske2luZGV4fV1bcmVzZXJ2aXN0ZUlkXWAKICAgICAgICBjb250aW51ZQogICAgICB9CiAgICAgIGlmIChpbnB1dC5pZC5lbmRzV2l0aCgiX3Jlc2VydmlzdGVUeXBlIikpIHsKICAgICAgICBpbnB1dC5pZCA9IGBjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtX21vZGVsZUFjdGl2aXRlUmVzZXJ2aXN0ZXNfJHtpbmRleH1fcmVzZXJ2aXN0ZVR5cGVgCiAgICAgICAgaW5wdXQubmFtZT1gY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVzXVske2luZGV4fV1bcmVzZXJ2aXN0ZVR5cGVdYAogICAgICAgIGNvbnRpbnVlCiAgICAgIH0KICAgIH0KICAgICsraW5kZXgKICB9Cn0KCmZ1bmN0aW9uIHJlbW92ZUFsbFBlcnNvbm5lbHMoKSB7CiAgY29uc3QgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyX3Jlc2VydmlzdGUiKQogIGNvbnN0IHRvUmVtb3ZlID0gW10KICBmb3IgKGNvbnN0IHRyIG9mIHRib2R5LmNoaWxkcmVuKSB7CiAgICBjb25zdCBpbnB1dHMgPSB0ci5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpCiAgICBpZiAoaW5wdXRzLmxlbmd0aCA8PSAwKSB7CiAgICAgIGNvbnRpbnVlCiAgICB9CiAgICB0b1JlbW92ZS5wdXNoKHRyKQogIH0KICBmb3IgKGNvbnN0IGVsbSBvZiB0b1JlbW92ZSkgewogICAgZWxtLnJlbW92ZSgpCiAgfQp9CgpmdW5jdGlvbiBtYWluKCkgewogIGFkZEJ1dHRvbihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm91dG9uLXRlbGV2ZXJzZW1lbnQtY3N2LXJlc2VydmlzdGUtYWN0aXZpdGUtY3JlZXItcmVzZXJ2aXN0ZScpLnBhcmVudE5vZGUsICJBam91dCBlbiBtYXNzZSIsIHNob3dBZGRQYXhNb2RhbCkKCiAgYWRkQnV0dG9uKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdib3V0b24tdGVsZXZlcnNlbWVudC1jc3YtcmVzZXJ2aXN0ZS1hY3Rpdml0ZS1jcmVlci1yZXNlcnZpc3RlJykucGFyZW50Tm9kZSwgIlZpZGVyIGxhIGxpc3RlIiwgcmVtb3ZlQWxsUGVyc29ubmVscykKCiAgY29uc3QgdGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyX3Jlc2VydmlzdGUiKQogIHRib2R5LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsIChldnQpID0+IHsKICAgIGlmIChldnQudGFyZ2V0LnBhcmVudE5vZGUuaWQgPT09ICdjb250YWluZXJfcmVzZXJ2aXN0ZScgJiYgZXZ0LnRhcmdldC5sb2NhbE5hbWUgPT0gInRyIikgewogICAgICByZWNhbGN1bGF0ZUZvcm1JbnB1dEluZGV4ZXModGJvZHkpCiAgICB9CiAgfSkKICB0Ym9keS5hZGRFdmVudExpc3RlbmVyKCJET01Ob2RlUmVtb3ZlZCIsIChldnQpID0+IHsKICAgIHJlY2FsY3VsYXRlRm9ybUlucHV0SW5kZXhlcyh0Ym9keSkKICB9KQp9CgptYWluKCk="
    },
    {
      "name": "roc-activity-export",
      "options": {
        "check_for_updates": true,
        "user_modified": null,
        "comment": null,
        "compatopts_for_requires": true,
        "compat_wrappedjsobject": false,
        "compat_metadata": false,
        "compat_foreach": false,
        "compat_powerful_this": null,
        "sandbox": null,
        "noframes": null,
        "unwrap": null,
        "run_at": null,
        "run_in": null,
        "tags": [],
        "override": {
          "use_includes": [],
          "orig_includes": [
            "https://www.reservistes.defense.gouv.fr/interne/activites/*/liste"
          ],
          "merge_includes": true,
          "use_matches": [],
          "orig_matches": [],
          "merge_matches": true,
          "use_excludes": [],
          "orig_excludes": [],
          "merge_excludes": true,
          "use_connects": [],
          "orig_connects": [],
          "merge_connects": true,
          "use_blockers": [],
          "orig_run_at": "document-idle",
          "orig_run_in": [],
          "orig_noframes": null,
          "orig_tags": []
        }
      },
      "storage": {
        "ts": 0,
        "data": {}
      },
      "enabled": true,
      "position": 2,
      "file_url": "https://roc.53csr.fr/roc-activity-export.user.js",
      "uuid": "3e7630e2-3db5-47bc-a541-612c44f4f72e",
      "source": "Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgIHJvYy1hY3Rpdml0eS1leHBvcnQKLy8gQHZlcnNpb24gICAgIDEuMQovLyBAZGVzY3JpcHRpb24gQ3LDqWUgdW4gYm91dG9uIHBvdXIgZXhwb3J0ZXIgbGVzIGFjdGl2aXTDqXMgYXUgZm9ybWF0IENTVgovLyBAYXV0aG9yICAgICAgUm9tYWluIENvbm5lc3NvbgovLyBAdXBkYXRlVVJMICAgaHR0cHM6Ly9yb2MuNTNjc3IuZnIvcm9jLWFjdGl2aXR5LWV4cG9ydC51c2VyLmpzCi8vIEBkb3dubG9hZFVSTCBodHRwczovL3JvYy41M2Nzci5mci9yb2MtYWN0aXZpdHktZXhwb3J0LnVzZXIuanMKLy8gQGdyYW50ICAgICAgIEdNLnhtbEh0dHBSZXF1ZXN0Ci8vIEBpbmNsdWRlICAgICBodHRwczovL3d3dy5yZXNlcnZpc3Rlcy5kZWZlbnNlLmdvdXYuZnIvaW50ZXJuZS9hY3Rpdml0ZXMvKi9saXN0ZQovLyA9PS9Vc2VyU2NyaXB0PT0KCmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvbih0ZXh0KSB7CiAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikKICBidXR0b24udHlwZSA9ICJidXR0b24iCiAgYnV0dG9uLmNsYXNzTmFtZSA9ICJmci1idG4gZnItYnRuLS10ZXJ0aWFyeSIKICBidXR0b24uaW5uZXJIVE1MID0gdGV4dAogIHJldHVybiBidXR0b24KfQoKZnVuY3Rpb24gY3JlYXRlU21hbGxCdXR0b24oaWNvbikgewogIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpCiAgYnV0dG9uLnR5cGUgPSAiYnV0dG9uIgogIGJ1dHRvbi5jbGFzc05hbWUgPSBpY29uCiAgcmV0dXJuIGJ1dHRvbgp9CgpmdW5jdGlvbiBhZGRCdXR0b24oY29udGFpbmVyLCB0aXRsZSwgY2FsbGJhY2ssIGJ1dHRvblR5cGUgPSAiIikgewogIGxldCBidXR0b247CiAgaWYgKGJ1dHRvblR5cGUgPT0gInNtYWxsIikgewogICAgYnV0dG9uID0gY3JlYXRlU21hbGxCdXR0b24odGl0bGUpCiAgfSBlbHNlIHsKICAgIGJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbih0aXRsZSkKICB9CiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsbGJhY2spCiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbikKfQoKCmNvbnN0IEJBU0VfVVJMID0gImh0dHBzOi8vd3d3LnJlc2VydmlzdGVzLmRlZmVuc2UuZ291di5mci9pbnRlcm5lIgoKY29uc3QgZXhwb3J0QWN0aXZpdHkgPSBhc3luYyAoaWQpID0+IHsKICBjb25zdCBnZXRDc3YgPSBhc3luYyAoKSA9PiB7CiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vYWN0aXZpdGVzL2V4cG9ydC8ke2lkfWAsIHsKICAgICAgbWV0aG9kOiAnR0VUJywKICAgIH0pCiAgICBjb25zdCBjc3YgPSBhd2FpdCByZXMudGV4dCgpCiAgICByZXR1cm4gY3N2CiAgfQoKICBsZXQgY3N2ID0gYXdhaXQgZ2V0Q3N2KCkKCiAgbGV0IHJldHJpZXMgPSAxMAogIHdoaWxlIChjc3YuaW5jbHVkZXMoIjxodG1sPiIpICYmIHJldHJpZXMgPiAwKSB7CiAgICBjb25zb2xlLmxvZygiUmV0cnlpbmcgZXhwb3J0Li4uIiwgcmV0cmllcykKICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MDApKQogICAgY3N2ID0gYXdhaXQgZ2V0Q3N2KCkKICAgIC0tcmV0cmllcwogIH0KCiAgaWYgKGNzdi5pbmNsdWRlcygiPGh0bWw+IikpIHsKICAgIGFsZXJ0KCJFcnJldXIgbG9ycyBkZSBsJ2V4cG9ydCBkZSBsJ2FjdGl2aXTDqSIpCiAgICByZXR1cm4KICB9CiAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtjc3ZdLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSkKICBjb25zdCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpCiAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKQogIGxpbmsuaHJlZiA9IHVybAogIGxpbmsuZG93bmxvYWQgPSBgYWN0aXZpdHktJHtpZH0uY3N2YAogIGxpbmsuY2xpY2soKQogIFVSTC5yZXZva2VPYmplY3RVUkwodXJsKQp9CgpmdW5jdGlvbiBtYWluKCkgewoKICBjb25zdCB0Ym9keVdhdGNoID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2R0ID4gdGJvZHkiKQoKICB2YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsKICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25zKSB7CiAgICAgIGNvbnN0IHRib2R5ID0gbXV0YXRpb24udGFyZ2V0CgogICAgICBpZiAodGJvZHkudGFnTmFtZSA9PSAiVEJPRFkiKSB7CgkJCQlmb3IgKGNvbnN0IHRyIG9mIHRib2R5LmNoaWxkcmVuKSB7CiAgICAgICAgICBjb25zdCBpZCA9IHRyLmdldEF0dHJpYnV0ZSgiaWQiKQogICAgICAgICAgaWYgKCFpZCkgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgfQogICAgICAgICAgY29uc3QgdGQgPSB0ci5maXJzdENoaWxkCiAgICAgICAgICBhZGRCdXR0b24odGQsICJmci1pY29uLWFycm93LXJpZ2h0LXVwLWxpbmUiLCAoKSA9PiBleHBvcnRBY3Rpdml0eShpZCksICJzbWFsbCIpCiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfSk7CgogIG9ic2VydmVyLm9ic2VydmUodGJvZHlXYXRjaCwge2F0dHJpYnV0ZXM6IGZhbHNlLCBjaGlsZExpc3Q6IHRydWUsIGNoYXJhY3RlckRhdGE6IGZhbHNlLCBzdWJ0cmVlOnRydWV9KTsKCn0KCm1haW4oKQ=="
    },
    {
      "name": "roc-activities-create",
      "options": {
        "check_for_updates": true,
        "user_modified": null,
        "comment": null,
        "compatopts_for_requires": true,
        "compat_wrappedjsobject": false,
        "compat_metadata": false,
        "compat_foreach": false,
        "compat_powerful_this": null,
        "sandbox": null,
        "noframes": null,
        "unwrap": null,
        "run_at": null,
        "run_in": null,
        "tags": [],
        "override": {
          "use_includes": [],
          "orig_includes": [
            "https://www.reservistes.defense.gouv.fr/interne/activites/*"
          ],
          "merge_includes": true,
          "use_matches": [],
          "orig_matches": [],
          "merge_matches": true,
          "use_excludes": [],
          "orig_excludes": [],
          "merge_excludes": true,
          "use_connects": [],
          "orig_connects": [],
          "merge_connects": true,
          "use_blockers": [],
          "orig_run_at": "document-idle",
          "orig_run_in": [],
          "orig_noframes": null,
          "orig_tags": []
        }
      },
      "storage": {
        "ts": 0,
        "data": {}
      },
      "enabled": false,
      "position": 3,
      "file_url": "https://roc.53csr.fr/roc-activities-create.user.js",
      "uuid": "b7699542-60e8-4719-ba5a-4ff5a0730410",
      "source": "Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgIHJvYy1hY3Rpdml0aWVzLWNyZWF0ZQovLyBAdmVyc2lvbiAgICAgMC4xCi8vIEBkZXNjcmlwdGlvbiBBam91dGUgdW4gYm91dG9uIHBvdXIgY3LDqWVyIHVuZSBhY3Rpdml0w6kgcmFwaWRlCi8vIEBhdXRob3IgICAgICBSb21haW4gQ29ubmVzc29uCi8vIEB1cGRhdGVVUkwgICBodHRwczovL3JvYy41M2Nzci5mci9yb2MtYWN0aXZpdGllcy1jcmVhdGUudXNlci5qcwovLyBAZG93bmxvYWRVUkwgaHR0cHM6Ly9yb2MuNTNjc3IuZnIvcm9jLWFjdGl2aXRpZXMtY3JlYXRlLnVzZXIuanMKLy8gQGdyYW50ICAgICAgIEdNLnhtbEh0dHBSZXF1ZXN0Ci8vIEBpbmNsdWRlICAgICBodHRwczovL3d3dy5yZXNlcnZpc3Rlcy5kZWZlbnNlLmdvdXYuZnIvaW50ZXJuZS9hY3Rpdml0ZXMvKgovLyA9PS9Vc2VyU2NyaXB0PT0KCmZ1bmN0aW9uIGNyZWF0ZUJ1dHRvbih0ZXh0KSB7CiAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikKICBidXR0b24udHlwZSA9ICJidXR0b24iCiAgYnV0dG9uLmNsYXNzTmFtZSA9ICJmci1idG4gZnItYnRuLS10ZXJ0aWFyeSIKICBidXR0b24uaW5uZXJIVE1MID0gdGV4dAogIHJldHVybiBidXR0b24KfQoKZnVuY3Rpb24gY3JlYXRlU21hbGxCdXR0b24oaWNvbikgewogIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpCiAgYnV0dG9uLnR5cGUgPSAiYnV0dG9uIgogIGJ1dHRvbi5jbGFzc05hbWUgPSBpY29uCiAgcmV0dXJuIGJ1dHRvbgp9CgpmdW5jdGlvbiBhZGRCdXR0b24oY29udGFpbmVyLCB0aXRsZSwgY2FsbGJhY2ssIGJ1dHRvblR5cGUgPSAiIikgewogIGxldCBidXR0b247CiAgaWYgKGJ1dHRvblR5cGUgPT0gInNtYWxsIikgewogICAgYnV0dG9uID0gY3JlYXRlU21hbGxCdXR0b24odGl0bGUpCiAgfSBlbHNlIHsKICAgIGJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbih0aXRsZSkKICB9CiAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2FsbGJhY2spCiAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJ1dHRvbikKfQphc3luYyBmdW5jdGlvbiBmZXRjaENhbGwodXJsLCBib2R5LCBtZXRob2QgPSAiR0VUIiwgcmF3ID0gZmFsc2UpIHsKICBjb25zdCBib2R5U3RyID0gT2JqZWN0LmVudHJpZXMoYm9keSkubWFwKChba2V5LCB2YWxdKSA9PiBgJHtrZXl9PSR7dmFsfWApLmpvaW4oIiYiKQoKICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgewogICAgbWV0aG9kOiBtZXRob2QsCiAgICBib2R5OiBib2R5U3RyLAogICAgaGVhZGVyczogewogICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKICAgIH0KICB9KQoKICBsZXQgcmVzID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpCiAgaWYgKCFyYXcpIHsKICAgIHJlcyA9IEpTT04ucGFyc2UocmVzKQogIH0KICByZXR1cm4gcmVzCn0KCmFzeW5jIGZ1bmN0aW9uIGZldGNoTXVsdGlwYXJ0KHVybCwgYm9keSwgbWV0aG9kID0gIkdFVCIpIHsKICBjb25zdCBib3VuZGFyeSA9ICJnZWNrb2Zvcm1ib3VuZGFyeTNkOGU3YTE1YTExNDYxZDI2MjQ2MDhmODlhMDNiMDcxIgoKICBjb25zdCBib2R5TGlzdCA9IFtdOwogIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyhib2R5KSkgewogICAgY29uc3Qge3ZhbHVlLCBjb250ZW50VHlwZX0gPSB2YWwKICAgIGJvZHlMaXN0LnB1c2goYGApCiAgICBib2R5TGlzdC5wdXNoKGAtLS0tLS0tJHtib3VuZGFyeX1gKQogICAgaWYgKGNvbnRlbnRUeXBlID09ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSB7CiAgICAgIGJvZHlMaXN0LnB1c2goYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiR7a2V5fVwiYCkKICAgIH0gZWxzZSB7CiAgICAgIGJvZHlMaXN0LnB1c2goYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiR7a2V5fVwiOyBmaWxlbmFtZT1cIlwiYCkKICAgICAgYm9keUxpc3QucHVzaChgQ29udGVudC1UeXBlOiAke2NvbnRlbnRUeXBlfWApCiAgICB9CiAgfQoKICBjb25zdCBib2R5U3RyID0gYm9keUxpc3Quam9pbigiXG4iKQoKICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwgewogICAgbWV0aG9kOiBtZXRob2QsCiAgICBib2R5OiBib2R5U3RyLAogICAgaGVhZGVyczogewogICAgICAiQ29udGVudC1UeXBlIjogYG11bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PS0tLS0ke2JvdW5kYXJ5fWAKICAgIH0KICB9KQogIHJldHVybiBhd2FpdCByZXNwb25zZS50ZXh0KCkKfQoKYXN5bmMgZnVuY3Rpb24gZ2V0UmVkaXJlY3Rpb24odXJsLCBtZXRob2QgPSAiR0VUIikgewogIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgR00ueG1sSHR0cFJlcXVlc3QoewogICAgICBtZXRob2Q6IG1ldGhvZCwKICAgICAgdXJsOiB1cmwsCiAgICAgIG9ubG9hZDogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICByZXNvbHZlKHt0YXJnZXQ6IHJlc3BvbnNlLmZpbmFsVXJsLCBjb250ZW50OiByZXNwb25zZS5yZXNwb25zZVRleHR9KQogICAgICB9CiAgICB9KQogIH0pCn0KZnVuY3Rpb24gaGlkZU1vZGFsKCkgewogIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY01vZGFsIikKICBtb2RhbC5jbGFzc05hbWUgPSBtb2RhbC5jbGFzc05hbWUucmVwbGFjZSgiIGZyLW1vZGFsLS1vcGVuZWQiLCAiIikKfQoKZnVuY3Rpb24gc2hvd01vZGFsKHRpdGxlLCBjb250ZW50KSB7CiAgbGV0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY01vZGFsIikKICBpZiAoIW1vZGFsKSB7CiAgICBtb2RhbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpYWxvZycpCiAgICBtb2RhbC5pZCA9ICJyb2NNb2RhbCIKICAgIG1vZGFsLmNsYXNzTmFtZSA9ICJmci1tb2RhbCBmci1tb2RhbC0tb3BlbmVkIgogICAgbW9kYWwucm9sZSA9ICJkaWFsb2ciCgogICAgY29uc3QgZGl2Q29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKICAgIGRpdkNvbnRhaW5lci5jbGFzc05hbWUgPSAiZnItY29udGFpbmVyIGZyLWNvbnRhaW5lci0tZmx1aWQgZnItY29udGFpbmVyLW1kIgogICAgbW9kYWwuYXBwZW5kQ2hpbGQoZGl2Q29udGFpbmVyKQoKICAgIGNvbnN0IGRpdkdyaWQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogICAgZGl2R3JpZC5jbGFzc05hbWUgPSAiZnItZ3JpZC1yb3cgZnItZ3JpZC1yb3ctLWNlbnRlciIKICAgIGRpdkNvbnRhaW5lci5hcHBlbmRDaGlsZChkaXZHcmlkKQoKICAgIGNvbnN0IGRpdkNvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgICBkaXZDb2wuY2xhc3NOYW1lID0gImZyLWNvbC0xMiBmci1jb2wtbWQtMTIgZnItY29sLWxnLTEyIgogICAgZGl2R3JpZC5hcHBlbmRDaGlsZChkaXZDb2wpCgogICAgY29uc3QgZGl2Qm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgICBkaXZCb2R5LmNsYXNzTmFtZSA9ICJmci1tb2RhbF9fYm9keSIKICAgIGRpdkNvbC5hcHBlbmRDaGlsZChkaXZCb2R5KQoKICAgIGNvbnN0IGRpdkhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgICBkaXZIZWFkZXIuY2xhc3NOYW1lID0gImZyLW1vZGFsX19oZWFkZXIiCiAgICBkaXZCb2R5LmFwcGVuZENoaWxkKGRpdkhlYWRlcikKCiAgICBjb25zdCBidXR0b25DbG9zZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpCiAgICBidXR0b25DbG9zZS5jbGFzc05hbWUgPSAiZnItbGluay0tY2xvc2UgZnItbGluayIKICAgIGJ1dHRvbkNsb3NlLnR5cGUgPSAiYnV0dG9uIgogICAgYnV0dG9uQ2xvc2UuaW5uZXJIVE1MID0gIkZlcm1lciIKICAgIGJ1dHRvbkNsb3NlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKCkgPT4gewogICAgICBoaWRlTW9kYWwoKQogICAgfSkKICAgIGRpdkhlYWRlci5hcHBlbmRDaGlsZChidXR0b25DbG9zZSkKCiAgICBjb25zdCBkaXZDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKICAgIGRpdkNvbnRlbnQuY2xhc3NOYW1lID0gImZyLW1vZGFsX19jb250ZW50IgogICAgZGl2Qm9keS5hcHBlbmRDaGlsZChkaXZDb250ZW50KQoKICAgIGNvbnN0IHRpdGxlRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDEiKQogICAgdGl0bGVFbG0uY2xhc3NOYW1lID0gImZyLW1vZGFsX190aXRsZSIKICAgIHRpdGxlRWxtLmlkID0gInJvY01vZGFsVGl0bGUiCiAgICBkaXZDb250ZW50LmFwcGVuZENoaWxkKHRpdGxlRWxtKQoKICAgIGNvbnN0IGRpdkRpc3BsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogICAgZGl2RGlzcGxheS5jbGFzc05hbWUgPSAiZnItZGlzcGxheSIKICAgIGRpdkRpc3BsYXkuaWQgPSAicm9jTW9kYWxDb250ZW50IgogICAgZGl2Q29udGVudC5hcHBlbmRDaGlsZChkaXZEaXNwbGF5KQoKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpCiAgfQoKCiAgY29uc3QgdGl0bGVFbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9jTW9kYWxUaXRsZSIpCiAgdGl0bGVFbG0uaW5uZXJIVE1MID0gdGl0bGUKICBjb25zdCBjb250ZW50RWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY01vZGFsQ29udGVudCIpCiAgY29udGVudEVsbS5pbm5lckhUTUwgPSAiIgogIGNvbnRlbnRFbG0uYXBwZW5kQ2hpbGQoY29udGVudCkKCiAgbW9kYWwuY2xhc3NOYW1lICs9ICIgZnItbW9kYWwtLW9wZW5lZCIKfQpmdW5jdGlvbiBwYXJzZUNTVihzdHIpIHsKICAgIGNvbnN0IGFyciA9IFtdOwogICAgbGV0IHF1b3RlID0gZmFsc2U7ICAvLyAndHJ1ZScgbWVhbnMgd2UncmUgaW5zaWRlIGEgcXVvdGVkIGZpZWxkCgogICAgLy8gSXRlcmF0ZSBvdmVyIGVhY2ggY2hhcmFjdGVyLCBrZWVwIHRyYWNrIG9mIGN1cnJlbnQgcm93IGFuZCBjb2x1bW4gKG9mIHRoZSByZXR1cm5lZCBhcnJheSkKICAgIGZvciAobGV0IHJvdyA9IDAsIGNvbCA9IDAsIGMgPSAwOyBjIDwgc3RyLmxlbmd0aDsgYysrKSB7CiAgICAgICAgbGV0IGNjID0gc3RyW2NdLCBuYyA9IHN0cltjKzFdOyAgICAgICAgLy8gQ3VycmVudCBjaGFyYWN0ZXIsIG5leHQgY2hhcmFjdGVyCiAgICAgICAgYXJyW3Jvd10gPSBhcnJbcm93XSB8fCBbXTsgICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IHJvdyBpZiBuZWNlc3NhcnkKICAgICAgICBhcnJbcm93XVtjb2xdID0gYXJyW3Jvd11bY29sXSB8fCAnJzsgICAvLyBDcmVhdGUgYSBuZXcgY29sdW1uIChzdGFydCB3aXRoIGVtcHR5IHN0cmluZykgaWYgbmVjZXNzYXJ5CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpcyBhIHF1b3RhdGlvbiBtYXJrLCBhbmQgd2UncmUgaW5zaWRlIGEKICAgICAgICAvLyBxdW90ZWQgZmllbGQsIGFuZCB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgYWxzbyBhIHF1b3RhdGlvbiBtYXJrLAogICAgICAgIC8vIGFkZCBhIHF1b3RhdGlvbiBtYXJrIHRvIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgc2tpcCB0aGUgbmV4dCBjaGFyYWN0ZXIKICAgICAgICBpZiAoY2MgPT0gJyInICYmIHF1b3RlICYmIG5jID09ICciJykgeyBhcnJbcm93XVtjb2xdICs9IGNjOyArK2M7IGNvbnRpbnVlOyB9CgogICAgICAgIC8vIElmIGl0J3MganVzdCBvbmUgcXVvdGF0aW9uIG1hcmssIGJlZ2luL2VuZCBxdW90ZWQgZmllbGQKICAgICAgICBpZiAoY2MgPT0gJyInKSB7IHF1b3RlID0gIXF1b3RlOyBjb250aW51ZTsgfQoKICAgICAgICAvLyBJZiBpdCdzIGEgY29tbWEgYW5kIHdlJ3JlIG5vdCBpbiBhIHF1b3RlZCBmaWVsZCwgbW92ZSBvbiB0byB0aGUgbmV4dCBjb2x1bW4KICAgICAgICBpZiAoY2MgPT0gJywnICYmICFxdW90ZSkgeyArK2NvbDsgY29udGludWU7IH0KCiAgICAgICAgLy8gSWYgaXQncyBhIG5ld2xpbmUgKENSTEYpIGFuZCB3ZSdyZSBub3QgaW4gYSBxdW90ZWQgZmllbGQsIHNraXAgdGhlIG5leHQgY2hhcmFjdGVyCiAgICAgICAgLy8gYW5kIG1vdmUgb24gdG8gdGhlIG5leHQgcm93IGFuZCBtb3ZlIHRvIGNvbHVtbiAwIG9mIHRoYXQgbmV3IHJvdwogICAgICAgIGlmIChjYyA9PSAnXHInICYmIG5jID09ICdcbicgJiYgIXF1b3RlKSB7ICsrcm93OyBjb2wgPSAwOyArK2M7IGNvbnRpbnVlOyB9CgogICAgICAgIC8vIElmIGl0J3MgYSBuZXdsaW5lIChMRiBvciBDUikgYW5kIHdlJ3JlIG5vdCBpbiBhIHF1b3RlZCBmaWVsZCwKICAgICAgICAvLyBtb3ZlIG9uIHRvIHRoZSBuZXh0IHJvdyBhbmQgbW92ZSB0byBjb2x1bW4gMCBvZiB0aGF0IG5ldyByb3cKICAgICAgICBpZiAoY2MgPT0gJ1xuJyAmJiAhcXVvdGUpIHsgKytyb3c7IGNvbCA9IDA7IGNvbnRpbnVlOyB9CiAgICAgICAgaWYgKGNjID09ICdccicgJiYgIXF1b3RlKSB7ICsrcm93OyBjb2wgPSAwOyBjb250aW51ZTsgfQoKICAgICAgICAvLyBPdGhlcndpc2UsIGFwcGVuZCB0aGUgY3VycmVudCBjaGFyYWN0ZXIgdG8gdGhlIGN1cnJlbnQgY29sdW1uCiAgICAgICAgYXJyW3Jvd11bY29sXSArPSBjYzsKICAgIH0KICAgIHJldHVybiBhcnI7Cn0KYXN5bmMgZnVuY3Rpb24gc2VhcmNoUmVzZXJ2aXN0ZShiYXNlX3VybCwgbmlkKSB7CiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7YmFzZV91cmx9L2F1dG9jb21wbGV0ZS9yZXNlcnZpc3Rlc2AsIHsKICAgIG1ldGhvZDogIlBPU1QiLAogICAgaGVhZGVyczogewogICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCIKICAgIH0sCiAgICBib2R5OiBuZXcgVVJMU2VhcmNoUGFyYW1zKHsKICAgICAgUmVzZXJ2aXN0ZTogbmlkLAogICAgICBUeXBlOiAiMSIKICAgIH0pCiAgfSkKICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKQogIGlmIChkYXRhLmxlbmd0aCA8PSAwKSB7CiAgICAvL25pZCBub3QgZm91bmQKICAgIHJldHVybgogIH0KICByZXR1cm4gZGF0YVswXQp9CmxldCBnX3Byb2dyZXNzaW9uX2NvdW50ID0gMAphc3luYyBmdW5jdGlvbiBzaG93UHJvZ3Jlc3Npb24ocHJvbWlzZXMsIGNhbGxiYWNrPXVuZGVmaW5lZCkgewogIGdfcHJvZ3Jlc3Npb25fY291bnQgPSAwCgogIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKQogIGNvbnRlbnQuaWQgPSAicm9jUHJvZ3Jlc3NCYXIiCiAgY29udGVudC5pbm5lckhUTUwgPSBgJHtnX3Byb2dyZXNzaW9uX2NvdW50fSAvICR7cHJvbWlzZXMubGVuZ3RofWAKICBzaG93TW9kYWwoIkNoYXJnZW1lbnQuLi4iLCBjb250ZW50KQoKICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMubWFwKChwcm9tKSA9PiBwcm9tLnRoZW4oKHJlcykgPT4gewogICAgICBnX3Byb2dyZXNzaW9uX2NvdW50ICs9IDEKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvY1Byb2dyZXNzQmFyIikuaW5uZXJIVE1MID0gYCR7Z19wcm9ncmVzc2lvbl9jb3VudH0gLyAke3Byb21pc2VzLmxlbmd0aH1gCiAgICAgIGNhbGxiYWNrPy4ocmVzKQogICAgICByZXR1cm4gcmVzCiAgICB9KQogICkpCn0KCmNvbnN0IEJBU0VfVVJMID0gImh0dHBzOi8vd3d3LnJlc2VydmlzdGVzLmRlZmVuc2UuZ291di5mci9pbnRlcm5lIgoKY29uc3QgY3JlYXRlQWN0aXZpdHkxID0gYXN5bmMgKGFjdGl2aXR5SWQsIHRva2VuLCBkYXRhKSA9PiB7CiAgcmV0dXJuIGF3YWl0IGZldGNoTXVsdGlwYXJ0KGAke0JBU0VfVVJMfS9hY3Rpdml0ZXMvY3JlZXIvZG9ubmVlcy1hZG1pbmlzdHJhdGl2ZXMvJHthY3Rpdml0eUlkfWAsIHsKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlVW5pdGVBY2N1ZWlsXSIgOiB7dmFsdWU6IGRhdGEubW9kZWxlQWN0aXZpdGVVbml0ZUFjY3VlaWx9LAogICAgImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1bY29kZXNJbXB1dGF0aW9uQnVkZ2V0YWlyZVRvZ2dsZV0iIDoge3ZhbHVlOiBkYXRhLmNvZGVzSW1wdXRhdGlvbkJ1ZGdldGFpcmVUb2dnbGV9LAogICAgImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1bY29kZXNJbXB1dGF0aW9uXVtjb2RlRW5nYWdlbWVudF0iIDoge3ZhbHVlOiBkYXRhLmNvZGVzSW1wdXRhdGlvbi5jb2RlRW5nYWdlbWVudH0sCiAgICAiY3JlZXJfYWN0aXZpdGVfZG9ubmVlc19hZG1pbmlzdHJhdGl2ZXNfZm9ybVtjb2Rlc0ltcHV0YXRpb25dW2NvZGVEb21haW5lRm9uY3Rpb25uZWxdIiA6IHt2YWx1ZTogZGF0YS5jb2Rlc0ltcHV0YXRpb24uY29kZURvbWFpbmVGb25jdGlvbm5lbH0sCiAgICAiY3JlZXJfYWN0aXZpdGVfZG9ubmVlc19hZG1pbmlzdHJhdGl2ZXNfZm9ybVtjb2Rlc0ltcHV0YXRpb25dW2NvZGVDZW50cmVGaW5hbmNpZXJdIiA6IHt2YWx1ZTogZGF0YS5jb2Rlc0ltcHV0YXRpb24uY29kZUNlbnRyZUZpbmFuY2llcn0sCiAgICAiY3JlZXJfYWN0aXZpdGVfZG9ubmVlc19hZG1pbmlzdHJhdGl2ZXNfZm9ybVtjb2Rlc0ltcHV0YXRpb25dW2NvZGVTZXJ2aWNlQmVuZWZpY2lhaXJlXSIgOiB7dmFsdWU6IGRhdGEuY29kZXNJbXB1dGF0aW9uLmNvZGVTZXJ2aWNlQmVuZWZpY2lhaXJlfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlRW1haWxQT0NdIiA6IHt2YWx1ZTogZGF0YS5tb2RlbGVBY3Rpdml0ZUVtYWlsUE9DfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlU291c1RpdHJlXSIgOiB7dmFsdWU6IGRhdGEubW9kZWxlQWN0aXZpdGVTb3VzVGl0cmV9LAogICAgImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVDb250YWN0XSIgOiB7dmFsdWU6IGRhdGEubW9kZWxlQWN0aXZpdGVDb250YWN0fSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlTnVtZXJvVGVsZXBob25lXVtjb2RlUGF5c10iIDoge3ZhbHVlOiBkYXRhLm1vZGVsZUFjdGl2aXRlTnVtZXJvVGVsZXBob25lLmNvZGVQYXlzfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlTnVtZXJvVGVsZXBob25lXVt0ZWxlcGhvbmVdIiA6IHt2YWx1ZTogZGF0YS5tb2RlbGVBY3Rpdml0ZU51bWVyb1RlbGVwaG9uZS50ZWxlcGhvbmV9LAogICAgImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVFbWFpbF0iIDoge3ZhbHVlOiBkYXRhLm1vZGVsZUFjdGl2aXRlRW1haWx9LAogICAgImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVBZHJlc3NlXSIgOiB7dmFsdWU6IGRhdGEubW9kZWxlQWN0aXZpdGVBZHJlc3NlfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlQWRyZXNzZTJdIiA6IHt2YWx1ZTogZGF0YS5tb2RlbGVBY3Rpdml0ZUFkcmVzc2UyfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlVmlsbGVdIiA6IHt2YWx1ZTogZGF0YS5tb2RlbGVBY3Rpdml0ZVZpbGxlfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW21vZGVsZUFjdGl2aXRlRGVzY3JpcHRpb25dIiA6IHt2YWx1ZTogZGF0YS5tb2RlbGVBY3Rpdml0ZURlc2NyaXB0aW9ufSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW3VwbG9hZERvY3VtZW50XVtkb2N1bWVudF8xXVtmaWNoaWVyXSIgOiB7Y29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW3VwbG9hZERvY3VtZW50XVtkb2N1bWVudF8yXVtmaWNoaWVyXSIgOiB7Y29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW3VwbG9hZERvY3VtZW50XVtkb2N1bWVudF8zXVtmaWNoaWVyXSIgOiB7Y29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW3VwbG9hZERvY3VtZW50XVtkb2N1bWVudF80XVtmaWNoaWVyXSIgOiB7Y29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW3VwbG9hZERvY3VtZW50XVtkb2N1bWVudF81XVtmaWNoaWVyXSIgOiB7Y29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifSwKICAgICJjcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtW3ZhbGlkZXJdIiA6IHt2YWx1ZTogIiJ9LAogICAgImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1bX3Rva2VuXSIgOiB7dmFsdWU6IHRva2VufQogIH0sICJQT1NUIikKfQoKY29uc3QgY3JlYXRlQWN0aXZpdHkyID0gYXN5bmMgKGFjdGl2aXR5SWQsIHRva2VuLCBkYXRhKSA9PiB7CiAgcmV0dXJuIGF3YWl0IGZldGNoQ2FsbChgJHtCQVNFX1VSTH0vYWN0aXZpdGVzL2NyZWVyL2R1cmVlLyR7YWN0aXZpdHlJZH1gLCB7CiAgICAiY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybVttb2RlbGVBY3Rpdml0ZVR5cGVSZXBldGl0aW9uXSIgOiBkYXRhLm1vZGVsZUFjdGl2aXRlVHlwZVJlcGV0aXRpb24sCiAgICAiY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybVtpc01hY3JvQWN0aXZpdGVdIiA6IGRhdGEuaXNNYWNyb0FjdGl2aXRlLAogICAgImNyZWVyX2FjdGl2aXRlX2R1cmVlX2Zvcm1bbWFjcm9BY3Rpdml0ZV0iIDogZGF0YS5tYWNyb0FjdGl2aXRlLAogICAgImNyZWVyX2FjdGl2aXRlX2R1cmVlX2Zvcm1bbW9kZWxlQWN0aXZpdGVEYXRlTGltaXRlSW5zY3JpcHRpb25dIiA6IGRhdGEubW9kZWxlQWN0aXZpdGVEYXRlTGltaXRlSW5zY3JpcHRpb24sCiAgICAiY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybVttb2RlbGVBY3Rpdml0ZURhdGVzXVswXVttb2RlbGVBY3Rpdml0ZURhdGVzRGVidXRdIiA6IGRhdGEubW9kZWxlQWN0aXZpdGVEYXRlc1swXS5tb2RlbGVBY3Rpdml0ZURhdGVzRGVidXQsCiAgICAiY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybVttb2RlbGVBY3Rpdml0ZURhdGVzXVswXVttb2RlbGVBY3Rpdml0ZURhdGVzRmluXSIgOiBkYXRhLm1vZGVsZUFjdGl2aXRlRGF0ZXNbMF0ubW9kZWxlQWN0aXZpdGVEYXRlc0ZpbiwKICAgICJjcmVlcl9hY3Rpdml0ZV9kdXJlZV9mb3JtW21vZGVsZUFjdGl2aXRlRGF0ZXNdWzBdW21vZGVsZUFjdGl2aXRlRGF0ZUxpbWl0ZUluc2NyaXB0aW9uXSIgOiBkYXRhLm1vZGVsZUFjdGl2aXRlRGF0ZXNbMF0ubW9kZWxlQWN0aXZpdGVEYXRlTGltaXRlSW5zY3JpcHRpb24sCiAgICAiY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybVt2YWxpZGVyXSIgOiAiIiwKICAgICJjcmVlcl9hY3Rpdml0ZV9kdXJlZV9mb3JtW190b2tlbl0iIDogdG9rZW4KICB9LCAiUE9TVCIsIHRydWUpCn0KCmNvbnN0IGNyZWF0ZUFjdGl2aXR5MyA9IGFzeW5jIChhY3Rpdml0eUlkLCB0b2tlbiwgZGF0YSkgPT4gewoKICBjb25zdCBmb3JtID0gewogICAgImNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVUeXBlXSIgOiB7dmFsdWU6IGRhdGEubW9kZWxlQWN0aXZpdGVUeXBlfSwKICAgICJjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW2Nob2l4Q3JpdGVyZUdlb2dyYXBoaXF1ZV0iIDoge3ZhbHVlOiBkYXRhLmNob2l4Q3JpdGVyZUdlb2dyYXBoaXF1ZX0sCiAgICAiY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVSZWNoZXJjaGVyXSIgOiB7dmFsdWU6IGRhdGEubW9kZWxlQWN0aXZpdGVSZXNlcnZpc3RlUmVjaGVyY2hlcn0sCiAgICAiY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVt0ZWxldmVyc2VyQ1NWXVtmaWNoaWVyXSIgOiB7dmFsdWU6ICIiLCBjb250ZW50VHlwZTogImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9LAogICAgImNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1bX3Rva2VuXSIgOiB7dmFsdWU6IHRva2VufSwKICAgICJjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW3ZhbGlkZXJdIiA6IHt2YWx1ZTogIiJ9LAogIH0KCiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLm1vZGVsZUFjdGl2aXRlUHJvZmlsLmxlbmd0aDsgaSsrKSB7CiAgICBjb25zdCBwcm9maWwgPSBkYXRhLm1vZGVsZUFjdGl2aXRlUHJvZmlsW2ldCiAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUHJvZmlsXVske2l9XVtwcm9maWxNb2RlbGVdYF0gPSB7dmFsdWU6IHByb2ZpbC5wcm9maWxNb2RlbGV9CiAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUHJvZmlsXVske2l9XVtkaXNwb25pYmxlVW5pcXVlbWVudF1gXSA9IHt2YWx1ZTogcHJvZmlsLmRpc3BvbmlibGVVbmlxdWVtZW50fQogICAgZm9ybVtgY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVByb2ZpbF1bJHtpfV1bcHJvZmlsQ2hvaXhHcmFkZV1gXSA9IHt2YWx1ZTogcHJvZmlsLnByb2ZpbENob2l4R3JhZGV9CiAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUHJvZmlsXVske2l9XVtwcm9maWxHcmFkZV1gXSA9IHt2YWx1ZTogcHJvZmlsLnByb2ZpbEdyYWRlfQogICAgZm9ybVtgY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVByb2ZpbF1bJHtpfV1bY29ycHNdYF0gPSB7dmFsdWU6IHByb2ZpbC5jb3Jwc30KICAgIGZvcm1bYGNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVQcm9maWxdWyR7aX1dW3Byb2ZpbEdyYWRlTWluXWBdID0ge3ZhbHVlOiBwcm9maWwucHJvZmlsR3JhZGVNaW59CiAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUHJvZmlsXVske2l9XVtwcm9maWxHcmFkZU1heF1gXSA9IHt2YWx1ZTogcHJvZmlsLnByb2ZpbEdyYWRlTWF4fQogICAgZm9yIChsZXQgaiA9IDA7IGogPCBwcm9maWwuY29tcGV0ZW5jZXMubGVuZ3RoOyBqKyspIHsKICAgICAgY29uc3QgY29tcGV0ZW5jZSA9IHByb2ZpbC5jb21wZXRlbmNlc1tqXQogICAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUHJvZmlsXVske2l9XVtjb21wZXRlbmNlc11bJHtqfV1bZ3JvdXBlXWBdID0ge3ZhbHVlOiBjb21wZXRlbmNlLmdyb3VwZX0KICAgICAgZm9ybVtgY3JlZXJfYWN0aXZpdGVfcmVzZXJ2aXN0ZXNfZm9ybVttb2RlbGVBY3Rpdml0ZVByb2ZpbF1bJHtpfV1bY29tcGV0ZW5jZXNdWyR7an1dW2Nob2l4Q29tcGV0ZW5jZV1gXSA9IHt2YWx1ZTogY29tcGV0ZW5jZS5jaG9peENvbXBldGVuY2V9CiAgICAgIGZvcm1bYGNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVQcm9maWxdWyR7aX1dW2NvbXBldGVuY2VzXVske2p9XVtpZF1gXSA9IHt2YWx1ZTogY29tcGV0ZW5jZS5pZH0KICAgIH0KICAgIGZvcm1bYGNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVQcm9maWxdWyR7aX1dW3Byb2ZpbE5vbWJyZVJlY2hlcmNoZV1gXSA9IHt2YWx1ZTogcHJvZmlsLnByb2ZpbE5vbWJyZVJlY2hlcmNoZX0KICAgIGZvcm1bYGNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm1bbW9kZWxlQWN0aXZpdGVQcm9maWxdWyR7aX1dW3Byb2ZpbE5vbWJyZUNvbmNlcm5lc11gXSA9IHt2YWx1ZTogcHJvZmlsLnByb2ZpbE5vbWJyZUNvbmNlcm5lc30KICB9CgogIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5tb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVzLmxlbmd0aDsgaSsrKSB7CiAgICBjb25zdCByZXNlcnZpc3RlID0gZGF0YS5tb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVzW2ldCiAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUmVzZXJ2aXN0ZXNdWyR7aX1dW3Jlc2VydmlzdGVJZF1gXSA9IHt2YWx1ZTogcmVzZXJ2aXN0ZS5yZXNlcnZpc3RlSWR9CiAgICBmb3JtW2BjcmVlcl9hY3Rpdml0ZV9yZXNlcnZpc3Rlc19mb3JtW21vZGVsZUFjdGl2aXRlUmVzZXJ2aXN0ZXNdWyR7aX1dW3Jlc2VydmlzdGVUeXBlXWBdID0ge3ZhbHVlOiByZXNlcnZpc3RlLnJlc2VydmlzdGVUeXBlfQogIH0KCiAgcmV0dXJuIGF3YWl0IGZldGNoTXVsdGlwYXJ0KGAke0JBU0VfVVJMfS9hY3Rpdml0ZXMvY3JlZXIvcmVzZXJ2aXN0ZXMvJHthY3Rpdml0eUlkfWAsIGZvcm0sICJQT1NUIikKfQoKY29uc3QgY3JlYXRlQWN0aXZpdHk0ID0gYXN5bmMgKGFjdGl2aXR5SWQsIHRva2VuLCBkYXRhKSA9PiB7CiAgcmV0dXJuIGF3YWl0IGZldGNoQ2FsbChgJHtCQVNFX1VSTH0vYWN0aXZpdGVzL2NyZWVyL2R1cmVlLyR7YWN0aXZpdHlJZH1gLCB7CiAgICAiY3JlZXJfYWN0aXZpdGVfcHVibGljYXRpb25fZm9ybVttb2RlbGVBY3Rpdml0ZU5vdGlmSW5zY3JpcHRpb25dIiA6IGRhdGEubW9kZWxlQWN0aXZpdGVOb3RpZkluc2NyaXB0aW9uLAogICAgImNyZWVyX2FjdGl2aXRlX3B1YmxpY2F0aW9uX2Zvcm1bbW9kZWxlQWN0aXZpdGVWaXNpYmxlXSIgOiBkYXRhLm1vZGVsZUFjdGl2aXRlVmlzaWJsZSwKICAgICJjcmVlcl9hY3Rpdml0ZV9wdWJsaWNhdGlvbl9mb3JtW2luc2NyaXRSbzFWaXNpYmxlXSIgOiBkYXRhLmluc2NyaXRSbzFWaXNpYmxlLAogICAgImNyZWVyX2FjdGl2aXRlX3B1YmxpY2F0aW9uX2Zvcm1bbW9kZWxlQWN0aXZpdGVDb2RlXSIgOiBkYXRhLm1vZGVsZUFjdGl2aXRlQ29kZSwKICAgICJjcmVlcl9hY3Rpdml0ZV9wdWJsaWNhdGlvbl9mb3JtW21vZGVsZUFjdGl2aXRlSXNNb2RlbGVdIiA6IGRhdGEubW9kZWxlQWN0aXZpdGVJc01vZGVsZSwKICAgICJjcmVlcl9hY3Rpdml0ZV9wdWJsaWNhdGlvbl9mb3JtW3B1YmxpZXJdIiA6ICIiLAogICAgImNyZWVyX2FjdGl2aXRlX3B1YmxpY2F0aW9uX2Zvcm1bX3Rva2VuXSIgOiB0b2tlbgogIH0sICJQT1NUIiwgdHJ1ZSkKfQoKLy8gZnVuY3Rpb24gc2hvd0FkZEFjdGl2aXRpZXNNb2RhbCgpIHsKLy8gICBjb25zdCBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikKLy8gICBjb250ZW50LnN0eWxlLmRpc3BsYXkgPSAiZmxleCIKLy8gICBjb250ZW50LnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAiY29sdW1uIgovLyAgIGNvbnRlbnQuc3R5bGUuZmxleEdyb3cgPSAiMCAxIDAiCi8vICAgY29udGVudC5zdHlsZS5nYXAgPSAiMXJlbSIKCi8vICAgY29uc3QgZGVzY3JpcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikKLy8gICBkZXNjcmlwdGlvbi5pbm5lckhUTUwgPSAiRW52b3llciBsZSBmaWNoaWVyIGRlIGNyw6lhdGlvbiBDU1YiCi8vICAgY29udGVudC5hcHBlbmRDaGlsZChkZXNjcmlwdGlvbikKCgovLyAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKQovLyAgIGlucHV0LnR5cGUgPSAiZmlsZSIKLy8gICBpbnB1dC5pZCA9ICJyb2NBY3Rpdml0eUNyZWF0aW9uQ3N2IgovLyAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoaW5wdXQpCgovLyAgIGNvbnN0IGJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbigiT0siKQovLyAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGFzeW5jICgpID0+IHsKLy8gICAgIGNvbnN0IGZpbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9jQWN0aXZpdHlDcmVhdGlvbkNzdiIpCi8vICAgICBpZihmaWxlLmZpbGVzLmxlbmd0aCkKLy8gICAgIHsKLy8gICAgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCkKLy8gICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpCi8vICAgICAgIHsKLy8gICAgICAgICBjb25zdCBidWZmZXIgPSBlLnRhcmdldC5yZXN1bHQKLy8gICAgICAgICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKCJ1dGYtOCIpOwovLyAJCQkJY29uc3QgZGVjb2RlZFN0cmluZyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlcik7Ci8vICAgICAgICAgY29uc29sZS5sb2coZGVjb2RlZFN0cmluZykKLy8gICAgICAgICBjb25zdCByZXMgPSBwYXJzZUNTVihkZWNvZGVkU3RyaW5nKQovLyAgICAgICAgIGNvbnNvbGUubG9nKHJlcykKLy8gICAgICAgICAvLyBUT0RPIHVzZSByb3dzIHRvIGNyZWF0ZSBhY3Rpdml0aWVzCi8vICAgICAgIH0KLy8gICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUuZmlsZXNbMF0pOwovLyAgICAgfQovLyAgIH0pCi8vICAgY29udGVudC5hcHBlbmRDaGlsZChidXR0b24pCgoKLy8gICBzaG93TW9kYWwoIkNyw6llciBkZXMgYWN0aXZpdMOpcyIsIGNvbnRlbnQpCi8vIH0KCmFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2aXR5Q29kZUxpbmUoYWN0aXZpdHlDb2RlKSB7CiAgLy9odHRwczovL3d3dy5yZXNlcnZpc3Rlcy5kZWZlbnNlLmdvdXYuZnIvaW50ZXJuZS9hdXRvY29tcGxldGUvY29kZWFjdGl2aXRlP3JlZkNvZGVBY3Rpdml0ZT04MzEmZGF0ZVZhbGlkaXRlPTAxLzA4LzIwMjYmZGF0ZUZpblZhbGlkaXRlPTAxLzA4LzIwMjYKICAvL0lBIC0gODMxIC0gSW50ZXJ2ZW5hbnRzIEpvdXJuw6llIGTDqWZlbnNlIGV0IGNpdG95ZW5uZXTDqSAoSkRDKQogIGNvbnN0IHRvZGF5RGF0ZVN0cmluZyA9IG5ldyBEYXRlKCkudG9Mb2NhbGVEYXRlU3RyaW5nKCJmci1GUiIsIHtkYXk6ICIyLWRpZ2l0IiwgbW9udGg6ICIyLWRpZ2l0IiwgeWVhcjogIm51bWVyaWMifSkKICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtCQVNFX1VSTH0vYXV0b2NvbXBsZXRlL2NvZGVhY3Rpdml0ZT9yZWZDb2RlQWN0aXZpdGU9JHthY3Rpdml0eUNvZGV9JmRhdGVWYWxpZGl0ZT0ke3RvZGF5RGF0ZVN0cmluZ30mZGF0ZUZpblZhbGlkaXRlPSR7dG9kYXlEYXRlU3RyaW5nfWApCiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCkKICByZXR1cm4gYElBIC0gJHtkYXRhLnJlZkNvZGVBY3Rpdml0ZVZhbGV1cn0gLSAke2RhdGEucmVmQ29kZUFjdGl2aXRlTGliZWxsZX1gCn0KCmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFjdGl2aXR5KGRhdGEpIHsKCiAgLy8gY29uc3QgZGF0YSA9IHsKICAvLyAgIHVuaXRlOiAiMTkgUkctIFVOSVRFIFNQRUNJQUxJU0VFIERFIFJFU0VSVkUgLSBDT01QQUdOSUUgRCdBUFBVSSBBVSBERVBMT0lFTUVOVCBMT1VSRCBFVCBPUEVSQVRJT05ORUwgKDAwQzM5VFApIiwKICAvLyAgIHRpdHJlOiAiVEVTVF9SQ09fNCIsCiAgLy8gICBjb250YWN0OiAiUE9DIiwKICAvLyAgIHRlbGVwaG9uZTogIjAxIDIzIDQ1IDY3IDg5IiwKICAvLyAgIGVtYWlsOiAiUE9DX2VtYWlsQHRlc3QuY29tIiwKICAvLyAgIGFkcmVzc2VOdW1lcm86ICIxMCIsCiAgLy8gICBhZHJlc3NlUnVlOiAicnVlIGR1IHRydWMiLAogIC8vICAgdmlsbGU6ICJNT1VSTUVMT04gTEUgR1JBTkQgKDUxNDAwKSIsCiAgLy8gICBkZXNjcmlwdGlvbjogImRlc2NyaXB0aW9uIiwKICAvLyAgIGRhdGVEZWJ1dDogIjIwMjYtMDQtMTNUMDg6MDAiLAogIC8vICAgZGF0ZUZpbjogIjIwMjYtMDQtMTNUMTc6MDAiLAogIC8vICAgZGF0ZUxpbWl0ZUluc2NyaXB0aW9uOiAiMjAyNi0wNC0xMlQyMzo1OSIsCiAgLy8gICBjb2RlQWN0aXZpdGU6IDgzMSwKICAvLyAgIHJlc2VydmlzdGVzOiBbCiAgLy8gICAgICIwODUxMDIwNTU2IgogIC8vICAgXSwKICAvLyB9CgogIGNvbnN0IERFRkFVTFRfVU5JVEUgPSAiMTkgUkctIFVOSVRFIFNQRUNJQUxJU0VFIERFIFJFU0VSVkUgLSBDT01QQUdOSUUgRCdBUFBVSSBBVSBERVBMT0lFTUVOVCBMT1VSRCBFVCBPUEVSQVRJT05ORUwgKDAwQzM5VFApIgogIGNvbnN0IERFRkFVTFRfQ0lUWSA9ICJNT1VSTUVMT04gTEUgR1JBTkQgKDUxNDAwKSIKICBjb25zdCBERUZBVUxUX0NPVU5UUllfQ09ERSA9ICI3MiIgLy9GUkFOQ0UKCiAgY29uc3QgZm9ybWF0dGVkRGF0YSA9IHsKICAgIGNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm06IHsKICAgICAgbW9kZWxlQWN0aXZpdGVVbml0ZUFjY3VlaWw6IGRhdGEudW5pdGUgfHwgREVGQVVMVF9VTklURSwKICAgICAgY29kZXNJbXB1dGF0aW9uQnVkZ2V0YWlyZVRvZ2dsZTogMCwKICAgICAgY29kZXNJbXB1dGF0aW9uOiB7CiAgICAgICAgY29kZUVuZ2FnZW1lbnQ6ICIiLAogICAgICAgIGNvZGVEb21haW5lRm9uY3Rpb25uZWw6ICIiLAogICAgICAgIGNvZGVDZW50cmVGaW5hbmNpZXI6ICIiLAogICAgICAgIGNvZGVTZXJ2aWNlQmVuZWZpY2lhaXJlOiAiIgogICAgICB9LAogICAgICBtb2RlbGVBY3Rpdml0ZUVtYWlsUE9DOiAiIiwKICAgICAgbW9kZWxlQWN0aXZpdGVTb3VzVGl0cmU6IGRhdGEuc291c1RpdHJlLAogICAgICBtb2RlbGVBY3Rpdml0ZUNvbnRhY3Q6IGRhdGEuY29udGFjdCwKICAgICAgbW9kZWxlQWN0aXZpdGVOdW1lcm9UZWxlcGhvbmU6IHsKICAgICAgICBjb2RlUGF5czogREVGQVVMVF9DT1VOVFJZX0NPREUsCiAgICAgICAgdGVsZXBob25lOiBkYXRhLnRlbGVwaG9uZQogICAgICB9LAogICAgICBtb2RlbGVBY3Rpdml0ZUVtYWlsOiBkYXRhLmVtYWlsLAogICAgICBtb2RlbGVBY3Rpdml0ZUFkcmVzc2U6IGRhdGEuYWRyZXNzZSwKICAgICAgbW9kZWxlQWN0aXZpdGVBZHJlc3NlMjogZGF0YS5hZHJlc3NlMiwKICAgICAgbW9kZWxlQWN0aXZpdGVWaWxsZTogZGF0YS52aWxsZSB8fCBERUZBVUxUX0NJVFksCiAgICAgIG1vZGVsZUFjdGl2aXRlRGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sCiAgICB9LAogICAgY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybTogewogICAgICBtb2RlbGVBY3Rpdml0ZVR5cGVSZXBldGl0aW9uOiAiMCIsCiAgICAgIGlzTWFjcm9BY3Rpdml0ZTogIjAiLAogICAgICBtYWNyb0FjdGl2aXRlOiAiIiwKICAgICAgbW9kZWxlQWN0aXZpdGVEYXRlTGltaXRlSW5zY3JpcHRpb246IGRhdGEuZGF0ZUxpbWl0ZUluc2NyaXB0aW9uLAogICAgICBtb2RlbGVBY3Rpdml0ZURhdGVzOiBbCiAgICAgICAgewogICAgICAgICAgbW9kZWxlQWN0aXZpdGVEYXRlc0RlYnV0OiBkYXRhLmRhdGVEZWJ1dCwKICAgICAgICAgIG1vZGVsZUFjdGl2aXRlRGF0ZXNGaW46IGRhdGEuZGF0ZUZpbiwKICAgICAgICAgIG1vZGVsZUFjdGl2aXRlRGF0ZUxpbWl0ZUluc2NyaXB0aW9uOiBkYXRhLmRhdGVMaW1pdGVJbnNjcmlwdGlvbgogICAgICAgIH0KICAgICAgXQogICAgfSwKICAgIGNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm06IHsKICAgICAgbW9kZWxlQWN0aXZpdGVUeXBlOiAiMSIsCiAgICAgIGNob2l4Q3JpdGVyZUdlb2dyYXBoaXF1ZTogIjAiLAogICAgICBtb2RlbGVBY3Rpdml0ZVByb2ZpbDogWwogICAgICAgIHsKICAgICAgICAgIHByb2ZpbE1vZGVsZTogIldJTExfQkVfRklMTEVEIiwKICAgICAgICAgIGRpc3BvbmlibGVVbmlxdWVtZW50OiAiMCIsCiAgICAgICAgICBwcm9maWxDaG9peEdyYWRlOiAiZ3JhZGUiLAogICAgICAgICAgcHJvZmlsR3JhZGU6ICIiLAogICAgICAgICAgY29ycHM6ICIiLAogICAgICAgICAgcHJvZmlsR3JhZGVNaW46ICIiLAogICAgICAgICAgcHJvZmlsR3JhZGVNYXg6ICIiLAogICAgICAgICAgY29tcGV0ZW5jZXM6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgIGdyb3VwZTogIiIsCiAgICAgICAgICAgICAgY2hvaXhDb21wZXRlbmNlOiAiIiwKICAgICAgICAgICAgICBpZDogIiIKICAgICAgICAgICAgfQogICAgICAgICAgXSwKICAgICAgICAgIHByb2ZpbE5vbWJyZVJlY2hlcmNoZTogIiIsCiAgICAgICAgICBwcm9maWxOb21icmVDb25jZXJuZXM6ICIiCiAgICAgICAgfQogICAgICBdLAogICAgICBtb2RlbGVBY3Rpdml0ZVJlc2VydmlzdGVSZWNoZXJjaGVyOiAiIiwKICAgICAgbW9kZWxlQWN0aXZpdGVSZXNlcnZpc3RlczogYXdhaXQgUHJvbWlzZS5hbGwoZGF0YS5yZXNlcnZpc3Rlcy5tYXAoYXN5bmMgKG5pZCkgPT4gewogICAgICAgIGNvbnN0IHJlc2VydmlzdGUgPSBhd2FpdCBzZWFyY2hSZXNlcnZpc3RlKEJBU0VfVVJMLCBuaWQpCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgIHJlc2VydmlzdGVJZDogcmVzZXJ2aXN0ZT8ucmVzZXJ2aXN0ZUlkLAogICAgICAgICAgcmVzZXJ2aXN0ZVR5cGU6ICJSTzEiCiAgICAgICAgfQogICAgICB9KSkKICAgIH0sCiAgICBjcmVlcl9hY3Rpdml0ZV9wdWJsaWNhdGlvbl9mb3JtOiB7CiAgICAgIG1vZGVsZUFjdGl2aXRlTm90aWZJbnNjcmlwdGlvbjogIjAiLAogICAgICBtb2RlbGVBY3Rpdml0ZVZpc2libGU6ICIwIiwKICAgICAgaW5zY3JpdFJvMVZpc2libGU6ICIxIiwKICAgICAgbW9kZWxlQWN0aXZpdGVDb2RlOiBhd2FpdCBnZXRBY3Rpdml0eUNvZGVMaW5lKGRhdGEuY29kZUFjdGl2aXRlKSwKICAgICAgbW9kZWxlQWN0aXZpdGVJc01vZGVsZTogIjAiCiAgICB9CiAgfQoKICBjb25zdCB7IHRhcmdldDogYWN0aXZpdHlVcmwsIGNvbnRlbnQgfSA9IGF3YWl0IGdldFJlZGlyZWN0aW9uKGAke0JBU0VfVVJMfS9hY3Rpdml0ZXMvY3JlZXIvYWN0aXZpdGVgLCAiR0VUIikKICBjb25zdCB0b2tlbiA9IGNvbnRlbnQubWF0Y2goL25hbWU9ImNyZWVyX2FjdGl2aXRlX2Rvbm5lZXNfYWRtaW5pc3RyYXRpdmVzX2Zvcm1cW190b2tlblxdIiB2YWx1ZT0iKFteIl0rKSIvKVsxXQogIGNvbnN0IHBhcnRzID0gYWN0aXZpdHlVcmwuc3BsaXQoIi8iKQogIGNvbnN0IGFjdGl2aXR5SWQgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXQoKICBmb3JtYXR0ZWREYXRhLmNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm0ubW9kZWxlQWN0aXZpdGVQcm9maWxbMF0ucHJvZmlsTW9kZWxlID0gYWN0aXZpdHlJZAoKICBjb25zb2xlLmxvZygiZm9ybWF0dGVkRGF0YSIsIGZvcm1hdHRlZERhdGEpCgogIGNyZWF0ZUFjdGl2aXR5MShhY3Rpdml0eUlkLCB0b2tlbiwgZm9ybWF0dGVkRGF0YS5jcmVlcl9hY3Rpdml0ZV9kb25uZWVzX2FkbWluaXN0cmF0aXZlc19mb3JtKQogIGNvbnNvbGUubG9nKCIxIikKICBjcmVhdGVBY3Rpdml0eTIoYWN0aXZpdHlJZCwgdG9rZW4sIGZvcm1hdHRlZERhdGEuY3JlZXJfYWN0aXZpdGVfZHVyZWVfZm9ybSkKICBjb25zb2xlLmxvZygiMiIpCiAgY3JlYXRlQWN0aXZpdHkzKGFjdGl2aXR5SWQsIHRva2VuLCBmb3JtYXR0ZWREYXRhLmNyZWVyX2FjdGl2aXRlX3Jlc2VydmlzdGVzX2Zvcm0pCiAgY29uc29sZS5sb2coIjMiKQogIGNyZWF0ZUFjdGl2aXR5NChhY3Rpdml0eUlkLCB0b2tlbiwgZm9ybWF0dGVkRGF0YS5jcmVlcl9hY3Rpdml0ZV9wdWJsaWNhdGlvbl9mb3JtKQogIGNvbnNvbGUubG9nKCI0IikKfQoKZnVuY3Rpb24gc2hvd0FkZEFjdGl2aXR5UmVzdWx0TW9kYWwoKSB7CiAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgY29udGVudC5zdHlsZS5kaXNwbGF5ID0gImZsZXgiCiAgY29udGVudC5zdHlsZS5mbGV4RGlyZWN0aW9uID0gImNvbHVtbiIKICBjb250ZW50LnN0eWxlLmZsZXhHcm93ID0gIjAgMSAwIgogIGNvbnRlbnQuc3R5bGUuZ2FwID0gIjFyZW0iCgogIGNvbnN0IGRlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpCiAgZGVzY3JpcHRpb24uaW5uZXJIVE1MID0gYEZpbmlgCiAgY29udGVudC5hcHBlbmRDaGlsZChkZXNjcmlwdGlvbikKCiAgc2hvd01vZGFsKCJDcsOpYXRpb24gdGVybWluw6llIiwgY29udGVudCkKfQoKZnVuY3Rpb24gc2hvd0FkZEFjdGl2aXR5TW9kYWwoKSB7CiAgY29uc3QgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpCiAgY29udGVudC5zdHlsZS5kaXNwbGF5ID0gImZsZXgiCiAgY29udGVudC5zdHlsZS5mbGV4RGlyZWN0aW9uID0gImNvbHVtbiIKICBjb250ZW50LnN0eWxlLmZsZXhHcm93ID0gIjAgMSAwIgogIGNvbnRlbnQuc3R5bGUuZ2FwID0gIjFyZW0iCgogIGNvbnN0IGRlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpCiAgZGVzY3JpcHRpb24uaW5uZXJIVE1MID0gYAogICAgQ29sbGV6IGwnYWN0aXZpdMOpIGRlcHVpcyBHb29nbGUgU2hlZXQ8YnIvPgogICAgQ2hhbXBzIGF0dGVuZHVzIChSb3VnZSBwb3VyIG9ibGlnYXRvaXJlKTo8YnIvPgogICAgPHVsPgogICAgICA8bGk+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+dW5pdGU8L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IHJlZDsiPnRpdHJlPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5jb250YWN0PC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij50ZWxlcGhvbmU8L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPmVtYWlsPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5hZHJlc3NlTnVtZXJvPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij5hZHJlc3NlUnVlPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij52aWxsZTwvc3Bhbj48L2xpPgogICAgICA8bGk+PHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+ZGVzY3JpcHRpb248L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IHJlZDsiPmRhdGVEZWJ1dDwvc3Bhbj4gPHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYyI+KGZvcm1hdCA6IGpqL21tL3l5eXkpPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiByZWQ7Ij5kYXRlRmluPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljIj4oZm9ybWF0IDogamovbW0veXl5eSk8L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IHJlZDsiPmRhdGVMaW1pdGVJbnNjcmlwdGlvbjwvc3Bhbj4gPHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYyI+KGZvcm1hdCA6IGpqL21tL3l5eXkpPC9zcGFuPjwvbGk+CiAgICAgIDxsaT48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiByZWQ7Ij5jb2RlQWN0aXZpdGU8L3NwYW4+PC9saT4KICAgICAgPGxpPjxzcGFuIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgY29sb3I6IHJlZDsiPnJlc2VydmlzdGVzPC9zcGFuPiA8c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljIj4oTklELCBwZXV0IMOqdHJlIHByw6lzZW50IHBsdXNpZXVycyBmb2lzKTwvc3Bhbj48L2xpPgogICAgPC91bD4KICAgIEV4ZW1wbGU6IDxici8+CiAgICA8cHJlPgp0aXRyZQkgICAgICAgICAgICAgICAgVEVTVApkYXRlRGVidXQgICAgICAgICAgICAgMTMvMDgvMjAyNgpkYXRlRmluICAgICAgICAgICAgICAgMTUvMDgvMjAyNgpkYXRlTGltaXRlSW5zY3JpcHRpb24gMTEvMDgvMjAyNgpjb2RlQWN0aXZpdGUgICAgICAgICAgODMxCnJlc2VydmlzdGUgICAgICAgICAgICAwODUxMDIwNTU2CnJlc2VydmlzdGUgICAgICAgICAgICAwNiA3NTAgNTAwMTAKICAgIDwvcHJlPgogIGAKICBjb250ZW50LmFwcGVuZENoaWxkKGRlc2NyaXB0aW9uKQoKCiAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZXh0YXJlYSIpCiAgaW5wdXQuaWQgPSAicm9jQWRkQWN0aXZpdHlNb2RhbElucHV0IgogIGlucHV0LnN0eWxlLmJvcmRlciA9ICIxcHggc29saWQgI2NjYyIKICBjb250ZW50LmFwcGVuZENoaWxkKGlucHV0KQoKICBjb25zdCBidXR0b24gPSBjcmVhdGVCdXR0b24oIk9LIikKICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyAoKSA9PiB7CiAgICBjb25zdCB0eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9jQWRkQWN0aXZpdHlNb2RhbElucHV0IikudmFsdWUKCiAgICBjb25zdCBkYXRhID0gewogICAgICB1bml0ZTogIjE5IFJHLSBVTklURSBTUEVDSUFMSVNFRSBERSBSRVNFUlZFIC0gQ09NUEFHTklFIEQnQVBQVUkgQVUgREVQTE9JRU1FTlQgTE9VUkQgRVQgT1BFUkFUSU9OTkVMICgwMEMzOVRQKSIsCiAgICAgIHRpdHJlOiAiIiwKICAgICAgY29udGFjdDogIiIsCiAgICAgIHRlbGVwaG9uZTogIiIsCiAgICAgIGVtYWlsOiAiIiwKICAgICAgYWRyZXNzZU51bWVybzogIiIsCiAgICAgIGFkcmVzc2VSdWU6ICIiLAogICAgICB2aWxsZTogIk1PVVJNRUxPTiBMRSBHUkFORCAoNTE0MDApIiwKICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICBkYXRlRGVidXQ6ICIiLAogICAgICBkYXRlRmluOiAiIiwKICAgICAgZGF0ZUxpbWl0ZUluc2NyaXB0aW9uOiAiIiwKICAgICAgY29kZUFjdGl2aXRlOiAwLAogICAgICByZXNlcnZpc3RlczogW10sCiAgICB9CgogICAgY29uc3Qgcm93cyA9IFtdCiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgdHh0LnNwbGl0KCJcbiIpKSB7CiAgICAgIGNvbnN0IGxpbmVTdHJpcCA9IGxpbmUudHJpbSgpCiAgICAgIGlmIChsaW5lU3RyaXAubGVuZ3RoIDw9IDApIHsKICAgICAgICBjb250aW51ZQogICAgICB9CiAgICAgIGNvbnN0IGNvbHMgPSBsaW5lU3RyaXAuc3BsaXQoIlx0IikKICAgICAgY29uc3Qga2V5ID0gY29sc1swXS50cmltKCkKICAgICAgbGV0IHZhbHVlID0gY29sc1sxXS50cmltKCkKCiAgICAgIGlmIChrZXkgPT09ICJyZXNlcnZpc3RlIikgewogICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvXHMrL2csICIiKQogICAgICAgIHdoaWxlICh2YWx1ZS5sZW5ndGggPCAxMCkgewogICAgICAgICAgdmFsdWUgPSAiMCIgKyB2YWx1ZQogICAgICAgIH0KICAgICAgICBkYXRhLnJlc2VydmlzdGVzLnB1c2godmFsdWUpCiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHsKICAgICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIGtleTogJHtrZXl9YCkKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoImRhdGUiKSkgewogICAgICAgIGNvbnN0IHBhcnRzID0gdmFsdWUuc3BsaXQoIi8iKQogICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPT09IDMpIHsKICAgICAgICAgIGNvbnN0IGRheSA9IHBhcnRzWzBdLnBhZFN0YXJ0KDIsICIwIikKICAgICAgICAgIGNvbnN0IG1vbnRoID0gcGFydHNbMV0ucGFkU3RhcnQoMiwgIjAiKQogICAgICAgICAgY29uc3QgeWVhciA9IHBhcnRzWzJdCiAgICAgICAgICB2YWx1ZSA9IGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fVQwMDowMGAKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChrZXkgPT09ICJkYXRlRGVidXQiKSB7CiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJUMDA6MDAiLCAiVDA4OjAwIikKICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICJkYXRlRmluIikgewogICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiVDAwOjAwIiwgIlQxNzowMCIpCiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAiZGF0ZUxpbWl0ZUluc2NyaXB0aW9uIikgewogICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgiVDAwOjAwIiwgIlQyMzo1OSIpCiAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAiY29kZUFjdGl2aXRlIikgewogICAgICAgIHZhbHVlID0gcGFyc2VJbnQodmFsdWUpCiAgICAgIH0KCiAgICAgIGRhdGFba2V5XSA9IHZhbHVlCiAgICB9CiAgICBjb25zb2xlLmxvZygiREFUQSIsIGRhdGEpCgogICAgY29uc3QgcHJvbWlzZXMgPSBbY3JlYXRlQWN0aXZpdHkoZGF0YSldCiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgc2hvd1Byb2dyZXNzaW9uKHByb21pc2VzLCAocmVzKSA9PiB7CiAgICAgIHNob3dBZGRBY3Rpdml0eVJlc3VsdE1vZGFsKCkKICAgIH0pCiAgfSkKICBjb250ZW50LmFwcGVuZENoaWxkKGJ1dHRvbikKCiAgc2hvd01vZGFsKCJDcsOpZXIgdW5lIGFjdGl2aXTDqSIsIGNvbnRlbnQpCn0KCmZ1bmN0aW9uIG1haW4oKSB7CiAgLy8gRElTQUJMRUQKICByZXR1cm4KCiAgY29uc3QgYnV0dG9uID0gY3JlYXRlQnV0dG9uKCJDcsOpZXIgdW5lIGFjdGl2aXTDqSByYXBpZGUiKQogIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5mci1jb2wtbWQtNjpudGgtY2hpbGQoMiknKQogIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHNob3dBZGRBY3Rpdml0eU1vZGFsKQogIGNvbnRhaW5lci5hcHBlbmRDaGlsZChidXR0b24pCiAgLy9hZGRCdXR0b24oZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2LmZyLWNvbC1tZC02Om50aC1jaGlsZCgyKScpLCAiQ3LDqWVyIHVuZSBhY3Rpdml0w6kiLCBjcmVhdGVBY3Rpdml0eSkKfQoKbWFpbigp"
    }
  ],
  "settings": {
    "script_blacklist_server": [
      {
        "severity": 2,
        "rules": [
          "/https?:\\/\\/userscripts\\.org\\/scripts\\/(source|version)/(102614).*\\.user\\.js/"
        ]
      },
      {
        "name": "SaveFrom.net helper",
        "severity": 3,
        "rules": [
          "/https?:\\/\\/sf-addon\\.com\\/.*\\/.*\\.user\\.js/",
          "/https?:\\/\\/.*\\.sf-helper\\.com\\/.*\\.user\\.js/"
        ],
        "reason": "Shows advertisements"
      },
      {
        "severity": 8,
        "reasons": {
          "en": "Used for a phishing compain to compromise users of baon-nutrition.com"
        },
        "rules": ["/https?:\\/\\/files\\.ulysse\\.travel\\/.*\\.user\\.js/"]
      }
    ],
    "statistics_enabled": false
  }
}
