{"title":"Circuito City8k","description":"\u003csection class=\"tmf-collection-entry\" aria-labelledby=\"tmf-collection-title\"\u003e\n  \u003cp class=\"tmf-collection-entry__eyebrow\"\u003eCircuito City8k\u003c\/p\u003e\n  \u003ch2 id=\"tmf-collection-title\"\u003eTus fotos del evento\u003c\/h2\u003e\n  \u003cp class=\"tmf-collection-entry__intro\"\u003e\n    Sube una selfie o utiliza tu número de participante para revisar tus coincidencias entre las fotografías de todos los fotógrafos participantes.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"tmf-collection-entry__options\"\u003e\n    \u003cdiv\u003e\n      \u003cstrong\u003eCompra individual\u003c\/strong\u003e\n      \u003cspan\u003eSelecciona solamente las fotografías que quieras.\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cstrong\u003eTodas mis fotos · $25\u003c\/strong\u003e\n      \u003cspan\u003eDisponible cuando tu selección incluye al menos 5 fotos.\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\n  \u003cbutton type=\"button\" class=\"tmf-collection-entry__button\" id=\"tmf-search-toggle\" aria-expanded=\"false\" aria-controls=\"tmf-search-tools\"\u003e\n    Revisa tus fotos aquí\n  \u003c\/button\u003e\n\n  \u003cp class=\"tmf-collection-entry__note\"\u003e\n    Este evento utiliza reconocimiento facial y búsqueda por número de participante. Recomendamos probar ambos sistemas.\n  \u003c\/p\u003e\n\n\n  \u003cdiv class=\"tmf-collection-search\" id=\"tmf-search-tools\" hidden\u003e\n    \u003cdiv id=\"tmf-config-loading\" class=\"tmf-collection-search__status\"\u003e\n      Consultando la información del evento…\n    \u003c\/div\u003e\n\n    \u003cdiv id=\"tmf-config-error\" class=\"tmf-collection-search__error\" hidden\u003e\n      \u003cstrong\u003eEste servicio no está disponible en este momento.\u003c\/strong\u003e\n      \u003cspan id=\"tmf-config-error-message\"\u003e\n        Intenta nuevamente en unos minutos.\n      \u003c\/span\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv id=\"tmf-config-content\" hidden\u003e\n      \u003cdiv class=\"tmf-collection-search__offer\"\u003e\n        \u003cdiv\u003e\n          \u003cspan class=\"tmf-collection-search__label\"\u003ePaquete\u003c\/span\u003e\n          \u003cstrong id=\"tmf-package-name\"\u003eTodas mis fotos\u003c\/strong\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"tmf-collection-search__price\"\u003e\n          \u003cstrong id=\"tmf-package-price\"\u003e$25\u003c\/strong\u003e\n          \u003cspan\u003eUSD\u003c\/span\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n\n      \u003cp id=\"tmf-package-rule\" class=\"tmf-collection-search__rule\"\u003e\n        El paquete se habilita cuando hay al menos 5 fotos.\n      \u003c\/p\u003e\n\n      \u003cdiv class=\"tmf-collection-search__privacy\"\u003e\n        \u003cstrong\u003eAntes de comenzar\u003c\/strong\u003e\n        \u003cp\u003e\n          Usa una foto frontal, con buena luz y sin lentes oscuros.\n          La selfie se utiliza únicamente para buscar coincidencias\n          dentro de este evento.\n        \u003c\/p\u003e\n      \u003c\/div\u003e\n\n\n      \u003cdiv class=\"tmf-collection-search__field\"\u003e\n        \u003clabel for=\"tmf-bib-input\"\u003e\n          Número de participante \u003cspan\u003e(opcional)\u003c\/span\u003e\n        \u003c\/label\u003e\n        \u003cinput type=\"text\" id=\"tmf-bib-input\" class=\"tmf-collection-search__number-input\" placeholder=\"Ej: 423\" inputmode=\"numeric\" maxlength=\"5\"\u003e\n        \u003csmall\u003e\n          Si lo escribes, combinaremos las coincidencias faciales y\n          numéricas en una sola selección.\n        \u003c\/small\u003e\n      \u003c\/div\u003e\n\n      \u003cinput id=\"tmf-selfie-input\" type=\"file\" accept=\"image\/jpeg,image\/png,image\/webp\" hidden\u003e\n\n      \u003cbutton id=\"tmf-selfie-button\" class=\"tmf-collection-search__action\" type=\"button\"\u003e\n        Subir mi selfie\n      \u003c\/button\u003e\n\n      \u003cp id=\"tmf-search-status\" class=\"tmf-collection-search__status\" role=\"status\" aria-live=\"polite\" hidden\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cstyle\u003e\n  .tmf-collection-entry {\n    box-sizing: border-box;\n    max-width: 76rem;\n    margin: 2.5rem auto;\n    padding: clamp(1.5rem, 4vw, 3rem);\n    color: rgb(var(--color-foreground));\n    background: rgb(var(--color-background));\n    border: 0.1rem solid rgba(var(--color-foreground), 0.16);\n    border-radius: var(--media-radius);\n    font-family: var(--font-body-family);\n    text-align: center;\n  }\n\n  .tmf-collection-entry__eyebrow {\n    margin: 0 0 0.75rem;\n    font-size: 0.85em;\n    font-weight: 700;\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n  }\n\n  .tmf-collection-entry h2 {\n    margin: 0;\n    color: inherit;\n    font-family: var(--font-heading-family);\n    font-size: clamp(2rem, 5vw, 3.5rem);\n    line-height: 1.08;\n  }\n\n  .tmf-collection-entry__intro {\n    max-width: 44rem;\n    margin: 1rem auto 0;\n    font-size: 1.05em;\n  }\n\n  .tmf-collection-entry__options {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 1rem;\n    margin: 2rem 0;\n    text-align: left;\n  }\n\n  .tmf-collection-entry__options \u003e div {\n    padding: 1.25rem;\n    border: 0.1rem solid rgba(var(--color-foreground), 0.16);\n    border-radius: var(--media-radius);\n  }\n\n  .tmf-collection-entry__options strong,\n  .tmf-collection-entry__options span {\n    display: block;\n  }\n\n  .tmf-collection-entry__options span {\n    margin-top: 0.4rem;\n    opacity: 0.76;\n  }\n\n  .tmf-collection-entry__button,\n  .tmf-collection-search__action {\n    display: inline-flex;\n    min-height: 4.5rem;\n    align-items: center;\n    justify-content: center;\n    padding: 0 2rem;\n    color: rgb(var(--color-background)) !important;\n    background: rgb(var(--color-foreground));\n    border: 0;\n    border-radius: var(--buttons-radius);\n    font: inherit;\n    font-weight: 700;\n    text-decoration: none;\n    cursor: pointer;\n  }\n\n  .tmf-collection-entry__button:hover,\n  .tmf-collection-search__action:hover {\n    opacity: 0.88;\n  }\n\n  .tmf-collection-entry__button:focus-visible,\n  .tmf-collection-search__action:focus-visible,\n  .tmf-collection-search__number-input:focus-visible {\n    outline: 0.2rem solid rgb(var(--color-foreground));\n    outline-offset: 0.3rem;\n  }\n\n  .tmf-collection-search__action:disabled {\n    cursor: wait;\n    opacity: 0.55;\n  }\n\n  .tmf-collection-entry__note {\n    margin: 1.25rem 0 0;\n    font-size: 0.9em;\n    opacity: 0.72;\n  }\n\n  .tmf-collection-search {\n    margin-top: 2rem;\n    padding-top: 2rem;\n    border-top: 0.1rem solid rgba(var(--color-foreground), 0.16);\n    scroll-margin-top: 2rem;\n  }\n\n  .tmf-collection-search[hidden] {\n    display: none;\n  }\n\n  .tmf-collection-search [hidden] {\n    display: none !important;\n  }\n\n  .tmf-collection-search__error {\n    display: grid;\n    gap: 0.45rem;\n    padding: 1.25rem;\n    background: rgba(var(--color-foreground), 0.04);\n    border: 0.1rem solid rgba(var(--color-foreground), 0.16);\n    border-radius: var(--inputs-radius);\n    text-align: left;\n  }\n\n  .tmf-collection-search__offer {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 1.25rem;\n    padding-bottom: 1.25rem;\n    border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.16);\n    text-align: left;\n  }\n\n  .tmf-collection-search__label {\n    display: block;\n    margin-bottom: 0.25rem;\n    font-size: 0.8em;\n    opacity: 0.72;\n    text-transform: uppercase;\n  }\n\n  .tmf-collection-search__price {\n    text-align: right;\n  }\n\n  .tmf-collection-search__price strong,\n  .tmf-collection-search__price span {\n    display: block;\n  }\n\n  .tmf-collection-search__price strong {\n    font-size: clamp(1.75rem, 5vw, 2.5rem);\n    line-height: 1;\n  }\n\n  .tmf-collection-search__price span {\n    margin-top: 0.25rem;\n    font-size: 0.75em;\n    opacity: 0.72;\n  }\n\n  .tmf-collection-search__rule {\n    margin: 1.25rem 0;\n    font-weight: 700;\n    text-align: left;\n  }\n\n  .tmf-collection-search__privacy {\n    margin-bottom: 1.25rem;\n    padding: 1rem;\n    background: rgba(var(--color-foreground), 0.04);\n    border-radius: var(--inputs-radius);\n    text-align: left;\n  }\n\n  .tmf-collection-search__privacy p {\n    margin: 0.35rem 0 0;\n    opacity: 0.76;\n  }\n\n  .tmf-collection-search__field {\n    margin-bottom: 1.25rem;\n    text-align: left;\n  }\n\n  .tmf-collection-search__field label,\n  .tmf-collection-search__field small {\n    display: block;\n  }\n\n  .tmf-collection-search__field label {\n    margin-bottom: 0.5rem;\n    font-weight: 700;\n  }\n\n  .tmf-collection-search__field label span,\n  .tmf-collection-search__field small {\n    font-weight: 400;\n    opacity: 0.72;\n  }\n\n  .tmf-collection-search__field small {\n    margin-top: 0.45rem;\n  }\n\n  #tmf-config-content \u003e .tmf-collection-search__action {\n    width: 100%;\n  }\n\n  .tmf-collection-search__grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 1rem;\n    text-align: left;\n  }\n\n  .tmf-collection-search__grid--single {\n    grid-template-columns: minmax(0, 34rem);\n    justify-content: center;\n  }\n\n  .tmf-collection-search__card {\n    display: flex;\n    flex-direction: column;\n    gap: 0.75rem;\n    padding: 1.25rem;\n    border: 0.1rem solid rgba(var(--color-foreground), 0.16);\n    border-radius: var(--media-radius);\n  }\n\n  .tmf-collection-search__card \u003e span {\n    opacity: 0.76;\n  }\n\n  .tmf-collection-search__card .tmf-collection-search__action {\n    width: 100%;\n    margin-top: auto;\n  }\n\n  .tmf-collection-search__number-row {\n    display: flex;\n    gap: 0.75rem;\n    margin-top: auto;\n  }\n\n  .tmf-collection-search__number-input {\n    box-sizing: border-box;\n    min-width: 0;\n    flex: 1;\n    width: 100%;\n    min-height: 4.5rem;\n    padding: 0 1rem;\n    color: inherit;\n    background: transparent;\n    border: 0.1rem solid rgba(var(--color-foreground), 0.3);\n    border-radius: var(--inputs-radius);\n    font: inherit;\n  }\n\n  .tmf-collection-search__status {\n    min-height: 1.5rem;\n    margin-top: 1rem;\n    font-weight: 600;\n  }\n\n  .tmf-collection-search__status--error {\n    color: #b42318;\n  }\n\n  @media screen and (max-width: 749px) {\n    .tmf-collection-entry__options,\n    .tmf-collection-search__grid {\n      grid-template-columns: 1fr;\n    }\n\n    .tmf-collection-entry__button {\n      width: 100%;\n    }\n\n    .tmf-collection-search__number-row {\n      flex-direction: column;\n    }\n\n    .tmf-collection-search__offer {\n      align-items: flex-start;\n    }\n  }\n\u003c\/style\u003e\n\n\n\u003cscript\u003e\n  (() =\u003e {\n    const EVENT_KEY = \"89CircuitoCity8k\";\n    const CONFIG_ENDPOINT = \"\/apps\/todas-mis-fotos\/search-session\";\n    const PRESIGNED_ENDPOINT = \"https:\/\/0o8ptvnz12.execute-api.us-east-1.amazonaws.com\/prod\/presigned-url\";\n    const RESULTS_PATH = \"\/pages\/resultados-tmf-v2\";\n    const MAX_FILE_BYTES = 15 * 1024 * 1024;\n\n    const searchToggle = document.getElementById(\"tmf-search-toggle\");\n    const searchTools = document.getElementById(\"tmf-search-tools\");\n    const loading = document.getElementById(\"tmf-config-loading\");\n    const content = document.getElementById(\"tmf-config-content\");\n    const errorBox = document.getElementById(\"tmf-config-error\");\n    const errorMessage = document.getElementById(\n      \"tmf-config-error-message\"\n    );\n    const packageName = document.getElementById(\"tmf-package-name\");\n    const packagePrice = document.getElementById(\"tmf-package-price\");\n    const packageRule = document.getElementById(\"tmf-package-rule\");\n    const selfieInput = document.getElementById(\"tmf-selfie-input\");\n    const selfieButton = document.getElementById(\"tmf-selfie-button\");\n    const bibInput = document.getElementById(\"tmf-bib-input\");\n    const status = document.getElementById(\"tmf-search-status\");\n\n    let configRequested = false;\n\n    const showStatus = (message, isError = false) =\u003e {\n      if (!status) return;\n      status.hidden = false;\n      status.textContent = message;\n      status.classList.toggle(\n        \"tmf-collection-search__status--error\",\n        isError\n      );\n    };\n\n    const showConfigError = (message) =\u003e {\n      loading.hidden = true;\n      content.hidden = true;\n      errorBox.hidden = false;\n      errorMessage.textContent =\n        message || \"Intenta nuevamente en unos minutos.\";\n    };\n\n    const responseJson = async (response) =\u003e {\n      const data = await response.json().catch(() =\u003e ({}));\n      if (!response.ok || !data.ok) {\n        throw new Error(\n          data.message || \"No se pudo completar la solicitud.\"\n        );\n      }\n      return data;\n    };\n\n    const formatPrice = (amount, currency) =\u003e {\n      return new Intl.NumberFormat(\"en-US\", {\n        style: \"currency\",\n        currency: currency || \"USD\"\n      }).format(Number(amount));\n    };\n\n    const loadConfiguration = async () =\u003e {\n      if (configRequested) return;\n      configRequested = true;\n\n      loading.hidden = false;\n      content.hidden = true;\n      errorBox.hidden = true;\n\n      try {\n        const response = await fetch(CONFIG_ENDPOINT, {\n          method: \"POST\",\n          headers: { \"Content-Type\": \"application\/json\" },\n          cache: \"no-store\",\n          body: JSON.stringify({\n            action: \"config\",\n            eventKey: EVENT_KEY\n          })\n        });\n        const data = await responseJson(response);\n        const config = data.todasMisFotos || {};\n\n        if (!config.enabled || config.status !== \"valid\") {\n          throw new Error(\n            \"El paquete Todas mis fotos todavía no está habilitado \" +\n            \"para este evento.\"\n          );\n        }\n\n        if (!config.identity || !config.identity.selfieRequired) {\n          throw new Error(\n            \"La configuración de identidad no es válida.\"\n          );\n        }\n\n        packageName.textContent = config.package.name;\n        packagePrice.textContent = formatPrice(\n          config.package.price,\n          config.package.currency\n        );\n        packageRule.textContent =\n          \"El paquete se habilita cuando hay al menos \" +\n          config.package.minimumPhotos +\n          \" fotos.\";\n\n        loading.hidden = true;\n        content.hidden = false;\n      } catch (error) {\n        console.error(error);\n        configRequested = false;\n        showConfigError(error.message);\n      }\n    };\n\n    const safeFilename = (originalName) =\u003e {\n      const normalized = String(originalName || \"selfie.jpg\")\n        .normalize(\"NFD\")\n        .replace(\/[̀-ͯ]\/g, \"\")\n        .replace(\/[^A-Za-z0-9_.-]+\/g, \"-\")\n        .replace(\/^-+|-+$\/g, \"\");\n      const filename = normalized || \"selfie.jpg\";\n      const random = crypto.getRandomValues(\n        new Uint32Array(1)\n      )[0].toString(16);\n      return Date.now() + \"-\" + random + \"-\" + filename;\n    };\n\n    const selectedBibNumber = () =\u003e {\n      if (!bibInput) return \"\";\n\n      const bibNumber = bibInput.value.trim();\n      if (bibNumber \u0026\u0026 !\/^[0-9]{1,5}$\/.test(bibNumber)) {\n        bibInput.focus();\n        throw new Error(\n          \"El número de participante debe tener hasta 5 dígitos.\"\n        );\n      }\n      return bibNumber;\n    };\n\n    const uploadSelfie = async (file) =\u003e {\n      if (!file.type.startsWith(\"image\/\")) {\n        throw new Error(\"Selecciona una imagen válida.\");\n      }\n      if (file.size \u003e MAX_FILE_BYTES) {\n        throw new Error(\"La imagen no puede superar 15 MB.\");\n      }\n\n      const bibNumber = selectedBibNumber();\n      const filename = safeFilename(file.name);\n      const objectKey =\n        \"selfies\/rf-evento-\" + EVENT_KEY + \"\/\" + filename;\n      const presignedResponse = await fetch(\n        PRESIGNED_ENDPOINT +\n          \"?filename=\" +\n          encodeURIComponent(objectKey),\n        { cache: \"no-store\" }\n      );\n      const presigned = await presignedResponse\n        .json()\n        .catch(() =\u003e ({}));\n\n      if (!presignedResponse.ok || !presigned.url) {\n        throw new Error(\n          \"No se pudo preparar la carga de la selfie.\"\n        );\n      }\n\n      const uploadResponse = await fetch(presigned.url, {\n        method: \"PUT\",\n        headers: { \"Content-Type\": file.type },\n        body: file\n      });\n      if (!uploadResponse.ok) {\n        throw new Error(\"No se pudo cargar la selfie.\");\n      }\n\n      const params = new URLSearchParams({\n        eventKey: EVENT_KEY,\n        selfieId: filename\n      });\n      if (bibNumber) params.set(\"bibNumber\", bibNumber);\n\n      window.location.assign(\n        RESULTS_PATH + \"?\" + params.toString()\n      );\n    };\n\n    if (searchToggle \u0026\u0026 searchTools) {\n      searchToggle.addEventListener(\"click\", () =\u003e {\n        const isExpanded =\n          searchToggle.getAttribute(\"aria-expanded\") === \"true\";\n\n        searchToggle.setAttribute(\n          \"aria-expanded\",\n          String(!isExpanded)\n        );\n        searchTools.hidden = isExpanded;\n\n        if (!isExpanded) {\n          loadConfiguration();\n          searchTools.scrollIntoView({\n            behavior: \"smooth\",\n            block: \"nearest\"\n          });\n        }\n      });\n    }\n\n    if (selfieInput \u0026\u0026 selfieButton) {\n      selfieButton.addEventListener(\n        \"click\",\n        () =\u003e selfieInput.click()\n      );\n\n      selfieInput.addEventListener(\"change\", async () =\u003e {\n        const file = selfieInput.files \u0026\u0026 selfieInput.files[0];\n        if (!file) return;\n\n        selfieButton.disabled = true;\n        selfieButton.textContent = \"Subiendo selfie…\";\n        showStatus(\n          \"Cuando termine la carga buscaremos tus coincidencias.\"\n        );\n\n        try {\n          await uploadSelfie(file);\n        } catch (error) {\n          console.error(error);\n          showStatus(\n            error.message || \"No pudimos procesar la selfie.\",\n            true\n          );\n          selfieButton.disabled = false;\n          selfieButton.textContent = \"Intentar nuevamente\";\n          selfieInput.value = \"\";\n        }\n      });\n    }\n  })();\n\u003c\/script\u003e","products":[{"product_id":"circuitocity8k-bienvefotos-0011","title":"CircuitoCity8k-bienvefotos-0011.jpg","description":"Derecho de contenido para uso personal. Contactar para derechos de usos publicitarios al Wht: +507 6028-2182","brand":"bienvefotos","offers":[{"title":"Default Title","offer_id":48001611596012,"sku":"89CircuitoCity8k-bienvefotos-0011","price":10.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0715\/5692\/3628\/files\/CircuitoCity8k-bienvefotos-0011.jpg?v=1785014998"},{"product_id":"circuitocity8k-bienvefotos-0012","title":"CircuitoCity8k-bienvefotos-0012.jpg","description":"Derecho de contenido para uso personal. Contactar para derechos de usos publicitarios al Wht: +507 6028-2182","brand":"bienvefotos","offers":[{"title":"Default Title","offer_id":48001612021996,"sku":"89CircuitoCity8k-bienvefotos-0012","price":10.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0715\/5692\/3628\/files\/CircuitoCity8k-bienvefotos-0012.jpg?v=1785015002"},{"product_id":"circuitocity8k-bienvefotos-0014","title":"CircuitoCity8k-bienvefotos-0014.jpg","description":"Derecho de contenido para uso personal. Contactar para derechos de usos publicitarios al Wht: +507 6028-2182","brand":"bienvefotos","offers":[{"title":"Default Title","offer_id":48001612579052,"sku":"89CircuitoCity8k-bienvefotos-0014","price":10.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0715\/5692\/3628\/files\/CircuitoCity8k-bienvefotos-0014.jpg?v=1785015006"},{"product_id":"circuitocity8k-bienvefotos-0015","title":"CircuitoCity8k-bienvefotos-0015.jpg","description":"Derecho de contenido para uso personal. Contactar para derechos de usos publicitarios al Wht: +507 6028-2182","brand":"bienvefotos","offers":[{"title":"Default Title","offer_id":48001613529324,"sku":"89CircuitoCity8k-bienvefotos-0015","price":10.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0715\/5692\/3628\/files\/CircuitoCity8k-bienvefotos-0015.jpg?v=1785015012"},{"product_id":"circuitocity8k-bienvefotos-0018","title":"CircuitoCity8k-bienvefotos-0018.jpg","description":"Derecho de contenido para uso personal. Contactar para derechos de usos publicitarios al Wht: +507 6028-2182","brand":"bienvefotos","offers":[{"title":"Default Title","offer_id":48001614479596,"sku":"89CircuitoCity8k-bienvefotos-0018","price":10.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0715\/5692\/3628\/files\/CircuitoCity8k-bienvefotos-0018.jpg?v=1785015019"},{"product_id":"circuitocity8k-bienvefotos-0020","title":"CircuitoCity8k-bienvefotos-0020.jpg","description":"Derecho de contenido para uso personal. Contactar para derechos de usos publicitarios al Wht: +507 6028-2182","brand":"bienvefotos","offers":[{"title":"Default Title","offer_id":48001614905580,"sku":"89CircuitoCity8k-bienvefotos-0020","price":10.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0715\/5692\/3628\/files\/CircuitoCity8k-bienvefotos-0020.jpg?v=1785015022"}],"url":"https:\/\/rauldom.com\/collections\/circuito-city8k.oembed","provider":"RaulDom Sport Images","version":"1.0","type":"link"}