PageSourceSearch

https://boutique.lascene.com/core/common.js?v=20261002123615

js lascene.com collected 2026-10-02 18:47:23 UTC 21,461 bytes, 557 lines download raw bytes

1CONFIG_ABOSHOP.baseClientUrl=(document.getElementsByTagName('base')[0] || {}).href;
2var compteurErreur=0;
3
4encodePlus = function(str){
5	if(str !== null && str !== undefined){
6		return str.replaceAll('%20', '+');
7	}
8	return str;
9}
10
11serialize = function(obj, prefix) {
12	let str = [],
13		p;
14	for (p in obj) {
15		if (obj.hasOwnProperty(p)) {
16			let k = prefix ? prefix + "[" + p + "]" : p,
17				v = obj[p];
18			str.push((v !== null && typeof v === "object") ?
19				serialize(v, k) :
20				encodePlus(encodeURIComponent(k)) + "=" + encodePlus(encodeURIComponent(v)));
21		}
22	}
23	return str.join("&");
24}
25
26window.onerror = function(msg, url, line)
27{
28	compteurErreur++;
29	if(compteurErreur>20){
30		return;
31	}
32	if(CONFIG_ABOSHOP !== null && CONFIG_ABOSHOP !== undefined &&
33		CONFIG_ABOSHOP.url !== null && CONFIG_ABOSHOP.url !== undefined &&
34		CONFIG_ABOSHOP.target !== null && CONFIG_ABOSHOP.target !== undefined  &&
35		CONFIG_ABOSHOP.contenttype !== null && CONFIG_ABOSHOP.contenttype !== undefined) {
36		let data = {
37			message: msg,
38			compteurErreur: compteurErreur,
39			stack: url + ':' + line,
40			target : CONFIG_ABOSHOP.target,
41			scope : (CONFIG_ABOSHOP.scope === undefined ? 'aboweb' : 'mahalo' ),
42			url : document.location.href,
43			userAgent: navigator.userAgent,
44			ip : "#IP#",
45			editor: CONFIG_ABOSHOP.editorAboweb
46		};
47
48		let params = {
49			"datas": {
50				"target": CONFIG_ABOSHOP.target,
51				"scope" : (CONFIG_ABOSHOP.scope === undefined ? 'aboweb' : 'mahalo' ),
52				"service": "logopen",
53				"oauth": {"scope": "open"},
54				"message": JSON.stringify(data)
55			}
56		};
57
58		let xmlhttp = new XMLHttpRequest();   // new HttpRequest instance
59		let theUrl = CONFIG_ABOSHOP.url;
60
61		//console.log($.param(params));
62		//console.log(serialize(params));
63
64		xmlhttp.open("POST", theUrl);
65		xmlhttp.setRequestHeader("Content-Type", CONFIG_ABOSHOP.contenttype);
66		xmlhttp.setRequestHeader('Cache-Control', 'no-cache');
67		xmlhttp.setRequestHeader('Accept', 'application/json; charset=utf-8');
68		xmlhttp.send(serialize(params));
69
70		let divMessage = $("#loadMessage");
71		if (divMessage && !CONFIG_ABOSHOP.target.match(/^prod/i)) {
72			divMessage.append('<h2 style="text-align: center;font-size: 15px;">Erreur: </h2>');
73			divMessage.append('<p style="text-align: center;font-size: 10px;">Msg: '+msg+'</p>');
74			divMessage.append('<p style="text-align: center;font-size: 10px;">Stack: '+url + ':' + line+'</p>');
75		} else {
76			divMessage.append('<div id="adblock-warning">'+
77			'<p><strong>Il semble que vous utilisiez un bloqueur de publicité ou que l’exécution du JavaScript soit désactivée.</strong></p>'+
78		 	'<p id="adblock-reco">Pour accéder à tout le contenu de notre site, nous vous invitons à :</p>'+
79			'<ul>'+
80			'<li>Désactiver votre bloqueur de publicités, ou</li>'+
81			'<li>Ajouter une exception pour ce site, ou</li>'+
82			'<li>Autoriser l’exécution du JavaScript.</li>'+
83			'</ul>'+
84			'<p>Nous n’affichons pas de publicités intrusives — ces éléments nous aident simplement à maintenir le site en ligne et à améliorer votre expérience.</p>'+
85			'<p>Merci pour votre compréhension !<p>');
86		}
87	}
88};
89
90if (!String.prototype.endsWith) {
91	String.prototype.endsWith = function(search, this_len) {
92		if (this_len === undefined || this_len > this.length) {
93			this_len = this.length;
94		}
95		return this.substring(this_len - search.length, this_len) === search;
96	};
97}
98
99Number.isInteger = Number.isInteger || function(value) {
100	return typeof value === "number" &&
101		isFinite(value) &&
102		Math.floor(value) === value;
103};
104
105if (typeof Object.assign != 'function') {
106	// Must be writable: true, enumerable: false, configurable: true
107	Object.defineProperty(Object, "assign", {
108		value: function assign(target, varArgs) { // .length of function is 2
109			'use strict';
110			if (target == null) { // TypeError if undefined or null
111				throw new TypeError('Cannot convert undefined or null to object');
112			}
113
114			let to = Object(target);
115
116			for (let index = 1; index < arguments.length; index++) {
117				let nextSource = arguments[index];
118
119				if (nextSource != null) { // Skip over if undefined or null
120					for (let nextKey in nextSource) {
121						// Avoid bugs when hasOwnProperty is shadowed
122						if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
123							to[nextKey] = nextSource[nextKey];
124						}
125					}
126				}
127			}
128			return to;
129		},
130		writable: true,
131		configurable: true
132	});
133}
134
135if(CONFIG_ABOSHOP.baseClientUrl.endsWith("/")){
136	CONFIG_ABOSHOP.baseClientUrl=CONFIG_ABOSHOP.baseClientUrl.slice(0, -1);
137}
138
139const index = CONFIG_ABOSHOP.baseClientUrl.indexOf("/clients/");
140const indexAccount = CONFIG_ABOSHOP.baseClientUrl.indexOf("/account/");
141if(index>-1){
142	CONFIG_ABOSHOP.baseUrl = CONFIG_ABOSHOP.baseClientUrl.substring(0,index);
143} else if(indexAccount>-1){
144	CONFIG_ABOSHOP.baseUrl = CONFIG_ABOSHOP.baseClientUrl.substring(0,indexAccount);
145} else {
146	CONFIG_ABOSHOP.baseUrl = CONFIG_ABOSHOP.baseClientUrl;
147}
148//console.log("baseUrl="+CONFIG_ABOSHOP.baseUrl);
149//console.log("baseClientUrl="+CONFIG_ABOSHOP.baseClientUrl);
150
151var initAppIsAvailable=false,domIsReady=false;
152
153$(function() {
154	$("div[ui-view='error']").hide();
155	setTimeout(function(){domIsReady=true;tryInitApp();},10);
156});
157
158$.getJSON( "config.json?v="+CONFIG_ABOSHOP.forceversion, function(confClient) {
159	//console.log(JSON.stringify(confClient));
160	confClient.forceversion = CONFIG_ABOSHOP.forceversion;
161	confClient.baseUrl = CONFIG_ABOSHOP.baseUrl;
162	confClient.baseClientUrl = CONFIG_ABOSHOP.baseClientUrl;
163	CONFIG_ABOSHOP = confClient;
164
165	if(CONFIG_ABOSHOP.addPrefixPath === undefined){
166		CONFIG_ABOSHOP.addPrefixPath = "";
167	}
168
169	//On charge la conf client
170	if(confCustomerOnError()){
171		$("body").html("<h1>Error when load shop</h1><p>The customer configuration is not load</p>");
172
173	} else {
174		//On charge la conf common et on complete la conf client uniquement pour les cles qui nexistent pas
175		$.getJSON( CONFIG_ABOSHOP.baseUrl+"/core/config.json?v="+CONFIG_ABOSHOP.forceversion, function(confCommon) {
176			//console.log(JSON.stringify(confCommon));
177			for(let p in confCommon){
178				if(CONFIG_ABOSHOP[p] === undefined){
179					CONFIG_ABOSHOP[p] = confCommon[p];
180				}
181			}
182
183			if(CONFIG_ABOSHOP.headerroot === undefined){
184				CONFIG_ABOSHOP.headerroot = CONFIG_ABOSHOP.baseUrl+"/core/content/header/";
185			}
186
187			if(CONFIG_ABOSHOP.footerroot === undefined){
188				CONFIG_ABOSHOP.footerroot = CONFIG_ABOSHOP.baseUrl+"/core/content/footer";
189			}
190
191			if(CONFIG_ABOSHOP.url === undefined){
192				CONFIG_ABOSHOP.url = CONFIG_ABOSHOP.baseUrl+"/core/getapi.php";
193			}
194
195			if(confCommonOnError()){
196				$("body").html("<h1>Error when load shop</h1><p>The common configuration is not load</p>");
197			} else {
198				if(CONFIG_ABOSHOP.forcelog === undefined){
199					CONFIG_ABOSHOP.forcelog = false;
200				}
201				if(CONFIG_ABOSHOP.target.startsWith("prod") && CONFIG_ABOSHOP.forcelog === false) {
202					logger.disableLogger();
203				}
204				if(CONFIG_ABOSHOP.scope === undefined){
205					CONFIG_ABOSHOP.scope = 'mahalo';
206				}
207				if (CONFIG_ABOSHOP.usegetapi === undefined) {
208					CONFIG_ABOSHOP.usegetapi = true;
209				}
210
211				if (CONFIG_ABOSHOP.usegetapi) {
212					//ancien mode on utilise aboweb via getapi.php
213					CONFIG_ABOSHOP.contenttype = 'application/x-www-form-urlencoded';
214					CONFIG_ABOSHOP.authentificationheader = "X-Tbs-Authorization";
215				} else {
216					//nouveau mode on utilise aboweb en direct sans passer par getapi.php
217					CONFIG_ABOSHOP.url = CONFIG_ABOSHOP[CONFIG_ABOSHOP.scope + "ws" + CONFIG_ABOSHOP.target];
218					CONFIG_ABOSHOP.contenttype = 'application/json';
219					CONFIG_ABOSHOP.authentificationheader = "Authorization";
220				}
221
222				//On charge la boutique
223				setTimeout(function(){initAppIsAvailable=true;tryInitApp();},10);
224			}
225		})
226			.fail(function() {
227				$("body").html("<h1>Error when load shop</h1><p>The common configuration not found</p>");
228			});
229	}
230})
231	.fail(function(error) {
232		$("body").html("<h1>Error when load shop</h1><p>The customer configuration not found</p>");
233	});
234
235function tryInitApp(){
236	if(initAppIsAvailable && domIsReady) {
237		console.log("tryInitApp");
238		initApp();
239	}
240}
241
242var myTimerCheckLoading;
243
244function startTimerCheck() {
245	myTimerCheckLoading = setTimeout(function(){checkAllScriptsLoaded();},10000);
246}
247
248function resetTimerCheck() {
249	stopTimerCheck();
250	startTimerCheck();
251}
252
253function stopTimerCheck() {
254	clearTimeout(myTimerCheckLoading);
255}
256
257var myTimerCheckMessage;
258var currentMessage = 0;
259function startTimerMessage() {
260	if(CONFIG_ABOSHOP.waitingMessages !== undefined && CONFIG_ABOSHOP.waitingMessages.length > 0) {
261		currentMessage = Math.floor(Math.random() * CONFIG_ABOSHOP.waitingMessages.length);
262		addMessageLoading(CONFIG_ABOSHOP.waitingMessages[currentMessage], 2);
263		myTimerCheckMessage = setInterval(function() {
264			changeMessage();
265		},10000);
266	}
267}
268
269function changeMessage() {
270	currentMessage = (currentMessage+1) % CONFIG_ABOSHOP.waitingMessages.length;
271	addMessageLoading(CONFIG_ABOSHOP.waitingMessages[currentMessage], 2);
272}
273
274function stopTimerMessage() {
275	if(myTimerCheckMessage) {
276		clearTimeout(myTimerCheckMessage);
277	}
278}
279
280function initMessageLoading(){
281	if(CONFIG_ABOSHOP.displayLoadingMessage !== undefined && CONFIG_ABOSHOP.displayLoadingMessage) {
282		let divMessage = $("#loadMessage .loaders");
283		if (divMessage) {
284			divMessage.prepend('<p id="message1" style="text-align: center;font-size: 12px;"></p>');
285			divMessage.append('<p id="message2" style="text-align: center;font-size: 12px;"></p>');
286		}
287	}
288}
289
290function addMessageLoading(message, id){
291	if(CONFIG_ABOSHOP.displayLoadingMessage !== undefined && CONFIG_ABOSHOP.displayLoadingMessage) {
292		let divMessageLoading = $("#message"+id);
293		if (divMessageLoading) {
294			if (divMessageLoading.is(":visible")) {
295				divMessageLoading.html(message);
296			} else {
297				stopTimerMessage();
298			}
299		}
300	}
301}
302
303function checkAllScriptsLoaded() {
304	displayNotLoadedChildren(treeJs);
305}
306
307function displayNotLoadedChildren(tree){
308	let urlObj;
309	for(let i=0;i < tree.scripts.length;i++){
310		urlObj = tree.scripts[i];
311		if (urlObj.loaded === false){
312			throw new Error("Erreur : script not loaded : "+urlObj.url);
313		}
314	}
315	if (tree !== undefined && tree.children !== undefined) {
316		displayNotLoadedChildren(tree.children);
317	}
318}
319
320function endLoad(){
321	stopTimerCheck();
322	startTimerMessage();
323	t1 = performance.now();
324	console.log("Load js took " + (t1 - t0) + " milliseconds.");
325
326	let html = document.getElementsByTagName("html")[0] || document.documentElement,divLoadMessage = document.getElementById("loadMessage");
327	/*if (divLoadMessage) {
328        divLoadMessage.parentNode.removeChild(divLoadMessage);
329    }*/
330	html.setAttribute("ng-app", "AboShopApp");
331
332	angular.bootstrap(html, ['AboShopApp']);
333}
334
335//async function loadChildren(tree){
336function loadChildren(tree){
337	for(let i=0;i < tree.scripts.length;i++){
338		//await new Promise(r => setTimeout(r, 2000));
339		loadScript(tree.scripts[i], tree);
340	}
341}
342
343function countAllChildren(tree){
344	return countChildren(tree);
345}
346
347function countChildren(tree){
348	let c = 0;
349	if (tree !== undefined && tree.children !== undefined) {
350		c = countChildren(tree.children);
351	}
352	c += tree.scripts.length;
353	return c;
354}
355
356var treeJs = {};
357var t0 = 0;
358var t1 = 0;
359var totalScript = 0;
360var currentTotalLoadedScript = 0;
361
362function loadScript(urlOb,tree)
363{
364	var head = document.getElementsByTagName("head")[0] || document.documentElement;
365
366	var script = document.createElement("script");
367	script.charset = 'utf-8';
368	script.src = urlOb.url;
369
370	// Handle Script loading
371	let done = false;
372
373	// Attach handlers for all browsers
374	script.onload = script.onreadystatechange = function afterLoad() {
375		if ( !done && (!this.readyState ||
376			this.readyState === "loaded" || this.readyState === "complete") ) {
377			done = true;
378
379			let src = script.getAttribute('src');
380			if (src !== 'undefined' && src !== undefined){
381				// console.log(src);
382				urlOb.loaded = true;
383				resetTimerCheck();
384				currentTotalLoadedScript++;
385				addMessageLoading('Chargement de la boutique en cours : ' + (currentTotalLoadedScript*100/totalScript) + '%', 1);
386
387				let allLoaded = true;
388				let i = 0;
389				while(i < tree.scripts.length && allLoaded) {
390					allLoaded = tree.scripts[i].loaded;
391					i++;
392				}
393				if (allLoaded) {
394					if(tree.children !== undefined){
395						loadChildren(tree.children);
396					} else {
397						endLoad();
398					}
399				}
400
401				// Handle memory leak in IE
402				script.onload = script.onreadystatechange = null;
403				if ( head && script.parentNode ) {
404					head.removeChild( script );
405				}
406			}
407		}
408	};
409
410	// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
411	// This arises when a base node is used (#2709 and #4378).
412	head.insertBefore( script, head.firstChild );
413}
414
415function initApp(){
416	startTimerCheck();
417	treeJs = {
418		scripts : [
419			{url: CONFIG_ABOSHOP.baseUrl+"/core/js/spin.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
420			{url: CONFIG_ABOSHOP.baseUrl+"/core/js/scripts.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
421			{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angular.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
422			{url: CONFIG_ABOSHOP.baseUrl+"/core/js/crypto-js.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false}
423		],
424		children : {
425			scripts : [
426				{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angular-ui-router.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
427				{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angular-translate.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
428				{url: CONFIG_ABOSHOP.baseUrl+"/core/js/aes.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
429			],
430			children : {
431				scripts : [
432					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angular-translate-handler-log.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
433					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angular-recaptcha.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
434					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angulartics.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
435					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angulartics-ga.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
436					{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/suivi.conf.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
437					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/tbs-ng-storage.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
438					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angular-filter-0.5.2.min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
439					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/underscore-min.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
440					{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/angulike.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false}
441				],
442				children : {
443					scripts : [
444						{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/app.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false}
445					],
446					children : {
447						scripts : [
448							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/app.controller.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
449							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/app.config.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
450							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/auth.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
451							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/ws.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
452							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/seo.provider.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
453							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/app.routing.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
454							{url: "angular/customer.controller.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
455							{url: "angular/customer.routing.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
456							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/app.directives.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
457							{url: CONFIG_ABOSHOP.headerroot+"/header.directives.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
458							{url: CONFIG_ABOSHOP.footerroot+"/footer.directives.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
459							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/init.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
460							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/dico.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
461							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/wishlist.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
462							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/product.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
463							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/category.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
464							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/formulaire.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
465							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/cart.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
466							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/data.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
467							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/config.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
468							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/customer.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
469							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/payment.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
470							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/contact.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
471							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/menu.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
472							{url: CONFIG_ABOSHOP.baseUrl+"/core/aboshop/cms.factory.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
473							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/poool.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
474							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/pixelfacebook.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
475							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/tbsgtag.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
476							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/linkedintag.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
477							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/tbs-atinternet.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
478							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/tbs-didomee.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
479							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/tbs-piano.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false},
480							{url: CONFIG_ABOSHOP.baseUrl+"/core/js/angular/tbs-marfeel.js?v="+CONFIG_ABOSHOP.forceversion, loaded : false}
481						]
482					}
483				}
484			}
485		}
486	};
487
488	if(CONFIG_ABOSHOP.tokenqiota !== undefined){
489		if(CONFIG_ABOSHOP.urlqiota !== undefined){
490			treeJs.scripts.push({url: CONFIG_ABOSHOP.urlqiota, loaded : false});
491		} else {
492			treeJs.scripts.push({url: "https://www.qiota.com/assets/getQiotaPay.js", loaded : false});
493		}
494		if(CONFIG_ABOSHOP.urlQiotaStats !== undefined){
495			treeJs.scripts.push({url: CONFIG_ABOSHOP.urlQiotaStats, loaded : false});
496		} else {
497			treeJs.scripts.push({url: "https://www.qiota.com/assets/getQiota.js", loaded : false});
498		}
499	}
500
501	t0 = performance.now();
502	totalScript = countAllChildren(treeJs);
503	currentTotalLoadedScript = 0;
504	initMessageLoading();
505	addMessageLoading('Chargement de la boutique en cours : ' + (currentTotalLoadedScript*100/totalScript) + '%', 1);
506	//('Encore quelques petits instants et nous sommes &agrave; vous !', 2);
507	loadChildren(treeJs);
508}
509
510function confCommonOnError(){
511	return (confCustomerOnError()||
512		CONFIG_ABOSHOP.headerroot === undefined||
513		CONFIG_ABOSHOP.footerroot === undefined||
514		CONFIG_ABOSHOP.abowebwsprod === undefined||
515		CONFIG_ABOSHOP.abowebwspreprod === undefined||
516		CONFIG_ABOSHOP.abowebwsrecette === undefined||
517		CONFIG_ABOSHOP.abowebwsdev === undefined||
518		CONFIG_ABOSHOP.abowebwsvalidation === undefined||
519		CONFIG_ABOSHOP.url === undefined);
520}
521
522function confCustomerOnError(){
523	return (!CONFIG_ABOSHOP ||
524		CONFIG_ABOSHOP == undefined ||
525		CONFIG_ABOSHOP.clientDir === undefined||
526		CONFIG_ABOSHOP.editorAboweb === undefined||
527		CONFIG_ABOSHOP.companyAboweb === undefined||
528		CONFIG_ABOSHOP.paramFirst === undefined||
529		CONFIG_ABOSHOP.paramSecond === undefined||
530		CONFIG_ABOSHOP.modeConnexion === undefined||
531		CONFIG_ABOSHOP.codeIsoDefaut === undefined||
532		CONFIG_ABOSHOP.enTest === undefined||
533		CONFIG_ABOSHOP.captchaPublicKey === undefined||
534		CONFIG_ABOSHOP.target === undefined);
535}
536
537var logger = function()
538{
539	let oldConsoleLog = null;
540	let pub = {};
541
542	pub.enableLogger =  function enableLogger()
543	{
544		if(oldConsoleLog == null)
545			return;
546
547		window['console']['log'] = oldConsoleLog;
548	};
549
550	pub.disableLogger = function disableLogger()
551	{
552		oldConsoleLog = console.log;
553		window['console']['log'] = function() {};
554	};
555
556	return pub;
557}();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.