An error occurred while processing the template.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#154018153" at line 5, 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#154018153" 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 prefix = "00000" > 
7<#assign lcWithPrefix = prefix + lc > 
8<#assign withPrefixLength = lcWithPrefix?length > 
9<#assign startHere = withPrefixLength - 5> 
10<#assign lc = lcWithPrefix?substring(startHere)> 
11 
12<#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
13<#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
14 
15<#if clientProfileList?first?has_content> 
16        <#assign clientProfile = clientProfileList?first> 
17        <#assign partnerName = clientProfile.getMarketingNameLong()> 
18        <#assign pbu = clientProfile.getPbu()> 
19        <#assign subbu = clientProfile.getSUBBRANDBUNBR()>  
20 
21        <#--  offerId[6] is Desert Financial  --> 
22        <#assign spcuOfferIds = ["9GHX88G7R6","87HH7XQHRH","MWWR46WD88","X523QG1473","BBG3MM1W95","9G315585H5"]> 
23        <#assign isSpcuEnrolled = false> 
24 
25        <#-- need to get card data to retrieve offerId and identify SPCU offers --> 
26        <#assign fiCardsData = utilServ.makeCall('crcTier3GetPbuData','0&' + pbu + '&' + subbu)> 
27        <#list fiCardsData as fib> 
28            <#assign offerId = fib.offerId>    
29            <#if (spcuOfferIds?seq_contains(offerId))> 
30                <#assign isSpcuEnrolled = true> 
31            </#if>               
32        </#list>  
33        <script> 
34            // console.log('%cofferId: ', 'font-weight: bold; color: red;', "${offerId}"); 
35        </script> 
36 
37    <div class="disclaimer" title="${partnerName!''} - Disclaimer"> 
38        <#if (isSpcuEnrolled) > 
39            <#--  SPCU Dessert Financial (0524564) , Harborstone: (0523361) --> 
40            ${spcu.getData()} 
41        <#else>  
42            ${standard.getData()} 
43        </#if> 
44    </div> 
45</#if> 
An error occurred while processing the template.
The following has evaluated to null or missing:
==> qstringmap["ecdma-lc"]  [in template "10154#10192#153758217" at line 4, 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#153758217" at line 4, column 1]
----
1<#assign url = themeDisplay.getPortalURL() + themeDisplay.getURLCurrent()/> 
2<#assign qstringmap = httpUtil.getParameterMap(httpUtil.getQueryString(url))> 
3 
4<#assign lc= qstringmap["ecdma-lc"]?first> 
5<#assign prefix = "00000" > 
6<#assign lcWithPrefix = prefix + lc > 
7<#assign withPrefixLength = lcWithPrefix?length > 
8<#assign startHere = withPrefixLength - 5> 
9<#assign lc = lcWithPrefix?substring(startHere)> 
10<#if lc?has_content> 
11    <#assign clientProfileService = (serviceLocator.findService("com.elan.crc.user.service.CrcClientProfileLocalService"))! > 
12   <#assign clientProfileList = clientProfileService.findByLocationCode(lc)> 
13   <#assign clientProfile = clientProfileList?first> 
14   <#assign pbu = clientProfile.getPbu()> 
15   <#assign subbu = clientProfile.getSUBBRANDBUNBR()> 
16   <#assign partnerName=clientProfile.getMarketingNameLong()> 
17    <#assign clientDataService = (serviceLocator.findService("com.elan.crc.user.service.CrcPbuLocalService"))! /> 
18   <#assign clientProfileDataList = clientDataService.getByPbuAndSubBu(pbu,subbu)> 
19   <#assign partnerUrl = clientProfileDataList.getPartnerMainUrl()> 
20   <#if partnerUrl?has_content && !partnerUrl?matches(r"(?i)^https?\:\/\/.*")> 
21            <#-- add protocal if missing  --> 
22            <#assign partnerUrl = 'https://' + partnerUrl> 
23        </#if> 
24</#if> 
25<footer class="footer bg-color-black text-color-white"> 
26    ${footerContent.getData()} 
27</footer> 
28 
29<!-- BEGIN CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
30<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script> 
31<style> 
32    #opt-out-button, 
33    .modal__btn.learn-more { 
34        background: #0C2074; 
35        border: 1px solid #0C2074; 
36        color: white; 
37        text-transform: uppercase; 
38        text-decoration: none; 
39        font-size: 16px; 
40        padding: 0.5rem 2rem; 
41        display: inline-block; 
42        border-radius: 0; 
43
44    #opt-out-button:hover, 
45    .modal__btn.learn-more:hover { 
46        color: white; 
47        border-color: #2C76AF !important; 
48        background-color: #2C76AF !important; 
49
50    .modal .modal__btn.learn-more { 
51        background: white; 
52        border: 1px solid #0C2074; 
53        color: #0C2074; 
54        text-decoration: none; 
55
56    #opt-out-button[disabled="true"] { 
57        background-color: rgba(0,0,0,.15); 
58        color: rgba(0,0,0,.45); 
59        border-color: rgba(0,0,0,.25); 
60
61    #opt-out-button:hover[disabled="true"] { 
62        background-color: rgba(0,0,0,.15) !important; 
63        color: rgba(0,0,0,.45) !important; 
64        border-color: rgba(0,0,0,.25) !important; 
65
66    #opt-out-button:focus { 
67        outline-style: solid; 
68        outline-color: white; 
69        outline-offset: -3px; 
70        outline-width: 1px; 
71
72    .opt-out-link svg { 
73        width: 30px; 
74        height: 14px; 
75        width: auto; 
76        vertical-align: middle; 
77
78    .modal__overlay { 
79        position: fixed; 
80        top: 0; 
81        left: 0; 
82        right: 0; 
83        bottom: 0; 
84        background: rgba(0,0,0,0.6); 
85        display: flex; 
86        justify-content: center; 
87        align-items: center; 
88
89 
90    .modal__container { 
91        background-color: #fff; 
92        padding: 30px; 
93        max-width: 500px; 
94        max-height: 100vh; 
95        border-radius: 4px; 
96        overflow-y: auto; 
97        box-sizing: border-box; 
98
99 
100    .modal__header { 
101        display: flex; 
102        justify-content: space-between; 
103        align-items: center; 
104
105 
106    .modal .modal__container .modal__title { 
107        margin-top: 0; 
108        margin-bottom: 0; 
109        font-weight: 600; 
110        font-size: 20px; 
111        line-height: 1.25; 
112        color: #00449e; 
113        box-sizing: border-box; 
114
115 
116    .modal__close { 
117        background: transparent; 
118        border: 1px solid white; 
119        padding: 4px 8px; 
120
121    .modal__close:hover { 
122        border: 1px solid black; 
123
124 
125    .modal__header .modal__close:before { content: "\2715"; } 
126 
127    .modal__content { 
128        font-size: 14px; 
129        line-height: 1.5; 
130        margin-top: 2rem; 
131        margin-bottom: 2rem; 
132
133 
134    @keyframes mmfadeIn { 
135        from { opacity: 0; } 
136        to { opacity: 1; } 
137
138 
139    @keyframes mmfadeOut { 
140        from { opacity: 1; } 
141        to { opacity: 0; } 
142
143 
144    @keyframes mmslideIn { 
145        from { transform: translateY(15%); } 
146        to { transform: translateY(0); } 
147
148 
149    @keyframes mmslideOut { 
150        from { transform: translateY(0); } 
151        to { transform: translateY(-10%); } 
152
153 
154    .micromodal-slide { 
155        display: none; 
156
157 
158    .micromodal-slide.is-open { 
159        display: block; 
160
161 
162    .micromodal-slide[aria-hidden="false"] .modal__overlay { 
163        animation: mmfadeIn .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
164
165 
166    .micromodal-slide[aria-hidden="false"] .modal__container { 
167        animation: mmslideIn .3s cubic-bezier(0, 0, .2, 1); 
168
169 
170    .micromodal-slide[aria-hidden="true"] .modal__overlay { 
171        animation: mmfadeOut .3s cubic-bezier(0.0, 0.0, 0.2, 1); 
172
173 
174    .micromodal-slide[aria-hidden="true"] .modal__container { 
175        animation: mmslideOut .3s cubic-bezier(0, 0, .2, 1); 
176
177 
178    .micromodal-slide .modal__container, 
179    .micromodal-slide .modal__overlay { 
180        will-change: transform; 
181
182</style> 
183 
184<div class="modal micromodal-slide" id="modal-1" aria-hidden="true"> 
185<div class="modal__overlay" tabindex="-1" data-micromodal-close> 
186    <div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="modal-1-title"> 
187    <header class="modal__header"> 
188        <h2 class="modal__title" id="modal-1-title"> 
189        Your California privacy choices 
190        </h2> 
191        <button class="modal__close" aria-label="Close modal" data-micromodal-close></button> 
192    </header> 
193    <div class="modal__content" id="modal-1-content"> 
194        <div id="message-no-cookie"> 
195            <p> 
196            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> 
197             
198<p>&nbsp;</p> 
199 
200<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> 
201    </div> 
202    <div id="message-with-cookie"> 
203        <p>You have successfully opted-out.</p> 
204    </div> 
205    </div> 
206    <div class="modal__footer"> 
207        <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> 
208        <button id="opt-out-button" class="modal__btn modal__btn-primary" aria-label="Opt Out and Close modal" onclick="window.californiaOptOut()">Opt Out</button> 
209    </div> 
210    </div> 
211</div> 
212</div> 
213<!-- END CALIFORNIA OPT-OUT MODAL STYLE AND MARKUP --> 
214 
215<script> 
216    const fdicNode = document.querySelector('.footer .fdic'); 
217    document.querySelector('.footer .copyright').classList.add('ecdma-footer-client-name-copyright'); 
218    fdicNode.innerHTML = '<p><a class="text-color-white" href="https://www.myaccountaccess.com/onlineCard/publicPrivacyPolicy.do?phase=privacyPolicy" target="_blank">Privacy and Security</a></p>'; 
219    document.querySelector('.footer .member-agreement').innerHTML = '<p><a class="text-color-white" href="https://online1.elancard.com/oad/cmas.controller?locationCode=${lc!0}&preparerType=customer&isNewRequest=false" target="_blank">Cardmember Agreements</a></p>'; 
220</script> 
221<#if partnerUrl?has_content> 
222    <script> 
223        document.querySelector('.copyright .homelink').href="${partnerUrl!''}"; 
224        document.querySelector('.copyright .homelink').title="${partnerName!''}"; 
225        document.querySelector('.copyright .homelink').innerText="Home"; 
226    </script> 
227</#if> 
228 
229<script> 
230/* BEGIN CALIFORNIA OPT-OUT MODAL TRIGGER */ 
231  fdicNode.insertAdjacentHTML('afterend', '<div style="display: inline-block; margin-left: 100px;"><a href="javascript:void(0);" class="opt-out-link text-color-white" 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>'); 
232/* END CALIFORNIA OPT-OUT MODAL TRIGGER */ 
233</script> 
234<!-- BEGIN CALIFORNIA OPT-OUT MODAL LOGIC --> 
235 
236<script> 
237    window.getCookieDomain = function() { 
238        var hostname = window.location.hostname.split("."); 
239        return hostname && hostname.slice(hostname.length - 2).join("."); 
240
241    window.setToOptOut = function() { 
242        if (window.getCookie('privacy_optout')) { 
243                document.getElementById('message-no-cookie').style.display = 'none'; 
244                document.getElementById('message-with-cookie').style.display = 'block'; 
245                document.getElementById('opt-out-button').setAttribute('disabled', true) 
246            } else { 
247                document.getElementById('message-no-cookie').style.display = 'block'; 
248                document.getElementById('message-with-cookie').style.display = 'none'; 
249
250
251    window.getCookie = function(name) { 
252        var value = '; ' + document.cookie; 
253        var parts = value.split('; ' + name + '='); 
254        if (parts.length === 2) return parts.pop().split(';').shift(); 
255
256    window.californiaOptOut = function() { 
257        if (!window.getCookie('privacy_optout')) { 
258            document.cookie = 'privacy_optout=1; path=/; domain=' + window.getCookieDomain() + '; expires=Thu, 31 Dec 2099 00:00:00 GMT;'; 
259            try { 
260             if (window.CustomEvent) { 
261                window.dispatchEvent(new CustomEvent('privacy_optout')); 
262             } else { 
263                var privacyOptoutEvent = document.createEvent('Event'); 
264                privacyOptoutEvent.initEvent('privacy_optout', true, true); 
265                window.dispatchEvent(privacyOptoutEvent); 
266
267             window.setToOptOut(); 
268            } catch (err) { 
269             console.error(err); 
270
271
272
273    MicroModal.init({ 
274        onShow: window.setToOptOut 
275    }); 
276    AUI().ready(function() { 
277        // user browser setting for Global Privacy Control to opt out of sharing information with third parties 
278        const isBrowserGpcOptOut = navigator.globalPrivacyControl; 
279        if(isBrowserGpcOptOut === true) { 
280        window.californiaOptOut(); 
281
282    }); 
283</script> 
284<!-- END CALIFORNIA OPT-OUT MODAL LOGIC -->