{
  "title": "Blacklight Inspection",
  "page_title": "Accueil - Meurthe et Moselle ~ Nancy — CIDFF",
  "uri_ins": "http://meurtheetmoselle-nancy.cidff.info/",
  "uri_dest": "https://meurtheetmoselle-nancy.cidff.info/",
  "uri_redirects": [
    "http://meurtheetmoselle-nancy.cidff.info/"
  ],
  "secure_connection": {},
  "host": "meurtheetmoselle-nancy.cidff.info",
  "config": {
    "emulateDevice": {
      "name": "iPhone 15 Pro",
      "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Mobile/15E148 Safari/604.1",
      "viewport": {
        "width": 393,
        "height": 659,
        "deviceScaleFactor": 3,
        "isMobile": true,
        "hasTouch": true,
        "isLandscape": false
      }
    },
    "cleareCache": true,
    "captureHar": true,
    "captureLinks": false,
    "enableAdBlock": false,
    "saveBrowserProfile": false,
    "numPages": 2,
    "defaultTimeout": 35000,
    "defaultWaitUntil": "networkidle2",
    "headless": true,
    "headers": {},
    "extraChromiumArgs": [
      "--disable-features=TrackingProtection3pcd",
      "--website-analysis-scan=a506eabd-1d46-4a8f-aeab-cd66cad9ae37"
    ],
    "extraPuppeteerOptions": {}
  },
  "browser": {
    "name": "Chromium",
    "version": "Chrome/127.0.6533.88",
    "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/127.0.0.0 Safari/537.36",
    "platform": {
      "name": "Linux",
      "version": "6.12.101+deb13-amd64"
    }
  },
  "script": {
    "host": "35d8fd4bd11b",
    "version": {
      "npm": "3.11.0",
      "commit": "dev"
    },
    "node_version": "v24.19.0"
  },
  "start_time": "2026-08-22T03:55:03.698Z",
  "end_time": "2026-08-22T03:55:15.949Z",
  "browsing_history": [
    "https://meurtheetmoselle-nancy.cidff.info/",
    "https://meurtheetmoselle-nancy.cidff.info/evenements/",
    "https://meurtheetmoselle-nancy.cidff.info/services/vie-familiale-et-parentalite/"
  ],
  "hosts": {
    "requests": {
      "first_party": [
        "meurtheetmoselle-nancy.cidff.info"
      ],
      "third_party": [
        "unpkg.com",
        "cdnjs.cloudflare.com",
        "b.basemaps.cartocdn.com",
        "c.basemaps.cartocdn.com",
        "a.basemaps.cartocdn.com"
      ]
    }
  },
  "reports": {
    "behaviour_event_listeners": {
      "MOUSE": {
        "https://meurtheetmoselle-nancy.cidff.info/wp-content/cache/autoptimize/autoptimize_single_fa03f187c5d2fdfce7632be6f0a06478.php?ver=1.9.4": [
          "scroll"
        ]
      },
      "KEYBOARD": {
        "data:text/javascript;base64,CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBJZCA9ICJjaWRmZi1tYXAiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwUmVmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobWFwSWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFwRGV0YWlsc1JlZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaWRmZi1zaXRlLWRldGFpbHMnKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzUG9pbnRzID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1vZGVsIDogWyBsYXQsIGxvbiwgdG9vbHRpcCwgc2l0ZURhdGEgXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDguNjg5NDg2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUuODk3NjI2LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBUT1VMIENST0lYIERFIE1FVFpgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiaWQiOiI1MjciLCJjZW50cmVfaWQiOiI0MiIsIm5vbSI6IlRPVUwgQ1JPSVggREUgTUVUWiIsIm5vbV9zbHVnIjoidG91bC1jcm9peC1kZS1tZXR6IiwiYWRyZXNzZSI6IkNlbnRyZSBBbmRyXHUwMGU5IE1hbHJhdXggLSBQbGFjZSBIZW5yaSBNaWxsZXIiLCJjcCI6IjU0MjAwIiwidmlsbGUiOiJUb3VsIiwidmlsbGVfc2x1ZyI6InRvdWwiLCJjaXR5X2lkIjoiMjExNjciLCJlbWFpbCI6ImNlbnRyZS5zb2Npb2N1bHR1cmVsQG1haXJpZS10b3VsLmZyIiwidGVsZXBob25lIjoiMDMgODMgNjQgNTggMDciLCJxcHYiOiIxIiwienJyIjoiMCIsImFjY3VlaWwiOiJDZW50cmUgQW5kclx1MDBlOSBNYWxyYXV4IiwiYWNjdWVpbF9wcmVjaXNpb24iOiJQZXJtYW5lbmNlcyBBY2N1ZWlsIFZpY3RpbWVzIGRlIFZpb2xlbmNlcyBDb25qdWdhbGVzIiwiaG9yYWlyZXMiOiJMZSBqZXVkaSBkZSAxNGgwMCBcdTAwZTAgMTdoMDAiLCJ2b2xfaHJfaGViZG8iOiI2IGhldXJlcyIsImlpIjoiMSIsImljIjoiMSIsImUiOiIwIiwidiI6IjEiLCJwcmVjaXNpb24iOiIiLCJjYXJ0b2dyYXBoaWUiOiIxIiwiZGVsZXRlZCI6IjAiLCJjYWRyZTEiOm51bGwsImNhZHJlMiI6bnVsbCwiY2FkcmUzIjoiTCdhY2NvbXBhZ25lbWVudCB2aW9sZW5jZSIsImNhZHJlNCI6bnVsbCwiY2FkcmU1IjpudWxsLCJhY2Nlc3NpYmlsaXRlMSI6bnVsbCwiYWNjZXNzaWJpbGl0ZTIiOiJNZW50YWxcL1BzeWNoaXF1ZSIsImFjY2Vzc2liaWxpdGUzIjoiTW90ZXVyIiwiYWNjZXNzaWJpbGl0ZTQiOiJWaXN1ZWwiLCJhY2Nlc3NpYmlsaXRlNSI6bnVsbCwidHlwZTEiOiJQaHlzaXF1ZSIsInR5cGUyIjoiVFx1MDBlOWxcdTAwZTlwaG9uaXF1ZSIsInR5cGUzIjpudWxsLCJ0eXBlNCI6bnVsbCwibWZzIjpudWxsLCJkZXBhcnRlbWVudCI6Ik1ldXJ0aGUtZXQtTW9zZWxsZSIsInJlZ2lvbiI6IkdyYW5kIEVzdCIsImNvb3JkcyI6eyJsYXQiOjQ4LjY4OTQ4NiwibG9uIjo1Ljg5NzYyNiwidXJsIjoiaHR0cHM6XC9cL3d3dy5nb29nbGUuZnJcL21hcHNcL0A0OC42ODk0ODYsNS44OTc2MjYsMTV6In0sInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9tZXVydGhlZXRtb3NlbGxlLW5hbmN5LmNpZGZmLmluZm9cLyJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC42NjA4MDksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xNzM4ODcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYFZBTkRPRVVWUkVgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiaWQiOiI1MjgiLCJjZW50cmVfaWQiOiI0MiIsIm5vbSI6IlZBTkRPRVVWUkUiLCJub21fc2x1ZyI6InZhbmRvZXV2cmUiLCJhZHJlc3NlIjoiNCBwbGFjZSBkZSBQYXJpcyIsImNwIjoiNTQ1MDAiLCJ2aWxsZSI6IlZhbmRcdTAxNTN1dnJlLWxcdTAwZThzLU5hbmN5IiwidmlsbGVfc2x1ZyI6InZhbmRvZXV2cmVsZXNuYW5jeSIsImNpdHlfaWQiOiIyMTE4NiIsImVtYWlsIjoidmFuZG9ldXZyZUBjaWRmZjU0LmZyIiwidGVsZXBob25lIjoiMDMgODMgNTYgMTkgMjciLCJxcHYiOiIwIiwienJyIjoiMCIsImFjY3VlaWwiOiJDSURGRiIsImFjY3VlaWxfcHJlY2lzaW9uIjoiIiwiaG9yYWlyZXMiOiJMdW5kaSBkZSAxNGgwMCBcdTAwZTAgMTdoMzAgXC8gTWFyZGkgZXQgTWVyY3JlZGkgZGUgOWgwMCBcdTAwZTAgMTJoMDAgZXQgZGUgMTRoMDAgXHUwMGUwIDE3aDMwIFwvSmV1ZGkgZGUgOWgwMCBcdTAwZTAgMTJoMDAgZXQgZGUgMTRoMDAgXHUwMGUwIDE3aDMwIiwidm9sX2hyX2hlYmRvIjoiMjMgaGV1cmVzIiwiaWkiOiIxIiwiaWMiOiIxIiwiZSI6IjEiLCJ2IjoiMSIsInByZWNpc2lvbiI6IiIsImNhcnRvZ3JhcGhpZSI6IjEiLCJkZWxldGVkIjoiMCIsImNhZHJlMSI6IkwnYWNjXHUwMGU4cyBhdXggZHJvaXRzIHRvdXRlcyB0aFx1MDBlOW1hdGlxdWVzIGNvbmZvbmR1ZXMgKERcdTAwZTljcmV0IDIwMTUtMTc0NSBkdSAyMyBkXHUwMGU5Y2VtYnJlIDIwMTUgcmVsYXRpZiBcdTAwZTAgbCdhZ3JcdTAwZTltZW50KSIsImNhZHJlMiI6IkwnYWNjb21wYWduZW1lbnQgZW1wbG9pIiwiY2FkcmUzIjoiTCdhY2NvbXBhZ25lbWVudCB2aW9sZW5jZSIsImNhZHJlNCI6bnVsbCwiY2FkcmU1IjpudWxsLCJhY2Nlc3NpYmlsaXRlMSI6bnVsbCwiYWNjZXNzaWJpbGl0ZTIiOiJNZW50YWxcL1BzeWNoaXF1ZSIsImFjY2Vzc2liaWxpdGUzIjoiTW90ZXVyIiwiYWNjZXNzaWJpbGl0ZTQiOiJWaXN1ZWwiLCJhY2Nlc3NpYmlsaXRlNSI6bnVsbCwidHlwZTEiOiJQaHlzaXF1ZSIsInR5cGUyIjoiVFx1MDBlOWxcdTAwZTlwaG9uaXF1ZSIsInR5cGUzIjpudWxsLCJ0eXBlNCI6bnVsbCwibWZzIjpudWxsLCJkZXBhcnRlbWVudCI6Ik1ldXJ0aGUtZXQtTW9zZWxsZSIsInJlZ2lvbiI6IkdyYW5kIEVzdCIsImNvb3JkcyI6eyJsYXQiOjQ4LjY2MDgwOSwibG9uIjo2LjE3Mzg4NywidXJsIjoiaHR0cHM6XC9cL3d3dy5nb29nbGUuZnJcL21hcHNcL0A0OC42NjA4MDksNi4xNzM4ODcsMTV6In0sInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9tZXVydGhlZXRtb3NlbGxlLW5hbmN5LmNpZGZmLmluZm9cLyJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0OC43MDA5MzMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNi4xMzE1MTgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE1BWEVWSUxMRWAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJpZCI6IjUyOSIsImNlbnRyZV9pZCI6IjQyIiwibm9tIjoiTUFYRVZJTExFIiwibm9tX3NsdWciOiJtYXhldmlsbGUiLCJhZHJlc3NlIjoiUmVsYWlzIHNvY2lhbCBlbXBsb2kgLSAyIHJ1ZSBkZSBsYSBDcnVzbmVzIiwiY3AiOiI1NDMyMCIsInZpbGxlIjoiTWF4XHUwMGU5dmlsbGUiLCJ2aWxsZV9zbHVnIjoibWF4ZXZpbGxlIiwiY2l0eV9pZCI6IjIxMDAxIiwiZW1haWwiOiJjb250YWN0QG1haXJpZS1tYXhldmlsbGUuZnIiLCJ0ZWxlcGhvbmUiOiIwMyA4MyA5OCA5MSA5MiIsInFwdiI6IjEiLCJ6cnIiOiIwIiwiYWNjdWVpbCI6IlJlbGFpcyBTb2NpYWwgRW1wbG9pIiwiYWNjdWVpbF9wcmVjaXNpb24iOiJQZXJtYW5lbmNlIGQnQWNjXHUwMGU4cyBhdXggRHJvaXRzIiwiaG9yYWlyZXMiOiJMZXMgbWFyZGlzLCBjaGFxdWUgcXVpbnplIGpvdXJzIGRlIDE0aDAwIFx1MDBlMCAxN2gwMCIsInZvbF9ocl9oZWJkbyI6IjFoMzAiLCJpaSI6IjEiLCJpYyI6IjEiLCJlIjoiMCIsInYiOiIxIiwicHJlY2lzaW9uIjoiIiwiY2FydG9ncmFwaGllIjoiMSIsImRlbGV0ZWQiOiIwIiwiY2FkcmUxIjoiTCdhY2NcdTAwZThzIGF1eCBkcm9pdHMgdG91dGVzIHRoXHUwMGU5bWF0aXF1ZXMgY29uZm9uZHVlcyAoRFx1MDBlOWNyZXQgMjAxNS0xNzQ1IGR1IDIzIGRcdTAwZTljZW1icmUgMjAxNSByZWxhdGlmIFx1MDBlMCBsJ2Fnclx1MDBlOW1lbnQpIiwiY2FkcmUyIjpudWxsLCJjYWRyZTMiOiJMJ2FjY29tcGFnbmVtZW50IHZpb2xlbmNlIiwiY2FkcmU0IjpudWxsLCJjYWRyZTUiOm51bGwsImFjY2Vzc2liaWxpdGUxIjpudWxsLCJhY2Nlc3NpYmlsaXRlMiI6Ik1lbnRhbFwvUHN5Y2hpcXVlIiwiYWNjZXNzaWJpbGl0ZTMiOiJNb3RldXIiLCJhY2Nlc3NpYmlsaXRlNCI6IlZpc3VlbCIsImFjY2Vzc2liaWxpdGU1IjpudWxsLCJ0eXBlMSI6IlBoeXNpcXVlIiwidHlwZTIiOiJUXHUwMGU5bFx1MDBlOXBob25pcXVlIiwidHlwZTMiOm51bGwsInR5cGU0IjpudWxsLCJtZnMiOm51bGwsImRlcGFydGVtZW50IjoiTWV1cnRoZS1ldC1Nb3NlbGxlIiwicmVnaW9uIjoiR3JhbmQgRXN0IiwiY29vcmRzIjp7ImxhdCI6NDguNzAwOTMzLCJsb24iOjYuMTMxNTE4LCJ1cmwiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5mclwvbWFwc1wvQDQ4LjcwMDkzMyw2LjEzMTUxOCwxNXoifSwic2l0ZV9pbnRlcm5ldCI6Imh0dHA6XC9cL21ldXJ0aGVldG1vc2VsbGUtbmFuY3kuY2lkZmYuaW5mb1wvIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4LjY4Nzg0NywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE4ODcwOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgTUFJU09OIERFUyBGRU1NRVMgLyBOQU5DWWAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyJpZCI6IjM2NjYiLCJjZW50cmVfaWQiOiI0MiIsIm5vbSI6Ik1BSVNPTiBERVMgRkVNTUVTIFwvIE5BTkNZIiwibm9tX3NsdWciOiJtYWlzb24tZGVzLWZlbW1lcy1cLy1uYW5jeSIsImFkcmVzc2UiOiI1NCwgUnVlIENoYXJsZXMgSUlJXG4iLCJjcCI6IjU0MDAwIiwidmlsbGUiOiJOYW5jeSIsInZpbGxlX3NsdWciOiJuYW5jeSIsImNpdHlfaWQiOiIyMTAzNyIsImVtYWlsIjoiY29udGFjdEBtYWlzb25kZXNmZW1tZXMtbmFuY3kuZnIiLCJ0ZWxlcGhvbmUiOiIwMyAzOSA3MiAzOSAxOSIsInFwdiI6IjAiLCJ6cnIiOiIwIiwiYWNjdWVpbCI6IiIsImFjY3VlaWxfcHJlY2lzaW9uIjoiTGEgTWFpc29uIGRlcyBGZW1tZXMgYWNjdWVpbGxlIGV0IGFjY29tcGFnbmUgbGVzIGZlbW1lcyB2aWN0aW1lcyIsImhvcmFpcmVzIjoiUGVybWFuZW5jZSBqdXJpZGlxdWUgbGVzIG1hcmRpcyBhcHJcdTAwZThzLW1pZGkgZGUgMTRoIFx1MDBlMCAxN2gwMFxuUGVybWFuZW5jZSBkZSBwc3ljaG9sb2d1ZSBsZXMgdmVuZHJlZGlzIG1hdGluIGRlIDloIFx1MDBlMCAxMmgwMCIsInZvbF9ocl9oZWJkbyI6IiIsImlpIjoiMSIsImljIjoiMSIsImUiOiIxIiwidiI6IjEiLCJwcmVjaXNpb24iOiIiLCJjYXJ0b2dyYXBoaWUiOiIxIiwiZGVsZXRlZCI6IjAiLCJjYWRyZTEiOm51bGwsImNhZHJlMiI6bnVsbCwiY2FkcmUzIjoiTCdhY2NvbXBhZ25lbWVudCB2aW9sZW5jZSIsImNhZHJlNCI6bnVsbCwiY2FkcmU1IjpudWxsLCJhY2Nlc3NpYmlsaXRlMSI6bnVsbCwiYWNjZXNzaWJpbGl0ZTIiOiJNZW50YWxcL1BzeWNoaXF1ZSIsImFjY2Vzc2liaWxpdGUzIjpudWxsLCJhY2Nlc3NpYmlsaXRlNCI6IlZpc3VlbCIsImFjY2Vzc2liaWxpdGU1IjpudWxsLCJ0eXBlMSI6IlBoeXNpcXVlIiwidHlwZTIiOiJUXHUwMGU5bFx1MDBlOXBob25pcXVlIiwidHlwZTMiOiJWaXNpb2NvbmZcdTAwZTlyZW5jZSIsInR5cGU0IjpudWxsLCJtZnMiOm51bGwsImRlcGFydGVtZW50IjoiTWV1cnRoZS1ldC1Nb3NlbGxlIiwicmVnaW9uIjoiR3JhbmQgRXN0IiwiY29vcmRzIjp7ImxhdCI6NDguNjg3ODQ3LCJsb24iOjYuMTg4NzA4LCJ1cmwiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5mclwvbWFwc1wvQDQ4LjY4Nzg0Nyw2LjE4ODcwOCwxNXoifSwic2l0ZV9pbnRlcm5ldCI6Imh0dHA6XC9cL21ldXJ0aGVldG1vc2VsbGUtbmFuY3kuY2lkZmYuaW5mb1wvIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ4LjY5MTg1MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2LjE4NzQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE1ldXJ0aGUtZXQtTW9zZWxsZSwgTmFuY3lgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiaWQiOiI0MiIsIm5vbSI6Ik1ldXJ0aGUtZXQtTW9zZWxsZSwgTmFuY3kiLCJhZHJlc3NlIjoiMSBydWUgZHUgbWFuXHUwMGU4Z2UiLCJjcCI6IjU0MDAwIiwidmlsbGUiOiJOYW5jeSIsInRlbGVwaG9uZSI6IjAzIDgzIDM1IDM1IDg3IiwibWFpbCI6ImNvbnRhY3RAY2lkZmY1NC5mciIsInNpdGVfaW50ZXJuZXQiOiJodHRwOlwvXC9tZXVydGhlZXRtb3NlbGxlLW5hbmN5LmNpZGZmLmluZm9cLyIsImFjY2VzX2Ryb2l0IjoiTCdhY2NcdTAwZThzIGF1eCBkcm9pdHMgdG91dGVzIHRoXHUwMGU5bWF0aXF1ZXMgY29uZm9uZHVlcyAoRFx1MDBlOWNyZXQgMjAxNS0xNzQ1IGR1IDIzIGRcdTAwZTljZW1icmUgMjAxNSByZWxhdGlmIFx1MDBlMCBsJ2Fnclx1MDBlOW1lbnQpIiwiZW1wbG9pIjoiTCdhY2NvbXBhZ25lbWVudCBlbXBsb2kiLCJ2aW9sZW5jZXMiOiJMJ2FjY29tcGFnbmVtZW50IHZpb2xlbmNlIiwicGFyZW50YWxpdGUiOiJMJ2FjY29tcGFnbmVtZW50IHBhcmVudGFsaXRcdTAwZTkgKEVJQ0NGLCBtXHUwMGU5ZGlhdGlvbiBmYW1pbGlhbGUpIiwiYXV0cmUiOiJBdXRyZSIsInNpZWdlIjp0cnVlLCJjb29yZHMiOnsibGF0Ijo0OC42OTE4NTEsImxvbiI6Ni4xODc0LCJ1cmwiOiJodHRwczpcL1wvd3d3Lmdvb2dsZS5mclwvbWFwc1wvQDQ4LjY5MTg1MSw2LjE4NzQsMTV6In0sInJlZ2lvbiI6IkdyYW5kIEVzdCIsImRlcGFydGVtZW50IjoiTWV1cnRoZS1ldC1Nb3NlbGxlIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRab29tID0gNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkZWZhdWx0Wm9vbU1vYmlsZSA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWluWm9vbSA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF4Wm9vbSA9IDIwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFwID0gbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBpbml0TWFwKHNlbGVjdGVkQ2F0ZWdvcmllcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG5ldyBMLm1hcChtYXBJZCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogZmFsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEwuY29udHJvbC56b29tKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdib3R0b21yaWdodCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5hZGRUbyhtYXApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdodHRwczovL3tzfS5iYXNlbWFwcy5jYXJ0b2Nkbi5jb20vbGlnaHRfYWxsL3t6fS97eH0ve3l9e3J9LnBuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pblpvb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhab29tCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmFkZFRvKG1hcCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyQ2F0ZWdvcnkxID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJDYXRlZ29yeTIgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsYXllckNhdGVnb3J5MyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxheWVyQ2F0ZWdvcnk0ID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJDYXRlZ29yeTUgPSBbXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFya2VycyA9IG5ldyBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwaWRlckxlZ1BvbHlsaW5lT3B0aW9uczogeyB3ZWlnaHQ6IDYwMCwgY29sb3I6ICcjMjIyJywgb3BhY2l0eTogMCB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhDbHVzdGVyUmFkaXVzOiA0MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYWluTWFya2VycyA9IG5ldyBMLmxheWVyR3JvdXAoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRyZXNzUG9pbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBhZGRyZXNzUG9pbnRzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IGFbMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhWzNdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb29yZHMgPSBuZXcgTC5MYXRMbmcoYVswXSwgYVsxXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFya2VyID0geyBkYXRhOiBuZXcgTC5tYXJrZXIoY29vcmRzLCB7IHRpdGxlIH0pLCBzaWVnZTogZGF0YS5zaWVnZSB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBkYXRhWydjYWRyZTEnXSB8fCBkYXRhWydhY2Nlc19kcm9pdCddICkgbGF5ZXJDYXRlZ29yeTEucHVzaChtYXJrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGFbJ2NhZHJlMiddIHx8IGRhdGFbJ3Zpb2xlbmNlcyddICkgbGF5ZXJDYXRlZ29yeTIucHVzaChtYXJrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGFbJ2NhZHJlMyddIHx8IGRhdGFbJ2VtcGxvaSddICkgbGF5ZXJDYXRlZ29yeTMucHVzaChtYXJrZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGRhdGFbJ2NhZHJlNCddIHx8IGRhdGFbJ3BhcmVudGFsaXRlJ10gKSBsYXllckNhdGVnb3J5NC5wdXNoKG1hcmtlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggZGF0YVsnY2FkcmU1J10gfHwgZGF0YVsnYXV0cmUnXSApIGxheWVyQ2F0ZWdvcnk1LnB1c2gobWFya2VyKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlci5kYXRhLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5wYW5Ubyhjb29yZHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwUmVmLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdvbi1tYXJrZXItaW50ZXJhY3QnLCB7IGRldGFpbDogZGF0YSB9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuYWRkTGF5ZXIobWFpbk1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5hZGRMYXllcihtYXJrZXJzKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGF5ZXJzVG9EaXNwbGF5ID0gW107CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxlY3RlZENhdGVnb3JpZXMuaW5jbHVkZXMoMSkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNUb0Rpc3BsYXkucHVzaCguLi5sYXllckNhdGVnb3J5MSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGVjdGVkQ2F0ZWdvcmllcy5pbmNsdWRlcygyKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc1RvRGlzcGxheS5wdXNoKC4uLmxheWVyQ2F0ZWdvcnkyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc2VsZWN0ZWRDYXRlZ29yaWVzLmluY2x1ZGVzKDMpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzVG9EaXNwbGF5LnB1c2goLi4ubGF5ZXJDYXRlZ29yeTMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZWxlY3RlZENhdGVnb3JpZXMuaW5jbHVkZXMoNCkgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllcnNUb0Rpc3BsYXkucHVzaCguLi5sYXllckNhdGVnb3J5NCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNlbGVjdGVkQ2F0ZWdvcmllcy5pbmNsdWRlcyg1KSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyc1RvRGlzcGxheS5wdXNoKC4uLmxheWVyQ2F0ZWdvcnk1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzVG9EaXNwbGF5LnB1c2goLi4ubGF5ZXJDYXRlZ29yeTEsIC4uLmxheWVyQ2F0ZWdvcnkyLCAuLi5sYXllckNhdGVnb3J5MywgLi4ubGF5ZXJDYXRlZ29yeTQsIC4uLmxheWVyQ2F0ZWdvcnk1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFya2Vyc1RvU2hvdyA9IFsuLi5uZXcgU2V0KGxheWVyc1RvRGlzcGxheSldOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcmtlcnNUb1Nob3cubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbSA9IG1hcmtlcnNUb1Nob3dbaV07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobS5zaWVnZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5kYXRhLmFkZFRvKG1haW5NYXJrZXJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0uZGF0YS5zZXRaSW5kZXhPZmZzZXQoMTAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmRhdGEuc2V0SWNvbihjcmVhdGVNYWluTWFya2VyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5kYXRhLmFkZFRvKG1hcmtlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5kYXRhLnNldEljb24oY3JlYXRlTWFya2VyKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIG1hcmtlcnMuZ2V0TGF5ZXJzKCkubGVuZ3RoID4gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5maXRCb3VuZHMobWFya2Vycy5nZXRCb3VuZHMoKSwgeyBwYWRkaW5nOiBbIDEwLCAxMCBdIH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1haW5NYXJrZXJzLmdldExheWVycygpWzBdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuc2V0VmlldyhtYWluTWFya2Vycy5nZXRMYXllcnMoKVswXS5nZXRMYXRMbmcoKSwgNSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5zZXRWaWV3KFs0Ni41LCAyLjM0NTQ5MjNdLCAzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW50ZXJhY3Rpb24gcnVsZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuc2Nyb2xsV2hlZWxab29tLmRpc2FibGUoKTsgLy8gRGlzYWJsZSBzY3JvbGwgaW50ZXJhY3Rpb24gYXQgZmlyc3QKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChlKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZW5hYmxlKCk7IC8vIFJlZW5hYmxlIHNjcm9sbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQnLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5zY3JvbGxXaGVlbFpvb20uZGlzYWJsZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBSZWYuYWRkRXZlbnRMaXN0ZW5lcignb24tbWFya2VyLWludGVyYWN0JywgKGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0U2l0ZURldGFpbHMoZS5kZXRhaWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoaWRlRGV0YWlsc0V2ZW50cyA9IFsnY2xpY2snLCAnbW92ZXN0YXJ0J10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlRGV0YWlsc0V2ZW50cy5mb3JFYWNoKGUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAuYWRkRXZlbnRMaXN0ZW5lcihlLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlU2l0ZURldGFpbHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgKGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUua2V5ID09PSAiRXNjYXBlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZVNpdGVEZXRhaWxzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdE1hcCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZU1hcmtlcihjbGFzc05hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEwuaWNvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Vcmw6ICdodHRwczovL21ldXJ0aGVldG1vc2VsbGUtbmFuY3kuY2lkZmYuaW5mby93cC1jb250ZW50L3RoZW1lcy9jaWRmZi13cC9hc3NldHMvaW1hZ2VzL3dlYnAvaWNvbi1waW5zLXNlY29uZGFyeS1maWxsZWQud2VicCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaXplOiBbMTgsIDIzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93VXJsOiAnaHR0cHM6Ly9tZXVydGhlZXRtb3NlbGxlLW5hbmN5LmNpZGZmLmluZm8vd3AtY29udGVudC90aGVtZXMvY2lkZmYtd3AvYXNzZXRzL2ltYWdlcy93ZWJwL2ljb24tcGlucy1maWxsZWQtc2hhZG93LndlYnAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dTaXplOiBbMjUsIDI1XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZG93QW5jaG9yOiBbNCwgMTVdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTWFpbk1hcmtlcigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEwuaWNvbih7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25Vcmw6ICdodHRwczovL21ldXJ0aGVldG1vc2VsbGUtbmFuY3kuY2lkZmYuaW5mby93cC1jb250ZW50L3RoZW1lcy9jaWRmZi13cC9hc3NldHMvaW1hZ2VzL3dlYnAvaWNvbi1waW5zLWZpbGxlZC53ZWJwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNpemU6IFsyOCwgMzNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dVcmw6ICdodHRwczovL21ldXJ0aGVldG1vc2VsbGUtbmFuY3kuY2lkZmYuaW5mby93cC1jb250ZW50L3RoZW1lcy9jaWRmZi13cC9hc3NldHMvaW1hZ2VzL3dlYnAvaWNvbi1waW5zLWZpbGxlZC1zaGFkb3cud2VicCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1NpemU6IFszMCwgMzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dBbmNob3I6IFs0LCAxNl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzZXRTaXRlRGV0YWlscyhkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1NpdGVEZXRhaWxzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWVNb3JlS2V5ID0gZGF0YS5zaWVnZSA/IGAke25ldyBTdHJpbmcoZGF0YS5ub20pLnJlcGxhY2UoL1xcfFwsfFxzL2dpLCAnLScpLnRvTG93ZXJDYXNlKCl9LSR7ZGF0YS5pZH1gIDogYCR7ZGF0YS5ub21fc2x1Z30tJHtkYXRhLmlkfWAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtdGl0bGUnXSIpLmlubmVySFRNTCA9IGRhdGEubm9tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1zZWUtbW9yZSddIikuaHJlZiA9IGBodHRwczovL21ldXJ0aGVldG1vc2VsbGUtbmFuY3kuY2lkZmYuaW5mby9saXN0ZS1kZXMtcGVybWFuZW5jZXMvP2RlcGFydGVtZW50PSR7ZGF0YS5kZXBhcnRlbWVudH0mY2VudHJlLWlkPSR7c2VlTW9yZUtleX1gOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5ob3JhaXJlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtaG91cnMtd3JhcHBlciddIikuc3R5bGUuZGlzcGxheSA9ICdmbGV4JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWhvdXJzJ10iKS5pbm5lckhUTUwgPSBkYXRhLmhvcmFpcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1ob3Vycy13cmFwcGVyJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWxvY2F0aW9uJ10iKS5pbm5lckhUTUwgPSBgJHtkYXRhLmFkcmVzc2V9LCAke2RhdGEuY3B9ICR7ZGF0YS52aWxsZX1gOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS50ZWxlcGhvbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLXRlbC13cmFwcGVyJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtdGVsJ10iKS5pbm5lckhUTUwgPSBkYXRhLnRlbGVwaG9uZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtdGVsLXdyYXBwZXInXSIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jYWRyZTEgfHwgZGF0YS5hY2Nlc19kcm9pdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtY2FkcmUtMSddIikuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWNhZHJlLTEnXSIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jYWRyZTIgfHwgZGF0YS5lbXBsb2kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5xdWVyeVNlbGVjdG9yKCJbcmVmPSdzaXRlLWNhZHJlLTInXSIpLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1jYWRyZS0yJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEuY2FkcmUzIHx8IGRhdGEudmlvbGVuY2VzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1jYWRyZS0zJ10iKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtY2FkcmUtMyddIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmNhZHJlNCB8fCBkYXRhLnBhcmVudGFsaXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYucXVlcnlTZWxlY3RvcigiW3JlZj0nc2l0ZS1jYWRyZS00J10iKS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBEZXRhaWxzUmVmLnF1ZXJ5U2VsZWN0b3IoIltyZWY9J3NpdGUtY2FkcmUtNCddIikuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gaGlkZVNpdGVEZXRhaWxzKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcERldGFpbHNSZWYuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBzaG93U2l0ZURldGFpbHMoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwRGV0YWlsc1JlZi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHJlc2V0TWFwTGF5b3V0KCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVTaXRlRGV0YWlscygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcC5vZmYoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9uLW1hcC1yZWZyZXNoIiwgKGUpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNldE1hcExheW91dCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGFzdENhdGVnb3JpZXMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFzdC1maWx0ZXItY2F0ZWdvcmllcycpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdENhdGVnb3JpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdENhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGxhc3RDYXRlZ29yaWVzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0TWFwKGxhc3RDYXRlZ29yaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdE1hcCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm9uLWNhdGVnb3J5LWZpbHRlci1jaGFuZ2UiLCAoZSkgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcmllcyA9IGUuZGV0YWlsOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlU2l0ZURldGFpbHMoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAub2ZmKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRNYXAoc2VsZWN0ZWRDYXRlZ29yaWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICA=": [
          "keydown"
        ]
      }
    },
    "canvas_fingerprinters": {
      "data_url": {},
      "fingerprinters": [],
      "styles": {},
      "texts": {}
    },
    "canvas_font_fingerprinters": {
      "canvas_font": {},
      "text_measure": {}
    },
    "cookies": [],
    "fb_pixel_events": [],
    "tiktok_pixel_events": [],
    "twitter_pixel_events": [],
    "google_analytics_events": [],
    "key_logging": {},
    "session_recorders": {},
    "third_party_trackers": []
  }
}