حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18387089" at line 19, column 15]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18387089" at line 19, column 1]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign oadURL = propsUtil.get('elan.oad.url') > 
3<#assign serviceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext() > 
4<#assign themeDisplay = serviceContext.getThemeDisplay() /> 
5<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
6<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
7<#assign url404 = '/error/404.html' > 
8<#assign environment = url?replace('/11t3.*','','r')> 
9 
10<#assign text_to_apply_source = "vanity url" > 
11<#if qstringmap["sms"]?has_content> 
12    <#assign sms = 1 > 
13    <#assign text_to_apply_source = "sms" > 
14</#if> 
15<#if qstringmap["qrCode"]?has_content> 
16    <#assign text_to_apply_source = "qr code" > 
17</#if> 
18 
19<#assign lc = qstringmap["ecdma-lc"]?first>  
20<#assign lc = htmlUtil.escape(lc)> 
21<#assign lc = htmlUtil.escapeJS(lc)> 
22 
23<#assign prefix = "00000" > 
24<#assign lcWithPrefix = prefix + lc > 
25<#assign withPrefixLength = lcWithPrefix?length > 
26<#assign startHere = withPrefixLength - 5> 
27<#assign lc = lcWithPrefix?substring(startHere)> 
28 
29<#if qstringmap["ecid"]?has_content> 
30    <#assign ecidExt = qstringmap["ecid"]?first> 
31    <#assign ecidExt = htmlUtil.escape(ecidExt)> 
32    <#assign ecidExt = htmlUtil.escapeJS(ecidExt)> 
33    <#assign ecidExt = "&ecid=" + ecidExt> 
34 
35 
36    <#assign campaignId = qstringmap["ecid"]?first > 
37    <#assign campaignId = htmlUtil.escape(campaignId)> 
38    <#assign campaignId = htmlUtil.escapeJS(campaignId)> 
39<#else> 
40    <#assign ecidExt=""> 
41    <#assign campaignId = "" > 
42</#if> 
43 
44<#assign isFromDCOLink = false> 
45<#assign dcoSourceCode = ''> 
46<#if qstringmap["sourcecode"]?has_content> 
47    <#assign dcoSourceCode = qstringmap["sourcecode"]?first> 
48    <#assign dcoSourceCode = htmlUtil.escape(dcoSourceCode)> 
49    <#assign dcoSourceCode = htmlUtil.escapeJS(dcoSourceCode)> 
50<#elseif qstringmap["sourceCode"]?has_content> 
51    <#assign dcoSourceCode = qstringmap["sourceCode"]?first> 
52    <#assign dcoSourceCode = htmlUtil.escape(dcoSourceCode)> 
53    <#assign dcoSourceCode = htmlUtil.escapeJS(dcoSourceCode)> 
54</#if> 
55 
56<#if dcoSourceCode?has_content> 
57    <#assign isFromDCOLink = true> 
58</#if> 
59 
60<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! /> 
61<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
62<#assign clientProfile = clientProfileList?first> 
63<#assign partnerName = clientProfile.getMarketingNameLong()> 
64<#assign pbu = clientProfile.getPbu()> 
65<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
66 
67<#assign logoFileName = clientProfile.getLogoBFormat1()?replace(".", "-")?replace("-([^-]*)$", ".$1", "r")?lower_case> 
68<#assign cdnLogoUrl = (propsUtil.get('rackspace.cdn.web.url'))!> 
69<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+pbu+'&'+subbu)> 
70 
71 <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
72<#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
73<#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
74<script> 
75//console.log('Partner URL', ${partnerUrl}); 
76</script> 
77<#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")>     
78    <#assign partnerUrl = 'https://' + partnerUrl> 
79</#if> 
80<script> 
81//console.log('Partner URL', ${partnerUrl}); 
82 
83</script> 
84<#-- Begin: filter duplicated cards--> 
85<#assign temp = []> 
86<#assign offerTypeList = []>   
87<#if (fiCardsData?size > 0)>      
88    <#assign index = 0> 
89    <#list fiCardsData as fib> 
90        <#if (fib.offerType?has_content && !(offerTypeList?seq_contains(fib.offerType)))>  
91            <#assign offerTypeList = offerTypeList + [fib.offerType]>                   
92            <#assign temp = temp + fiCardsData[index..index]>  
93        </#if>   
94        <#assign index = index + 1>               
95    </#list>  
96    <#assign fiCardsData = temp> 
97    <#if (fiCardsData?size > 0)> 
98        <div class="content-container content-container-main"> 
99            <#if url?contains("index")> 
100                <#assign product="All Cards"> 
101                <h1 class="sr-only">${partnerName!'Elan'} Credit Cards</h1> 
102                <header class="page-header"> 
103                    <div class="page-header__logo">  
104                        <#if partnerUrl?has_content> 
105                            <a href="${partnerUrl!''}"> 
106                                <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo"> 
107                            </a> 
108                        <#else> 
109                            <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo"> 
110                        </#if> 
111                    </div>  
112                </header>         
113            <#else> 
114                <header class="page-header"> 
115                    <#if !isFromDCOLink> 
116                        <div class="back-overview hide-desktop">  
117                            <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}">Home</a> 
118                        </div>  
119                    </#if> 
120 
121                    <div class="header-main-logo"> 
122                        <#if partnerUrl?has_content> 
123                            <a href="${partnerUrl!''}"> 
124                                <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo"> 
125                            </a> 
126                        <#else>                            
127                            <img src="${cdnLogoUrl!''}/${logoFileName!''}" alt="${partnerName!''} Logo">                             
128                        </#if> 
129                    </div> 
130                    <#if !isFromDCOLink> 
131                        <div class="styled-select slate"> 
132                            <nav class="styled-select__dropdown"> 
133                                <div class="back-overview hide-mobile-flex">  
134                                    <a href="${environment}/11t3/index?ecdma-lc=${lc}${ecidExt}">Home</a> 
135                                </div>   
136                                <a href="javascript:void(0)" class="dropdown-select" aria-expanded="false"> 
137                                    <span class="selected-option"></span>  
138                                    <div class="jn-arrow arrow arrow-right"></div> 
139                                </a> 
140                                <a href="javascript:void(0)" aria-label="Open page navigation menu" class="jn-hamburger hamburger" aria-expanded="false"> 
141                                    <div class="first-line transform transformed1"></div> 
142                                    <div></div> 
143                                    <div class="transform transformed2"></div> 
144                                    <div></div> 
145                                </a> 
146                                <ul> 
147                                    <#list fiCardsData as fib> 
148                                        <#switch fib.offerType> 
149                                            <#case "101"> 
150                                                <#assign productURL = "202302/consumer-edr"> 
151                                                <#assign productName = "Everyday Rewards+"> 
152                                                <#break> 
153                                            <#case "103"> 
154                                                <#assign productURL = "202302/consumer-edr"> 
155                                                <#assign productName = "Everyday Rewards+"> 
156                                                <#break> 
157                                            <#case "104"> 
158                                                <#assign productURL = "max-cash"> 
159                                                <#assign productName = "Max Cash Preferred Card">       
160                                                <#break> 
161                                            <#case "108"> 
162                                                <#assign productURL="202308/consumer-platinum"> 
163                                                <#assign productName="Platinum Card"> 
164                                                <#break> 
165                                            <#case "109"> 
166                                                <#assign productURL="202308/consumer-platinum"> 
167                                                <#assign productName="Platinum Card"> 
168                                                <#break> 
169                                            <#case "115"> 
170                                                <#assign productURL = "secured"> 
171                                                <#assign productName = "Secured Card" > 
172                                                <#break> 
173                                            <#case "138"> 
174                                                <#assign productURL = "202305/travel-rewards-plus"> 
175                                                <#assign productName = "Travel Rewards+" > 
176                                                <#break> 
177                                            <#case "141"> 
178                                                <#assign productURL = "college-real-rewards"> 
179                                                <#assign productName = "College Real Rewards" >     
180                                                <#break> 
181                                            <#case "147"> 
182                                                <#assign productURL = "max-cash-secured"> 
183                                                <#assign productName = "Max Cash Secured Card" >     
184                                                <#break> 
185                                            <#case "154"> 
186                                                <#assign productURL = "202305/reserve-rewards-plus"> 
187                                                <#assign productName = "Reserve Rewards+" > 
188                                                <#break> 
189                                            <#case "121"> 
190                                                <#assign productURL = "202208/business-platinum"> 
191                                                <#assign productName = "Business Card" > 
192                                                <#break> 
193                                            <#case "128"> 
194                                                <#assign productURL = "business-cash-preferred"> 
195                                                <#assign productName = "Business Cash Preferred" > 
196                                                <#break> 
197                                            <#case "143"> 
198                                                <#assign productURL = "business-real-rewards"> 
199                                                <#assign productName = "Business Real Rewards Card" > 
200                                                <#break> 
201                                            <#case "144"> 
202                                                <#assign productURL = "smart-business-rewards"> 
203                                                <#assign productName = "Smart Business Rewards Card" >     
204                                                <#break> 
205                                            <#default>                                                         
206                                        </#switch> 
207                                        <#if url?matches(".*/${productURL}\\?.*")> 
208                                            <li class="selected" data-value="${productName}" selected="selected"><a href="javascript:void(0)">${productName}</a></li> 
209                                        <#else>                                 
210                                            <li class="dropdown-item" data-value="${productName}"> 
211                                                <a href="${environment}/11t3/${productURL}?ecdma-lc=${lc}${ecidExt}"> 
212                                                ${productName}  
213                                                </a> 
214                                            </li>                                    
215                                        </#if> 
216                                    </#list> 
217                                </ul> 
218                            </nav> 
219                             
220                        </div> 
221                    </#if> 
222                </header> 
223                <script> 
224                    function toggleFlyOutMenu() { 
225                        $('.styled-select').toggleClass('show-select'); 
226                        var ariaExpanded = $('.styled-select__dropdown .dropdown-select').attr('aria-expanded'); 
227                        if(ariaExpanded !== null) { 
228                            var isAriaExpanded; 
229                            if(ariaExpanded === "true") { 
230                                isAriaExpanded = true; 
231                            } else {  
232                                isAriaExpanded = false  
233
234                            $('.styled-select__dropdown .dropdown-select').attr('aria-expanded', !isAriaExpanded); 
235                            const ariaLabel = isAriaExpanded? "Open page navigation menu" : "Close page navigation menu"; 
236                            $('.styled-select__dropdown .jn-hamburger').attr('aria-expanded', !isAriaExpanded).attr('aria-label', ariaLabel); 
237
238
239                    AUI().ready(function () { 
240                        var pageSelected = $('.selected').attr('data-value'); 
241                        $('.jn-hamburger, .dropdown-select').click(function () { 
242                            toggleFlyOutMenu(); 
243                        }); 
244                        $('.styled-select__dropdown').keydown(function(event) { 
245                            var firstNavigationLink = $('.styled-select__dropdown ul li:visible a').first(); 
246                            var lastNavigationLink = $('.styled-select__dropdown ul li:visible a').last(); 
247 
248                            if(event.keyCode === 9 ) { 
249                                // if they tab outside of the nav close the navigation 
250                                //shift + tab pressed 
251                                if(event.shiftKey && firstNavigationLink.is(document.activeElement)) { 
252                                    toggleFlyOutMenu(); 
253                                } else if(!event.shiftKey && lastNavigationLink.is(document.activeElement)) { 
254                                    toggleFlyOutMenu(); 
255                                }                             
256
257                        }); 
258                        $('.selected-option').text(pageSelected); 
259                    }); 
260                </script>            
261            </#if> 
262        </div> 
263        <script> 
264                var reportingData = {}; 
265                                                             
266                //document.addEventListener('DOMContentLoaded', function() { 
267                AUI().ready(function () { 
268                    //console.log('inside ready'); 
269                    var page = location.pathname.split('/')[location.pathname.split('/').length-1]; 
270                    var hostName = location.hostname;                                 
271                    function getDomainFromHostname(hostname) { 
272                        var parts = hostname.split('.'); 
273                        return parts.length === 3 ? parts[1] : parts[0]; 
274
275                    var domain = getDomainFromHostname(hostName); 
276                    var partnerName = "${partnerName!''}"; 
277                    var product = "All Cards"; 
278                    var title = ""; 
279                    var metaDesc = ""; 
280                    var m = document.createElement('meta');  
281                    switch(page) { 
282                        case "max-cash-secured": 
283                            product="Max Cash Secured Card"; 
284                            title = "Earn more on the categories you pick | "+partnerName+" Max Cash Secured Card"; 
285                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
286                            break;  
287                        case "max-cash": 
288                            product="Max Cash Preferred Card"; 
289                            title = "Earn a $150 Bonus and 5% cash back | "+partnerName+" Max Cash Preferred Card"; 
290                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn a $150 Bonus and 5% cash back on the two categories you select."; 
291                            break;                         
292                        case "consumer-platinum": 
293                            product="Platinum Card"; 
294                            title = "The purchasing power of Zero | "+partnerName+" Platinum Card"; 
295                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Limited Time Offer. 0% Intro APR on Purchases and Balance Transfers for 18 Billing Cycles Consolidate your Balances with the "+partnerName+" Intro APR Card."; 
296                            break; 
297                        case "consumer-edr": 
298                            product="Everyday Rewards+"; 
299                            title = "Sign up and earn bonus points | "+partnerName+" Everyday Rewards+"; 
300                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn 15,000 when you spend $500 within the first 90 days."; 
301							break; 
302                        case "secured": 
303                            product="Secured Card"; 
304                            title = "Strengthen your finances | "+partnerName+" Secured Card"; 
305                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
306                            break; 
307                        case "college-real-rewards": 
308                            product="College Real Rewards"; 
309                            title = "Sign up and earn bonus points. | "+partnerName+" College Real Rewards"; 
310                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Use this card as a solid foundation to build your credit."; 
311                            break; 
312                        case "smart-business-rewards": 
313                            product="Smart Business Rewards Card"; 
314                            title = "2X rewards in your top 2 spend categories | "+partnerName+" Business Smart Business Rewards Card"; 
315                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. More choices. More value for your business. Earn a $200 Bonus and 2x Rewards on your top 2 spend categories each month with the "+partnerName+" Credit Card."; 
316                            break;                             
317                        case "business-cash-preferred": 
318                            product="Business Cash Preferred"; 
319                            title = "Flexible rewards for your business | "+partnerName+" Business Cash Preferred"; 
320                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Earn Cash back on common business expenses."; 
321                            break; 
322                        case "business-real-rewards": 
323                            product="Business Real Rewards Card"; 
324                            title = "Earn up to 1.5X points with no caps | "+partnerName+" Business Real Rewards Card"; 
325                            metaDesc = "Apply Today for a "+partnerName+" Credit Card. Get more rewards in the categories you spend the most on." ; 
326                            break; 
327                        case "business-platinum": 
328                            product="Business Card"; 
329                            title = "Pay down your other credit card balances faster | "+partnerName+" Business Card"; 
330                            metaDesc = "Apply Today for a "+partnerName+"  Business Card. 0% Intro APR on Purchases and Balance Transfers for 18 Billing Cycles."; 
331                            break; 
332                        case "travel-rewards-plus": 
333                            product="Travel Rewards+" 
334                            title = partnerName + " | Travel Rewards+ Card"; 
335                            metaDesc = "Make travel more rewarding with unlimited 4x points on travel and frequent popular categories." 
336                            break; 
337                        case "reserve-rewards-plus": 
338                            product="Reserve Rewards+" 
339                            title = partnerName + " | Reserve Rewards+ Card"; 
340                            metaDesc = "Get exceptional rewards on travel and frequent purchases with this exclusive metal card."; 
341                            break; 
342                        default:   
343                            product = "All Cards";    
344                            title = partnerName + " Credit Card Index Page";   
345                            metaDesc = "Apply Today for a "+partnerName+" Credit Card.";                      
346
347                    document.title = title; 
348                    m.name = 'description';  
349                    m.content = metaDesc;  
350                    document.head.appendChild(m); 
351 
352                    var lc = "${lc!'0'}"; 
353 
354                    /* update SiteCatalyst data object */ 
355                        reportingData.current_page = "microsite:${partnerName}:" + domain + ':' + page.replace('-',' '); 
356                        reportingData.page_type = 'product';  
357                        reportingData.site_section = 'credit cards'; 
358                        reportingData.platform = 'microsite'; 
359                        reportingData.campaign_id = '${campaignId}'; 
360                        reportingData.location_code = lc; 
361                        reportingData.partner_name = partnerName; 
362                        reportingData.product = product; 
363                        reportingData.text_to_apply_source = '${text_to_apply_source}'; 
364                        reportingData.visitor_type = 'prospect';         
365                        reportingData.Banker_id = '0'; 
366                        reportingData.Banker_code = '0';        
367 
368 
369                    /* SiteCatalyst  pageView tracking */ 
370                        AUI().ready(function() { 
371                            if (window.publisherFW) { 
372                                //console.log("pageView"); 
373                                window.publisherFW.publishEvent("pageView", reportingData); 
374                            }  
375                        }); 
376 
377                    jQuery('.jn-button, .applyNowLink').on('click', function(e){ 
378                        var buttonName = $(this).data('button-name'); 
379                        var productName = $(this).data('product-name'); 
380                        /* SiteCatalyst  onClick tracking */ 
381                        reportingData.applyButton = buttonName; 
382                        reportingData.product = productName; 
383 
384                            if (window.publisherFW) { 
385                                //console.log('clicked', reportingData); 
386                                window.publisherFW.publishEvent("onClick", reportingData); 
387                            }   
388 
389                    }); 
390 
391                    jQuery('.applyNowLink').on('click', function(e){ 
392                        ga("send", { 
393                            hitType: "event", 
394                            eventAction: "ApplyNow", 
395                            eventCategory: "click", 
396                            eventLabel: "BottomButton" 
397                        }); 
398                    }); 
399             
400                }); 
401        </script>    
402    <#else> 
403        <script> 
404            console.log("Empty card list"); 
405            location.href = '${url404}'; 
406        </script> 
407    </#if>    
408<#else> 
409    <script> 
410        console.log("FI Cards Data empty", "pbu:", "${pbu}", ",subbu:","${subbu}"); 
411        location.href = '${url404}'; 
412    </script> 
413</#if> 
حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18372552" at line 12, column 14]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18372552" at line 12, column 1]
----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()> 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3<#assign basePath = "/web/creditcardlearnmore"> 
4<#assign environment = url?substring(0, url?index_of(basePath) + basePath?length)> 
5<#assign oadURL = propsUtil.get('elan.oad.url')> 
6<#assign oadURL_TC = propsUtil.get('elan.oad.tac.url') > 
7<#assign prcaURL = propsUtil.get('elan.prca.url') > 
8<#assign rewardsCalculatorURL = propsUtil.get('cclm.rewards.calculator.url') > 
9<#assign applyNowText = "Apply Now" > 
10<#assign learnMoreText = "Learn More" > 
11 
12<#assign lc= qstringmap["ecdma-lc"]?first>   
13<#assign lc = htmlUtil.escape(lc)> 
14<#assign lc = htmlUtil.escapeJS(lc)> 
15 
16<#assign prefix = "00000" > 
17<#assign lcWithPrefix = prefix + lc > 
18<#assign withPrefixLength = lcWithPrefix?length > 
19<#assign startHere = withPrefixLength - 5> 
20<#assign lc = lcWithPrefix?substring(startHere)> 
21 
22<#assign calculatorOfferTypes = ["101", "104", "138", "154", "144", "143", "128"] > 
23<#assign balanceTransferCalculatorOfferTypes = ["108", "109"] > 
24 
25<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! > 
26<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
27<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
28<#assign clientProfile = clientProfileList?first> 
29<#assign partnerName = clientProfile.getMarketingNameLong()> 
30<#assign pbu = clientProfile.getPbu()> 
31<#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
32<#assign cdnCardArtUrl = (propsUtil.get('rackspace.cdn.cardart.url'))!> 
33<#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu + '&'+subbu + '&' + lc)> 
34 
35 
36<#assign synExclusionMessageService = (serviceLocator.findService("com.elan.crc.quicklink.service.SYNExclusionMessageLocalService"))! /> 
37<#assign synExclusionMessageData = synExclusionMessageService.getClientProfileAndSyndicatedExclusionMsg(lc) /> 
38<#assign synExclusionDefaultMessageData = synExclusionMessageService.getSyndicatedDefaultMsg() /> 
39<#assign synExclusionMsg = "" /> 
40<#assign synExclusionMsgURL = "" /> 
41<#assign synExclusionMsgAriaLabel = "" /> 
42<#assign synExclusionDefaultMsg = "" /> 
43 
44<#if synExclusionDefaultMessageData?exists && synExclusionDefaultMessageData?has_content > 
45	<#assign synExclusionDefaultMsg = synExclusionDefaultMessageData!""/> 
46</#if> 
47 
48<#if synExclusionMessageData?exists && synExclusionMessageData?has_content > 
49    <#assign synExclusionMsgObj = synExclusionMessageData[0] /> 
50    <#assign synExclusionMsg = synExclusionMsgObj[4]!"" /> 
51    <#assign synExclusionMsgURL = synExclusionMsgObj[5]!"" /> 
52    <#assign synExclusionMsgAriaLabel = synExclusionMsgObj[6]!"" /> 
53</#if> 
54 
55<#assign fultonBankpbu = "0727491"> 
56<#if pbu == fultonBankpbu> 
57    <style> 
58        #hideFultonInfo { 
59            display: none; 
60
61    </style> 
62</#if> 
63 
64<#function getOfferIdByOfferType offerType> 
65    <#list fiCardsData as fiData> 
66        <#if fiData.offerType == offerType> 
67           <#return fiData.offerId> 
68        </#if> 
69    </#list> 
70   <#return "" /> 
71</#function> 
72 
73<#function getFileNameByOfferType offerType> 
74    <#list fiCardsData as fiData> 
75        <#if fiData.offerType == offerType> 
76           <#return fiData.filename> 
77        </#if> 
78    </#list> 
79   <#return "" /> 
80</#function> 
81 
82<#function isOfferExcluded offerType> 
83    <#list fiCardsData as fiData> 
84        <#if fiData.offerType == offerType> 
85           <#return fiData.dmaexclude!""> 
86        </#if> 
87    </#list> 
88   <#return "" /> 
89</#function> 
90 
91<#function getUsePRCA offerType> 
92    <#list fiCardsData as fiData> 
93        <#if fiData.offerType == offerType> 
94           <#return fiData.useprca!""> 
95        </#if> 
96    </#list> 
97   <#return "" /> 
98</#function> 
99 
100<#function replacePlaceholders(input, APRValue, AMFValue, BALValue, TCLinkValue)> 
101    <#return input 
102        ?replace("{APR}", APRValue) 
103        ?replace("{AMF}", AMFValue) 
104        ?replace("{BAL}", BALValue) 
105        ?replace("{TC}", TCLinkValue)> 
106</#function> 
107 
108<#assign productOfferTypeValue = ""> 
109<#assign productOfferTypeName = ""> 
110<#if (productOfferType.getData())??> 
111	<#assign productOfferTypeValue = productOfferType.getData()> 
112	<#assign productOfferTypeName = productOfferType.optionsMap[productOfferType.getData()]> 
113</#if> 
114 
115<#assign productOfferTypeName = productOfferTypeName?substring(productOfferTypeName?index_of(" - ") + 3)?upper_case!> 
116 
117 
118 
119<#assign offerId = getOfferIdByOfferType(productOfferTypeValue)> 
120<#assign cardArtImage = cdnCardArtUrl + "/" + getFileNameByOfferType(productOfferTypeValue) + ".png" > 
121<#assign cardArtImageAlt = cdnCardArtUrl + "/" + getFileNameByOfferType(productOfferTypeValue) + ".jpg" > 
122<#assign cardArtImageAltText = partnerName + " " + productOfferTypeName?capitalize> 
123 
124<#assign hasBalanceTransferCalculator = balanceTransferCalculatorOfferTypes?seq_contains(productOfferTypeValue)> 
125<#assign hasCalculatorRewards = calculatorOfferTypes?seq_contains(productOfferTypeValue)> 
126<#assign isExcluded = isOfferExcluded(productOfferTypeValue)> 
127<#assign prcaValue = getUsePRCA(productOfferTypeValue)> 
128 
129<#assign APR="" AMF="" BAL=""> 
130<#assign scrapedData = utilServ.makeCall('crcDDCGetSchumerBox', offerId)> 
131<#if scrapedData?? && scrapedData?has_content && (scrapedData?size > 0)> 
132         
133<#list scrapedData as sItem> 
134		<#if sItem.scrapedLabel?contains("Annual Percentage Rate (APR) for Purchases") && sItem.scrapedValue?has_content> 
135			<#if !APR?has_content><#assign APR = sItem.scrapedValue></#if> 
136		<#elseif sItem.scrapedLabel?contains("Annual Membership Fee") && sItem.scrapedValue?has_content> 
137			<#if !AMF?has_content><#assign AMF = sItem.scrapedValue></#if> 
138		<#elseif sItem.scrapedLabel?contains("APR for Balance Transfers") && sItem.scrapedValue?has_content> 
139			<#if !BAL?has_content><#assign BAL = sItem.scrapedValue></#if> 
140		</#if> 
141		<#if APR?has_content && AMF?has_content && BAL?has_content> 
142			<#break> 
143		</#if> 
144	</#list> 
145</#if> 
146 
147	<#assign APRValue = APR!'' /> 
148	<#assign AMFValue = AMF!'' /> 
149	<#assign BALValue = BAL!'' /> 
150 
151	<#assign termsAndConditionsLink =  
152			'<a href="' + oadURL_TC + '?step=display&amp;offerId=' + offerId + '&amp;locationCode=' + lc +  
153			'" target="_blank" class="t_c_link">' + 
154			'See Terms &amp; Conditions' + 
155			'</a>' 
156		/> 
157	<#assign TCLinkValue = termsAndConditionsLink!'' /> 
158	 
159	<#assign benefits = []> 
160	<#if benefit.getSiblings()?has_content> 
161		<#list benefit.getSiblings() as benefit> 
162		<#assign primaryBenefitCopyRaw = benefit.primaryBenefitCopy.getData()!'' /> 
163            <#assign updatedPrimaryBenefitCopy = replacePlaceholders(primaryBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
164			 
165			<#assign benefitObject = { 
166				"svgIcon": benefit.primaryBenefitSVGIcon.getData(), 
167				"primaryBenefitCopy": updatedPrimaryBenefitCopy 
168			} /> 
169			<#assign benefits += [benefitObject] /> 
170		</#list> 
171</#if> 
172 
173<#assign additionalBenefits = []> 
174<#if additionalBenefit.getSiblings()?has_content> 
175	<#list additionalBenefit.getSiblings() as additionalBenefit>		 
176		<#assign additionalBenefitCopyRaw = additionalBenefit.additionalBenefitCopy.getData()!'' /> 
177		<#assign updatedAdditionalBenefitCopy = replacePlaceholders(additionalBenefitCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
178				 
179		<#assign additionalBenefitObject = { 
180			"additionalBenefitSVGIcon": additionalBenefit.additionalBenefitSVGIcon.getData(), 
181			"additionalBenefitCopy": updatedAdditionalBenefitCopy 
182		} /> 
183		<#assign additionalBenefits += [additionalBenefitObject] /> 
184	</#list> 
185</#if> 
186 
187<#assign offerCopyRaw = offerCopy.getData()!'' /> 
188<#assign updatedOfferCopy = replacePlaceholders(offerCopyRaw, APRValue, AMFValue, BALValue, TCLinkValue) /> 
189 
190<#assign renderApplyNowButtonCount = 0> 
191<#macro renderApplyNowButton> 
192	<#assign renderApplyNowButtonCount = renderApplyNowButtonCount +1> 
193	<#if isExcluded == "0">  
194		<#if prcaValue == "1"> 
195			<a  
196				class="apply-now-link"  
197				data-button-name="apply-now-link"  
198				data-product-name="${productOfferTypeName!''}" 
199				href="#" 
200				offerId="${offerId}" 
201				onclick="submitForm(event)"	 
202
203				${applyNowText} 
204			</a> 
205			<form aria-hidden="true" id="applyForm" action="${prcaURL}?locationCode=${lc}&amp;offerId=${offerId}&amp;preparerType=customer" method="post"> 
206				<input type="hidden" name="locationCode" value="${lc}" id="locationCode"> 
207				<input type="hidden" name="offerId" value="${offerId}" id="offerId"> 
208				<input type="hidden" name="preparerType" value="customer"> 
209			</form> 
210		<#else> 
211			<a  
212				href="${oadURL}?locationCode=${lc}&amp;offerId=${offerId}&amp;preparerType=customer"  
213				class="apply-now-link"  
214				data-button-name="apply-now-link"  
215				data-product-name="${productOfferTypeName!''}" 
216
217				${applyNowText} 
218			</a> 
219		</#if> 
220	<#else> 
221		<a  
222			class="apply-now-link"  
223			data-button-name="apply-now-link"  
224			data-product-name="${productOfferTypeName!''}" 
225			data-micromodal-trigger="modal-tabs-${productOfferTypeValue}" 
226			href="javascript:void(0);" 
227
228			${applyNowText} 
229		</a> 
230	</#if> 
231</#macro> 
232 
233<div id="product-card-id" class="Tier3-Syn-Product-Detail-2024"> 
234	<div class="tab-card"> 
235			<div class="tab-card__left"> 
236				<h1 class="super-head"> 
237					${productOfferTypeName} 
238					<#if (cardNameFootnotes.getData())??> 
239						<sup class="super-head--super-script">${cardNameFootnotes.getData()}</sup> 
240					</#if> 
241				</h1> 
242				<img src="${cardArtImage}" alt="${cardArtImageAltText!''}" onerror="this.onerror=null;this.src='${cardArtImageAlt!''}'"/> 
243				<@renderApplyNowButton /> 
244				<#if (hasBalanceTransferCalculator)> 
245					<a href="javascript:void(0);" class="transfer-modal-link" data-micromodal-trigger="modal-2">See how much you could save with a balance transfer</a> 
246				</#if> 
247				<#if (hasCalculatorRewards)> 
248					 <a class="reward-calculator-link" target="_blank" href="${rewardsCalculatorURL}?ecdma-lc=${lc}">Calculate Rewards</a> 
249				</#if> 
250			</div> 
251 
252			<div class="tab-card__right">			 
253				<h1 class="super-head"> 
254					${productOfferTypeName} 
255					<#if (cardNameFootnotes.getData())??> 
256						<sup class="super-head--super-script">${cardNameFootnotes.getData()}</sup> 
257					</#if> 
258				</h1> 
259				<div class="offer-copy">${updatedOfferCopy}</div> 
260				<div class="benefits">  
261					<#list benefits as benefit> 
262						<div class="benefits__item"> 
263							<#if benefit.svgIcon?has_content> 
264								<div class="svg-container"> 
265									<img loading="lazy" src="${benefit.svgIcon}" alt="" class="<#if benefit.svgIcon?contains('svg')>dynamic-svg</#if>" /> 
266								</div> 
267							</#if> 
268							<div> 
269								${benefit.primaryBenefitCopy} 
270							</div> 
271						</div> 
272					</#list> 
273				</div> 
274			</div> 
275		    
276		</div> 
277		 
278		<div class="additional-benefit-container"> 
279			<div class="additional-benefit"> 
280				<h2 class="additional-benefit__header">Additional Benefits </h2> 
281				<div class="additional-benefit__layout"> 
282					<#list additionalBenefits as additionalBenefit> 
283						<div class="additional-benefit__item"> 
284							<#if additionalBenefit.additionalBenefitSVGIcon?has_content> 
285								<div class="svg-container"> 
286									<img loading="lazy" src="${additionalBenefit.additionalBenefitSVGIcon}" alt="" class="dynamic-svg" /> 
287								</div> 
288							</#if> 
289							<div>${additionalBenefit.additionalBenefitCopy}</div> 
290						</div> 
291					</#list> 
292				</div> 
293				<div class="additional-benefit__button"> 
294					<@renderApplyNowButton /> 
295				</div>	 
296			</div> 
297		</div>			 
298</div> 
299	 
300 
301<#if isExcluded == "1">     
302	<div aria-hidden="true" class="modal micromodal-slide" id="modal-tabs-${productOfferTypeValue}" > 
303		<div class="excludeModal__overlay" data-micromodal-close tabindex="-1" > 
304			<div   
305				aria-modal="true"  
306				aria-labelledby="modal-tabs-title-${productOfferTypeValue}"  
307				class="excludeModal__container"  
308				role="dialog" 
309
310				<button aria-label="Close modal" class="excludeModal__close" data-micromodal-close></button> 
311				<header class="excludeModal__header"> 
312					<div> 
313						<h2 class="excludeModal__title" id="modal-tabs-title-${productOfferTypeValue}"> 
314							<#if synExclusionMsg?has_content> 
315								${synExclusionMsg} 
316							<#else> 
317								${synExclusionDefaultMsg} 
318							</#if>  
319						</h2> 
320					 </div> 
321					 <div id="excludeModalDivLink"> 
322						<#if synExclusionMsgURL?has_content> 
323							<p> 
324								<a href="${synExclusionMsgURL}" target="_blank" aria-label="${synExclusionMsgAriaLabel!''}" class="excludeModal__link"> 
325									${learnMoreText} 
326								</a> 
327							</p> 
328							</#if> 
329					</div> 
330				</header> 
331			</div> 
332		</div> 
333	</div> 
334</#if> 
335 
336<!-- https://micromodal.vercel.app/ --> 
337<script src="https://unpkg.com/micromodal/dist/micromodal.min.js" async></script> 
338<script async>	  
339	function submitForm(event) { 
340		event.preventDefault();  
341		var offerId = event.target.getAttribute("offerId");			 
342		console.log("offerId::::::::::::::"+offerId); 
343        var lc = document.getElementById('locationCode').value; 
344 
345        var url = "${prcaURL}?locationCode=" + lc + "&offerId=" + offerId + "&preparerType=customer"; 
346		 
347        document.getElementById('applyForm').action = url;		 
348		postCreditcardLearnMore(url); 
349 
350
351	 
352	function postCreditcardLearnMore(path, method='post') { 
353		const form = document.createElement('form'); 
354		form.method = method; 
355		//form.target = '_blank'; 
356		form.action = path; 
357		document.body.appendChild(form); 
358		form.submit(); 
359	}	 
360	AUI().ready(function() { 
361		MicroModal.init(); 
362 
363		setTimeout(() => { 
364			const svgImages = document.querySelectorAll(".Tier3-Syn-Product-Detail-2024 .dynamic-svg"); 
365			svgImages.forEach(function (image) { 
366				const svgUrl = image.src;  
367				fetch(svgUrl) 
368					.then(response => response.text()) 
369					.then(svgContent => { 
370						const parser = new DOMParser(); 
371						const svgElement = parser.parseFromString(svgContent, "image/svg+xml").querySelector("svg"); 
372						if (svgElement) { 
373							image.replaceWith(svgElement); // Replace <img> with the <svg> 
374
375					}) 
376					.catch(err => console.error("Error loading SVG:", err)); 
377				 
378			}); 
379		}, 1); 
380	 }); 
381</script> 
382	 
383<style>	 
384	.excludeModal__overlay { 
385        position: fixed; 
386        top: 0; 
387        left: 0; 
388        right: 0; 
389        bottom: 0; 
390        background: rgba(0,0,0,0.6); 
391        display: flex; 
392        justify-content: center; 
393        align-items: center; 
394
395 
396    .excludeModal__container { 
397        background-color: #fff; 
398        padding: 30px; 
399        min-width: 500px; 
400        max-width: 500px; 
401        max-height: 100vh; 
402        border-radius: 4px; 
403        overflow-y: auto; 
404        box-sizing: border-box; 
405
406 
407    .excludeModal__header { 
408        display: block; 
409        justify-content: space-between; 
410        align-items: center; 
411
412 
413    .modal .excludeModal__container .excludeModal__title { 
414        margin-top: 0; 
415        margin-bottom: 0; 
416        font-weight: normal; 
417        font-size: 20px !important; 
418        line-height: 1.5 !important; 
419        color: #000; 
420        box-sizing: border-box; 
421
422     
423    .excludeModal__close { 
424        background: transparent; 
425        border: 1px solid white; 
426        padding: 4px 8px; 
427        float: right; 
428
429	 
430    .excludeModal__close:hover { 
431        border: 1px solid black; 
432
433 
434    .excludeModal__close:before { content: "\2715"; } 
435 
436    @keyframes mmfadeIn { 
437        from { opacity: 0; } 
438        to { opacity: 1; } 
439
440 
441    @keyframes mmfadeOut { 
442        from { opacity: 1; } 
443        to { opacity: 0; } 
444
445 
446    @keyframes mmslideIn { 
447        from { transform: translateY(15%); } 
448        to { transform: translateY(0); } 
449
450 
451    @keyframes mmslideOut { 
452        from { transform: translateY(0); } 
453        to { transform: translateY(-10%); } 
454
455 
456    .micromodal-slide { 
457        display: none; 
458
459 
460    .micromodal-slide.is-open { 
461        display: block; 
462
463 
464    .micromodal-slide[aria-hidden="false"] .excludeModal__overlay { 
465        animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
466
467 
468    .micromodal-slide[aria-hidden="false"] .excludeModal__container { 
469        animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
470
471 
472    .micromodal-slide[aria-hidden="true"] .excludeModal__overlay { 
473        animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
474
475 
476    .micromodal-slide[aria-hidden="true"] .excludeModal__container { 
477        animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
478
479 
480    .micromodal-slide .excludeModal__container, 
481    .micromodal-slide .excludeModal__overlay { 
482        will-change: transform; 
483
484	 
485	.excludeModal__link { 
486		font-size: 18px !important; 
487		font-weight: normal; 
488		text-decoration: underline !important; 
489
490	 
491	.excludeModal__link a:hover { 
492		text-decoration: underline !important; 
493
494	 
495	#excludeModalDivLink { 
496		margin-top: 20px; 
497
498</style> 
499 
500<style> 
501	:root { 
502		--card-image-size: 280px; 
503		--left-padding: 30px; 
504		--left-width: calc(var(--card-image-size) + var(--left-padding) ); 
505		--addition-benefits-gap-desktop: 30px; 
506
507	.Tier3-Syn-Product-Detail-2024 .tab-card { 
508		align-items: flex-start; 
509		display: flex; 
510		flex-wrap: wrap; 
511		justify-content: center; 
512		max-width: 1336px; 
513  		margin: 0 20px; 
514
515	@media (min-width: 870px) { 
516		.Tier3-Syn-Product-Detail-2024 .tab-card { 
517			flex-wrap: nowrap; 
518			padding-bottom: 45px; 
519
520
521	@media (min-width: 1376px) { 
522		.Tier3-Syn-Product-Detail-2024 .tab-card { 
523   			margin: 0 auto; 
524
525
526	@media (min-width: 1336px) { 
527		.Tier3-Syn-Product-Detail-2024 .tab-card { 
528			align-items: stretch; 
529
530
531 
532	.Tier3-Syn-Product-Detail-2024 .tab-card__left { 
533		display: flex; 
534		align-items: center; 
535		flex-direction: column; 
536		flex-shrink: 0; 
537		width: 100%; 
538		padding: 40px 0 10px 0; 
539
540	@media (min-width: 870px) { 
541		.Tier3-Syn-Product-Detail-2024 .tab-card__left { 
542			display: block; 
543			width: var(--left-width); 
544			padding-right: var(--left-padding); 
545
546		.Tier3-Syn-Product-Detail-2024 .tab-card__left .super-head { 
547			display: none; 
548
549
550    .Tier3-Syn-Product-Detail-2024 .tab-card__left img { 
551        height: auto; 
552		margin: auto; 
553		margin-bottom: 20px; 
554		display: block; 
555		max-height: var(--card-image-size); 
556		object-fit: contain; 
557		max-width: var(--card-image-size); 
558
559	#content .Tier3-Syn-Product-Detail-2024 .apply-now-link { 
560		width: 168px; 
561		padding: 10px 30px; 
562		margin-right: auto; 
563		margin-left: auto; 
564		background-color: var(--ecdma-btn-color); 
565		color: #fff; 
566		text-transform: capitalize; 
567		text-align: center; 
568		text-decoration: none; 
569
570	#content .Tier3-Syn-Product-Detail-2024 .apply-now-link:hover { 
571		background-color: var(--ecdma-hover-color); 
572
573	.Tier3-Syn-Product-Detail-2024 .apply-now-link, 
574	.Tier3-Syn-Product-Detail-2024 .reward-calculator-link, 
575	.Tier3-Syn-Product-Detail-2024 .transfer-modal-link { 
576		display: block; 
577		text-align: center; 
578		margin-bottom: 10px; 
579
580 
581	.Tier3-Syn-Product-Detail-2024 .tab-card__right { 
582		flex-grow: 1; 
583		padding: 0 0 40px 0; 
584
585	@media (min-width: 870px) { 
586		.Tier3-Syn-Product-Detail-2024 .tab-card__right { 
587			padding: 30px 0 30px 0; 
588
589
590	.Tier3-Syn-Product-Detail-2024 .tab-card__right .super-head { 
591		display: none; 
592
593	@media (min-width: 870px) { 
594		.Tier3-Syn-Product-Detail-2024 .tab-card__right .super-head { 
595			display: block; 
596
597
598	#content .Tier3-Syn-Product-Detail-2024 .super-head { 
599		color: #000; 
600		margin-bottom: 18px; 
601
602	#content .Tier3-Syn-Product-Detail-2024 .super-head--super-script { 
603		font-size: 10px; 
604    	line-height: 13px; 
605
606	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy p { 
607		margin-bottom: 10px; 
608
609	.Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy { 
610		color: #000; 
611		margin-bottom: 20px; 
612
613	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h1, 
614	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h2, 
615	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h3, 
616	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h4, 
617	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h5, 
618	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h6 { 
619		color: var(--ecdma-text-color); 
620		font-size: 25px; 
621		font-style: normal; 
622		font-weight: 400; 
623		line-height: 1.3; 
624		margin-bottom: 8px; 
625
626	.Tier3-Syn-Product-Detail-2024 .benefits { 
627        display: flex; 
628		flex-wrap: wrap; 
629		gap: 20px; 
630
631    .Tier3-Syn-Product-Detail-2024 .benefits__item { 
632		display: flex; 
633		flex-wrap: none; 
634		gap: 10px; 
635		flex: 1; 
636		flex-basis: 100%; 
637
638	@media (min-width: 870px) { 
639		.Tier3-Syn-Product-Detail-2024 .benefits__item { 
640			flex-basis: calc(50% - 20px); 
641
642
643	.Tier3-Syn-Product-Detail-2024 .benefits__item .benefitfootnote { 
644		font-size: 85%; 
645
646    .Tier3-Syn-Product-Detail-2024 .benefits__item img { 
647        width: 20px; 
648        height: 20px; 
649        margin-right: 5px; 
650
651	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h1, 
652	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h2, 
653	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h3, 
654	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h4, 
655	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h5, 
656	#content .Tier3-Syn-Product-Detail-2024 .benefits__item h6 { 
657		color: var(--ecdma-text-color); 
658		font-size: 20px; 
659		font-style: normal; 
660		font-weight: 700; 
661		line-height: 1.3; 
662		margin-bottom: 8px; 
663
664	.Tier3-Syn-Product-Detail-2024 .svg-container, 
665	.Tier3-Syn-Product-Detail-2024 .benefits__item h1, 
666	.Tier3-Syn-Product-Detail-2024 .benefits__item h2, 
667	.Tier3-Syn-Product-Detail-2024 .benefits__item h3, 
668	.Tier3-Syn-Product-Detail-2024 .benefits__item h4, 
669	.Tier3-Syn-Product-Detail-2024 .benefits__item h5, 
670	.Tier3-Syn-Product-Detail-2024 .benefits__item h6 { 
671		display: inline-block; 
672
673	#content .Tier3-Syn-Product-Detail-2024 .tab-card__right .offer-copy h2 sup, #content .Tier3-Syn-Product-Detail-2024 .benefits__item h3 sup { 
674 		font-size: 75%; 
675		font-weight: normal; 
676
677	.Tier3-Syn-Product-Detail-2024 .svg-container svg, 
678	.Tier3-Syn-Product-Detail-2024 .svg-container svg rect, 
679	.Tier3-Syn-Product-Detail-2024 .svg-container svg circle, 
680	.Tier3-Syn-Product-Detail-2024 .svg-container svg ellipse, 
681	.Tier3-Syn-Product-Detail-2024 .svg-container svg line, 
682	.Tier3-Syn-Product-Detail-2024 .svg-container svg polygon, 
683	.Tier3-Syn-Product-Detail-2024 .svg-container svg polyline, 
684	.Tier3-Syn-Product-Detail-2024 .svg-container svg path, 
685	.Tier3-Syn-Product-Detail-2024 .svg-container svg text, 
686	.Tier3-Syn-Product-Detail-2024 .svg-container svg tspan, 
687	.Tier3-Syn-Product-Detail-2024 .svg-container svg textPath 
688	.Tier3-Syn-Product-Detail-2024 .svg-container svg g, 
689	.Tier3-Syn-Product-Detail-2024 .svg-container svg use { 
690        fill: var(--ecdma-bg-color) !important; 
691		stroke: var(--ecdma-bg-color) !important; 
692
693	.Tier3-Syn-Product-Detail-2024 .svg-container svg, 
694	.Tier3-Syn-Product-Detail-2024 .svg-container img { 
695		margin: 0; 
696		max-width: 30px; 
697		height: 30px; 
698
699	.additional-benefit-container { 
700		background-color: #F7F7F7; 
701		padding: 30px 0; 
702		margin-bottom: 30px 
703
704	.Tier3-Syn-Product-Detail-2024 .additional-benefit { 
705		max-width: 1336px; 
706  		margin: 0 20px; 
707
708	@media (min-width: 1376px) { 
709		.Tier3-Syn-Product-Detail-2024 .additional-benefit { 
710    		margin: 0 auto; 
711
712
713	.Tier3-Syn-Product-Detail-2024 .additional-benefit__layout { 
714		display: flex; 
715		flex-wrap: wrap; 
716		margin: 20px 0; 
717		gap: 20px; 
718
719	@media (min-width: 870px) { 
720		.Tier3-Syn-Product-Detail-2024 .additional-benefit__layout { 
721			margin: 40px 0; 
722			gap: var(--addition-benefits-gap-desktop); 
723
724
725	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__header { 
726		color: #000; 
727		text-align: left; 
728		font-size: 25px; 
729		font-weight: 400; 
730		line-height: 1.4; 
731
732	@media (min-width: 870px) { 
733		#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__header { 
734			text-align: center; 
735
736
737	 
738	 .Tier3-Syn-Product-Detail-2024 .additional-benefit__item { 
739		display: flex; 
740		flex-wrap: nowrap; 
741		gap: 10px; 
742		flex: 1; 
743		flex-basis: 100%; 
744
745	@media (min-width: 870px) { 
746		.Tier3-Syn-Product-Detail-2024 .additional-benefit__item { 
747			flex-basis: calc(25% - var(--addition-benefits-gap-desktop)); 
748
749
750	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h1, 
751	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h2, 
752	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h3, 
753	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h4, 
754	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h5, 
755	#content .Tier3-Syn-Product-Detail-2024 .additional-benefit__item h6 { 
756		color: var(--ecdma-text-color); 
757		font-size: 20px; 
758		font-style: normal; 
759		font-weight: 700; 
760		line-height: 1.4; 
761		margin-bottom: 10px; 
762
763	.Tier3-Syn-Product-Detail-2024 .additional-benefit__button .apply-now-link { 
764		margin: auto; 
765
766	@media (min-width: 870px) { 
767		.Tier3-Syn-Product-Detail-2024 .additional-benefit__button .apply-now-link { 
768			max-width: var(--card-image-size); 
769
770
771</style> 
حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18387104" at line 5, column 15]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18387104" at line 5, column 1]
----
1<#assign utilServ = (serviceLocator.findService("com.elan.crc.utilites.service.CRCRemoteServiceService"))! /> 
2<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
3<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
4 
5<#assign lc = qstringmap["ecdma-lc"]?first> 
6<#assign lc = htmlUtil.escape(lc)> 
7<#assign lc = htmlUtil.escapeJS(lc)> 
8 
9<#assign prefix = "00000" > 
10<#assign lcWithPrefix = prefix + lc > 
11<#assign withPrefixLength = lcWithPrefix?length > 
12<#assign startHere = withPrefixLength - 5> 
13<#assign lc = lcWithPrefix?substring(startHere)> 
14 
15<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
16<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
17<#if clientProfileList?first?has_content> 
18    <#assign clientProfile = clientProfileList?first> 
19    <#assign partnerName = clientProfile.getMarketingNameLong()> 
20 
21    <#assign pbu = clientProfile.getPbu()> 
22    <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
23	 
24	<#assign fultonBankpbu = "0727491"> 
25	<#if pbu == fultonBankpbu> 
26		<style> 
27			#hideFultonInfo { 
28				display: none; 
29
30		</style> 
31	</#if> 
32 
33    <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&'+ pbu +'&'+subbu)>  
34 
35 
36    <#if (fiCardsData?size > 0)> 
37 
38        <#list fiCardsData as fib> 
39            <#switch fib.offerType> 
40                <#case "101"> 
41                    <#assign productURL = "consumer-edr"> 
42                    <#assign productName = "Everyday Rewards+"> 
43                    <#break> 
44                <#case "103"> 
45                    <#assign productURL = "consumer-edr"> 
46                    <#assign productName = "Everyday Rewards+"> 
47                    <#break> 
48                <#case "104"> 
49                    <#assign productURL = "max-cash"> 
50                    <#assign productName = "Max Cash Preferred Card">       
51                    <#break> 
52                <#case "108"> 
53                    <#assign productURL="consumer-platinum"> 
54                    <#assign productName="Platinum Card"> 
55                    <#break> 
56                <#case "109"> 
57                    <#assign productURL="consumer-platinum"> 
58                    <#assign productName="Platinum Card"> 
59                    <#break> 
60                <#case "115"> 
61                    <#assign productURL = "secured"> 
62                    <#assign productName = "Secured Card" > 
63                    <#break> 
64                <#case "138"> 
65                    <#assign productURL = "travel-rewards-plus"> 
66                    <#assign productName = "Travel Rewards+" > 
67                    <#break> 
68                <#case "141"> 
69                    <#assign productURL = "college-real-rewards"> 
70                    <#assign productName = "College Real Rewards" >     
71                    <#break> 
72                <#case "147"> 
73                    <#assign productURL = "max-cash-secured"> 
74                    <#assign productName = "Max Cash Secured Card" >     
75                    <#break> 
76                <#case "154"> 
77                    <#assign productURL = "reserve-rewards-plus"> 
78                    <#assign productName = "Reserve Rewards+" > 
79                    <#break> 
80                <#case "121"> 
81                    <#assign productURL = "business-platinum"> 
82                    <#assign productName = "Business Card" > 
83                    <#break> 
84                <#case "128"> 
85                    <#assign productURL = "business-cash-preferred"> 
86                    <#assign productName = "Business Cash Preferred" > 
87                    <#break> 
88                <#case "143"> 
89                    <#assign productURL = "business-real-rewards"> 
90                    <#assign productName = "Business Real Rewards Card" > 
91                    <#break> 
92                <#case "144"> 
93                    <#assign productURL = "smart-business-rewards"> 
94                    <#assign productName = "Smart Business Rewards Card" >     
95                    <#break> 
96                <#default>                                                         
97            </#switch> 
98            <#if productURL?has_content && url?matches(".*/${productURL}\\?.*")> 
99                <script> 
100                 console.log('offerType', '${fib.offerType}', '${productURL}') 
101                </script> 
102                        <#assign cardProviderAbbreviated = ""> 
103        <#assign cardProvider = utilServ.makeCall('crcDDCGetMcOrVisa', fib.offerType + '&' + lc)> 
104        <#if (cardProvider?size > 0)> 
105            <#-- This will be V for visa or M for mastercard. --> 
106            <#assign cardProviderAbbreviated = cardProvider[0].cardType> 
107        <#else> 
108            <script> 
109                console.log("No card provider(Visa/Master Card) found for disclaimer"); 
110            </script> 
111        </#if> 
112                <#list product.getSiblings() as card> 
113                    <#if (card.offerType.getData() == fib.offerType)> 
114                        <div title="${partnerName!''} - Disclaimer" class="page-disclaimer"> 
115                            <div class="page-disclaimer__content"> 
116                                <#if pbuList.getData()?has_content && pbuList.getData()?contains(pbu) && card.disclaimerBank.getData()?has_content> 
117                                    ${card.disclaimerBank.getData()} 
118                                <#else> 
119                                    <#if (card.disclaimerVisa?has_content && cardProviderAbbreviated?contains('V'))> 
120                                        ${card.disclaimerVisa.getData()} 
121                                    </#if> 
122                                    <#if (card.disclaimerMasterCard?has_content && cardProviderAbbreviated?contains('M')) > 
123                                        ${card.disclaimerMasterCard.getData()} 
124                                    </#if> 
125                                </#if> 
126                            </div>                            
127                        </div> 
128                        <#break> 
129                    </#if> 
130                </#list> 
131                <#break> 
132            </#if> 
133        </#list> 
134    </#if> 
135</#if> 
حصل خطأ عند معالجة القالب.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#18387099" at line 3, column 15]

----
Tip: It's the final [] step that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign lc = qstringmap["ecdma-lc"]?f...  [in template "10154#10192#18387099" at line 3, column 1]
----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))>  
3<#assign lc = qstringmap["ecdma-lc"]?first> 
4<#assign lc = htmlUtil.escape(lc)> 
5<#assign lc = htmlUtil.escapeJS(lc)> 
6 
7<#if (lc?has_content && lc?length gt 5)> 
8    <#assign lc = lc[0..4] > 
9</#if> 
10<#assign lc = lc?web_safe> 
11<#assign aDateTime = .now> 
12<#assign currentYear = aDateTime?string.yyyy> 
13 
14 
15<footer class="page-footer" id="footerIdAdPlatinum"> 
16    <div class="page-footer__content"> 
17        ${footerContent.getData()} 
18    </div> 
19</footer> 
20 
21<!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
22<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
23<style> 
24    #opt-out-button, 
25    .modal__btn.learn-more { 
26        background: #0C2074; 
27        border: 1px solid #0C2074; 
28        color: white; 
29        text-transform: uppercase; 
30        text-decoration: none; 
31        font-size: 16px; 
32        padding: 0.5rem 2rem; 
33        display: inline-block; 
34        border-radius: 0; 
35
36    #opt-out-button:hover, 
37    .modal__btn.learn-more:hover { 
38        color: white !important; 
39        border-color: #2C76AF !important; 
40        background-color: #2C76AF !important; 
41
42    .modal .modal__btn.learn-more { 
43        background: white; 
44        border: 1px solid #0C2074; 
45        color: #0C2074; 
46        text-decoration: none; 
47
48    #opt-out-button[disabled="true"] { 
49        background-color: rgba(0,0,0,.15); 
50        color: rgba(0,0,0,.45); 
51        border-color: rgba(0,0,0,.25); 
52
53    #opt-out-button:hover[disabled="true"] { 
54        background-color: rgba(0,0,0,.15) !important; 
55        color: rgba(0,0,0,.45) !important; 
56        border-color: rgba(0,0,0,.25) !important; 
57
58    #opt-out-button:focus { 
59        outline-style: solid; 
60        outline-color: white; 
61        outline-offset: -3px; 
62        outline-width: 1px; 
63
64    .opt-out-link svg { 
65        width: 30px; 
66        height: 14px; 
67        width: auto; 
68        vertical-align: middle; 
69
70    .modal__overlay { 
71        position: fixed; 
72        top: 0; 
73        left: 0; 
74        right: 0; 
75        bottom: 0; 
76        background: rgba(0,0,0,0.6); 
77        display: flex; 
78        justify-content: center; 
79        align-items: center; 
80
81 
82    .modal__container { 
83        background-color: #fff; 
84        padding: 30px; 
85        max-width: 500px; 
86        max-height: 100vh; 
87        border-radius: 4px; 
88        overflow-y: auto; 
89        box-sizing: border-box; 
90
91 
92    .modal__header { 
93        display: flex; 
94        justify-content: space-between; 
95        align-items: center; 
96
97 
98    .modal .modal__container .modal__title { 
99        margin-top: 0; 
100        margin-bottom: 0; 
101        font-weight: 600; 
102        font-size: 20px; 
103        line-height: 1.25; 
104        color: #00449e; 
105        box-sizing: border-box; 
106
107 
108    .modal__close { 
109        background: transparent; 
110        border: 1px solid white; 
111        padding: 4px 8px; 
112
113    .modal__close:hover { 
114        border: 1px solid black; 
115
116 
117    .modal__header .modal__close:before { content: "\2715"; } 
118 
119    .modal__content { 
120        margin-top: 2rem; 
121        margin-bottom: 2rem; 
122        line-height: 1.5; 
123
124 
125    @keyframes mmfadeIn { 
126        from { opacity: 0; } 
127        to { opacity: 1; } 
128
129 
130    @keyframes mmfadeOut { 
131        from { opacity: 1; } 
132        to { opacity: 0; } 
133
134 
135    @keyframes mmslideIn { 
136        from { transform: translateY(15%); } 
137        to { transform: translateY(0); } 
138
139 
140    @keyframes mmslideOut { 
141        from { transform: translateY(0); } 
142        to { transform: translateY(-10%); } 
143
144 
145    .micromodal-slide { 
146        display: none; 
147
148 
149    .micromodal-slide.is-open { 
150        display: block; 
151
152 
153    .micromodal-slide[aria-hidden="false"] .modal__overlay { 
154        animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
155
156 
157    .micromodal-slide[aria-hidden="false"] .modal__container { 
158        animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
159
160 
161    .micromodal-slide[aria-hidden="true"] .modal__overlay { 
162        animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
163
164 
165    .micromodal-slide[aria-hidden="true"] .modal__container { 
166        animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
167
168 
169    .micromodal-slide .modal__container, 
170    .micromodal-slide .modal__overlay { 
171        will-change: transform; 
172
173</style> 
174 
175<div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
176<div class="modal__overlay" tabindex="-1" data-micromodal-close> 
177    <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
178    <header class="modal__header"> 
179        <h2 class="modal__title" id="modal-1-title"> 
180        Your California privacy choices 
181        </h2> 
182        <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
183    </header> 
184    <div class="modal__content" id="modal-1-content"> 
185        <div id="message-no-cookie"> 
186            <p> 
187            We use technologies, such as cookies, that gather information on our website. That information is used for a variety of purposes, such as to understand how visitors interact with our websites, or to serve advertisements on our websites or on other websites. The use of technologies, such as cookies, constitutes a ‘share’ or ‘sale’ of personal information under the California Privacy Rights Act. You can stop the use of certain third-party tracking technologies that are not considered our service providers by clicking on “Opt-Out” below or by broadcasting the global privacy control signal.</p> 
188             
189<p>&nbsp;</p> 
190 
191<p>Note that due to technological limitations, if you visit our website from a different computer or device, or clear cookies on your browser that store your preferences, you will need to return to this screen to opt-out and/or rebroadcast the signal. You can find a description of the types of tracking technologies, and your options with respect to those technologies, by clicking “Learn more” below.</p> 
192    </div> 
193    <div id="message-with-cookie"> 
194        <p>You have successfully opted-out.</p> 
195    </div> 
196    </div> 
197    <div class="modal__footer"> 
198        <a href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank" class="modal__btn learn-more" aria-label="Learn more">Learn More</a> 
199        <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
200    </div> 
201    </div> 
202</div> 
203</div> 
204<!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
205<!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
206<script> 
207AUI().ready(function() { 
208        //this aui.ready prevents from it not showing cali opt out modal due to getting the node before page finished loading. 
209        const copyrightNode = document.querySelector('#footerIdAdPlatinum .copyright'); 
210        const fdicNode = document.querySelector('#footerIdAdPlatinum .fdic'); 
211        const agreementNode = document.querySelector('#footerIdAdPlatinum .member-agreement'); 
212        agreementNode.innerHTML= '<a class="text-color-white" href="https://onboarding.elancreditcard.com/usl/generic/credit-card/application/card-member-agreements?locationCode=${lc!''}" target="_blank">Cardmember Agreements</a>'; 
213        copyrightNode.innerHTML= '© Elan Financial Services ' + ${currentYear}; 
214        copyrightNode.classList.add('ecdma-footer-client-name-copyright'); 
215        fdicNode.innerHTML = '<a class="text-color-white" href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a>'; 
216        /* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
217        fdicNode.insertAdjacentHTML('afterend', '<div class="opt-out-container" ><a href="javascript:void(0);" class="opt-out-link" data-micromodal-trigger="modal-1">Your California privacy choices <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve"><path d="M7.4 12.8h6.8l3.1-11.6H7.4C4.2 1.2 1.6 3.8 1.6 7s2.6 5.8 5.8 5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#fff"/><path d="M22.6 0H7.4c-3.9 0-7 3.1-7 7s3.1 7 7 7h15.2c3.9 0 7-3.1 7-7s-3.2-7-7-7zm-21 7c0-3.2 2.6-5.8 5.8-5.8h9.9l-3.1 11.6H7.4c-3.2 0-5.8-2.6-5.8-5.8z" fill-rule="evenodd" clip-rule="evenodd" fill="#06f"/><path d="M24.6 4c.2.2.2.6 0 .8L22.5 7l2.2 2.2c.2.2.2.6 0 .8-.2.2-.6.2-.8 0l-2.2-2.2-2.2 2.2c-.2.2-.6.2-.8 0-.2-.2-.2-.6 0-.8L20.8 7l-2.2-2.2c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0l2.2 2.2L23.8 4c.2-.2.6-.2.8 0z" fill="#fff"/><path d="M12.7 4.1c.2.2.3.6.1.8L8.6 9.8c-.1.1-.2.2-.3.2-.2.1-.5.1-.7-.1L5.4 7.7c-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0L8 8.6l3.8-4.5c.2-.2.6-.2.9 0z" fill="#06f"/></svg></a></div>'); 
218        /* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
219 
220        window.getCookieDomain = function() { 
221            var hostname = window.location.hostname.split("."); 
222            return hostname && hostname.slice(hostname.length - 2).join("."); 
223
224        window.setToOptOut = function() { 
225            if (window.getCookie('privacy_optout')) { 
226                    document.getElementById('message-no-cookie').style.display = 'none'; 
227                    document.getElementById('message-with-cookie').style.display = 'block'; 
228                    document.getElementById('opt-out-button').setAttribute('disabled', true) 
229                } else { 
230                    document.getElementById('message-no-cookie').style.display = 'block'; 
231                    document.getElementById('message-with-cookie').style.display = 'none'; 
232
233
234        window.getCookie = function(name) { 
235            var value = '; ' + document.cookie; 
236            var parts = value.split('; ' + name + '='); 
237            if (parts.length === 2) return parts.pop().split(';').shift(); 
238
239        window.californiaOptOut = function() { 
240            if (!window.getCookie('privacy_optout')) { 
241                document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
242                try { 
243                if (window.CustomEvent) { 
244                    window.dispatchEvent(new CustomEvent('privacy_optout')); 
245                } else { 
246                    var privacyOptoutEvent = document.createEvent('Event'); 
247                    privacyOptoutEvent.initEvent('privacy_optout', true, true); 
248                    window.dispatchEvent(privacyOptoutEvent); 
249
250                window.setToOptOut(); 
251                } catch (err) { 
252                console.error(err); 
253
254
255
256        MicroModal.init({ 
257            onShow: window.setToOptOut 
258        }); 
259     
260        // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
261        const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
262        if(isBrowserGpcOptOut === true) { 
263        window.californiaOptOut(); 
264
265    }); 
266</script> 
267<!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->