{"id":3445,"date":"2025-12-01T12:56:05","date_gmt":"2025-12-01T12:56:05","guid":{"rendered":"https:\/\/itlawco.com\/?page_id=3445"},"modified":"2025-12-01T13:07:28","modified_gmt":"2025-12-01T13:07:28","slug":"rhino-regulator-run","status":"publish","type":"page","link":"https:\/\/itlawco.com\/fr\/rhino-regulator-run\/","title":{"rendered":"Rhino Regulator Run"},"content":{"rendered":"\n\t\t<div id=\"fws_6a5fcaf120127\"  data-column-margin=\"default\" data-midnight=\"dark\"  class=\"wpb_row vc_row-fluid vc_row\"  style=\"padding-top: 0px; padding-bottom: 0px; \"><div class=\"row-bg-wrap\" data-bg-animation=\"none\" data-bg-animation-delay=\"\" data-bg-overlay=\"false\"><div class=\"inner-wrap row-bg-layer\" ><div class=\"row-bg viewport-desktop\"  style=\"\"><\/div><\/div><\/div><div class=\"row_col_wrap_12 col span_12 dark left\">\n\t<div  class=\"vc_col-sm-12 wpb_column column_container vc_column_container col no-extra-padding inherit_tablet inherit_phone \"  data-padding-pos=\"all\" data-has-bg-color=\"false\" data-bg-color=\"\" data-bg-opacity=\"1\" data-animation=\"\" data-delay=\"0\" >\n\t\t<div class=\"vc_column-inner\" >\n\t\t\t<div class=\"wpb_wrapper\">\n\t\t\t\t\n<div class=\"wpb_text_column wpb_content_element \" >\n\t<p data-start=\"1119\" data-end=\"1341\">A tiny endless-runner where the Information Regulator hunts down every unlawful risk you didn\u2019t fix. Jump over breaches, missing controls, and consent failures. If you collide, it\u2019s not a fine; it\u2019s game over.<\/p>\n<\/div>\n\n\n\n\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <title>Rhino Regulator Run<\/title>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <style>\n    html, body {\n      margin: 0;\n      padding: 0;\n      background: #f5f5f5;\n      font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\n      user-select: none;\n      -webkit-user-select: none;\n      -webkit-tap-highlight-color: transparent;\n    }\n    #game-container {\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: flex-start;\n      min-height: 100vh;\n      padding: 16px 8px 24px;\n      box-sizing: border-box;\n    }\n    canvas {\n      border: 1px solid #000;\n      background: #ffffff;\n      image-rendering: pixelated;\n      \/* Responsive scaling *\/\n      width: 100%;\n      max-width: 800px;\n      height: auto;\n      touch-action: none; \/* prevent scroll on swipe\/tap *\/\n    }\n    #info {\n      margin-top: 8px;\n      font-size: 13px;\n      color: #333;\n      text-align: center;\n      max-width: 800px;\n    }\n  <\/style>\n<\/head>\n<body>\n  <div id=\"game-container\">\n    <canvas id=\"game\" width=\"800\" height=\"200\"><\/canvas>\n    <div id=\"info\">\n      Controls: tap the game area on mobile, or press <strong>Space<\/strong> \/ <strong>\u2191<\/strong> on desktop to jump.<br\/>\n      Obstacles = <em>irresponsible Responsible Parties<\/em> and colour-coded non-compliance risks.\n    <\/div>\n  <\/div>\n\n  <script>\n    (function () {\n      const canvas = document.getElementById(\"game\");\n      const ctx = canvas.getContext(\"2d\");\n\n      const width = canvas.width;\n      const height = canvas.height;\n\n      \/\/ Ground line\n      const groundY = 160;\n\n      \/\/ Rhino (Information Regulator)\n      const rhino = {\n        x: 50,\n        y: groundY - 30,\n        width: 40,\n        height: 30,\n        vy: 0,\n        gravity: 0.7,\n        jumpStrength: -13,\n        onGround: true\n      };\n\n      \/\/ Label definitions with categories\n      const labelDefinitions = [\n        \/\/ Lawful basis \/ purpose issues\n        { text: \"Unlawful Basis\",        category: \"lawfulBasis\" },\n        { text: \"Consent Fiction\",       category: \"lawfulBasis\" },\n        { text: \"Purpose Creep\",         category: \"lawfulBasis\" },\n        { text: \"Serial Over-Collection\",category: \"lawfulBasis\" },\n        { text: \"Missing Lawful Basis\",  category: \"lawfulBasis\" },\n\n        \/\/ Consent \/ rights\n        { text: \"Opt-out Maze\",          category: \"consent\" },\n        { text: \"Silent Profiling\",      category: \"consent\" },\n        { text: \"Voiceprint Grab\",       category: \"consent\" },\n        { text: \"Identity Scrape\",       category: \"consent\" },\n        { text: \"Consent Sorcery\",       category: \"consent\" },\n\n        \/\/ Security \/ breach\n        { text: \"Breach Vacuum\",         category: \"security\" },\n        { text: \"Security Theatre\",      category: \"security\" },\n        { text: \"Security Fantasy\",      category: \"security\" },\n        { text: \"Barely Encrypted\",      category: \"security\" },\n        { text: \"Zero-Trustless\",        category: \"security\" },\n        { text: \"No Logs\",               category: \"security\" },\n        { text: \"Firewall Emoji\",        category: \"security\" },\n        { text: \"Security By Hope\",      category: \"security\" },\n\n        \/\/ Governance \/ policy\n        { text: \"Tick-Box Audit\",        category: \"governance\" },\n        { text: \"S59 Delusion\",          category: \"governance\" },\n        { text: \"Paper Fortress\",        category: \"governance\" },\n        { text: \"Lipstick ISO\",          category: \"governance\" },\n        { text: \"Vanity Policy\",         category: \"governance\" },\n        { text: \"Remedial Pantomime\",    category: \"governance\" },\n        { text: \"\u2018We\u2019re Compliant\u2019\",     category: \"governance\" },\n        { text: \"Spreadsheet DPA\",       category: \"governance\" },\n        { text: \"Breach Bingo\",          category: \"governance\" },\n        { text: \"Committee Ghosting\",    category: \"governance\" },\n        { text: \"Prior Auth Fail\",       category: \"governance\" },\n\n        \/\/ Vendor \/ ops \/ misc chaos\n        { text: \"Shadow IT\",             category: \"vendor\" },\n        { text: \"Legacy Nightmare\",      category: \"vendor\" },\n        { text: \"Wild West CCTV\",        category: \"vendor\" },\n        { text: \"Operator Roulette\",     category: \"vendor\" },\n        { text: \"Pretend DPO\",           category: \"vendor\" },\n        { text: \"Notice Who?\",           category: \"vendor\" },\n        { text: \"DPA-less\",              category: \"vendor\" },\n        { text: \"Excel ROPA\",            category: \"vendor\" },\n        { text: \"Pseudo-Aware Staff\",    category: \"vendor\" },\n        { text: \"Vendor Chaos\",          category: \"vendor\" },\n        { text: \"Access Anarchy\",        category: \"vendor\" },\n        { text: \"Ghost Operator\",        category: \"vendor\" },\n        { text: \"PII Harvest\",           category: \"vendor\" },\n        { text: \"WhatsApp HR\",           category: \"vendor\" },\n        { text: \"Everything Email\",      category: \"vendor\" },\n        { text: \"Dumpster ROPA\",         category: \"vendor\" },\n        { text: \"Breached & Blessed\",    category: \"vendor\" },\n        { text: \"NCR Who?\",              category: \"vendor\" },\n        { text: \"SA ID Swarm\",           category: \"vendor\" },\n        { text: \"Stolen Database\",       category: \"vendor\" },\n        { text: \"Clouded by Cloud\",      category: \"vendor\" },\n        { text: \"Generic Clause\",        category: \"vendor\" },\n        { text: \"Tick-N-Pray\",           category: \"vendor\" },\n        { text: \"S56 Mythology\",         category: \"vendor\" },\n        { text: \"Procurement Blindfold\", category: \"vendor\" },\n        { text: \"Security-Lite\u2122\",        category: \"vendor\" }\n      ];\n\n      function getCategoryColor(category) {\n        switch (category) {\n          case \"lawfulBasis\":\n            return \"#c62828\"; \/\/ red\n          case \"consent\":\n            return \"#ad1457\"; \/\/ magenta\/pink\n          case \"security\":\n            return \"#283593\"; \/\/ deep blue\n          case \"governance\":\n            return \"#2e7d32\"; \/\/ green\n          case \"vendor\":\n          default:\n            return \"#6a1b9a\"; \/\/ purple\n        }\n      }\n\n      \/\/ Game state\n      let obstacles = [];\n      let frame = 0;\n      let spawnInterval = 90;\n      let gameSpeed = 6;\n      let running = true;\n      let score = 0;\n      let highScore = 0;\n      let gameOver = false;\n\n      function resetGame() {\n        obstacles = [];\n        frame = 0;\n        spawnInterval = 90;\n        gameSpeed = 6;\n        score = 0;\n        rhino.y = groundY - rhino.height;\n        rhino.vy = 0;\n        rhino.onGround = true;\n        running = true;\n        gameOver = false;\n      }\n\n      function spawnObstacle() {\n        const def = labelDefinitions[Math.floor(Math.random() * labelDefinitions.length)];\n        const color = getCategoryColor(def.category);\n\n        const heightVal = 15 + Math.random() * 25;\n        const shapes = [\"rectTall\", \"rectWide\", \"circle\", \"triangle\", \"pill\"];\n        const shape = shapes[Math.floor(Math.random() * shapes.length)];\n\n        let widthVal;\n        switch (shape) {\n          case \"rectTall\":\n            widthVal = heightVal * 0.5;\n            break;\n          case \"rectWide\":\n            widthVal = heightVal * 1.3;\n            break;\n          case \"circle\":\n          case \"triangle\":\n            widthVal = heightVal;\n            break;\n          case \"pill\":\n            widthVal = heightVal * 1.5;\n            break;\n          default:\n            widthVal = heightVal;\n        }\n\n        obstacles.push({\n          x: width + 10,\n          y: groundY - heightVal,\n          width: widthVal,\n          height: heightVal,\n          shape,\n          label: def.text,\n          color\n        });\n      }\n\n      function triggerJump() {\n        if (!running && gameOver) {\n          resetGame();\n        } else if (rhino.onGround && running) {\n          rhino.vy = rhino.jumpStrength;\n          rhino.onGround = false;\n        }\n      }\n\n      \/\/ Keyboard controls\n      function handleKeyInput(event) {\n        if (event.code === \"Space\" || event.code === \"ArrowUp\") {\n          event.preventDefault();\n          triggerJump();\n        }\n      }\n\n      window.addEventListener(\"keydown\", handleKeyInput);\n\n      \/\/ Touch controls (mobile)\n      function handleTouchInput(event) {\n        event.preventDefault(); \/\/ avoid scrolling\/zooming\n        triggerJump();\n      }\n\n      \/\/ Click controls (desktop mouse)\n      function handleClickInput(event) {\n        event.preventDefault();\n        triggerJump();\n      }\n\n      canvas.addEventListener(\"touchstart\", handleTouchInput, { passive: false });\n      canvas.addEventListener(\"mousedown\", handleClickInput);\n\n      function update() {\n        if (!running) return;\n\n        frame++;\n\n        \/\/ Increase difficulty over time\n        if (frame % 600 === 0) {\n          gameSpeed += 0.5;\n          spawnInterval = Math.max(55, spawnInterval - 5);\n        }\n\n        \/\/ Spawn obstacles\n        if (frame % spawnInterval === 0) {\n          spawnObstacle();\n        }\n\n        \/\/ Update rhino position\n        rhino.vy += rhino.gravity;\n        rhino.y += rhino.vy;\n\n        if (rhino.y + rhino.height >= groundY) {\n          rhino.y = groundY - rhino.height;\n          rhino.vy = 0;\n          rhino.onGround = true;\n        }\n\n        \/\/ Update obstacles\n        for (let i = obstacles.length - 1; i >= 0; i--) {\n          const ob = obstacles[i];\n          ob.x -= gameSpeed;\n\n          if (ob.x + ob.width < 0) {\n            obstacles.splice(i, 1);\n          }\n        }\n\n        \/\/ Score\n        score += 0.1;\n        if (score > highScore) {\n          highScore = score;\n        }\n\n        \/\/ Collision detection\n        for (let i = 0; i < obstacles.length; i++) {\n          const ob = obstacles[i];\n          if (\n            rhino.x < ob.x + ob.width &&\n            rhino.x + rhino.width > ob.x &&\n            rhino.y < ob.y + ob.height &&\n            rhino.y + rhino.height > ob.y\n          ) {\n            running = false;\n            gameOver = true;\n            break;\n          }\n        }\n      }\n\n      function drawGround() {\n        ctx.strokeStyle = \"#000\";\n        ctx.beginPath();\n        ctx.moveTo(0, groundY + 0.5);\n        ctx.lineTo(width, groundY + 0.5);\n        ctx.stroke();\n      }\n\n      \/\/ Rhino sprite\n      function drawRhino() {\n        ctx.save();\n        ctx.translate(rhino.x, rhino.y);\n        ctx.fillStyle = \"#000\";\n\n        \/\/ Body\n        ctx.fillRect(6, 8, 26, 14);\n\n        \/\/ Head\n        ctx.fillRect(26, 6, 10, 12);\n\n        \/\/ Legs\n        ctx.fillRect(8, 18, 4, 8);\n        ctx.fillRect(14, 18, 4, 8);\n        ctx.fillRect(22, 18, 4, 8);\n        ctx.fillRect(28, 18, 4, 8);\n\n        \/\/ Ear\n        ctx.fillRect(28, 2, 3, 4);\n\n        \/\/ Tail\n        ctx.fillRect(4, 10, 2, 6);\n\n        \/\/ Horn\n        ctx.fillRect(36, 9, 4, 3);\n\n        \/\/ Eye\n        ctx.fillStyle = \"#fff\";\n        ctx.fillRect(29, 9, 2, 2);\n\n        ctx.restore();\n      }\n\n      function drawObstacles() {\n        ctx.font = \"bold 14px monospace\";\n\n        for (const ob of obstacles) {\n          const { x, y, width: w, height: h, shape, label, color } = ob;\n\n          \/\/ Draw shape in category colour\n          ctx.fillStyle = color;\n          ctx.strokeStyle = color;\n\n          switch (shape) {\n            case \"rectTall\":\n            case \"rectWide\":\n              ctx.fillRect(x, y, w, h);\n              break;\n\n            case \"circle\": {\n              const radius = Math.min(w, h) \/ 2;\n              ctx.beginPath();\n              ctx.arc(x + w \/ 2, y + h \/ 2, radius, 0, Math.PI * 2);\n              ctx.fill();\n              break;\n            }\n\n            case \"triangle\":\n              ctx.beginPath();\n              ctx.moveTo(x, y + h);          \/\/ bottom left\n              ctx.lineTo(x + w \/ 2, y);      \/\/ top\n              ctx.lineTo(x + w, y + h);      \/\/ bottom right\n              ctx.closePath();\n              ctx.fill();\n              break;\n\n            case \"pill\": {\n              const radius = h \/ 2;\n              ctx.beginPath();\n              ctx.moveTo(x + radius, y);\n              ctx.lineTo(x + w - radius, y);\n              ctx.quadraticCurveTo(x + w, y, x + w, y + radius);\n              ctx.lineTo(x + w, y + h - radius);\n              ctx.quadraticCurveTo(x + w, y + h, x + w - radius, y + h);\n              ctx.lineTo(x + radius, y + h);\n              ctx.quadraticCurveTo(x, y + h, x, y + h - radius);\n              ctx.lineTo(x, y + radius);\n              ctx.quadraticCurveTo(x, y, x + radius, y);\n              ctx.fill();\n              break;\n            }\n\n            default:\n              ctx.fillRect(x, y, w, h);\n          }\n\n          \/\/ Label above obstacle with white background strip\n          const textWidth = ctx.measureText(label).width;\n          if (textWidth < w + 90) {\n            const labelX = x;\n            const labelY = y - 8;\n            const padX = 3;\n            const padY = 3;\n            const boxWidth = textWidth + padX * 2;\n            const boxHeight = 16;\n\n            ctx.save();\n            \/\/ White background for contrast\n            ctx.fillStyle = \"rgba(255, 255, 255, 0.9)\";\n            ctx.fillRect(labelX - padX, labelY - boxHeight + padY, boxWidth, boxHeight);\n\n            \/\/ Text in the same category colour\n            ctx.fillStyle = color;\n            ctx.fillText(label, labelX, labelY);\n            ctx.restore();\n          }\n        }\n      }\n\n      function drawScore() {\n        ctx.fillStyle = \"#000\";\n        ctx.font = \"12px monospace\";\n        const s = \"Score: \" + Math.floor(score);\n        const hs = \"High: \" + Math.floor(highScore);\n        ctx.fillText(s, 10, 20);\n        ctx.fillText(hs, 10, 36);\n      }\n\n      function drawGameOver() {\n        if (!gameOver) return;\n        ctx.fillStyle = \"#000\";\n        ctx.font = \"18px monospace\";\n        const msg = \"GAME OVER: Regulator found systemic non-compliance.\";\n        const msg2 = \"Tap or press SPACE to launch a remediation programme.\";\n        const w1 = ctx.measureText(msg).width;\n        const w2 = ctx.measureText(msg2).width;\n        ctx.fillText(msg, (width - w1) \/ 2, height \/ 2 - 10);\n        ctx.fillText(msg2, (width - w2) \/ 2, height \/ 2 + 16);\n      }\n\n      function loop() {\n        ctx.clearRect(0, 0, width, height);\n\n        update();\n        drawGround();\n        drawRhino();\n        drawObstacles();\n        drawScore();\n        drawGameOver();\n\n        requestAnimationFrame(loop);\n      }\n\n      \/\/ Start\n      resetGame();\n      loop();\n    })();\n  <\/script>\n<\/body>\n<\/html>\n\n\t\t<\/div>\n\t<\/div>\n\n\t\t\t<\/div> \n\t\t<\/div>\n\t<\/div> \n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"A tiny endless-runner where the Information Regulator hunts down every unlawful risk you didn\u2019t fix. Jump over breaches, missing controls, and consent failures. If you collide, it\u2019s not a fine;...","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-3445","page","type-page","status-publish"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rhino Regulator Run - ITLawCo<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itlawco.com\/fr\/rhino-regulator-run\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rhino Regulator Run - ITLawCo\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itlawco.com\/fr\/rhino-regulator-run\/\" \/>\n<meta property=\"og:site_name\" content=\"ITLawCo\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-01T13:07:28+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/itlawco.com\\\/rhino-regulator-run\\\/\",\"url\":\"https:\\\/\\\/itlawco.com\\\/rhino-regulator-run\\\/\",\"name\":\"Rhino Regulator Run - ITLawCo\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/itlawco.com\\\/#website\"},\"datePublished\":\"2025-12-01T12:56:05+00:00\",\"dateModified\":\"2025-12-01T13:07:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/itlawco.com\\\/rhino-regulator-run\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/itlawco.com\\\/rhino-regulator-run\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/itlawco.com\\\/rhino-regulator-run\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/itlawco.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rhino Regulator Run\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/itlawco.com\\\/#website\",\"url\":\"https:\\\/\\\/itlawco.com\\\/\",\"name\":\"ITLawCo\",\"description\":\"Fast, fearless legal\",\"publisher\":{\"@id\":\"https:\\\/\\\/itlawco.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/itlawco.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/itlawco.com\\\/#organization\",\"name\":\"ITLawCo\",\"url\":\"https:\\\/\\\/itlawco.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/itlawco.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/itlawco.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Logo-prsm@4x.png\",\"contentUrl\":\"https:\\\/\\\/itlawco.com\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Logo-prsm@4x.png\",\"width\":2854,\"height\":2883,\"caption\":\"ITLawCo\"},\"image\":{\"@id\":\"https:\\\/\\\/itlawco.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/itlawco\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rhino Regulator Run - ITLawCo","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itlawco.com\/fr\/rhino-regulator-run\/","og_locale":"fr_FR","og_type":"article","og_title":"Rhino Regulator Run - ITLawCo","og_url":"https:\/\/itlawco.com\/fr\/rhino-regulator-run\/","og_site_name":"ITLawCo","article_modified_time":"2025-12-01T13:07:28+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/itlawco.com\/rhino-regulator-run\/","url":"https:\/\/itlawco.com\/rhino-regulator-run\/","name":"Rhino Regulator Run - ITLawCo","isPartOf":{"@id":"https:\/\/itlawco.com\/#website"},"datePublished":"2025-12-01T12:56:05+00:00","dateModified":"2025-12-01T13:07:28+00:00","breadcrumb":{"@id":"https:\/\/itlawco.com\/rhino-regulator-run\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itlawco.com\/rhino-regulator-run\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/itlawco.com\/rhino-regulator-run\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/itlawco.com\/"},{"@type":"ListItem","position":2,"name":"Rhino Regulator Run"}]},{"@type":"WebSite","@id":"https:\/\/itlawco.com\/#website","url":"https:\/\/itlawco.com\/","name":"ITLawCo","description":"Rapide, sans peur, juridique","publisher":{"@id":"https:\/\/itlawco.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itlawco.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/itlawco.com\/#organization","name":"ITLawCo","url":"https:\/\/itlawco.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/itlawco.com\/#\/schema\/logo\/image\/","url":"https:\/\/itlawco.com\/wp-content\/uploads\/2024\/06\/Logo-prsm@4x.png","contentUrl":"https:\/\/itlawco.com\/wp-content\/uploads\/2024\/06\/Logo-prsm@4x.png","width":2854,"height":2883,"caption":"ITLawCo"},"image":{"@id":"https:\/\/itlawco.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/itlawco\/"]}]}},"_links":{"self":[{"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/pages\/3445","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/comments?post=3445"}],"version-history":[{"count":6,"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/pages\/3445\/revisions"}],"predecessor-version":[{"id":3451,"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/pages\/3445\/revisions\/3451"}],"wp:attachment":[{"href":"https:\/\/itlawco.com\/fr\/wp-json\/wp\/v2\/media?parent=3445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}