Ocorreu um erro ao processar o template.
Java method "as.asac.template.tools.DLToolImpl.getDLFileEntryByPath(String)" threw an exception when invoked on as.asac.template.tools.DLToolImpl object "as.asac.template.tools.DLToolImpl@a8d4437"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign dlFileEntry = dlTool.getDLFil...  [in template "37703#37743#1558463" at line 242, column 81]
----
1<#-- Services --> 
2<#assign assetEntryLocalServiceUtil = serviceLocator.findService("com.liferay.asset.kernel.service.AssetEntryLocalService")/> 
3<#assign assetLinkLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetLinkLocalService")/> 
4<#assign journalArticleResourceServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleResourceLocalService")/> 
5<#assign assetCategoryLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetCategoryLocalService") /> 
6<#assign assetVocabularyLocalService = serviceLocator.findService("com.liferay.asset.kernel.service.AssetVocabularyLocalService") /> 
7 
8<#-- Reserved vbles --> 
9<#assign title = .vars['reserved-article-title'].data> 
10<#assign articleId=.vars["reserved-article-id"].data /> 
11<#assign description=.vars["reserved-article-description"].data /> 
12<#assign smallImageUrl=.vars["reserved-article-small-image-url"].data /> 
13<#assign date=.vars["reserved-article-display-date"].data /> 
14<#assign request = .vars['request']> 
15 
16<#-- Init --> 
17<#assign assetEntry = journalTool.getAssetEntryByArticleId(groupId, articleId)> 
18<#assign journalArticle = journalTool.getJournalArticleByAssetEntry(assetEntry)> 
19<#assign articleURL = themeDisplay.getURLPortal()+themeDisplay.getURLCurrent()> 
20<#assign articleSocialBookmarks = themeDisplay.getThemeSetting("article-social-bookmarks")!> 
21<#assign layoutSetBannerPath = layoutTool.getLayoutSetBannerPath(groupId, themeDisplay.getLayout().isPrivateLayout())!> 
22<#assign articleMainImageThumbnail3 = dlTool.getThumbnail(smallImageUrl, "3", layoutSetBannerPath)! /> 
23<#assign articleMainImageThumbnail1 = dlTool.getThumbnail(smallImageUrl, "1")! /> 
24 
25<#assign ddmStructureNameNormalize = "template-${friendlyURLNormalizerTool.normalize(journalArticle.getDDMStructure().getName(localeUtil.getDefault()))}" /> 
26 
27<#function sanitizeURL url> 
28	<#if !url?has_content> 
29		<#return "" /> 
30	</#if> 
31	<#assign urlTrimmed = url?trim /> 
32	<#if urlTrimmed?starts_with("javascript:") || urlTrimmed?starts_with("data:") || urlTrimmed?starts_with("vbscript:")> 
33		<#return "" /> 
34	</#if> 
35	<#return htmlUtil.escapeHREF(urlTrimmed) /> 
36</#function> 
37 
38<#function isExternalURL url> 
39	<#if !url?has_content> 
40		<#return false /> 
41	</#if> 
42	<#assign portalURLlc = themeDisplay.getPortalURL()?lower_case /> 
43	<#assign urlLC = url?lower_case /> 
44	<#assign isHttp = urlLC?starts_with("http://") || urlLC?starts_with("https://") /> 
45	<#assign isInternal = (url?starts_with("/")) || (isHttp && urlLC?starts_with(portalURLlc)) /> 
46	<#return isHttp && !isInternal /> 
47</#function> 
48 
49<#-- Build --> 
50<#if Nombre.data?has_content> 
51	<#assign title = Nombre.data> 
52</#if> 
53<#assign altImgDestacada = title /> 
54<#if AltImagenDestacada ??> 
55	<#if validator.isNotNull(AltImagenDestacada.getData())> 
56		<#assign altImgDestacada = AltImagenDestacada.getData() /> 
57	</#if> 
58</#if> 
59<#assign articleMainImageThumbnail3Safe = sanitizeURL(articleMainImageThumbnail3) /> 
60<#assign articleMainImageThumbnail1Safe = sanitizeURL(articleMainImageThumbnail1) /> 
61 
62<#-- Validaciones de TAB --> 
63<#assign limitacionPeso = (AsturiasMascotas.LimitacionPeso.data)!"" /> 
64<#assign NumeroMaximoPersona = (AsturiasMascotas.NumeroMaximoPersona.data)!"" /> 
65<#assign NumeroMaximoInterior = (AsturiasMascotas.NumeroMaximoInterior.data)!"" /> 
66<#assign AccesoInterior = (AsturiasMascotas.AccesoInterior.data)!"" /> 
67<#assign admitePPP = (AsturiasMascotas.AdmitePPP.data)!"" /> 
68<#assign AccesoTerraza = (AsturiasMascotas.AccesoTerraza.data)!"" /> 
69<#assign otrasMascotas = (AsturiasMascotas.OtrasMascotas.data)!"" /> 
70<#assign otrosAnimales = (AsturiasMascotas.OtrosAnimales.data)!"" /> 
71<#assign detalleNormas = (AsturiasMascotas.DetalleNormas.data)!"" /> 
72 
73<#assign hasIconos = limitacionPeso?has_content || NumeroMaximoPersona?has_content || NumeroMaximoInterior?has_content || AccesoInterior?has_content /> 
74<#assign hasNormas = admitePPP?has_content || AccesoTerraza?has_content || otrasMascotas?has_content || detalleNormas?has_content /> 
75 
76<article class="template ${ddmStructureNameNormalize}" role="article"> 
77	<header class="article-header-wrapper row no-gutters"> 
78		<div class="article-header-container article-header-container-static"> 
79			<div class="container"> 
80				<div class="row no-gutters"> 
81					<div class="col-md-6"> 
82						<div class="article-image" style="background-image: url('${sanitizeURL(articleMainImageThumbnail3Safe)}')" role="img" aria-label="${altImgDestacada}"> 
83							<img class="hide-accessible" src="${sanitizeURL(articleMainImageThumbnail3Safe)}" alt=""/> 
84						</div> 
85					</div> 
86					<div class="article-info-wrapper col-md-6"> 
87						<div class="article-info"> 
88							<h2 class="article-title" >${title}</h2> 
89							<div class="article-list-wrapper">					 
90								<ul class="article-list list-unstyled article-list-info"> 
91									<li class="article-list-item mb-4"> 
92										<span class="fas fa-map-marker-alt" aria-hidden="true"></span> 
93										<span class="hide-accessible">${languageUtil.get(request,"location")}</span> 
94										<span class="field-wrapper"> 
95											<#if (Contacto.Concejo.data)!?has_content> 
96												<span class="important">${Contacto.Concejo.data}</span> 
97											</#if> 
98											<#if (Contacto.Zona.data)!?has_content> 
99												<span class="text d-block">${Contacto.Zona.data}</span> 
100											</#if> 
101										</span> 
102									</li> 
103									<#if (Contacto.Direccion.data)!?has_content || (Contacto.CP.data)!?has_content || (Contacto.Localidad.data)!?has_content> 
104										<li class="article-list-item"> 
105											<span class="far fa-address-card" aria-hidden="true"></span> 
106											<span class="hide-accessible">${languageUtil.get(request,"address")}</span> 
107											<span class="field-wrapper"> 
108												<span class="field">${languageUtil.get(request, "address")}:</span> 
109												<span class="text">${(Contacto.Direccion.data)!}</span><span aria-hidden="true"> ■ </span> 
110												<span class="text">${(Contacto.CP.data)!} - ${(Contacto.Localidad.data)!}</span> 
111											</span> 
112										</li> 
113									</#if> 
114									 
115									<#if (Contacto.Telefono.data)!?has_content>									 
116										<li class="article-list-item"> 
117											<span class="fas fa-phone-alt" aria-hidden="true"></span> 
118											<span class="hide-accessible">${languageUtil.get(request, "phone")}</span> 
119											<span class="field-wrapper"> 
120												<span class="field">${languageUtil.get(request, "phone")}:</span> 
121												<#list Contacto.Telefono.getSiblings() as telephone> 
122													<#if telephone.data?has_content> 
123														<#assign rawTelefono = telephone.data?trim /> 
124														<#assign cleanTelefono = rawTelefono?replace("\\(.*?\\)", "", "r") /> 
125														<#assign numberTelefono = cleanTelefono?replace("[^0-9]", "", "r") /> 
126														<#assign numberLength = numberTelefono?length /> 
127														<#if numberLength == 9> 
128															<#assign hrefNumber = "+34${numberTelefono}" /> 
129														<#else> 
130															<#assign hrefNumber = numberTelefono /> 
131														</#if> 
132														<span class="text"> 
133															<a href="tel:${htmlUtil.escapeHREF(hrefNumber)}" aria-label="${languageUtil.format(request, 'call', rawTelefono)}"> 
134																${rawTelefono} 
135															</a> 
136															<#if !telephone?is_last><span aria-hidden="true"> | </span></#if> 
137														</span> 
138													</#if> 
139												</#list> 
140											</span> 
141										</li> 
142									</#if> 
143 
144									<#if Contacto.Email.getData()?has_content> 
145										<li class="article-list-item"> 
146											<span class="far fa-envelope" aria-hidden="true"></span> 
147											<span class="hide-accessible">${languageUtil.get(request,"email")}</span> 
148											<span class="field-wrapper"> 
149												<span class="field">${languageUtil.get(request, "email")}:</span> 
150												<span class="text"> 
151													<#list Contacto.Email.getSiblings() as Item> 
152														<#if Item.data?trim?has_content> 
153															<#assign emailAddress = Item.data?trim /> 
154															<a href="mailto:${htmlUtil.escapeHREF(emailAddress)}" aria-label="${languageUtil.format(request,'email-to', emailAddress)}"> 
155																${emailAddress} 
156															</a> 
157															<#if Item_has_next>, </#if> 
158														</#if> 
159													</#list> 
160												</span> 
161											</span> 
162										</li> 
163									</#if> 
164 
165									<#if Contacto.Web?? && Contacto.Web.getSiblings()?has_content> 
166										<#assign hasValidURL = false /> 
167										<#list Contacto.Web.getSiblings() as web> 
168											<#if web.data?trim?has_content> 
169												<#assign linkURL = web.data?trim /> 
170												<#if !linkURL?starts_with("javascript:") && !linkURL?starts_with("data:") && !linkURL?starts_with("vbscript:")> 
171													<#assign hasValidURL = true /> 
172													<#break> 
173												</#if> 
174											</#if> 
175										</#list> 
176										<#if hasValidURL> 
177											<li class="article-list-item web"> 
178												<span class="fas fa-link" aria-hidden="true"></span> 
179												<span class="field-wrapper d-inline-flex flex-wrap align-items-center gap-2"> 
180													<span class="field mr-1">${languageUtil.get(request, "site")}:</span> 
181													<#assign webCount = 0 /> 
182													<#list Contacto.Web.getSiblings() as web> 
183														<#if web.data?trim?has_content> 
184															<#assign linkURL = web.data?trim /> 
185															<#if !linkURL?starts_with("javascript:") && !linkURL?starts_with("data:") && !linkURL?starts_with("vbscript:")> 
186																<#assign webCount = webCount + 1 /> 
187															</#if> 
188														</#if> 
189													</#list> 
190													<#assign validIndex = 0 /> 
191													<#list Contacto.Web.getSiblings() as web> 
192														<#if web.data?trim?has_content> 
193															<#assign linkURL = web.data?trim /> 
194															<#if !linkURL?starts_with("javascript:") && !linkURL?starts_with("data:") && !linkURL?starts_with("vbscript:")> 
195																<#if !stringUtil.startsWith(linkURL, "http://") && !stringUtil.startsWith(linkURL, "https://")> 
196																	<#assign linkURL = "https://${linkURL}" /> 
197																</#if> 
198																<#assign validIndex = validIndex + 1 /> 
199																<#assign linkNumber = validIndex /> 
200																<a href="${htmlUtil.escapeHREF(linkURL)}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.get(request, 'site')} ${linkNumber} - ${htmlUtil.escape(title)} (${languageUtil.get(request, 'opens-new-window')})" class="text d-inline-flex align-items-center gap-1 text-nowrap"> 
201																	<#if webCount gt 1> 
202																		${languageUtil.get(request, "visit")} ${linkNumber} 
203																	<#else> 
204																		${languageUtil.get(request, "visit")} 
205																	</#if> 
206																	<span class="fas fa-external-link-alt ml-1 font-size-08" aria-hidden="true"></span> 
207																</a> 
208																<#if validIndex lt webCount> 
209																	<span class="mx-2 text-muted">|</span> 
210																</#if> 
211															</#if> 
212														</#if> 
213													</#list> 
214												</span> 
215											</li> 
216										</#if> 
217									</#if>	 
218									 
219									<#if (Informacion.Horario.data)!?has_content || (Informacion.Tarifas.data)!?has_content> 
220										<li class="article-list-item web"> 
221											<span class="fas fa-clock" aria-hidden="true"></span> 
222											<span class="field-wrapper"> 
223												<span class="field">${languageUtil.get(request, "infoasturias-horarios-y-tarifas")}:</span> 
224												<span class="text"> 
225													<a href="#tabContent2" class="internal-tab-link" data-tab-heading="tabHeading2" data-tab-content="tabContent2" aria-label="${languageUtil.get(request, 'infoasturias-horarios-y-tarifas')}"> 
226														${languageUtil.get(request, "view")} 
227														<span class="fas fa-caret-right ml-1 font-size-08" aria-hidden="true"></span> 
228													</a> 
229												</span> 
230											</span> 
231										</li> 
232									</#if> 
233									<#if (Informacion.Visit.data)!?has_content> 
234										<li class="article-list-item web"> 
235											<span class="fas fa-door-open" aria-hidden="true"></span> 
236											<span class="field-wrapper"> 
237												<span class="field">${Informacion.Visit.data}</span> 
238											</span> 
239										</li> 
240									</#if>		 
241									<#if (Descargas.Archivo.data)!?has_content> 
242										<#assign dlFileEntry = dlTool.getDLFileEntryByPath(Descargas.Archivo.data) /> 
243										<#if (dlFileEntry)!?has_content> 
244											<#assign ext = dlFileEntry.getExtension()! /> 
245											<li class="article-list-item document document-${htmlUtil.escape(ext)}"> 
246												<span class="fas fa-file" aria-hidden="true"></span> 
247												<span class="hide-accessible">${languageUtil.get(request,"related-documents")}</span> 
248												<span class="field-wrapper"> 
249													<span class="field">${languageUtil.get(request, "related-documents")}:</span> 
250													<span class="text"> 
251														<#list Descargas.Archivo.getSiblings() as Item> 
252															<#if Item.data?has_content> 
253																<#assign dlFileEntry = dlTool.getDLFileEntryByPath(Item.data) /> 
254																<#if validator.isNotNull(dlFileEntry)> 
255																	<#assign downloadURL = sanitizeURL("/documents/${groupId}/${dlFileEntry.getUuid()}") /> 
256																	<#assign fileSize = dlFileEntry.getSize() /> 
257																	<#assign fileSizeKB = (fileSize / 1024)?round /> 
258																	<#assign fileExt = dlFileEntry.getExtension()?upper_case /> 
259																	<#if Item.ArchivoTitulo.data?has_content> 
260																		<#assign fileName = Item.ArchivoTitulo.data /> 
261																	<#else> 
262																		<#assign fileName = dlFileEntry.getTitle() /> 
263																	</#if> 
264																	<#assign downloadLabel = languageUtil.get(request, 'download') /> 
265																	<#assign formatLabel = languageUtil.get(request, 'format') /> 
266																	<#assign sizeLabel = languageUtil.get(request, 'size') /> 
267																	<#assign kbLabel = languageUtil.get(request, 'kb') /> 
268																	<#assign ariaLabelText = "${downloadLabel} ${fileName}, ${formatLabel} ${fileExt}, ${sizeLabel} ${fileSizeKB} ${kbLabel}" /> 
269																	<a href="${downloadURL}" download aria-label="${ariaLabelText}"> 
270																		${fileName} 
271																		<span class="file-info" aria-hidden="true"> 
272																			(${fileExt}, ${fileSizeKB} KB) 
273																		</span> 
274																		<span class="fas fa-download ml-1" aria-hidden="true"></span> 
275																	</a> 
276																	<#if Item_has_next>, </#if> 
277																</#if> 
278															</#if> 
279														</#list> 
280													</span> 
281												</span>		 
282											</li> 
283										</#if> 
284									</#if> 
285								</ul> 
286							</div> 
287							<#if (RedesSociales.Facebook.data)!?has_content || (RedesSociales.Twitter.data)!?has_content || (RedesSociales.Instagram.data)!?has_content || (RedesSociales.Youtube.data)!?has_content || (RedesSociales.TikTok.data)!?has_content || (RedesSociales.Pinterest.data)!?has_content || (RedesSociales.Rss.data)!?has_content || (RedesSociales.OtrosCanales.NombreCanal.data)!?has_content> 
288								<div class="article-socials-wrapper mt-4"> 
289									<div class="socials-wrapper"> 
290									<div class="socials"> 
291										<ul class="list-inline items socials"> 
292											<#if RedesSociales.Facebook.data?has_content> 
293												<#assign linkURLRaw = RedesSociales.Facebook.data?trim /> 
294												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
295													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
296												</#if> 
297												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
298												<#if linkURL?has_content> 
299													<li class="list-inline-item item facebook"> 
300														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','Facebook')} ${languageUtil.get(request,'opens-new-window')}"> 
301														  <span class="fab fa-facebook-f" aria-hidden="true"></span> 
302														  <span class="hide-accessible">${languageUtil.format(request,'go-to-x','Facebook')}</span> 
303														</a> 
304													</li> 
305												</#if> 
306											</#if> 
307											<#if RedesSociales.Twitter.data?has_content> 
308												<#assign linkURLRaw = RedesSociales.Twitter.data?trim /> 
309												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
310													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
311												</#if> 
312												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
313												<#if linkURL?has_content> 
314													<li class="list-inline-item item twitter"> 
315														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','X (Twitter)')} ${languageUtil.get(request,'opens-new-window')}"> 
316															<span class="fa-brands fa-x-twitter" aria-hidden="true"></span> 
317															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','X (Twitter)')}</span> 
318														</a> 
319													</li> 
320												</#if> 
321											</#if> 
322											<#if RedesSociales.Instagram.data?has_content> 
323												<#assign linkURLRaw = RedesSociales.Instagram.data?trim /> 
324												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
325													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
326												</#if> 
327												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
328												<#if linkURL?has_content> 
329													<li class="list-inline-item item instagram"> 
330														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','Instagram')} ${languageUtil.get(request,'opens-new-window')}"> 
331															<span class="fab fa-instagram" aria-hidden="true"></span> 
332															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Instagram')}</span> 
333														</a> 
334													</li> 
335												</#if> 
336											</#if> 
337											<#if RedesSociales.Youtube.data?has_content> 
338												<#assign linkURLRaw = RedesSociales.Youtube.data?trim /> 
339												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
340													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
341												</#if> 
342												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
343												<#if linkURL?has_content> 
344													<li class="list-inline-item item youtube"> 
345														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','YouTube')} ${languageUtil.get(request,'opens-new-window')}"> 
346															<span class="fab fa-youtube" aria-hidden="true"></span> 
347															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','YouTube')}</span> 
348														</a> 
349													</li> 
350												</#if> 
351											</#if> 
352											<#if (RedesSociales.Tiktok.data)!?has_content> 
353												<#assign linkURLRaw = RedesSociales.Tiktok.data?trim /> 
354												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
355													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
356												</#if> 
357												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
358												<#if linkURL?has_content> 
359													<li class="list-inline-item item tiktok"> 
360														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','TikTok')} ${languageUtil.get(request,'opens-new-window')}"> 
361															<span class="fab fa-tiktok" aria-hidden="true"></span> 
362															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','TikTok')}</span> 
363														</a> 
364													</li> 
365												</#if> 
366											</#if> 
367											<#if RedesSociales.Pinterest.data?has_content> 
368												<#assign linkURLRaw = RedesSociales.Pinterest.data?trim /> 
369												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
370													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
371												</#if> 
372												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
373												<#if linkURL?has_content> 
374													<li class="list-inline-item item pinterest"> 
375														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','Pinterest')} ${languageUtil.get(request,'opens-new-window')}"> 
376															<span class="fab fa-pinterest-p" aria-hidden="true"></span> 
377															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','Pinterest')}</span> 
378														</a> 
379													</li> 
380												</#if> 
381											</#if> 
382											<#if RedesSociales.Rss.data?has_content> 
383												<#assign linkURLRaw = RedesSociales.Rss.data?trim /> 
384												<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
385													<#assign linkURLRaw = "https://${linkURLRaw}" /> 
386												</#if> 
387												<#assign linkURL = sanitizeURL(linkURLRaw) /> 
388												<#if linkURL?has_content> 
389													<li class="list-inline-item item rss"> 
390														<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x','RSS')} ${languageUtil.get(request,'opens-new-window')}"> 
391															<span class="fas fa-rss" aria-hidden="true"></span> 
392															<span class="hide-accessible">${languageUtil.format(request,'go-to-x','RSS')}</span> 
393														</a> 
394													</li> 
395												</#if> 
396											</#if> 
397											<#if RedesSociales.OtrosCanales.NombreCanal??> 
398												<#list RedesSociales.OtrosCanales.NombreCanal.getSiblings() as Canal> 
399													<#if Canal.CanalUrl.data?trim?has_content && Canal.data?trim?has_content> 
400														<#assign linkURLRaw = Canal.CanalUrl.data?trim /> 
401														<#assign canalName = Canal.data?trim /> 
402														<#if !linkURLRaw?starts_with("http://") && !linkURLRaw?starts_with("https://")> 
403															<#assign linkURLRaw = "https://${linkURLRaw}" /> 
404														</#if> 
405														<#assign linkURL = sanitizeURL(linkURLRaw) /> 
406														<#if linkURL?has_content> 
407															<li class="list-inline-item item other-channel"> 
408																<a href="${linkURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x', canalName)} ${languageUtil.get(request,'opens-new-window')}"> 
409																	<span class="fas fa-share-alt" aria-hidden="true"></span> 
410																	<span class="hide-accessible">${languageUtil.format(request,'go-to-x', canalName)}</span> 
411																</a> 
412															</li> 
413														</#if> 
414													</#if> 
415												</#list> 
416											</#if> 
417											</ul> 
418										</div> 
419									</div> 
420								</div> 
421							</#if>							 
422						</div> 
423					</div> 
424				</div> 
425			</div> 
426		</div>  
427	</header> 
428	 
429	<div class="sheet sheet-lg"> 
430		<div class="article-section">		 
431			<#if (Informacion.Titulo.data)!?has_content> 
432				<div class="article-great"> 
433					${Informacion.Titulo.data} 
434				</div>	 
435			</#if> 
436			<#if Contenido?? && Contenido.getSiblings()?has_content> 
437				<#list Contenido.getSiblings() as Item> 
438					<#-- Extraer datos con protección --> 
439					<#assign tituloData = (Item.ContenidoTitulo.data)!"" /> 
440					<#assign textoData = (Item.ContenidoTexto.data)!"" /> 
441					<#assign imagenData = (Item.ContenidoTexto.ContentImagen.data)!"" /> 
442					<#if tituloData?has_content || textoData?has_content || imagenData?has_content> 
443						<#assign tipoHeading = (Item.ContenidoTitulo.headingTipo.data)!"" /> 
444						<#assign cIndex = Item?index + 1 /> 
445						<section class="article-section-content" aria-label="${languageUtil.get(request, 'content-section')} ${cIndex}"> 
446							<#if themeDisplay.isSignedIn()> 
447								<aside class="portlet-msg-info infoparrafo" role="note" aria-label="${languageUtil.get(request, 'only-administrators-can-use-this-portlet')}"> 
448									<p class="text-center mb-0"> 
449										<span class="fas fa-file-signature font-size-10 mr-2" aria-hidden="true"></span> 
450										<#assign cIndex = Item?index + 1 /> 
451										<strong class="important mr-5">Contenido<#if Item?index gt 0> ${cIndex}</#if></strong> 
452										<span class="d-inline font-size-09 mt-2"> 
453											<span class="fas fa-info-circle mr-1" aria-hidden="true"></span> 
454											Información visible únicamente para usuarios logueados 
455										</span> 
456									</p> 
457								</aside> 
458							</#if> 
459							<#if tituloData?has_content> 
460								<#if tipoHeading == "h2"> 
461									<h2 class="h3 text-center mt-6 mb-5"> 
462										${tituloData} 
463									</h2> 
464								<#elseif tipoHeading == "h3"> 
465									<h3 class="h3 font-weight-semi-bold mt-6 mb-4"> 
466										${tituloData} 
467									</h3> 
468								<#elseif tipoHeading == "h4"> 
469									<h4 class="h4 font-weight-semi-bold mt-6 mb-4"> 
470										${tituloData} 
471									</h4> 
472								<#else> 
473									<div class="h4 font-weight-normal mt-6 mb-4"> 
474										${tituloData} 
475									</div> 
476								</#if> 
477							</#if> 
478							<div class="article-section-info"> 
479								<#if Item.ContenidoTexto?? && Item.ContenidoTexto.getSiblings()?has_content> 
480									<#list Item.ContenidoTexto.getSiblings() as secc> 
481										<#assign seccionTexto = (secc.data)!"" /> 
482										<#if seccionTexto?has_content> 
483											${seccionTexto} 
484										</#if> 
485										<#assign imagenPath = (secc.ContentImagen.data)!"" /> 
486										<#if imagenPath?has_content> 
487											<#assign imagenURL = sanitizeURL(dlTool.getThumbnail(imagenPath, '3')) /> 
488											<#if imagenURL?has_content> 
489												<#assign imgAlt = (secc.ContentImagen.AltImage.data)!"" /> 
490												<#assign imgTitle = (secc.ContentImagen.TitleImage.data)!"" /> 
491												<#assign imgPie = (secc.ContentImagen.PieImage.data)!"" /> 
492												<#assign altText = imgAlt /> 
493												<#if !altText?has_content && imgTitle?has_content> 
494													<#assign altText = imgTitle /> 
495												</#if> 
496												<#if !altText?has_content && imgPie?has_content> 
497													<#assign altText = htmlUtil.extractText(imgPie)?trim /> 
498												</#if> 
499												<#if !altText?has_content> 
500													<#assign altText = "${languageUtil.get(request, 'image')} ${cIndex}" /> 
501												</#if> 
502												<div class="article-section-image-wrapper"> 
503													<div class="article-section-image"> 
504														<img src="${imagenURL}" class="rounded" alt="${htmlUtil.escape(altText)}" <#if imgTitle?has_content>title="${htmlUtil.escape(imgTitle)}"</#if> loading="lazy" /> 
505														<#if imgPie?has_content> 
506															<div class="article-section-image-footer"> 
507																${imgPie} 
508															</div> 
509														</#if> 
510													</div> 
511												</div> 
512											</#if> 
513										</#if> 
514									</#list> 
515								</#if> 
516							</div> 
517						</section> 
518					</#if> 
519				</#list> 
520			</#if> 
521		</div> 
522		 
523		<#assign hasTab1 = ((Informacion.Texto.data)!)?has_content> 
524		<#assign hasTab2 = ((Informacion.Horario.data)!)?has_content || ((Informacion.Tarifas.data)!)?has_content /> 
525		<#assign hasTab3 = ((Reservas.CompraEntradas.data)!)?has_content || ((Reservas.ReservasPhone.data)!)?has_content || ((Reservas.ReservasEmail.data)!)?has_content || ((Reservas.ReservasWhatsapp.data)!)?has_content> 
526		<#assign hasTab4 = ((AsturiasMascotas.LimitacionPeso.data)!)?has_content> 
527		<#assign hasTab5 = ((Geolocalizacion.Coordenadas.data)!)?has_content> 
528		<#assign showFirstTab = true> 
529		<div class="article-accordion accordion"> 
530			<#if Visualizador.Slide.getData()?has_content> 
531				<h3 class="h3">${languageUtil.get(locale,"model.resource.com.liferay.portlet.imagegallery")}</h3>			 
532				<div class="slick article-slick article-section <#if Visualizador.Slide.getSiblings()?size==1>hide</#if>"> 
533					<#list Visualizador.Slide.getSiblings() as Slide> 
534						<#if validator.isNotNull(Slide.getData()) || validator.isNotNull(Slide.SlideUrl.getData())> 
535							<#assign slideThumbnail3 = dlTool.getThumbnailByJSON(Slide.data, "3")! /> 
536							<#assign slideThumbnail2Raw = dlTool.getThumbnailByJSON(Slide.data, "2")! /> 
537							<#assign slidePathRaw = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! /> 
538							<#assign slideUrlRaw = Slide.SlideUrl.data /> 
539							<#if slideUrlRaw?has_content> 
540								<#assign slideTitleRaw = "${languageUtil.get(request, 'video')} ${Slide?index}" /> 
541								<#if Slide.SlideTitulo.data?has_content> 
542									<#assign slideTitleRaw = Slide.SlideTitulo.data />   
543								</#if> 
544								<#assign slideUrl = stringUtil.replace(slideUrlRaw, 'watch?v=', 'embed/') /> 
545								<#assign slideThumbnail2Raw = stringUtil.replace(slideUrl, 'www', 'img') /> 
546								<#assign slideThumbnail2Raw = stringUtil.replace(slideThumbnail2Raw, 'embed', 'vi') /> 
547								<#assign slideThumbnail2Raw = '${slideThumbnail2Raw}/mqdefault.jpg' /> 
548								<#if slideUrl?contains("vimeo")> 
549									<#assign slideUrl = stringUtil.replace(slideUrl, 'http://vimeo.com/', 'https://player.vimeo.com/video/') /> 
550									<#assign slideVimeoId = stringUtil.extractLast(slideUrl, 'https://player.vimeo.com/video/') /> 
551									<#if slideVimeoId?has_content> 
552										<#assign slideVimeoJsonPath = 'http://vimeo.com/api/v2/video/${slideVimeoId}.json' /> 
553										<#assign slideVimeoJsonContent = getUrlContent.getContent(slideVimeoJsonPath)! /> 
554										<#if slideVimeoJsonContent?has_content> 
555											<#assign slideVimeoJsonArray = jsonFactoryUtil.createJSONArray(slideVimeoJsonContent) /> 
556											<#assign slideVimeoJsonItem = slideVimeoJsonArray.get(0) /> 
557											<#assign slideThumbnail2Raw = slideVimeoJsonItem.thumbnail_medium /> 
558										</#if> 
559									</#if> 
560								</#if> 
561								<#assign slideUrlSafe = sanitizeURL(slideUrl) /> 
562								<#assign slideThumbnail2Safe = sanitizeURL(slideThumbnail2Raw) /> 
563								<#assign slideTitle = htmlUtil.escape(slideTitleRaw) /> 
564								<#if slideUrlSafe?has_content && slideThumbnail2Safe?has_content> 
565									<div id="slide-${Slide?index}" class="slide"> 
566										<a class="card card-simple card-video" href="#" role="button" tabindex="0" onclick="event.preventDefault(); showDialogIframe('${slideUrlSafe}', '${slideTitle}', 800, 600, 'videoPopup', 'videoPopupIframe'); return false;" aria-label="${languageUtil.format(request, 'open-video-x', slideTitle)}"> 
567											<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2Safe}')" role="img" aria-label="${slideTitle}"> 
568												<img class="hide-accessible" src="${slideThumbnail2Safe}" alt="" /> 
569											</span> 
570										</a> 
571									</div> 
572								</#if> 
573							<#else> 
574								<#assign slideTitleRaw = "${languageUtil.get(request, 'image')} ${Slide?index}" /> 
575								<#if Slide.SlideTitulo.data?has_content> 
576									<#assign slideTitleRaw = Slide.SlideTitulo.data />   
577								</#if> 
578								 
579								<#assign slideAltRaw = slideTitleRaw />									 
580								<#if Slide.ImagenAlt??>							 
581									<#if Slide.ImagenAlt.data?has_content> 
582										<#assign slideAltRaw = Slide.ImagenAlt.data />   
583									</#if> 
584								</#if> 
585								<#assign slidePath = sanitizeURL(slidePathRaw) /> 
586								<#assign slideThumbnail2Safe = sanitizeURL(slideThumbnail2Raw) /> 
587								<#assign slideTitle = htmlUtil.escape(slideTitleRaw) /> 
588								<#assign slideAlt = htmlUtil.escape(slideAltRaw) /> 
589								<#if slidePath?has_content && slideThumbnail2Safe?has_content> 
590								  <div class="slide"> 
591									<a class="card card-simple lightbox" href="${slidePath}" title="${slideTitle}" aria-label="${languageUtil.format(request, 'view-image-x', slideTitle)}"> 
592										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${slideThumbnail2Safe}')" role="img" aria-label="${slideAlt}"> 
593											<img class="hide-accessible" src="${slideThumbnail2Safe}" alt="" /> 
594										</span> 
595									</a> 
596								  </div> 
597								</#if> 
598							</#if> 
599						</#if> 
600					</#list> 
601				</div> 
602			</#if> 
603		 
604			<#if hasTab1> 
605				<div id="tab1" class="article-section accordion-item"> 
606					<a href="#tabContent1" id="tabHeading1" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent1" data-toggle="liferay-collapse"> 
607						<h3 class="h3 accordion-header">${languageUtil.get(request,'info')}</h3> 
608					</a> 
609					<div id="tabContent1" class="article-section-content article-section-info accordion-collapse collapse <#if showFirstTab>show</#if>" role="region" aria-labelledby="tabHeading1"> 
610						<#if (Informacion.Texto.data)!?has_content> 
611							${Informacion.Texto.data} 
612						</#if> 
613						<#if (Informacion.FechaDeConstruccion.data)!?has_content> 
614							<span class="field">${languageUtil.get(request, "infoasturias-fecha-de-construccion")}:</span> 
615							<span class="text">${Informacion.FechaDeConstruccion.data}</span> 
616						</#if> 
617					</div> 
618				</div> 
619				<#assign showFirstTab = false> 
620			</#if> 
621 
622			<#if hasTab2> 
623				<div id="tab2" class="article-section accordion-item"> 
624					<a href="#tabContent2" id="tabHeading2" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent2" data-toggle="liferay-collapse"> 
625						<h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-horarios-y-tarifas')}</h3> 
626					</a> 
627					<div id="tabContent2" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" role="region" aria-labelledby="tabHeading2"> 
628						<#if (Informacion.Horario.data)!?has_content> 
629							<div class="mb-1 font-weight-semi-bold text-success"><span class="far fa-clock mr-2 text-success"></span>${languageUtil.get(request,'infoasturias-horario')}:</div> 
630							<div class="mb-4">${Informacion.Horario.data}</div> 
631						</#if> 
632						<#if (Informacion.Tarifas.data)!?has_content> 
633							<div class="mb-1 font-weight-semi-bold text-success"><span class="fas fa-coins mr-2 text-success"></span>${languageUtil.get(request,'infoasturias-tarifas')}:</div>						 
634							<div>${Informacion.Tarifas.data}</div> 
635						</#if> 
636						<#if (Informacion.Horario.data)!?has_content || (Informacion.Tarifas.data)!?has_content> 
637							<#assign hasWeb = Contacto.Web.data?trim?has_content /> 
638							<#assign hasTelefono = Contacto.Telefono.data?trim?has_content /> 
639							<#if hasWeb || hasTelefono> 
640								<div class="mt-4 font-size-09 font-italic"> 
641									<#if hasWeb> 
642										${languageUtil.get(request, 'infoasturias-horarios-web')}									   
643										<#assign siteURLRaw = Contacto.Web.data?trim /> 
644										<#if !siteURLRaw?starts_with("http://") && !siteURLRaw?starts_with("https://")> 
645											<#assign siteURLRaw = "https://${siteURLRaw}" /> 
646										</#if> 
647										<#assign siteURL = sanitizeURL(siteURLRaw) /> 
648										<#if siteURL?has_content> 
649											<#assign isExternal = isExternalURL(siteURL) /> 
650											<a href="${siteURL}" <#if isExternal>target="_blank" rel="noopener noreferrer"</#if> aria-label="${languageUtil.get(request, 'site')} - ${title} <#if isExternal>${languageUtil.get(request, 'opens-new-window')}</#if>"> 
651												${languageUtil.get(request,'visit')} 
652												<#if isExternal> 
653													<span class="fas fa-external-link-alt ml-1 font-size-08" aria-hidden="true"></span> 
654												</#if> 
655											</a> 
656										</#if> 
657									<#elseif hasTelefono> 
658										${languageUtil.get(request, 'infoasturias-horarios-telefono')} 
659										<#list Contacto.Telefono.getSiblings() as telephone> 
660											<#assign rawTelefono = telephone.data /> 
661											<#assign cleanTelefono = rawTelefono?replace("\\(.*?\\)", "", "r") /> 
662											<#assign numberTelefono = cleanTelefono?replace("[^0-9]", "", "r") /> 
663											<#assign numberLength = numberTelefono?length /> 
664											<#if numberLength == 9> 
665											  <#assign hrefNumber = "+34${numberTelefono}" /> 
666											<#else> 
667											  <#assign hrefNumber = numberTelefono /> 
668											</#if> 
669											<span class="text"> 
670												<a href="tel:${hrefNumber}">${rawTelefono}</a> 
671												<#if !telephone?is_last>|</#if> 
672											</span> 
673										</#list>										 
674									</#if> 
675								</div> 
676							</#if> 
677						</#if> 
678					</div> 
679				</div> 
680				<#assign showFirstTab = false> 
681			</#if> 
682 
683			<#if hasTab3> 
684				<#if (Reservas.CompraEntradas.data)!?has_content || (Reservas.ReservasPhone.data)!?has_content || (Reservas.ReservasEmail.data)!?has_content || (Reservas.ReservasWhatsapp.data)!?has_content> 
685					<div id="tab3" class="article-section accordion-item"> 
686						<a href="#tabContent3" id="tabHeading3" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent3"  
687						 data-toggle="liferay-collapse"> 
688							<h3 class="h3 accordion-header">${languageUtil.get(request,'booking-action')}</h3> 
689						</a> 
690						<div id="tabContent3" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading3" role="region"> 
691							<#if (Reservas.CompraEntradas.data)!?has_content> 
692								<#assign compraURL = sanitizeURL(Reservas.CompraEntradas.data?trim) /> 
693								<#if compraURL?has_content> 
694									<div class="text-center"> 
695										<a class="btn btn-primary mb-3" href="${compraURL}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.get(request,'infoasturias-compra-entradas')} ${languageUtil.get(request,'opens-new-window')}"> 
696											<span class="fas fa-ticket-alt mr-2" aria-hidden="true"></span> 
697											${languageUtil.get(request,'infoasturias-compra-entradas')} 
698										</a> 
699									</div> 
700								</#if> 
701							</#if> 
702							<#if (Reservas.ReservasPhone.data)!?has_content> 
703								<#assign rawTelefono = Reservas.ReservasPhone.data?trim /> 
704								<#assign cleanTelefono = rawTelefono?replace("\\(.*?\\)", "", "r") /> 
705								<#assign numberTelefono = cleanTelefono?replace("[^0-9]", "", "r") /> 
706								<#assign numberLength = numberTelefono?length /> 
707								<#if numberLength == 9> 
708									<#assign hrefNumber = "+34${numberTelefono}" /> 
709								<#else> 
710									<#assign hrefNumber = numberTelefono /> 
711								</#if> 
712								<div class="text-center"> 
713									<a class="btn btn-primary mb-3" href="tel:${htmlUtil.escapeHREF(hrefNumber)}" aria-label="${languageUtil.format(request,'call', rawTelefono)}"> 
714										<span class="fas fa-phone-alt mr-2" aria-hidden="true"></span> 
715										${languageUtil.get(request,'infoasturias-telefono')} 
716									</a> 
717								</div> 
718							</#if> 
719							<#if (Reservas.ReservasEmail.data)!?has_content> 
720								<#assign emailAddress = Reservas.ReservasEmail.data?trim /> 
721								<div class="text-center"> 
722									<a class="btn btn-primary mb-3" href="mailto:${htmlUtil.escapeHREF(emailAddress)}" aria-label="${languageUtil.format(request,'email-to', emailAddress)}"> 
723										<span class="fas fa-envelope mr-2" aria-hidden="true"></span> 
724										${languageUtil.get(request,'infoasturias-email')} 
725									</a> 
726								</div> 
727							</#if> 
728							<#if (Reservas.ReservasWhatsapp.data)!?has_content> 
729								<#assign rawWhatsapp = Reservas.ReservasWhatsapp.data?trim /> 
730								<#assign cleanWhatsapp = rawWhatsapp?replace("[^0-9]", "", "r") /> 
731								<#if cleanWhatsapp?has_content> 
732									<#assign whatsappURL = "https://wa.me/34${cleanWhatsapp}" /> 
733									<#assign whatsappURLSafe = sanitizeURL(whatsappURL) /> 
734									<#if whatsappURLSafe?has_content> 
735										<div class="text-center"> 
736											<a class="btn btn-primary mb-3" href="${whatsappURLSafe}" target="_blank" rel="noopener noreferrer" aria-label="${languageUtil.format(request,'go-to-x', rawWhatsapp)} ${languageUtil.get(request,'opens-new-window')}"> 
737											  <span class="fab fa-whatsapp mr-2" aria-hidden="true"></span> 
738											  Whatsapp 
739											</a> 
740										</div> 
741									</#if> 
742								</#if> 
743							</#if> 
744						</div> 
745					</div> 
746				</#if> 
747				<#assign showFirstTab = false /> 
748			</#if> 
749 
750			<#if hasTab4> 
751				<div id="tab4" class="article-section accordion-item"> 
752					<a href="#tabContent4" id="tabHeading4" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent4" data-toggle="liferay-collapse"> 
753						<h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-info-mascotas')}</h3> 
754					</a> 
755					<div id="tabContent4" class="article-section-content article-section-color article-section-background accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading4" role="region"> 
756						<#if hasIconos> 
757							<div class="list-iconos mb-3 d-flex flex-wrap justify-content-center"> 
758								<#if limitacionPeso?has_content> 
759									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
760										<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Limitación de tamaño") /> 
761										<#if imgArray?has_content && imgArray[0]?has_content> 
762											<div> 
763												<img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-peso')}" loading="lazy"> 
764												<span class="value">${limitacionPeso}</span> 
765											</div> 
766											<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-peso')}</span> 
767										</#if> 
768									</div> 
769								</#if> 
770								<#if NumeroMaximoPersona?has_content> 
771									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
772										<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Número máximo de perros por persona") /> 
773										<#if imgArray?has_content && imgArray[0]?has_content> 
774											<div> 
775												<img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}" loading="lazy"> 
776												<span class="value-icono">${NumeroMaximoPersona}</span> 
777											</div> 
778											<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}</span> 
779										</#if> 
780									</div> 
781								</#if> 
782								<#if NumeroMaximoPersona?has_content> 
783									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
784										<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Cupo máximo de perros en el interior") /> 
785										<#if imgArray?has_content && imgArray[0]?has_content> 
786											<div> 
787												<img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-maximo-persona')}" loading="lazy"> 
788												<span class="value-icono">${NumeroMaximoPersona}</span> 
789											</div> 
790											<span class="text-value">${languageUtil.get(request,'infoasturias-maximo-interior')}</span> 
791										</#if> 
792									</div> 
793								</#if> 
794								<#if AccesoInterior?has_content> 
795									<div class="col-xl-2 col-sm-6 col-12 text-center mb-4 icono"> 
796										<#if AccesoInterior == "Si"> 
797											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Accesso al interior") /> 
798											<#if imgArray?has_content && imgArray[0]?has_content> 
799												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-material')}" loading="lazy"></div> 
800												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-interior')}</span> 
801											</#if> 
802										<#else> 
803											<#assign imgArray = assetCategoryTool.getImagesByVocabularyCategoryName(groupId, "Mascotas", "Sin acceso interior") /> 
804											<#if imgArray?has_content && imgArray[0]?has_content> 
805												<div><img src="${imgArray[0]}" alt="${languageUtil.get(request,'infoasturias-mascotas-no-material')}" loading="lazy"></div> 
806												<span class="text-value">${languageUtil.get(request,'infoasturias-mascotas-no-interior')}</span> 
807											</#if> 
808										</#if> 
809									</div> 
810								</#if> 
811							</div> 
812						</#if> 
813						<#if hasNormas> 
814							<div class="article-info-table mb-2"> 
815								<div class="normas-mascotas"> 
816									<h4 class="mb-4 text-success text-center article-info-border"> 
817										${languageUtil.get(request,'infoasturias-normas-mascotas')} 
818									</h4> 
819									<ul class="list-unstyled" role="list"> 
820										<#if admitePPP?has_content> 
821											<li class="d-flex align-items-start mb-2"> 
822												<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
823												<span class="text-rule"> 
824													<#if admitePPP == "Si"> 
825														${languageUtil.get(request,'infoasturias-mascotas-ppp')}. 
826													<#else> 
827														${languageUtil.get(request,'infoasturias-mascotas-no-ppp')}. 
828													</#if> 
829												</span> 
830											</li> 
831										</#if> 
832										<#if AccesoTerraza?has_content> 
833											<li class="d-flex align-items-start mb-2"> 
834												<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
835												<span class="text-rule"> 
836													<#if AccesoTerraza == "Si"> 
837														${languageUtil.get(request,'infoasturias-mascotas-terraza')}. 
838													<#else> 
839														${languageUtil.get(request,'infoasturias-mascotas-no-terraza')}. 
840													</#if> 
841												</span> 
842											</li> 
843										</#if>										 
844										<#if otrasMascotas?has_content> 
845											<li class="d-flex align-items-start mb-2"> 
846												<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
847												<span class="text-rule"> 
848													<#if otrasMascotas == "Si"> 
849														${languageUtil.get(request,'infoasturias-otras-mascotas')}: 
850														<#if otrosAnimales?has_content> 
851															<strong>${otrosAnimales}</strong> 
852														</#if> 
853													<#else> 
854														${languageUtil.get(request,'infoasturias-no-otras-mascotas')}. 
855													</#if> 
856												</span> 
857											</li> 
858										</#if> 
859										<#if detalleNormas?has_content> 
860											<#assign normasParagraphs = detalleNormas?split('</p>') /> 
861											<#list normasParagraphs as parrafo> 
862												<#if parrafo?trim?has_content> 
863													<#assign cleanParrafo = parrafo?replace('<p>', '')?replace('<p[^>]*>', '', 'r')?trim /> 
864													<#if cleanParrafo?has_content> 
865														<li class="d-flex align-items-start mb-2"> 
866															<span class="fas fa-paw text-success mr-2 mt-1 flex-shrink-0" aria-hidden="true"></span> 
867															<span class="text-rule">${cleanParrafo}</span> 
868														</li> 
869													</#if> 
870												</#if> 
871											</#list> 
872										</#if>									 
873									</ul> 
874								</div> 
875							</div> 
876						</#if> 
877					</div> 
878					<#assign showFirstTab = false> 
879				</div> 
880			</#if>			 
881			<#if hasTab5> 
882				<#assign coordenadas=stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
883				<div id="tab5" class="article-section article-section-map accordion-item"> 
884					<a href="#tabContent5" id="tabHeading5" class="tab <#if !showFirstTab>collapsed</#if>" role="button" tabindex="0" aria-expanded="${showFirstTab?c}" aria-controls="tabContent5" data-toggle="liferay-collapse"> 
885						<h3 class="h3 accordion-header">${languageUtil.get(request,'infoasturias-how-to-get')}</h3> 
886					</a> 
887					<div id="tabContent5" class="article-section-content accordion-collapse collapse <#if showFirstTab>show</#if>" aria-labelledby="tabHeading5" role="region"> 
888						<div id="article-map-wrapper-${articleId}" class="article-map-wrapper">  
889							<div id="article-map-content-${articleId}" style="width: 100%; height: 500px; z-index:1" role="application" aria-label="${languageUtil.format(request,'infoasturias-mapa-de', title)}"><!-- MAP --></div> 
890							<div class="hide-accessible" aria-live="polite"> 
891								<p>${languageUtil.get(request,'first-name')}: ${title}</p> 
892								<p>GPS: ${Geolocalizacion.Coordenadas.data}</p> 
893								<#if (Contacto.Direccion.data)?has_content || ((Contacto.CP.data)?has_content) || ((Contacto.Localidad.data)?has_content)> 
894									<p>${languageUtil.get(request,'address')}: ${((Contacto.Direccion.data)!)?js_string} ■ ${((Contacto.CP.data)!)} - ${((Contacto.Localidad.data)!)?js_string}</p> 
895								</#if> 
896							</div>								 
897							<div class="article-map-form">  
898								<div class="name important">${title}</div> 
899								<div class="gps"><span class="label">GPS:</span> <span class="value important">${Geolocalizacion.Coordenadas.data}</span></div> 
900								<form action="https://maps.google.es/maps" method="get" target="_blank"> 
901									<input type="hidden" name="daddr" value="${coordenadas[0]},${coordenadas[1]}"> 
902									<label for="saddrText"><span class="label hide-accessible">${languageUtil.get(request,'infoasturias-insert-from')}: </span></label> 
903									<label for="saddr"><span class="label">${languageUtil.get(request,'infoasturias-from')}: </span></label> 
904									<input class="form-control" type="text" maxlength="40" name="saddrText" id="saddrText" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
905									<input class="form-control" type="hidden" name="saddr" id="saddr" value="" placeholder="${languageUtil.get(request,'infoasturias-insert-from')}"> 
906									<button class="btn btn-text" type="submit">${languageUtil.get(request,'infoasturias-como-llegar')} &raquo;</button> 
907								</form> 
908							</div> 
909						</div> 
910						<script src="/o/turismo-asturias-theme/js/leaflet/leaflet.js"></script> 
911						<script type="text/javascript"> 
912							AUI().ready('aui-base', function(A){ 
913								var lat = ${coordenadas[0]}, 
914									lng = ${coordenadas[1]}, 
915									zoom = 16; 
916								mapContent = new L.map('article-map-content-${articleId}', {center: [lat, lng], zoom: 16}); 
917 
918								//Marker 
919								var defaultIconTheme = '/o/turismo-asturias-theme/css/images/icons/mark-box.png'; 
920								var defaultIcon = L.icon({ 
921									iconUrl: defaultIconTheme, 
922									iconSize:     [36, 53], 
923									iconAnchor:   [18, 53], 
924									iconShadow:   [0,0], 
925									popupAnchor:  [0, -30] 
926								}); 
927								var marker = L.marker([lat, lng], {icon: defaultIcon}).addTo(mapContent); 
928								 
929								var contentString = '<div class="row">'; 
930								contentString += '<div class="col-12">'; 
931								contentString += '<div class="h4">${htmlUtil.escape(title)}</div>'; 
932								contentString += '</div>'; 
933								contentString += '</div>'; 
934								 
935								contentString += '<div class="row">'; 
936								contentString += '<div class="col-12">'; 
937								<#if validator.isNotNull(articleMainImageThumbnail1Safe)> 
938									contentString += '<img class="pull-right mb-2 ml-2" src="${articleMainImageThumbnail1Safe}" alt="$title"/>'; 
939								</#if> 
940								contentString += '<dl class="mb-0">'; 
941								<#if (Contacto.Direccion.data)?has_content || ((Contacto.CP.data)?has_content) || ((Contacto.Localidad.data)?has_content)> 
942									contentString += '<dt class="important">${languageUtil.get(request,"address")}</dt>'; 
943									contentString += '<dd>${((Contacto.Direccion.data)!)?js_string}<br>${((Contacto.CP.data)!)} - ${((Contacto.Localidad.data)!)?js_string}</dd>'; 
944								</#if> 
945								<#if Contacto.Telefono.data?has_content> 
946									contentString += '<dt class="important">${languageUtil.get(request,'phone')}</dt>'; 
947									contentString += '<dd>${Contacto.Telefono.data}</dd>'; 
948								</#if> 
949								<#if Contacto.Email.getData()?has_content> 
950									contentString += '<dt class="important">${languageUtil.get(request,'email')}</dt>'; 
951									<#list Contacto.Email.getSiblings() as Item> 
952										contentString += '<dd><a href="mailto:${Item.data}" title="${languageUtil.format(request,'go-to-x', 'email')}">${Item.data}</a></dd>'; 
953									</#list> 
954								</#if> 
955								<#if Contacto.Web.data?has_content> 
956									<#assign linkURL = Contacto.Web.data/> 
957									<#if !stringUtil.startsWith(linkURL, "http")> 
958										<#assign linkURL = "https://${Contacto.Web.data}"/> 
959									</#if> 
960									contentString += '<dt class="important">${languageUtil.get(request,'site')}</dt>'; 
961									contentString += '<dd><a href="${linkURL}" title="${languageUtil.format(request,'go-to-x', 'site')}">${Contacto.Web.data}</a></dd>'; 
962								</#if> 
963								contentString += '</dl>'; 
964								contentString += '</div>'; 
965								contentString += '</div>'; 
966								<#if validator.isNotNull(description)> 
967									contentString += '<div class="row"><div class="col-12">${description}</div></div>'; 
968								</#if> 
969								marker.bindPopup(contentString); 
970 
971								//Contributor 
972								L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { 
973									attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors.' 
974								}).addTo(mapContent); 
975								 
976							}); //AUI.ready 
977						</script> 
978					</div> 
979				</div> 
980				<#assign showFirstTab = false> 
981			</#if>		 
982		</div> 
983		<#if (Informacion.Observaciones.data)!?has_content || (Contacto.MasInformacion.data)!?has_content> 
984			<div class="article-border"> 
985				<#if (Informacion.Observaciones.data)!?has_content> 
986					<div class="observations mb-3"> 
987						${Informacion.Observaciones.data} 
988					</div> 
989				</#if> 
990				<#if (Contacto.MasInformacion.data)!?has_content> 
991					<div class="more-info"> 
992						<#list Contacto.MasInformacion.getSiblings() as Item> 
993							<#if Item.data?trim?has_content> 
994								<#assign itemData = Item.data?trim /> 
995								<#if itemData?matches("^https?://.*") || itemData?starts_with("//")> 
996									<#assign itemURL = itemData /> 
997									<#if itemURL?starts_with("//")> 
998										<#assign itemURL = "https:${itemURL}" /> 
999									</#if> 
1000									<#assign itemURLSafe = sanitizeURL(itemURL) /> 
1001									<#if itemURLSafe?has_content> 
1002										<#assign isExternal = isExternalURL(itemURLSafe) /> 
1003										<div class="mb-2"> 
1004											<a class="link" href="${itemURLSafe}" <#if isExternal>target="_blank" rel="noopener noreferrer"</#if> aria-label="${languageUtil.format(request,'visit-link-x', itemData)} <#if isExternal>${languageUtil.get(request,'opens-new-window')}</#if>"> 
1005												${itemData} 
1006												<#if isExternal> 
1007													<span class="fas fa-external-link-alt ml-1" aria-hidden="true"></span> 
1008												</#if> 
1009											</a> 
1010										</div> 
1011									</#if> 
1012								<#else> 
1013									<div class="mb-2"> 
1014										<span>${itemData}</span> 
1015									</div> 
1016								</#if> 
1017							</#if> 
1018						</#list> 
1019					</div> 
1020				</#if> 
1021			</div> 
1022		</#if> 
1023	</div>	 
1024			 
1025	<#-- Related Articles --> 
1026	<#assign relatedJournalArticles = assetTool.getRelatedJournalArticlesApproved(assetEntry) /> 
1027	<#if validator.isNotNull(relatedJournalArticles) && relatedJournalArticles?size gt 0> 
1028		<div class="article-related portlet-background-grey-container"> 
1029			<div class="container"> 
1030				<h3 class="title-section">${languageUtil.get(request,'related-assets')}</h3> 
1031				<div class="slick article-related-slick"> 
1032					<#list relatedJournalArticles as currentJournalArticle> 
1033						<#assign viewURLRaw = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true) /> 
1034						<#assign viewURL = sanitizeURL(viewURLRaw) /> 
1035						<#assign articleTitle = currentJournalArticle.getTitle(locale) /> 
1036						<#assign smallImageURLRaw = currentJournalArticle.getSmallImageURL() /> 
1037						<#assign smallImageURL = sanitizeURL(smallImageURLRaw) /> 
1038						<#if viewURL?has_content && smallImageURL?has_content && articleTitle?has_content> 
1039							<div class="slide"> 
1040								<a class="card background card-background-9-14" href="${viewURL}" aria-label="${languageUtil.format(request, 'go-to-x', articleTitle)}"> 
1041									<span class="d-block image-wrapper aspect-ratio-bg-cover" style="background-image: url('${smallImageURL}')" role="img" aria-label="${articleTitle}"> 
1042										<img class="hide-accessible" src="${smallImageURL}" alt="" /> 
1043										<span class="card-body"> 
1044											<span class="card-title">${articleTitle}</span> 
1045										</span> 
1046									</span> 
1047								</a> 
1048							</div> 
1049						</#if> 
1050					</#list> 
1051				</div> 
1052			</div> 
1053		</div> 
1054	</#if> 
1055	 
1056	<#-- Nearby Articles --> 
1057	<#assign classTypeIds = [] /> 
1058	<#assign assetsNearJournalArticles = assetNearTool.getNearJournalArticles(themeDisplay.getScopeGroupId(), assetEntry.getEntryId(), 50.0, classTypeIds, 25)! /> 
1059	<#if validator.isNotNull(assetsNearJournalArticles) && assetsNearJournalArticles?size gt 0> 
1060		<div class="article-nearby portlet-container-margin"> 
1061			<div class="container"> 
1062				<div class="article-nearby-container"> 
1063					<h3 class="title-section">${languageUtil.get(request,'infoasturias-near-here')}</h3> 
1064					<div class="slick article-nearby-slick"> 
1065						<#list assetsNearJournalArticles as currentJournalArticle> 
1066							<#assign viewURLRaw = journalTool.getDisplayPage(currentJournalArticle, themeDisplay, true) /> 
1067							<#assign viewURL = sanitizeURL(viewURLRaw) /> 
1068							<#assign articleTitle = currentJournalArticle.getTitle(locale) /> 
1069							<#assign articleDescription = currentJournalArticle.getDescription(locale) /> 
1070							<#assign smallImageURLRaw = currentJournalArticle.getSmallImageURL() /> 
1071							<#assign smallImageURL = sanitizeURL(smallImageURLRaw) /> 
1072							<#assign distanceKm = currentJournalArticle.getVersion() /> 
1073							<#assign categoriesNamesRaw = journalTool.getCategoriesNames(groupId, currentJournalArticle.getArticleId(), locale, ["Concejos"]) /> 
1074							<#assign categoriesNames = htmlUtil.escape(categoriesNamesRaw) /> 
1075							 
1076							<#if viewURL?has_content && smallImageURL?has_content && articleTitle?has_content> 
1077								<div class="slide"> 
1078									<a class="card" href="${viewURL}" aria-label="${languageUtil.format(request, 'go-to-x', articleTitle)}"> 
1079										<span class="d-block image-wrapper aspect-ratio-bg-cover aspect-ratio-4-to-3" style="background-image: url('${smallImageURL}')" role="img" aria-label="${articleTitle}"> 
1080											<img class="hide-accessible" src="${smallImageURL}" alt="" />					 
1081											<#if articleDescription?has_content> 
1082												<span class="card-hover"> 
1083													<span class="card-text">${articleDescription}</span> 
1084												</span> 
1085											</#if> 
1086										</span> 
1087										<span class="card-body"> 
1088											<span class="card-title">${articleTitle}</span> 
1089											<span class="card-subtitle"> 
1090												<span class="d-block"> 
1091													<span class="sr-only">${languageUtil.get(request, 'distance')}: </span> 
1092													${distanceKm} ${languageUtil.get(request, 'km')} 
1093												</span> 
1094												<#if categoriesNames?has_content> 
1095													<span class="d-block">${categoriesNames}</span> 
1096												</#if> 
1097											</span> 
1098										</span> 
1099									</a> 
1100								</div> 
1101							</#if> 
1102						</#list> 
1103					</div> 
1104				</div> 
1105			</div> 
1106		</div> 
1107	</#if> 
1108</article> 
1109<#assign vocabCultura = assetVocabularyLocalService.fetchGroupVocabulary(groupId, "Cultura")! /> 
1110<#assign schemaTypes = ["CivicStructure", "TouristAttraction"] /> 
1111<#if vocabCultura?has_content> 
1112    <#assign categoriasCultura = assetCategoryLocalService.getVocabularyCategories(vocabCultura.getVocabularyId(), -1, -1, null) /> 
1113    <#assign categoriaPadre = "" /> 
1114    <#list categoriasCultura as cat> 
1115        <#if cat.getName() == "Museos y espacios culturales"> 
1116            <#assign categoriaPadre = cat /> 
1117            <#break> 
1118        </#if> 
1119    </#list> 
1120    <#if categoriaPadre?has_content> 
1121        <#assign categoriasArticulo = assetCategoryLocalService.getCategories("com.liferay.journal.model.JournalArticle", journalArticle.resourcePrimKey ) /> 
1122        <#list categoriasArticulo as cat> 
1123            <#if cat.getVocabularyId() == vocabCultura.getVocabularyId() && cat.getParentCategoryId() == categoriaPadre.getCategoryId()> 
1124                <#assign nombreCategoria = cat.getName() /> 
1125                <#if nombreCategoria == "Museos" || nombreCategoria == "Colecciones Museográficas"> 
1126                    <#assign schemaTypes = ["Museum", "LocalBusiness", "TouristAttraction"] /> 
1127                    <#break> 
1128                <#elseif nombreCategoria == "Castros y espacios arqueológicos"> 
1129                    <#assign schemaTypes = ["ArchaeologicalSite", "LocalBusiness", "TouristAttraction"] /> 
1130                    <#break> 
1131                <#elseif nombreCategoria == "Conjuntos etnográficos"> 
1132                    <#assign schemaTypes = ["LandmarksOrHistoricalBuildings", "LocalBusiness", "TouristAttraction"] /> 
1133                    <#break> 
1134                <#elseif nombreCategoria == "Centros de interpretación"> 
1135                    <#assign schemaTypes = ["VisitorCenter", "LocalBusiness", "TouristAttraction"] /> 
1136                    <#break> 
1137                <#elseif nombreCategoria == "Otros espacios culturales"> 
1138                    <#assign schemaTypes = ["CivicStructure", "LocalBusiness", "TouristAttraction"] /> 
1139                    <#break> 
1140                </#if> 
1141            </#if> 
1142        </#list> 
1143    </#if> 
1144</#if> 
1145<script type="application/ld+json"> 
1146
1147	"@context": "https://schema.org", 
1148	"@type": [ 
1149	  <#list schemaTypes as t>"${t}"<#if t_has_next>,</#if></#list> 
1150	], 
1151	"@id": "${articleURL}", 
1152	"name": "${title}", 
1153	"url": "${articleURL}" 
1154	<#if articleMainImageThumbnail3Safe?has_content> 
1155		,"image": [ 
1156			"${themeDisplay.getPortalURL()}${articleMainImageThumbnail3Safe}" 
1157			<#if Visualizador.Slide.getData()?has_content> 
1158				<#list Visualizador.Slide.getSiblings() as Slide> 
1159					<#if validator.isNotNull(Slide.getData()) && !Slide.SlideUrl.getData()?has_content> 
1160						<#assign slidePathRaw = dlTool.getPathByJSON(Slide.data, themeDisplay.getScopeGroupId())! /> 
1161						<#assign slidePath = sanitizeURL(slidePathRaw) /> 
1162						<#if slidePath?has_content> 
1163							,"${themeDisplay.getPortalURL()}${slidePath}" 
1164						</#if> 
1165					</#if> 
1166				</#list> 
1167			</#if> 
1168
1169	</#if> 
1170	<#if (Informacion.Texto.data)!?has_content> 
1171		<#assign cleanDesc = htmlUtil.extractText(Informacion.Texto.data)?trim /> 
1172		<#if cleanDesc?has_content> 
1173			,"description": "${cleanDesc}" 
1174		</#if> 
1175	</#if> 
1176	<#if (Contacto.Direccion.data)!?has_content || (Contacto.CP.data)!?has_content> 
1177		,"address": { 
1178			"@type": "PostalAddress" 
1179			<#if (Contacto.Direccion.data)!?has_content> 
1180				,"streetAddress": "${(Contacto.Direccion.data)!}" 
1181			</#if> 
1182			<#if (Contacto.CP.data)!?has_content> 
1183				,"postalCode": "${(Contacto.CP.data)!}" 
1184			</#if> 
1185			<#if (Contacto.Localidad.data)!?has_content> 
1186				,"addressLocality": "${(Contacto.Localidad.data)!}" 
1187			</#if> 
1188			<#if (Contacto.Concejo.data)!?has_content> 
1189				,"addressRegion": "${(Contacto.Concejo.data)!}" 
1190			</#if> 
1191			,"addressCountry": "ES" 
1192
1193	</#if> 
1194	<#if (Geolocalizacion.Coordenadas.data)!?has_content> 
1195		<#assign coordenadas = stringUtil.split(Geolocalizacion.Coordenadas.data) /> 
1196		,"geo": { 
1197			"@type": "GeoCoordinates", 
1198			"latitude": "${coordenadas[0]}", 
1199			"longitude": "${coordenadas[1]}" 
1200
1201	</#if> 
1202	<#if (Contacto.Telefono.data)!?has_content> 
1203		,"telephone": [ 
1204			<#assign phoneList = [] /> 
1205			<#list Contacto.Telefono.getSiblings() as telephone> 
1206				<#if telephone.data?has_content> 
1207					<#assign rawTelefono = telephone.data?trim /> 
1208					<#assign cleanTelefono = rawTelefono?replace("\\(.*?\\)", "", "r") /> 
1209					<#assign numberTelefono = cleanTelefono?replace("[^0-9]", "", "r") /> 
1210					<#if numberTelefono?length == 9> 
1211						<#assign phoneList = phoneList + ["+34${numberTelefono}"] /> 
1212					<#elseif numberTelefono?has_content> 
1213						<#assign phoneList = phoneList + [numberTelefono] /> 
1214					</#if> 
1215				</#if> 
1216			</#list> 
1217			<#if phoneList?has_content> 
1218				<#list phoneList as phone> 
1219					"${phone}"<#if phone_has_next>,</#if> 
1220				</#list> 
1221			</#if> 
1222
1223	</#if> 
1224	<#if (Contacto.Email.getData())!?has_content> 
1225		,"email": [ 
1226			<#assign emailList = [] /> 
1227			<#list Contacto.Email.getSiblings() as Item> 
1228				<#if Item.data?trim?has_content> 
1229					<#assign emailList = emailList + [Item.data?trim] /> 
1230				</#if> 
1231			</#list> 
1232			<#if emailList?has_content> 
1233				<#list emailList as email> 
1234					"${email}"<#if email_has_next>,</#if> 
1235				</#list> 
1236			</#if> 
1237
1238	</#if> 
1239	<#if (Informacion.Horario.data)!?has_content> 
1240		<#assign cleanHorario = htmlUtil.extractText(Informacion.Horario.data)?trim /> 
1241		<#if cleanHorario?has_content> 
1242			,"openingHoursSpecification": { 
1243				"@type": "OpeningHoursSpecification", 
1244				"description": "${cleanHorario}" 
1245
1246		</#if> 
1247	</#if> 
1248
1249</script> 
1250<script type="text/javascript"> 
1251	(function() { 
1252		'use strict'; 
1253		setTimeout(function() { 
1254			var links = document.querySelectorAll('.internal-tab-link'); 
1255			links.forEach(function(link) { 
1256				link.addEventListener('click', function(e) { 
1257					e.preventDefault(); 
1258					 
1259					var tabHeadingId = this.getAttribute('data-tab-heading'); 
1260					var tabContentId = this.getAttribute('data-tab-content'); 
1261					var tabControl = document.getElementById(tabHeadingId); 
1262					var tabContent = document.getElementById(tabContentId); 
1263					 
1264					if (!tabControl || !tabContent) return; 
1265					 
1266					var isExpanded = tabControl.getAttribute('aria-expanded') === 'true'; 
1267					if (!isExpanded) { 
1268						tabControl.click(); 
1269						setTimeout(function() { 
1270							scrollToElement(tabControl); 
1271						}, 350); 
1272					} else { 
1273						scrollToElement(tabControl); 
1274
1275				}); 
1276			}); 
1277		}, 500); 
1278	   
1279		function scrollToElement(element) { 
1280			var elementPosition = element.getBoundingClientRect().top; 
1281			var offsetPosition = elementPosition + window.pageYOffset - 140; 
1282			window.scrollTo({ 
1283				top: offsetPosition, 
1284				behavior: 'smooth' 
1285			}); 
1286			setTimeout(function() { 
1287				element.focus(); 
1288			}, 400); 
1289
1290	})(); 
1291</script>