An error occurred while processing the template.
Invocation of method 'getImageProperties' in  class com.liferay.portal.util.IterTemplateContent threw exception XYZ_E_INVALIDARG_ZYX at 21736/F/NOTA_ENTREVISTA[line 73, column 43]
1$iterVelocityTools.setRenderArticleMode(1)
 
2#set($sectionID = "#printAssignedSectionID_v1")
 
3#set($canonicalUrl = $articleToolbox.getArticleViewer('canonical'))
 
4#set($title = $!articleToolbox.getTag(null,'Headline').data)
 
5#set($hostName = "#siteUrl()")
 
6#set($fullUrl = "${hostName}${canonicalUrl}")
 
7#set($titleRaw = $!title)
 
8#if(!$titleRaw) #set($titleRaw = "") #end
 
9#set($titleClean = $titleRaw.replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\r', '').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())
 
10#set($descRaw = $!articleToolbox.getTag(null, 'Resumen_News').data)
 
11#if(!$descRaw || $descRaw == "") #set($descRaw = $!articleToolbox.getTag(null, 'Subheadline').data) #end
 
12#if(!$descRaw || $descRaw == "") #set($descRaw = $!articleToolbox.getTag(null, 'Lead_Text').data) #end
 
13#if(!$descRaw || $descRaw == "") #set($descRaw = $titleClean) #end
 
14#set($descClean = $htmlUtil.stripHtml($descRaw).replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\r', '').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())
 
15#set($rawModify = $reserved-article-modified-date.data)
 
16#set($rawPublish = $reserved-article-display-date.data)
 
17#set($fmtIn = "EEE, d MMM yyyy HH:mm:ss Z")
 
18#set($fmtOutISO = "yyyy-MM-dd'T'HH:mm:ssXXX")
 
19#set($fmtOutDisplay = "d MMMM yyyy")
 
20#set($dateObjP = $dateTool.toDate($fmtIn, $rawPublish))
 
21#if($dateObjP)
 
22    #set($datePublished = $dateTool.format($fmtOutISO, $dateObjP))
 
23    #set($dateDisplay = $dateTool.format($fmtOutDisplay, $dateObjP))
 
24#else
 
25    #set($datePublished = $dateTool.get($fmtOutISO))
 
26    #set($dateDisplay = $dateTool.get($fmtOutDisplay))
 
27#end
 
28#set($dateObjM = $dateTool.toDate($fmtIn, $rawModify))
 
29#if($dateObjM)
 
30    #set($dateModified = $dateTool.format($fmtOutISO, $dateObjM))
 
31#else
 
32    #set($dateModified = $datePublished)
 
33#end
 
34#set($hmTemas = {})       #getAcAssignedCatExtended_v1($hmTemas "Topic")
 
35#set($hmGeografico = {})  #getAcAssignedCatExtended_v1($hmGeografico "Location")
 
36#set($hmCompanies = {})   #getAcAssignedCatExtended_v1($hmCompanies "Companies")
 
37#set($hmPersonajes = {})  #getAcAssignedCatExtended_v1($hmPersonajes "People")
 
38#set($hmAutores = {})     #getAcAssignedCatExtended_v1($hmAutores "Author")
 
39#set($AuthorNoFoto = $!iterVelocityTools.getVariable($sectionID, "authorNoFoto"))
 
40#set($section = "#printAssignedSection_v1")
 
41#set($sectionSlug = $section.toLowerCase().replaceAll(" ", "-").replaceAll("á","a").replaceAll("é","e").replaceAll("í","i").replaceAll("ó","o").replaceAll("ú","u").replaceAll("ñ","n"))
 
42#set($imgDefault = "https://vanguardia.com.mx/base-portlet/webrsrc/theme/13d16cf89ee0b324585019c9998ec6dd.svg")
 
43#set($imgLCP = $articleToolbox.getImageURL("Image","0","crop_full"))
 
44#if(!$imgLCP || $imgLCP == "")
 
45  #set($imgLCP = $articleToolbox.getImageURL("Image","0",""))
 
46#end
 
47#if(!$imgLCP || $imgLCP == "")
 
48  #set($imgLCP = $imgDefault)
 
49#end
 
50#set($imgOG = $articleToolbox.getImageURL("Image", "0", "social"))
 
51
 
52#set($img16x9 = $articleToolbox.getImageURL("Image","0","crop_1200x675"))
 
53#set($img4x3 = $articleToolbox.getImageURL("Image","0","crop_1200x900"))
 
54#set($img1x1 = $articleToolbox.getImageURL("Image","0","crop_1200x1200"))
 
55
 
56#set($jsonLdImage = $img16x9)
 
57#set($imgTwitter = $img16x9)
 
58
 
59## ════════════════════════════════════════════════════════════════
 
60## FIX v11.2: Protección getImageProperties contra imágenes
 
61## inválidas, vacías o placeholder. Usa $! (silent reference)
 
62## y validación contra placeholder/svg para evitar
 
63## XYZ_E_INVALIDARG_ZYX en notas sin imagen de portada.
 
64## CLEANUP: Eliminadas 3 llamadas redundantes (img16x9Props,
 
65## img4x3Props duplicada, img1x1Props duplicada) para quedar
 
66## consistente con ESPECIAL-30.
 
67## ════════════════════════════════════════════════════════════════
 
68
 
69#set($imgSchemaProps = false)
 
70#set($imgWidth = 1200)
 
71#set($imgHeight = 675)
 
72#if($img16x9 && $img16x9 != $imgDefault && !$img16x9.contains("placeholder/svg"))
 
73  #set($imgSchemaProps = $!articleToolbox.getImageProperties($img16x9))
 
74  #if($imgSchemaProps && $imgSchemaProps.width)
 
75    #set($imgWidth = $imgSchemaProps.width)
 
76  #end
 
77  #if($imgSchemaProps && $imgSchemaProps.height)
 
78    #set($imgHeight = $imgSchemaProps.height)
 
79  #end
 
80#end
 
81
 
82#set($imgOGProps = false)
 
83#set($imgOGWidth = 1200)
 
84#set($imgOGHeight = 630)
 
85#if($imgOG && $imgOG != "" && $imgOG != $imgDefault && $imgOG != $img16x9 && !$imgOG.contains("placeholder/svg"))
 
86  #set($imgOGProps = $!articleToolbox.getImageProperties($imgOG))
 
87  #if($imgOGProps && $imgOGProps.width)
 
88    #set($imgOGWidth = $imgOGProps.width)
 
89  #end
 
90  #if($imgOGProps && $imgOGProps.height)
 
91    #set($imgOGHeight = $imgOGProps.height)
 
92  #end
 
93#end
 
94
 
95#set($img4x3Width = 1200)
 
96#set($img4x3Height = 900)
 
97#if($img4x3 && $img4x3 != "" && !$img4x3.contains("placeholder/svg"))
 
98  #set($img4x3Props = $!articleToolbox.getImageProperties($img4x3))
 
99  #if($img4x3Props && $img4x3Props.width)
 
100    #set($img4x3Width = $img4x3Props.width)
 
101  #end
 
102  #if($img4x3Props && $img4x3Props.height)
 
103    #set($img4x3Height = $img4x3Props.height)
 
104  #end
 
105#end
 
106
 
107#set($img1x1Width = 1200)
 
108#set($img1x1Height = 1200)
 
109#if($img1x1 && $img1x1 != "" && !$img1x1.contains("placeholder/svg"))
 
110  #set($img1x1Props = $!articleToolbox.getImageProperties($img1x1))
 
111  #if($img1x1Props && $img1x1Props.width)
 
112    #set($img1x1Width = $img1x1Props.width)
 
113  #end
 
114  #if($img1x1Props && $img1x1Props.height)
 
115    #set($img1x1Height = $img1x1Props.height)
 
116  #end
 
117#end
 
118
 
119## ════════════════════════════════════════════════════════════════
 
120
 
121#set($ac-url = $articleContext.selectNodes('articlectx/url'))
 
122#set($xml-url = $ac-url.get(0).text)
 
123#set($url_actual = $!xml-url)
 
124#set($arrayListContenidos = [])
 
125#macro(regEl $name $type $class $tag)
 
126  #set($e = {})
 
127  #set($x = $e.put("name", $name))
 
128  #set($x = $e.put("type", $type))
 
129  #set($x = $e.put("cssclass", $class))
 
130  #set($x = $e.put("tag", $tag))
 
131  #set($x = $arrayListContenidos.add($e))
 
132#end
 
133#regEl("Text", "paragraph", "texto", "div")
 
134#regEl("ArticleText", "article_text", "article_text", "div")
 
135#regEl("TikTok_Text", "tiktok", "tiktok_text", "div")
 
136#regEl("Image_Text", "image", "img text", "div")
 
137#regEl("Image_Text_GIF", "image", "imagen", "div")
 
138#regEl("Lead_Text", "text", "intertitulo", "div")
 
139#regEl("HTML_Text", "html", "html_text", "div")
 
140#regEl("Twitter_Text", "twitter", "twitter_text", "div")
 
141#regEl("Facebook_Text", "facebook", "facebook_text", "div")
 
142#regEl("Instagram_Text", "instagram", "instagram_text", "div")
 
143#regEl("Youtube_Text", "youtube", "youtube_video", "div")
 
144#regEl("Multimedia_Text", "multimedia", "video", "div")
 
145#regEl("Flourish_Text", "text", "flourish_text", "div")
 
146#regEl("Quote", "text", "quote", "div")
 
147#regEl("Quote_byline", "text", "Quote_byline", "div")
 
148#regEl("linkTitle_Text", "text", "link_tpi", "div")
 
149#regEl("title_list", "microformat", "microformat", "div")
 
150#regEl("image_list", "microformat", "microformat", "div")
 
151#regEl("text_list", "microformat", "microformat", "div")
 
152#regEl("Parrafo_Lista", "text", "Parrafo_Lista", "div")
 
153#regEl("Titulo_News", "text", "titulo_news", "div")
 
154#regEl("Resumen_News", "text", "resumen_news", "div")
 
155#regEl("Boton", "text", "Boton", "div")
 
156#regEl("Ficha_Titulo", "text", "Ficha_Titulo", "div")
 
157#regEl("Ficha_Foto", "image", "Ficha_Foto", "div")
 
158#regEl("Ficha_Texto", "text", "Ficha_Texto", "div")
 
159#regEl("Ficha_Social", "text", "Ficha_Social", "div")
 
160#regEl("Entrevista_Texto", "text", "Entrevista_Texto", "div")
 
161#regEl("Entrevista_Pregunta", "text", "Entrevista_Pregunta", "div")
 
162#regEl("Entrevista_Respuesta", "text", "Entrevista_Respuesta", "div")
 
163#regEl("URLCanonical", "text", "URLCanonical", "div")
 
164#regEl("Titulo_App", "text", "Titulo_App", "div")
 
165#regEl("resena_titulo", "text", "resena_titulo", "div")
 
166#regEl("resena_imagen", "image", "resena_imagen", "div")
 
167#regEl("resena_texto", "text", "resena_texto", "div")
 
168#set($FacebookText_ = $articleToolbox.getTag(null,"Facebook_Text"))
 
169#if($FacebookText_ && $FacebookText_.data != "")
 
170<div id="fb-root"></div>
 
171<script async defer src="https://connect.facebook.net/es_LA/sdk.js#xfbml=1&version=v21.0" crossorigin="anonymous"></script>
 
172#end
 
173#set($sectionUrl = "${hostName}/${sectionSlug}")
 
174#set($bcLevel1 = "")
 
175#set($bcLevel1Url = "")
 
176#set($bcLevel2 = "")
 
177#set($bcLevel2Url = "")
 
178#set($hasLevel2 = false)
 
179#if($canonicalUrl && $canonicalUrl.lastIndexOf("/") > 0)
 
180  #set($lastSlashIdx = $canonicalUrl.lastIndexOf("/"))
 
181  #set($sectionPath = $canonicalUrl.substring(0, $lastSlashIdx))
 
182  #set($tempPath = $sectionPath)
 
183  #if($tempPath.startsWith("/"))
 
184    #set($tempPath = $tempPath.substring(1))
 
185  #end
 
186  #set($firstSlash = $tempPath.indexOf("/"))
 
187  #if($firstSlash > 0)
 
188    #set($bcLevel1 = $tempPath.substring(0, $firstSlash))
 
189    #set($bcLevel1Url = "${hostName}/${bcLevel1}")
 
190    #set($nextIdx = $firstSlash + 1)
 
191    #set($bcLevel2 = $tempPath.substring($nextIdx))
 
192    #set($bcLevel2Url = "${hostName}${sectionPath}")
 
193    #set($hasLevel2 = true)
 
194  #else
 
195    #set($bcLevel1 = $tempPath)
 
196    #set($bcLevel1Url = "${hostName}/${bcLevel1}")
 
197  #end
 
198#end
 
199#if($bcLevel1 == "")
 
200  #set($bcLevel1 = $sectionSlug)
 
201  #set($bcLevel1Url = "${hostName}/${sectionSlug}")
 
202#end
 
203
 
204#set($articleBodyText = "")
 
205#set($bodyTextTags = ["Lead_Text", "Text", "ArticleText", "Entrevista_Pregunta", "Entrevista_Respuesta", "Quote", "Parrafo_Lista"])
 
206#foreach($bodyTagName in $bodyTextTags)
 
207  #set($bodyTag = $articleToolbox.getTag(null, $bodyTagName))
 
208  #if($bodyTag && $bodyTag.data && $bodyTag.data.trim() != "")
 
209    #set($bodyStripped = $htmlUtil.stripHtml($bodyTag.data).trim())
 
210    #if($bodyStripped != "")
 
211      #if($articleBodyText != "") #set($articleBodyText = "${articleBodyText} ") #end
 
212      #set($articleBodyText = "${articleBodyText}${bodyStripped}")
 
213    #end
 
214  #end
 
215  #if($bodyTag)
 
216    #set($bodySiblings = $bodyTag.getSiblings())
 
217    #if($bodySiblings && $bodySiblings.size() > 1)
 
218      #set($sibIdx = 0)
 
219      #foreach($sib in $bodySiblings)
 
220        #if($sibIdx > 0 && $sib.data && $sib.data.trim() != "")
 
221          #set($sibStripped = $htmlUtil.stripHtml($sib.data).trim())
 
222          #if($sibStripped != "")
 
223            #if($articleBodyText != "") #set($articleBodyText = "${articleBodyText} ") #end
 
224            #set($articleBodyText = "${articleBodyText}${sibStripped}")
 
225          #end
 
226        #end
 
227        #set($sibIdx = $sibIdx + 1)
 
228      #end
 
229    #end
 
230  #end
 
231#end
 
232#set($articleBodyClean = $articleBodyText.replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\r', '').replaceAll('\t', ' ').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())
 
233#if($articleBodyClean.length() > 18000)
 
234  #set($articleBodyClean = $articleBodyClean.substring(0, 18000))
 
235#end
 
236
 
237#set($imgDescClean = $titleClean)
 
238#if($imgDescClean.length() > 200)
 
239  #set($imgDescClean = $imgDescClean.substring(0, 200))
 
240#end
 
241
 
242#set($contentLocationName = "")
 
243#if($hmGeografico && !$hmGeografico.isEmpty())
 
244  #set($geoNames = [])
 
245  #foreach($geoItem in $hmGeografico)
 
246    #set($geoClean = $geoItem.name.replaceAll('"', "'").trim())
 
247    #if(!$geoNames.contains($geoClean))
 
248      #set($x = $geoNames.add($geoClean))
 
249    #end
 
250  #end
 
251  #foreach($gn in $geoNames)
 
252    #if($contentLocationName != "")
 
253      #set($contentLocationName = "${contentLocationName}, ${gn}")
 
254    #else
 
255      #set($contentLocationName = $gn)
 
256    #end
 
257  #end
 
258#end
 
259
 
260<script type="application/ld+json">
 
261{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Vanguardia","item":"https://vanguardia.com.mx"},{"@type":"ListItem","position":2,"name":"$htmlUtil.escape($bcLevel1)","item":"$htmlUtil.escape($bcLevel1Url)"}#if($hasLevel2),{"@type":"ListItem","position":3,"name":"$htmlUtil.escape($bcLevel2)","item":"$htmlUtil.escape($bcLevel2Url)"},{"@type":"ListItem","position":4,"name":"$htmlUtil.escape($titleClean)","item":"$htmlUtil.escape($fullUrl)"}#else,{"@type":"ListItem","position":3,"name":"$htmlUtil.escape($titleClean)","item":"$htmlUtil.escape($fullUrl)"}#end]}
 
262</script>
 
263
 
264#set($keywordsStr = "")
 
265#macro(addKeywordsToMap $mapInput)
 
266  #if($mapInput && !$mapInput.isEmpty())
 
267    #foreach($item in $mapInput)
 
268       #if($keywordsStr != "") #set($keywordsStr = "${keywordsStr}, ") #end
 
269       #set($cleanName = $item.name.replaceAll('"', "'").trim())
 
270       #set($keywordsStr = "${keywordsStr}${cleanName}")
 
271    #end
 
272  #end
 
273#end
 
274#addKeywordsToMap($hmTemas)
 
275#addKeywordsToMap($hmGeografico)
 
276#addKeywordsToMap($hmPersonajes)
 
277#addKeywordsToMap($hmCompanies)
 
278
 
279<script type="application/ld+json" id="vangdata-schema-newsarticle">
 
280{
 
281  "@context": "https://schema.org",
 
282  "@type": "NewsArticle",
 
283  "mainEntityOfPage": {
 
284    "@type": "WebPage",
 
285    "@id": "$htmlUtil.escape($fullUrl)"
 
286  },
 
287  "headline": "$!{titleClean}",
 
288  "description": "$!{descClean}",
 
289  #if($articleBodyClean && $articleBodyClean != "")
 
290  "articleBody": "$!{articleBodyClean}",
 
291  #end
 
292  "keywords": "$!{keywordsStr}",
 
293  "inLanguage": "es-MX",
 
294  "datePublished": "$!{datePublished}",
 
295  "dateModified": "$!{dateModified}",
 
296  "author": [
 
297    #if($hmAutores && !$hmAutores.isEmpty())
 
298      #set($authorIdx = 0)
 
299      #foreach($elem in $hmAutores)
 
300        #set($authorNameClean = $!elem.name.replaceAll('"', "'").replaceAll('\n', ' ').replaceAll('\\', '\\\\').replaceAll('<', '').replaceAll('>', '').trim())
 
301        #set($authorNameLower = $authorNameClean.toLowerCase())
 
302        #set($esAgencia = false)
 
303        #if($authorNameLower.contains("efe") || $authorNameLower.contains("ap ") || $authorNameLower.equals("ap") || $authorNameLower.contains("espn") || $authorNameLower.contains("new york times") || $authorNameLower.contains("reforma") || $authorNameLower.contains("el universal") || $authorNameLower.contains("reuters") || $authorNameLower.contains("afp") || $authorNameLower.contains("notimex") || $authorNameLower.contains("dpa"))
 
304          #set($esAgencia = true)
 
305        #end
 
306        #if($authorIdx > 0),#end
 
307        #if($esAgencia)
 
308          {"@type": "Organization", "name": "$!{authorNameClean}", "url": "${hostName}/autor/-/meta/$htmlUtil.escapeURL($!elem.friendlyname)"}
 
309        #else
 
310          {"@type": "Person", "name": "$!{authorNameClean}", "url": "${hostName}/autor/-/meta/$htmlUtil.escapeURL($!elem.friendlyname)"}
 
311        #end
 
312        #set($authorIdx = $authorIdx + 1)
 
313      #end
 
314    #else
 
315      {"@type": "Organization", "name": "Vanguardia", "url": "https://vanguardia.com.mx"}
 
316    #end
 
317  ],
 
318  "image": [
 
319    {
 
320      "@type": "ImageObject",
 
321      "url": "$htmlUtil.escape($jsonLdImage)",
 
322      "width": $imgWidth,
 
323      "height": $imgHeight,
 
324      "description": "$!{imgDescClean}"
 
325    }
 
326    #if($img4x3 && $img4x3 != "")
 
327    ,{
 
328      "@type": "ImageObject",
 
329      "url": "$htmlUtil.escape($img4x3)",
 
330      "width": $img4x3Width,
 
331      "height": $img4x3Height,
 
332      "description": "$!{imgDescClean}"
 
333    }
 
334    #end
 
335    #if($img1x1 && $img1x1 != "")
 
336    ,{
 
337      "@type": "ImageObject",
 
338      "url": "$htmlUtil.escape($img1x1)",
 
339      "width": $img1x1Width,
 
340      "height": $img1x1Height,
 
341      "description": "$!{imgDescClean}"
 
342    }
 
343    #end
 
344  ],
 
345  "publisher": {
 
346    "@type": "Organization",
 
347    "name": "Vanguardia",
 
348    "url": "https://vanguardia.com.mx",
 
349    "logo": {
 
350      "@type": "ImageObject",
 
351      "url": "https://vanguardia.com.mx/base-portlet/webrsrc/ctxvar/9d387887-99eb-4c1e-bb4a-7cbec97451dd.png",
 
352      "width": 380,
 
353      "height": 35
 
354    },
 
355    "sameAs": [
 
356      "https://www.facebook.com/VanguardiaMx",
 
357      "https://www.instagram.com/vanguardiamx",
 
358      "https://x.com/vanguardiamx",
 
359      "https://www.tiktok.com/@vanguardia_mx",
 
360      "https://www.youtube.com/channel/UCQtlgxJiZmFmaH7RsCtANsQ",
 
361      "https://es.wikipedia.org/wiki/Vanguardia_(peri%C3%B3dico_mexicano)",
 
362      "https://whatsapp.com/channel/0029Va2n3TCA2pL9rkrqWx2b"
 
363    ]
 
364  },
 
365  "articleSection": "$htmlUtil.escape($section)",
 
366  "isAccessibleForFree": true
 
367  #if($contentLocationName && $contentLocationName != "")
 
368  ,"contentLocation": {
 
369    "@type": "Place",
 
370    "name": "$htmlUtil.escape($contentLocationName)"
 
371  }
 
372  #end
 
373}
 
374</script>
 
375
 
376#set($youtubeContent = $articleToolbox.getTag(null,"Youtube_Text"))
 
377#if($youtubeContent && $youtubeContent.data && $youtubeContent.data != "")
 
378#set($youtubeRaw = $youtubeContent.data)
 
379#set($youtubeId = "")
 
380#if($youtubeRaw.contains("youtube.com/embed/"))
 
381  #set($startIdx = $youtubeRaw.indexOf("youtube.com/embed/"))
 
382  #set($startIdx = $startIdx + 18)
 
383  #set($tempStr = $youtubeRaw.substring($startIdx))
 
384  #if($tempStr.contains('"'))
 
385    #set($endIdx = $tempStr.indexOf('"'))
 
386    #set($youtubeId = $tempStr.substring(0, $endIdx))
 
387  #elseif($tempStr.contains("?"))
 
388    #set($endIdx = $tempStr.indexOf("?"))
 
389    #set($youtubeId = $tempStr.substring(0, $endIdx))
 
390  #else
 
391    #set($youtubeId = $tempStr.substring(0, 11))
 
392  #end
 
393#elseif($youtubeRaw.contains("youtu.be/"))
 
394  #set($startIdx = $youtubeRaw.indexOf("youtu.be/"))
 
395  #set($startIdx = $startIdx + 9)
 
396  #set($tempStr = $youtubeRaw.substring($startIdx))
 
397  #if($tempStr.contains('"'))
 
398    #set($endIdx = $tempStr.indexOf('"'))
 
399    #set($youtubeId = $tempStr.substring(0, $endIdx))
 
400  #else
 
401    #set($youtubeId = $tempStr.substring(0, 11))
 
402  #end
 
403#elseif($youtubeRaw.contains("watch?v="))
 
404  #set($startIdx = $youtubeRaw.indexOf("watch?v="))
 
405  #set($startIdx = $startIdx + 8)
 
406  #set($tempStr = $youtubeRaw.substring($startIdx))
 
407  #if($tempStr.contains("&"))
 
408    #set($endIdx = $tempStr.indexOf("&"))
 
409    #set($youtubeId = $tempStr.substring(0, $endIdx))
 
410  #elseif($tempStr.contains('"'))
 
411    #set($endIdx = $tempStr.indexOf('"'))
 
412    #set($youtubeId = $tempStr.substring(0, $endIdx))
 
413  #else
 
414    #set($youtubeId = $tempStr.substring(0, 11))
 
415  #end
 
416#end
 
417#set($youtubeIdClean = $youtubeId.replaceAll("[^a-zA-Z0-9_-]", ""))
 
418#if($youtubeIdClean && $youtubeIdClean.length() == 11)
 
419<script type="application/ld+json">
 
420{"@context":"https://schema.org","@type":"VideoObject","name":"$!{titleClean}","description":"$!{descClean}","thumbnailUrl":"https://img.youtube.com/vi/${youtubeIdClean}/maxresdefault.jpg","uploadDate":"$!{datePublished}","embedUrl":"https://www.youtube.com/embed/${youtubeIdClean}","contentUrl":"https://www.youtube.com/watch?v=${youtubeIdClean}"}
 
421</script>
 
422#end
 
423#end
 
424
 
425<script type="application/ld+json">
 
426{"@context":"https://schema.org","@type":"NewsMediaOrganization","name":"Vanguardia","description":"Vanguardia es el periódico líder de noticias en Coahuila y el noreste de México, con cobertura local, nacional e internacional desde Saltillo.","url":"https://vanguardia.com.mx","logo":{"@type":"ImageObject","url":"https://vanguardia.com.mx/base-portlet/webrsrc/ctxvar/9d387887-99eb-4c1e-bb4a-7cbec97451dd.png","width":380,"height":35},"sameAs":["https://www.facebook.com/VanguardiaMx","https://www.instagram.com/vanguardiamx","https://x.com/vanguardiamx","https://www.tiktok.com/@vanguardia_mx","https://www.youtube.com/channel/UCQtlgxJiZmFmaH7RsCtANsQ","https://es.wikipedia.org/wiki/Vanguardia_(peri%C3%B3dico_mexicano)","https://whatsapp.com/channel/0029Va2n3TCA2pL9rkrqWx2b"],"email":"contacto@vanguardia.com.mx","foundingDate":"1975-10-04","verificationFactCheckingPolicy":"https://vanguardia.com.mx/politicas-de-privacidad"}
 
427</script>
 
428
 
429<script type="application/ld+json">
 
430{"@context":"https://schema.org","@type":"WebSite","name":"Vanguardia","url":"https://vanguardia.com.mx","potentialAction":{"@type":"SearchAction","target":"https://vanguardia.com.mx/resultados-busqueda/-/search/{search_term_string}/false/false/19840101/29991231/date/true/true/0/0/meta/0/0/0/1","query-input":"required name=search_term_string"}}
 
431</script>
 
432
 
433#set($metaOG = {}) #set($temp = $metaOG.put("property","og:site_name")) #set($temp = $metaOG.put("content", "Vanguardia")) $iterVelocityTools.addMetaTag($metaOG)
 
434#set($metaOG = {}) #set($temp = $metaOG.put("property","og:type")) #set($temp = $metaOG.put("content", "article")) $iterVelocityTools.addMetaTag($metaOG)
 
435#set($metaOG = {}) #set($temp = $metaOG.put("property","og:title")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($titleClean)")) $iterVelocityTools.addMetaTag($metaOG)
 
436#set($metaOG = {}) #set($temp = $metaOG.put("property","og:description")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($descClean)")) $iterVelocityTools.addMetaTag($metaOG)
 
437#set($metaOG = {}) #set($temp = $metaOG.put("property","og:url")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($fullUrl)")) $iterVelocityTools.addMetaTag($metaOG)
 
438#set($metaOG = {}) #set($temp = $metaOG.put("property","og:image")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($imgOG)")) $iterVelocityTools.addMetaTag($metaOG)
 
439#set($metaOG = {}) #set($temp = $metaOG.put("property","og:image:width")) #set($temp = $metaOG.put("content", "$imgOGWidth")) $iterVelocityTools.addMetaTag($metaOG)
 
440#set($metaOG = {}) #set($temp = $metaOG.put("property","og:image:height")) #set($temp = $metaOG.put("content", "$imgOGHeight")) $iterVelocityTools.addMetaTag($metaOG)
 
441#set($metaOG = {}) #set($temp = $metaOG.put("property","article:published_time")) #set($temp = $metaOG.put("content", "$datePublished")) $iterVelocityTools.addMetaTag($metaOG)
 
442#set($metaOG = {}) #set($temp = $metaOG.put("property","article:modified_time")) #set($temp = $metaOG.put("content", "$dateModified")) $iterVelocityTools.addMetaTag($metaOG)
 
443#set($metaOG = {}) #set($temp = $metaOG.put("property","article:section")) #set($temp = $metaOG.put("content", "$htmlUtil.escape($section)")) $iterVelocityTools.addMetaTag($metaOG)
 
444#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:card")) #set($temp = $metaTW.put("content", "summary_large_image")) $iterVelocityTools.addMetaTag($metaTW)
 
445#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:site")) #set($temp = $metaTW.put("content", "@vanguardiamx")) $iterVelocityTools.addMetaTag($metaTW)
 
446#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:title")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($titleClean)")) $iterVelocityTools.addMetaTag($metaTW)
 
447#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:description")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($descClean)")) $iterVelocityTools.addMetaTag($metaTW)
 
448#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:image")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($imgTwitter)")) $iterVelocityTools.addMetaTag($metaTW)
 
449#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:image:alt")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($titleClean)")) $iterVelocityTools.addMetaTag($metaTW)
 
450#set($metaTW = {}) #set($temp = $metaTW.put("name","twitter:url")) #set($temp = $metaTW.put("content", "$htmlUtil.escape($fullUrl)")) $iterVelocityTools.addMetaTag($metaTW)
 
451
 
452#set($metaCSP = {}) #set($temp = $metaCSP.put("http-equiv","Content-Security-Policy")) #set($temp = $metaCSP.put("content", "upgrade-insecure-requests")) $iterVelocityTools.addMetaTag($metaCSP)
 
453
 
454<script>console.log("%c VNG-ENTREVISTA-30 v12.0","background:#e91e63;color:white;padding:4px;font-weight:bold");</script>
 
455<script>
 
456(function(){
 
457  function applyNativeLazy(img) {
 
458    if (img.closest('#ImagenPrincipalE')) return;
 
459    if (img.src && img.src.includes('placeholder/svg')) return;
 
460    if (img.hasAttribute('loading')) return;
 
461    img.loading = 'lazy';
 
462    img.decoding = 'async';
 
463  }
 
464  new MutationObserver(function(mutations) {
 
465    mutations.forEach(function(mutation) {
 
466      mutation.addedNodes.forEach(function(node) {
 
467        if (node.nodeName === 'IMG') applyNativeLazy(node);
 
468        if (node.querySelectorAll) {
 
469          node.querySelectorAll('img').forEach(applyNativeLazy);
 
470        }
 
471      });
 
472    });
 
473  }).observe(document.documentElement, {childList: true, subtree: true});
 
474  document.querySelectorAll('img').forEach(applyNativeLazy);
 
475})();
 
476</script>
 
477#if($imgLCP && $imgLCP != "")
 
478<link rel="preload" as="image" href="$htmlUtil.escape($imgLCP)" fetchpriority="high">
 
479#end
 
480<style>
 
481.block_lead{clear:none;font-weight:900;line-height:140%;margin-bottom:20px;color:#757575;font-size:1.625rem;text-align:center;max-width:620px;margin:0 auto 20px auto;width:100%}
 
482div.block_Parrafo_Lista p{margin:0 !important}
 
483div.block_Parrafo_Lista p b{height:auto;display:block;margin-top:10px}
 
484p{margin-top:0;margin-bottom:1rem;word-spacing:-2px;text-align:justify;hyphens:auto}
 
485.topicsdiv{display:grid;gap:10px;justify-content:center;margin:20px;justify-items:center}
 
486.topic-header{text-align:center;text-transform:uppercase;border-bottom:solid 2.5px #ff7c2c;margin:0 auto;font-family:'PT Sans',helvetica,arial,sans-serif;max-width:200px}
 
487div.media_block1 a div img{border-radius:50% !important;border:#ff6d00 3px solid}
 
488.author-card2{border:#c7c7c7d1 1px solid;margin-block:50px;width:90%;margin-inline:auto;padding-inline:5%;padding-top:30px;background-color:#F2F2F2;max-width:600px}
 
489.author-description{padding-inline:5%;margin-bottom:20px}
 
490.author-description a{color:#ff6d00 !important}
 
491.banner-bg{width:100%;display:flex;justify-content:center}
 
492.publicidad-container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%}
 
493.publicidad-container--top{min-height:300px}
 
494.publicidad-container--mid{min-height:650px}
 
495.publicidad-container--bot{min-height:650px}
 
496.publicidad-label{font-size:0.7rem;color:#999;text-transform:uppercase;letter-spacing:1px;margin-bottom:5px}
 
497.portlet-column{padding:0}
 
498.Ficha_Social{z-index:1;position:relative}
 
499.article_text .teaser-container{display:grid;grid-template-columns:200px 1fr;gap:0;border-left:3px solid #f07a2b;border-top:1px solid #e8e0d4;border-right:1px solid #e8e0d4;border-bottom:1px solid #e8e0d4;border-radius:4px;background:#f7f4ef;overflow:hidden;transition:box-shadow .2s ease,border-color .2s ease;margin:1.5rem auto;max-width:620px}.article_text .teaser-container:hover{box-shadow:0 2px 12px rgba(240,122,43,.12);border-left-color:#ff6d00}.article_text .teaser-image-container{overflow:hidden;min-height:120px}.article_text .teaser-image-container a{display:block;height:100%}.article_text .teaser-image-container img.teaser-image{width:100%;height:100%;object-fit:cover;display:block}.article_text .teaser-content{display:flex;flex-direction:column;justify-content:center;padding:14px 18px}.article_text .teaser-content::before{content:"TE PUEDE INTERESAR:";font-family:"PT Sans",Helvetica,Arial,sans-serif;font-size:.8rem;font-weight:700;letter-spacing:1.5px;color:#f07a2b;margin-bottom:6px}.article_text .teaser-title a{font-family:"PT Serif",Georgia,serif;font-size:1.05rem;font-weight:400;line-height:1.35;color:#1a1a1a;text-decoration:none;transition:color .2s ease}.article_text .teaser-title a:hover{color:#f07a2b}
 
500@media (min-width:768px){.topicsdiv{display:flex;gap:10px;justify-content:center;margin:20px}}
 
501@media (max-width:500px){.cintillo{font-size:13vw !important}}
 
502@media (max-width:768px){ol,ul{padding-left:1rem;padding-right:1rem}div.Entrevista_Pregunta figure.contentMedia.art-img{padding:1rem}.article_text .teaser-container{grid-template-columns:140px 1fr}.article_text .teaser-content{padding:10px 14px}.article_text .teaser-title a{font-size:1rem}.thrd-pty-wgn{grid-template-columns:1fr;padding:0 16px}.thrd-pty-txt{font-size:16px}}
 
503@media (min-width:560px){.multimediaMacroWrapper.facebook_text{max-width:500px;width:auto}}
 
504.btn-follow-wrapper{position:relative;display:flex;justify-content:center;margin:15px 0}
 
505.btn-follow-google{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;min-height:32px;border:1px solid #dadce0;border-radius:999px;font-family:Arial,Helvetica,sans-serif;font-size:14px;font-weight:500;color:#1f1f1f;background-color:#fff;text-decoration:none;cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease;box-sizing:border-box}
 
506.btn-follow-google:hover{background-color:#f8f9fa;box-shadow:0 1px 3px rgba(0,0,0,.08);text-decoration:none;color:#1f1f1f}
 
507.btn-follow-google:active{background-color:#f1f3f4}
 
508.btn-follow-plus{font-size:18px;font-weight:300;line-height:1;color:#5f6368;margin-right:2px}
 
509.btn-follow-text{white-space:nowrap;color:#3c4043}
 
510.btn-follow-google-icon{display:flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}
 
511.btn-follow-google-icon svg{width:18px;height:18px}
 
512.btn-follow-tooltip{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);background-color:#3c4043;color:#fff;font-size:12px;padding:6px 10px;border-radius:4px;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;pointer-events:none;z-index:10}
 
513.btn-follow-tooltip::before{content:'';position:absolute;bottom:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-bottom-color:#3c4043}
 
514.btn-follow-wrapper:hover .btn-follow-tooltip{opacity:1;visibility:visible}
 
515.thrd-pty-wgn{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin:24px auto;max-width:800px;box-sizing:border-box}.thrd-pty-ch{display:flex;align-items:center;justify-content:space-between;text-decoration:none;border:1px solid #e0e0e0;border-radius:999px;padding:12px 16px;transition:all .2s ease;background:#fff;min-width:0}.thrd-pty-ch:hover{border-color:#bdbdbd;background:#fafafa}.thrd-pty-ch-ctn{display:flex;align-items:center;gap:12px;min-width:0;flex:1}.thrd-pty-txt{font-size:14px;line-height:1.3;color:#111;margin:0}.g-nws-tg-icon{position:relative;width:48px;height:48px;flex-shrink:0}.g-nws-tg-icon img{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:block}.glo-wsp-icon{width:50px;height:50px;flex-shrink:0}.lnk-icon-arrow{flex-shrink:0}.lnk-icon-arrow-rect,.lnk-icon-arrow-path{transition:all .2s ease}.thrd-pty-ch:hover .lnk-icon-arrow-rect{stroke:#999}.thrd-pty-ch:hover .lnk-icon-arrow-path{fill:#999}
 
516</style>
 
517## ═══════════════════════════════════════════════════════════════
 
518## ESTRUCTURA HTML PRINCIPAL - ENTREVISTA-30
 
519## template-infinity > article.mrf-article-body
 
520##   ├─ Ad TOP
 
521##   ├─ container.title (headline + btn-follow)
 
522##   ├─ h2.subheadline
 
523##   ├─ Ad MID-1
 
524##   ├─ metadatos > temas
 
525##   ├─ author
 
526##   ├─ block_lead.destacado
 
527##   ├─ info (sección + fecha)
 
528##   ├─ info-rrss (compartir)
 
529##   ├─ ImagenPrincipalE (hero, crop_full)
 
530##   └─ container2 > col-60-40 > text.resizable > Ad MID-2 > author-card2 > Ad BOT
 
531## ═══════════════════════════════════════════════════════════════
 
532
 
533<div class="template-infinity special detail col-100-top-one-col col-12" id-next="$!art_next.reserved-article-id.data" id-section="$htmlUtil.escape($sectionID)">
 
534<article class="mrf-article-body">
 
535    <script>var group_id="$htmlUtil.escape($!request.theme-display.scope-group-id)";var id_art_infinity="$htmlUtil.escape($!reserved-article-id.data)";if(typeof n_noticia==="undefined")n_noticia=0;#if($iterVelocityTools.getVelocityVariable("teaseritemposition") == 1)var teaser_first=true;n_noticia=1;idart_view="$htmlUtil.escape($reserved-article-id.data)";#else var teaser_first=false;n_noticia=n_noticia+1;#end</script>
 
536    #set($titleForJS = $titleClean.replaceAll('"', '\\"').replaceAll("'", "\\'").replaceAll('\n', ' ').replaceAll('<', '').replaceAll('>', '').replaceAll('/', '\\/'))
 
537    <script>document.addEventListener("DOMContentLoaded",function(){if(typeof sendHitUser==="function"){sendHitUser("$titleForJS");}});</script>
 
538
 
539    <div id="eww-general" style="display:none;"></div>
 
540
 
541    ## ── AD SLOT: TOP ──
 
542    <div class="banner-bg" style="margin-top: 20px;">
 
543        <div class="publicidad-container publicidad-container--top">
 
544            <span class="publicidad-label">Publicidad</span>
 
545            <div id="div-gpt-ad-1733160976056-0"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1733160976056-0'); });</script></div>
 
546        </div>
 
547    </div>
 
548    
 
549    <div class="container title">
 
550        #set($hmSpec = {})
 
551        #getAcAssignedCatExtended_v1($hmSpec "marcadores")
 
552        <div class="headline">
 
553            #if($hmSpec && $hmSpec.size() > 0 && $hmSpec.get(0).name == "Especial")
 
554                <div class="box_marc"><div class="marc">Especial</div></div>
 
555            #end
 
556            <h1 class="headline artit font-1 medium bold" canonicalUrl="$htmlUtil.escape($canonicalUrl)" idart="$htmlUtil.escape($reserved-article-id.data)">#getTitle_v1</h1>
 
557            <div class="btn-follow-wrapper">
 
558                <a href="https://profile.google.com/cp/CgsvZy8xdGN6d2Nrag" class="btn-follow-google" aria-label="Seguir a VANGUARDIA en Google Discover" target="_blank" rel="noopener">
 
559                    <span class="btn-follow-plus">+</span>
 
560                    <span class="btn-follow-text">Seguir en</span>
 
561                    <span class="btn-follow-google-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="18" height="18"><path fill="#4285F4" d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/><path fill="#34A853" d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/><path fill="#FBBC05" d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/><path fill="#EA4335" d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/></svg></span>
 
562                </a>
 
563                <span class="btn-follow-tooltip">Seguir en Google</span>
 
564            </div>
 
565        </div>
 
566    </div>
 
567    #if($tempSubheadline && $tempSubheadline != "")
 
568        <h2 class="subheadline">#getTeaserSubheadline_v1(false)</h2>
 
569    #end
 
570
 
571    ## ── AD SLOT: MID-1 ──
 
572    <div class="banner-bg">
 
573        <div class="publicidad-container publicidad-container--mid">
 
574            <span class="publicidad-label">Publicidad</span>
 
575            <div id="div-gpt-ad-1733161081350-0"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1733161081350-0'); });</script></div>
 
576        </div>
 
577    </div>
 
578
 
579    <div class="metadatos">
 
580        <div class="temas" temas="$hmTemas.size()">
 
581            #if($hmTemas && $hmTemas.size() > 0)
 
582                <div class="topic-header">TEMAS</div> 
 
583                <div class="topicsdiv">
 
584                    #set($count = 0)
 
585                    #foreach($elem in $hmTemas)
 
586                        #if($count < 3)
 
587                            <div class="item_tema t_$hmTemas.size() keywords TemasTopics">
 
588                                <a href="/topic/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
 
589                            </div>
 
590                            #set($count = $count + 1)
 
591                        #end
 
592                    #end
 
593                </div>
 
594            #end
 
595            #if($hmGeografico && $hmGeografico.size() > 0)
 
596                <div class="topic-header">Localizaciones</div>
 
597                <div class="topicsdiv">
 
598                    #set($count = 0)
 
599                    #foreach($elem in $hmGeografico)
 
600                        #if($count < 3)
 
601                            <div class="item_tema t_$hmGeografico.size() keywords TemasLocalizaciones">
 
602                                <a href="/localizaciones/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
 
603                            </div>
 
604                            #set($count = $count + 1)
 
605                        #end
 
606                    #end
 
607                </div>
 
608            #end
 
609            #if($hmPersonajes && $hmPersonajes.size() > 0)
 
610                <div class="topic-header">Personajes</div>
 
611                <div class="topicsdiv">
 
612                    #set($count = 0)
 
613                    #foreach($elem in $hmPersonajes)
 
614                        #if($count < 3)
 
615                            <div class="item_tema t_$hmPersonajes.size() keywords TemasPersonajes">
 
616                                <a href="/personajes/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
 
617                            </div>
 
618                            #set($count = $count + 1)
 
619                        #end
 
620                    #end
 
621                </div>
 
622            #end   
 
623            #if($hmCompanies && $hmCompanies.size() > 0)
 
624                <div class="topic-header">Organizaciones</div>
 
625                <div class="topicsdiv">
 
626                    #set($count = 0)
 
627                    #foreach($elem in $hmCompanies)
 
628                        #if($count < 3)
 
629                            <div class="item_tema t_$hmCompanies.size() keywords TemasOrganizaciones">
 
630                                <a href="/organizaciones/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a>
 
631                            </div>
 
632                            #set($count = $count + 1)
 
633                        #end
 
634                    #end
 
635                </div>
 
636            #end
 
637        </div>
 
638    </div>
 
639    <div class="author">
 
640        #if($hmAutores && $hmAutores.size() > 0)
 
641            #foreach ($elem in $hmAutores)
 
642                <div class="text_author">por <span class="name_author"><a href="/autor/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">$htmlUtil.escape($elem.name)</a></span></div> 
 
643            #end
 
644        #end
 
645    </div>
 
646    #set($leadDestacado = $articleToolbox.getTag(null, 'Lead'))
 
647    #if($leadDestacado && $leadDestacado.data && $leadDestacado.data.trim() != "")
 
648    <div class="block_lead destacado">$!leadDestacado.data</div>
 
649    #end
 
650
 
651    <div class="info" style="justify-content: center; display: flex;">
 
652        <span class="secc">#printTopcontainer_v1("section" "")</span>
 
653    </div>
 
654    <div class="info" style="justify-content: center; display: flex;">
 
655        <span class="date">$htmlUtil.escape($dateDisplay)</span> 
 
656    </div>
 
657    <div class="info-rrss">
 
658        <div class="rrss end">
 
659            <div class="network-social">
 
660                #set($uEnc = $escapeTool.url($fullUrl))
 
661                #set($tEnc = $escapeTool.url($title))
 
662                <ul class="social-options">
 
663                    <li><a class="facebook" href="https://www.facebook.com/sharer/sharer.php?u=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Facebook"><div class="fab facebook"></div></a></li>
 
664                    <li><a class="twitter" href="https://twitter.com/intent/tweet?text=${tEnc}&amp;url=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Twitter"><div class="fab twitter"></div></a></li>
 
665                    <li><a class="whatsapp" href="https://api.whatsapp.com/send?text=${tEnc}%20-%20${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Whatsapp"><div class="fab whatsapp"></div></a></li>
 
666                    <li><a class="linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=${uEnc}" target="_blank" rel="noopener noreferrer nofollow" title="Compartir en Linkedin"><div class="fab linkedin"></div></a></li>
 
667                </ul>
 
668            </div>
 
669        </div>
 
670    </div>
 
671  <div id="ImagenPrincipalE" class="container-fluid">
 
672    $!articleToolbox.getImageTag2("Image","0","crop_full","","","","true","$htmlUtil.escape($!title)","$htmlUtil.escape($!title)","100%")
 
673  </div>
 
674  <script>
 
675  (function(){
 
676      var img=document.querySelector('#ImagenPrincipalE img');
 
677      if(!img) return;
 
678      var real=img.getAttribute('data-src')||'';
 
679      if(real){img.src=real;img.removeAttribute('data-src');}
 
680      var realSet=img.getAttribute('data-srcset')||'';
 
681      if(realSet){img.srcset=realSet;img.removeAttribute('data-srcset');}
 
682      img.setAttribute('loading','eager');
 
683      img.setAttribute('fetchpriority','high');
 
684      img.removeAttribute('decoding');
 
685      img.classList.remove('lazyload','lazyloading','lazyloaded');
 
686  })();
 
687  </script>
 
688
 
689    <div class="container2">
 
690        <div class="canonical hidden"></div>
 
691        #set($NombreAutor = "")
 
692        #set($IDAutor = "")
 
693        #if($hmAutores && $hmAutores.size() > 0)
 
694            #foreach($elem in $hmAutores)
 
695                #set($NombreAutor = $htmlUtil.escape($elem.name))
 
696                #set($IDAutor = $htmlUtil.escape($elem.id))
 
697            #end
 
698        #end
 
699
 
700        <div id="eww-save-post" style="display:none;"></div>
 
701
 
702        <div id="col-60-40-top-one-col" data-post-type="$htmlUtil.escape($product)" data-section="$htmlUtil.escape($section)" data-events='{
 
703            "author": "$NombreAutor",
 
704            "section": "$htmlUtil.escape($section)",
 
705            "post_title": "$htmlUtil.escape($title)",
 
706            "post_id": "$htmlUtil.escape($reserved-article-id.data)",
 
707            "author_id": "$IDAutor"
 
708        }'>
 
709            <div class="text resizable" itemprop="articleBody">
 
710                #printHTMLContentArticle_v1_latam($arrayListContenidos, "crop_2000x1125", "100%", "100%", "375", $addInParagraph)
 
711
 
712                        <div class="thrd-pty-wgn">
 
713                            <a aria-label="Google News" class="thrd-pty-ch" href="https://news.google.com/publications/CAAqLQgKIidDQklTRndnTWFoTUtFWFpoYm1kMVlYSmthV0V1WTI5dExtMTRLQUFQAQ?ceid=US:es-419&oc=3" target="_blank" rel="noopener noreferrer"><div class="thrd-pty-ch-ctn"><div class="g-nws-tg-icon"><svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" rx="24" fill="#F1F3F4"/><rect x="0.5" y="0.5" width="47" height="47" rx="23.5" stroke="#DADCE0"/></svg><img alt="Google News" height="22" width="26" src="https://vanguardia.com.mx/binrepository/google-news-icon_1-14239467_20260119191111.png" loading="lazy"></div><p class="thrd-pty-txt">Sigue a <strong>Vanguardia</strong> en Google News.</p></div><svg width="32" height="32" class="lnk-icon-arrow" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.5" y="0.5" width="31" height="31" rx="15.5" class="lnk-icon-arrow-rect" stroke="#C2C2C2"></rect><path class="lnk-icon-arrow-path" d="M20.8188 10.0464C20.0855 10.0464 15.031 10.0726 13.2152 10.0726C12.8137 10.0726 12.4819 10.2123 12.255 10.5615C12.0367 10.9019 12.0193 11.286 12.2288 11.6352C12.4296 11.9931 12.7613 12.1677 13.189 12.1765C14.7866 12.1677 18.3483 12.1677 18.3483 12.1677L10.3432 20.1729C9.93285 20.5832 9.93285 21.2466 10.3432 21.6569C10.7534 22.0672 11.4169 22.0672 11.8272 21.6569L19.8411 13.6431C19.8411 13.6431 19.8411 17.2048 19.8323 18.8023C19.8323 19.2213 20.0069 19.5531 20.3736 19.7626C20.7315 19.9634 21.0982 19.9459 21.4473 19.7364C21.7965 19.5094 21.9362 19.1777 21.9362 18.7761C21.9449 16.9691 21.9624 11.1725 21.9624 11.1725C21.9624 10.4742 21.5346 10.0464 20.8275 10.0377L20.8188 10.0464Z" fill="#C2C2C2"></path></svg></a>
 
714                            <a aria-label="WhatsApp" class="thrd-pty-ch" href="https://whatsapp.com/channel/0029Va2n3TCA2pL9rkrqWx2b" target="_blank" rel="noopener noreferrer"><div class="thrd-pty-ch-ctn"><svg width="48" height="48" class="glo-wsp-icon" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="48" height="48" rx="24" fill="#02840C" fill-opacity="0.05"></rect><rect x="0.5" y="0.5" width="47" height="47" rx="23.5" stroke="#02840C" stroke-opacity="0.7"></rect><path d="M27.43 25.4144C27.15 25.2811 26.95 25.3878 26.7634 25.6277C26.5101 25.9877 26.2035 26.321 25.9369 26.6676C25.7502 26.9075 25.5369 26.9609 25.2569 26.8409C23.4972 26.1343 22.1641 24.9745 21.1909 23.3747C21.0442 23.1348 21.0576 22.9481 21.2309 22.7348C21.4842 22.4282 21.7241 22.1349 21.9241 21.8016C22.0174 21.6416 22.0707 21.3883 22.0174 21.2284C21.7108 20.4152 21.3642 19.6286 21.0176 18.8287C20.9509 18.6821 20.8176 18.4954 20.6843 18.4821C20.1377 18.3888 19.5644 18.2821 19.0978 18.7354C18.1647 19.6153 17.818 20.6951 18.058 21.9349C18.2713 23.0414 18.8979 23.948 19.5644 24.8412C20.8309 26.4943 22.2974 27.9341 24.2438 28.7873C25.1903 29.2139 26.1502 29.6405 27.2167 29.6405C27.4033 29.6405 27.5899 29.6405 27.7632 29.6005C29.1764 29.3072 30.1762 28.5073 30.1229 27.0275C30.1229 26.8809 30.0296 26.6676 29.9229 26.6143C29.0964 26.1876 28.2698 25.801 27.43 25.4144Z" fill="#02840C"></path><path d="M35.9216 22.3087C35.0951 15.6963 28.7094 11.017 22.0837 12.1768C14.4714 13.4966 10.0721 21.4288 13.0316 28.4944C13.7915 29.4943 13.5916 30.5208 13.2316 31.6273C12.765 33.0404 12.4184 34.5069 12.0051 36C12.1784 35.96 12.2984 35.9467 12.4184 35.9067C14.2581 35.4268 16.0979 34.9602 17.9109 34.4802C18.2309 34.4002 18.4708 34.4402 18.7641 34.5869C21.2571 35.8 23.8834 36.1466 26.5763 35.5601C32.7488 34.1869 36.6815 28.5744 35.895 22.3353L35.9216 22.3087ZM25.5765 33.6937C23.2168 34.0669 21.0038 33.587 18.9241 32.4005C18.7641 32.3072 18.5108 32.2672 18.3109 32.3205C17.191 32.5872 16.0712 32.8938 14.8714 33.2004C15.178 32.0539 15.458 31.0007 15.7646 29.9209C15.8446 29.6409 15.8046 29.441 15.6579 29.201C12.0051 23.3219 15.1513 15.8163 21.9237 14.2565C27.4295 12.9767 33.0421 16.7761 33.8819 22.362C34.7085 27.8279 31.0423 32.8405 25.5765 33.6937Z" fill="#02840C"></path></svg><p class="thrd-pty-txt">Noticias de <strong>Vanguardia</strong> en WhatsApp.</p></div><svg width="32" height="32" class="lnk-icon-arrow" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.5" y="0.5" width="31" height="31" rx="15.5" class="lnk-icon-arrow-rect" stroke="#C2C2C2"></rect><path class="lnk-icon-arrow-path" d="M20.8188 10.0464C20.0855 10.0464 15.031 10.0726 13.2152 10.0726C12.8137 10.0726 12.4819 10.2123 12.255 10.5615C12.0367 10.9019 12.0193 11.286 12.2288 11.6352C12.4296 11.9931 12.7613 12.1677 13.189 12.1765C14.7866 12.1677 18.3483 12.1677 18.3483 12.1677L10.3432 20.1729C9.93285 20.5832 9.93285 21.2466 10.3432 21.6569C10.7534 22.0672 11.4169 22.0672 11.8272 21.6569L19.8411 13.6431C19.8411 13.6431 19.8411 17.2048 19.8323 18.8023C19.8323 19.2213 20.0069 19.5531 20.3736 19.7626C20.7315 19.9634 21.0982 19.9459 21.4473 19.7364C21.7965 19.5094 21.9362 19.1777 21.9362 18.7761C21.9449 16.9691 21.9624 11.1725 21.9624 11.1725C21.9624 10.4742 21.5346 10.0464 20.8275 10.0377L20.8188 10.0464Z" fill="#C2C2C2"></path></svg></a>
 
715                        </div>
 
716
 
717                ## ── AD SLOT: MID-2 ──
 
718                <div class="banner-bg">
 
719                    <div class="publicidad-container publicidad-container--mid">
 
720                        <span class="publicidad-label">Publicidad</span>
 
721                        <div id="div-gpt-ad-1733161131848-0"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1733161131848-0'); });</script></div>
 
722                    </div>
 
723                </div>
 
724            </div>
 
725            #if($hmAutores && $hmAutores.size() > 0)
 
726                #foreach($elem in $hmAutores)
 
727                    #set($NombreAutor = $htmlUtil.escape($elem.name))
 
728                    #set($IDAutor = $htmlUtil.escape($elem.id))
 
729                    <div class="categoryListItem categoryPageItem" data-categoryid="$IDAutor" data-categoryname="$NombreAutor"></div>
 
730                    #set($articuloAutor = $aboutCategoryArticles.getArticle("$elem.id"))
 
731                    #if($articuloAutor)
 
732                        #set($imgAuthor = $!articuloAutor.getImageTag("Image","0","crop_250x250","","","","","$htmlUtil.escape($!articuloAutor.Headline.data)","",""))
 
733                        #if($articuloAutor.Text && $articuloAutor.Text.data && $articuloAutor.Text.data.trim() != "" && $articuloAutor.Headline && $articuloAutor.Headline.data && $articuloAutor.Headline.data.trim() != "")
 
734                            <div style="border-top: solid 1px #80808047; margin-top: 30px;"></div>
 
735                            <div class="author-card2">
 
736                                <div class="row"><div class="col-12" style="display: flex; justify-content: center;">
 
737                                    <div class="media_block1" style="padding: 1rem; margin-top: 15px;">
 
738                                        <a style="width: 140px; display: flex; margin: auto;" href="/autor/-/meta/$htmlUtil.escapeURL($elem.friendlyname)" title="$htmlUtil.escape($!articuloAutor.Headline.data)">$!imgAuthor</a>
 
739                                        <a style="color: black;" href="/autor/-/meta/$htmlUtil.escapeURL($elem.friendlyname)">
 
740                                            <p style="font-size: 1.7rem; font-family: 'PT Serif', Georgia, serif; font-weight: 400; line-height: 120%; margin-top: 15px;">$htmlUtil.escape($!articuloAutor.Headline.data)</p>
 
741                                        </a>
 
742                                    </div>
 
743                                </div></div>
 
744                                <div class="row"><div class="col-12" style="display: flex; justify-content: center; margin-bottom: 30px;">
 
745                                    <div class="text_block">
 
746                                        #set($authorDescRaw = $!articuloAutor.Text.data)
 
747                                        #set($authorDescSafe = $authorDescRaw.replaceAll("(?i)<script[^>]*>.*?</script>", "").replaceAll("(?i)on\\w+\\s*=", "data-removed=").replaceAll("(?i)javascript:", ""))
 
748                                        <div class="author-description">$!authorDescSafe</div>
 
749                                        <div class="row"><div class="col-12" style="display: flex; justify-content: center;">
 
750                                            #if($articuloAutor.twitterProfile && $articuloAutor.twitterProfile.data != "")
 
751                                                #set($twitterUrl = $articuloAutor.twitterProfile.data.replaceAll("[^a-zA-Z0-9:/._-]", ""))
 
752                                                <div style="margin-right: 20px;" class="author-twitter1">
 
753                                                    <a href="$htmlUtil.escape($twitterUrl)" target="_blank" rel="noopener noreferrer nofollow">
 
754                                                        <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512" style="font-size: 30px;" fill="#FF6600"><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg>
 
755                                                    </a>
 
756                                                </div>
 
757                                            #end
 
758                                            #if($articuloAutor.emailAutor && $articuloAutor.emailAutor.data != "")
 
759                                                #set($emailClean = $articuloAutor.emailAutor.data.replaceAll("[^a-zA-Z0-9@._-]", ""))
 
760                                                <div class="author-email1">
 
761                                                    <a href="mailto:$htmlUtil.escape($emailClean)">
 
762                                                        <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 0 512 512" style="font-size: 30px;" fill="#FF6600"><path d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"/></svg>
 
763                                                    </a>
 
764                                                </div>
 
765                                            #end
 
766                                        </div></div>
 
767                                    </div>
 
768                                </div></div>
 
769                            </div>
 
770                        #end
 
771                    #end
 
772                #end
 
773            #end
 
774        </div>
 
775
 
776        #if($Generic && $Generic.getSiblings().size() > 0)
 
777            <ul class="generic">
 
778                #foreach($el in $Generic.getSiblings())
 
779                    <li><span class="icon"></span><a href="$htmlUtil.escape($!el.Document.data)">$htmlUtil.escape($!el.data) ($htmlUtil.escape($el.Extension.data))</a></li>
 
780                #end
 
781            </ul>
 
782        #end
 
783
 
784        #set($urlLink = $articleToolbox.getTag(null,"linkURL"))
 
785        #set($titleLink = $articleToolbox.getTag(null,"linkTitle"))
 
786        #if(($urlLink && $urlLink.data != "") && ($titleLink && $titleLink.data != ""))
 
787            #set($urlLinkClean = $urlLink.data.replaceAll("[<>\"']", ""))
 
788            <a class="ext_link" href="$htmlUtil.escape($urlLinkClean)" target="_blank" rel="nofollow noopener noreferrer"><strong>$htmlUtil.escape($!titleLink.data)</strong></a>
 
789        #end
 
790
 
791        #if($linkIntTitle && $linkIntTitle.getSiblings().size() > 0)
 
792            <div class="link_tpi">
 
793                <div class="head_int"><span class="icon"></span> TE PUEDE INTERESAR: </div>
 
794                #foreach($el in $linkIntTitle.getSiblings())
 
795                    #set($intUrlClean = $el.linkIntURL.data.replaceAll("[<>\"']", ""))
 
796                    <div class="item_int"><a href="$htmlUtil.escape($intUrlClean)">$htmlUtil.escape($!el.data)</a></div>
 
797                #end
 
798            </div>
 
799        #end
 
800
 
801        <div style="border-top: solid 1px #80808047; margin-top: 30px;"></div>
 
802        ## ── AD SLOT: BOT ──
 
803        <div class="banner-bg">
 
804            <div class="publicidad-container publicidad-container--bot">
 
805                <span class="publicidad-label">Publicidad</span>
 
806                <div id="div-gpt-ad-1733161178287-0"><script>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1733161178287-0'); });</script></div>
 
807            </div>
 
808        </div>
 
809
 
810    </div>
 
811
 
812</article>
 
813</div>
 
814
 
815#set($urlExterna = $articleToolbox.getTag(null,"URLCanonical"))
 
816#if($urlExterna && $urlExterna.data != "")
 
817    #set($urlExternaData = $urlExterna.data)
 
818    #set($urlExternaData = $urlExternaData.replaceAll("<.*?>",""))
 
819    #set($urlExternaData = $urlExternaData.replaceAll("[\"']",""))
 
820    #set($linkCanonical = {})
 
821    #set($temp = $linkCanonical.put("rel","canonical"))
 
822    #set($temp = $linkCanonical.put("href",$htmlUtil.escape($urlExternaData)))
 
823    $iterVelocityTools.addLinkTag($linkCanonical)
 
824    #set($urlmrf = "#siteUrl()$url_actual")
 
825    #set($linkCanonical2 = {})
 
826    #set($temp = $linkCanonical2.put("property","mrf:canonical"))
 
827    #set($temp = $linkCanonical2.put("content",$htmlUtil.escape($urlmrf)))
 
828    $iterVelocityTools.addMetaTag($linkCanonical2)
 
829#end
 
830
 
831<script>
 
832document.addEventListener("DOMContentLoaded",function(){
 
833    var pageTitle="$!{titleClean}";
 
834    document.querySelectorAll('img:not([alt]), img[alt=""]').forEach(function(img){img.setAttribute('alt',pageTitle);});
 
835    document.querySelectorAll('img:not([title]), img[title=""]').forEach(function(img){img.setAttribute('title',pageTitle);});
 
836    var mainImg=document.querySelector('#ImagenPrincipalE img');
 
837    if(mainImg){
 
838        var ds=mainImg.getAttribute('data-src');
 
839        if(ds){mainImg.src=ds;mainImg.removeAttribute('data-src');}
 
840        var dss=mainImg.getAttribute('data-srcset');
 
841        if(dss){mainImg.srcset=dss;mainImg.removeAttribute('data-srcset');}
 
842        mainImg.setAttribute('loading','eager');
 
843        mainImg.setAttribute('fetchpriority','high');
 
844        mainImg.removeAttribute('decoding');
 
845        mainImg.classList.remove('lazyload','lazyloading','lazyloaded');
 
846    }
 
847    document.querySelectorAll('.block_Parrafo_Lista').forEach(function(b){var p=b.querySelectorAll('p'),c='',r=[];p.forEach(function(e){if(!e.classList.length){c+=e.innerHTML.trim()+' ';r.push(e)}});if(c.trim()){var n=document.createElement('p');n.innerHTML=c.trim();b.appendChild(n)}r.forEach(function(e){e.remove()})});
 
848    if(document.body.hasAttribute('itemscope')){document.body.removeAttribute('itemscope');document.body.removeAttribute('itemtype');}
 
849    document.querySelectorAll('[itemprop]').forEach(function(el){el.removeAttribute('itemprop');el.removeAttribute('itemscope');el.removeAttribute('itemtype');});
 
850    document.querySelectorAll('script[type="application/ld+json"]').forEach(function(script){var content=script.textContent||"";if(script.id!=='vangdata-schema-newsarticle'&&(content.includes('"NewsArticle"')||content.includes('"Article"'))){script.remove();}});
 
851    document.querySelectorAll('iframe').forEach(function(oldIframe){var src=oldIframe.src||oldIframe.getAttribute('data-src')||'';if(src.indexOf('youtube.com')>-1||src.indexOf('youtu.be')>-1){var newIframe=document.createElement('iframe');newIframe.src=src;newIframe.width=oldIframe.width||'100%';newIframe.height=oldIframe.height||'315';newIframe.frameBorder='0';newIframe.setAttribute('loading','lazy');newIframe.setAttribute('referrerpolicy','strict-origin-when-cross-origin');newIframe.setAttribute('allow','accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture;web-share');newIframe.setAttribute('allowfullscreen','');newIframe.style.cssText=oldIframe.style.cssText||'max-width:100%;';if(oldIframe.className)newIframe.className=oldIframe.className;oldIframe.parentNode.replaceChild(newIframe,oldIframe);}});
 
852});
 
853</script>