1!(function ($) { 2const ACTION_URL = 'front/imageEditor/imageEditorActionHandler.jsp'; 3const LIB_URL = 'frontlib/filerobot-image-editor/build/4.x/filerobot-image-editor.min.js'; 4const LIB_TRANSLATIONS_URL = 'js/jalios/core/components/imageEditor/jalios-image-editor-translations.jsp'; 5let imageEditorLoaded = false; 6let activeImageEditor; 7const DEFAULT_CONFIG = { 8language: document.documentElement.lang, 9annotationsCommon: { 10fill: '#ff0000' 11}, 12savingPixelRatio: 2, 13useBackendTranslations: false 14}; 15const triggerImageEditorEvent = function (eventType, data) { 16var event = $.Event('jalios:imageEditor'); 17event.imageEditor = {}; 18event.imageEditor.type = eventType; 19event.imageEditor.editor = activeImageEditor; 20event.imageEditor.data = data; 21$(document).trigger(event); 22return event; 23}; 24const handleComplete = function (url, dataId) { 25let absoluteUrl = JcmsJsContext.getBaseUrl() + url; 26// Invalidate cache for original image 27$.ajax({ 28url: absoluteUrl, 29type: 'GET', 30headers: { 31'Cache-Control': 'no-cache' 32} 33}).done(function (infos) { 34$('img[data-jalios-data-id=' + activeImageEditor.editorContext.dataId + ']').each(function (idx, element) { 35// Replace image reference in the image element data to handle the case where image could be edited multiple times on same page 36let lightboxOptions = $(element).data("jalios-lightbox-options"); 37if (lightboxOptions) { 38if (lightboxOptions.imageEditorOption) { 39lightboxOptions.imageEditorOption.filePath = url; 40} 41} 42//Replace image in DOM 43setTimeout(() => { 44element.src = url; 45}, 500); 46if (!$(element).closest('.wysiwyg').exists()) { 47$(element).css('max-height', $(element).outerHeight()).css('max-width', $(element).outerWidth()); 48} 49$(element).css('height', 'initial').css('width', 'initial'); 50$(element).removeClass('lightbox-initialized'); 51// Reset lightbox 52if (lightboxOptions && lightboxOptions.thumb) { 53lightboxOptions.thumb = url; 54// Update element data for lightbox / image editor 55$(element).data('jalios-lightbox-options', lightboxOptions); 56let gallery = $.jalios.Lightbox.getGallery(element); 57if (gallery) { 58// Remove backdrop 59$(gallery.$backdrop.selector).closest(".lg-container.lg-show-in").removeClass("lg-show-in").removeClass("lg-show"); 60// Destroy gallery 61gallery && gallery.destroy(); 62} 63// Remove initialized lightGallery plugin 64$(element).removeData('lightGallery'); 65} 66}); 67// Also replace all elements that might target the old url (Usually, link or button that triggers the image editor) 68$("[data-jalios-image-editor-context]").each(function (idx, element) { 69let imageEditorContext = $(element).data("jalios-image-editor-context"); 70if (imageEditorContext.dataId === dataId) { 71imageEditorContext.filePath = url; 72$(element).data("jalios-image-editor-context", imageEditorContext); 73} 74}); 75}); 76}; 77const closeImageEditor = function () { 78showLightBox(); 79$('#image-editor-wrapper').remove(); 80activeImageEditor.terminate(); 81}; 82const getImageEditorWrapperDiv = function () { 83if ($('#image-editor-wrapper').exists()) { 84return $('#image-editor-wrapper'); 85} 86let div = jQuery('<div>', { 87id: 'image-editor-wrapper', 88class: 'image-editor-wrapper' 89}).appendTo('body'); 90return $(div); 91}; 92const getImageEditorBackdrop = function () { 93if ($(".image-editor-inline").exists()) { 94return; 95} 96if (!$('#image-editor-backdrop').exists()) { 97jQuery('<div>', { 98id: 'image-editor-backdrop', 99class: 'image-editor-backdrop' 100}).appendTo('body'); 101$('#image-editor-backdrop').on('click', function (_event) { 102closeImageEditor(); 103}); 104} 105return { 106show: function () { 107$('#image-editor-backdrop').show(); 108}, 109hide: function () { 110$('#image-editor-backdrop').hide(); 111} 112}; 113}; 114const saveImage = function (imageData, imageDesignState, editorContext) { 115triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.BEFORE_COMPLETE); 116imageData.imageCanvas.toBlob((blob) => { 117const file = new File([blob], editorContext.filePath.split(/[\\\/]/).pop()); 118var formData = new FormData(); 119formData.append('filename', file); 120formData.append('id', activeImageEditor.editorContext.dataId); 121formData.append('opUpload', 'true'); 122formData.append('removeFile', 'true'); 123triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.SAVE, { 124file: file 125}); 126$.ajax({ 127type: 'POST', 128url: ACTION_URL, 129data: formData, 130processData: false, 131contentType: false 132}) 133.done(function (infos) { 134handleComplete(infos.data.filename, infos.data.dataId); 135triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.AFTER_IMAGE_REFRESHED, { 136file: file 137}); 138closeImageEditor(); 139}) 140.fail(function (_infos) {
141triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.ERROR); 142}); 143}); 144return false; 145}; 146const hideLightBox = function () { 147if ($('.lg-container.lg-show-in').length > 0) { 148$('.lg-container.lg-show-in').removeClass("lg-show"); 149} 150getImageEditorBackdrop().show(); 151}; 152const showLightBox = function () { 153if ($('.lg-container.lg-show-in').length > 0) { 154$('.lg-container.lg-show-in').addClass("lg-show"); 155} 156getImageEditorBackdrop().hide(); 157}; 158const getImageType = function (filename) { 159let extension = filename.substring(filename.lastIndexOf('.') + 1, filename.length) || filename; 160switch (extension) { 161case 'jpg': 162case 'jpeg': 163return "jpg"; 164case 'webp': 165return 'webp'; 166case 'png': 167return "png"; 168default: 169return "jpg"; 170}; 171} 172$.jalios.ImageEditor = { 173EditorEventType: { 174OPEN: 'open', 175ERROR: 'error', 176BEFORE_COMPLETE: 'before', 177SAVE: 'save', 178AFTER_IMAGE_REFRESHED: 'after', 179CLOSE: 'closed' 180}, 181launchImageEditor: function (editorContext, config) { 182try { 183let callback = function () { 184imageEditorLoaded = true; 185let extendedConfig = $.extend({}, DEFAULT_CONFIG, config); 186extendedConfig = $.extend({}, extendedConfig, { 187translations: Object.fromEntries(FILE_ROBOT_IMAGE_EDITOR_TRANSLATIONS), 188defaultSavedImageName: editorContext.filePath.split(/[\\\/]/).pop(), 189defaultSavedImageType: getImageType(editorContext.filePath) 190}); 191extendedConfig = $.extend({}, extendedConfig, { 192tabsIds: [ 193window.FilerobotImageEditor.TABS.ADJUST, 194window.FilerobotImageEditor.TABS.FINETUNE, 195window.FilerobotImageEditor.TABS.ANNOTATE, 196window.FilerobotImageEditor.TABS.RESIZE 197], // or ['Adjust', 'Annotate', 'Watermark'] 198defaultTabId: window.FilerobotImageEditor.TABS.RESIZE, // or 'Annotate' 199defaultToolId: window.FilerobotImageEditor.TOOLS.TEXT, // or 'Text' 200source: editorContext.filePath 201}); 202if (editorContext.options) { 203extendedConfig = $.extend({}, extendedConfig, editorContext.options); 204} 205// Use timeout since in some cases, file editor js is not loaded yet through getScript 206setTimeout(() => { 207let editorContainer = editorContext.container 208? jQuery(editorContext.container)[0] 209: getImageEditorWrapperDiv()[0]; 210activeImageEditor = new window.FilerobotImageEditor(editorContainer, extendedConfig); 211activeImageEditor.editorContext = editorContext; 212activeImageEditor.render({ 213onBeforeSave: function (_imageFileInfo) { 214if (_imageFileInfo) { 215_imageFileInfo.quality = 0.80; 216} 217return false; 218}, 219onSave: function (imageData, imageDesignState) { 220saveImage(imageData, imageDesignState, editorContext); 221}, 222onClose: function (closingReason) { 223triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.CLOSE, { 224closingReason: closingReason 225}); 226closeImageEditor(); 227} 228}); 229}, 0); 230}; 231if (imageEditorLoaded) { 232callback(); 233} else { 234loadScripts([ 235LIB_TRANSLATIONS_URL, 236LIB_URL 237]).then(callback); 238} 239hideLightBox(); 240triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.OPEN); 241} catch (err) { 242$.console.log(err); 243triggerImageEditorEvent($.jalios.ImageEditor.EditorEventType.ERROR); 244} 245} 246}; 247function loadScripts(urls, path) { 248return new Promise(function (resolve) { 249urls.forEach(function (src, i) { 250let script = document.createElement('script'); 251script.type = 'text/javascript'; 252script.src = (path || "") + src; 253script.async = false; 254// If last script, bind the callback event to resolve 255if (i == urls.length - 1) { 256// Multiple binding for browser compatibility 257script.onreadystatechange = resolve; 258script.onload = resolve; 259} 260// Fire the loading 261document.body.appendChild(script); 262}); 263}); 264} 265$(document).ready(function () { 266$(document).on('click', '.js-image-editor', function (event) { 267event.preventDefault(); 268let editorContext = $(event.currentTarget).data('jalios-image-editor-context'); 269$.jalios.ImageEditor.launchImageEditor(editorContext); 270}); 271}); 272})(window.jQuery); 273; 274(function(c){var a=function(){if(c(".wysiwyg table").length>0){c(".wysiwyg table").wrap('<div class="table-responsive"></div>')}};c(document).ready(function(){a()});var d=function(){if(c(".paragraphe .wysiwyg p > img").length>0){c(".paragraphe .wysiwyg p > img:not(.imageSansHabillage)").parent().wrap('<div class="wrapMedia"></div>')}if(c(".paragraphe .wysiwyg p > picture").length>0){c(".paragraphe .wysiwyg p >
vendor: 4,303 bytes, lines 274-369
274 picture:not(.imageSansHabillage)").parent().wrap('<div class="wrapMedia"></div>')}if(c(".paragraphe .wysiwyg video").length>0){c(".paragraphe .wysiwyg video").parent().wrap('<div class="wrapMedia"></div>')}if(c(".paragraphe .wysiwyg .wrapMedia").length>0){c(".paragraphe .wysiwyg .wrapMedia").parent().addClass("withImg").wrapInner('<div class="clearfix"></div>')}};c(document).ready(function(){a();d()});var b=function(e){var g=e.substring(e.indexOf("#"));var f=c(g);if(f[0]==null){f=c("a[name='"+g.substring(1)+"'")}if(f){c("html, body").animate({scrollTop:f.offset().top-15},"fast")}};c(document).ready(function(){if(location.href.indexOf("#")!=-1){b(location.href);setTimeout(function(){b(location.href)},500)}});c("a[href*='#']").on("click",function(h){var f=false;if(c(this).attr("href").indexOf("#")==0&&c(this).attr("href").length>1){f=true}if(!f){var g=c(this).attr("href");if(g.indexOf("?")!=-1){g=g.substring(0,g.indexOf("?"))}if(g.indexOf("#")!=-1){g=g.substring(0,g.indexOf("#"))}var i=location.href;if(i.indexOf("?")!=-1){i=i.substring(0,i.indexOf("?"))}if(i.indexOf("#")!=-1){i=i.substring(0,i.indexOf("#"))}if(g==i){f=true}}if(f&&c(this).attr("data-toggle")!=undefined){f=false}if(f&&c(this).attr("onclick")!=undefined){f=false}if(f&&c(this).hasClass("notAnAnchor")){f=false}if(f){h.preventDefault();b(c(this).attr("href"));return false}else{return true}});if(jQuery("#scrollToHere").length>0){b("#scrollToHere")}}(jQuery));; 275/*! ie11CustomProperties.js v3.0.6 | MIT License | https://git.io/fjXMN */ 276!function () { 277'use strict'; 278// check for support 279var testEl = document.createElement('i'); 280testEl.style.setProperty('--x', 'y'); 281if (testEl.style.getPropertyValue('--x') === 'y' || !testEl.msMatchesSelector) return; 282if (!Element.prototype.matches) Element.prototype.matches = Element.prototype.msMatchesSelector; 283var listeners = [], 284root = document, 285Observer; 286function qsa(el, selector){ 287try { 288return el.querySelectorAll(selector); 289} catch(e) { 290// console.warn('the Selector '+selector+' can not be parsed'); 291return []; 292} 293} 294function onElement (selector, callback) { 295var listener = { 296selector: selector, 297callback: callback, 298elements: new WeakMap(), 299}; 300var els = qsa(root, listener.selector), i=0, el; 301while (el = els[i++]) { 302listener.elements.set(el, true); 303listener.callback.call(el, el); 304} 305listeners.push(listener); 306if (!Observer) { 307Observer = new MutationObserver(checkMutations); 308Observer.observe(root, { 309childList: true, 310subtree: true 311}); 312} 313checkListener(listener); 314}; 315function checkListener(listener, target) { 316var i = 0, el, els = []; 317try { 318target && target.matches(listener.selector) && els.push(target); 319} catch(e) {} 320if (loaded) { // ok? check inside node on innerHTML - only when loaded 321Array.prototype.push.apply(els, qsa(target || root, listener.selector)); 322} 323while (el = els[i++]) { 324if (listener.elements.has(el)) continue; 325listener.elements.set(el,true); 326listener.callback.call(el, el); 327} 328} 329function checkListeners(inside) { 330var i = 0, listener; 331while (listener = listeners[i++]) checkListener(listener, inside); 332} 333function checkMutations(mutations) { 334var j = 0, i, mutation, nodes, target; 335while (mutation = mutations[j++]) { 336nodes = mutation.addedNodes, i = 0; 337while (target = nodes[i++]) target.nodeType === 1 && checkListeners(target); 338} 339} 340var loaded = false; 341document.addEventListener('DOMContentLoaded', function () { 342loaded = true; 343}); 344// svg polyfills 345function copyProperty(prop, from, to){ 346var desc = Object.getOwnPropertyDescriptor(from, prop); 347Object.defineProperty(to, prop, desc); 348} 349if (!('classList' in Element.prototype)) { 350copyProperty('classList', HTMLElement.prototype, Element.prototype); 351} 352if (!('innerHTML' in Element.prototype)) { 353copyProperty('innerHTML', HTMLElement.prototype, Element.prototype); 354} 355if (!('sheet' in SVGStyleElement.prototype)) { 356Object.defineProperty(SVGStyleElement.prototype, 'sheet', { 357get:function(){ 358var all = document.styleSheets, i=0, sheet; 359while (sheet=all[i++]) { 360if (sheet.ownerNode === this) return sheet; 361} 362} 363}); 364} 365// main logic 366// cached regexps, better performance 367const regFindSetters = /([\s{;])(--([A-Za-z0-9-_]*)\s*:([^;!}{]+)(!important)?)(?=\s*([;}]|$))/g; 368const regFindGetters = /([{;]\s*)([A-Za-z0-9-_]+\s*:[^;}{]*var\([^!;}{]+)(!important)?(?=\s*([;}$]|$))/g; 369const regRuleIEGetters = /-ieVar-([^:]+):/g
370const regRuleIESetters = /-ie-([^};]+)/g 371//const regHasVar = /var\(/; 372const regPseudos = /:(hover|active|focus|target|:before|:after|:first-letter|:first-line)/; 373onElement('link[rel="stylesheet"]', function (el) { 374fetchCss(el.href, function (css) { 375var newCss = rewriteCss(css); 376if (css === newCss) return; 377newCss = relToAbs(el.href, newCss); 378el.disabled = true; 379var style = document.createElement('style'); 380if (el.media) style.setAttribute('media', el.media); 381el.parentNode.insertBefore(style, el); 382activateStyleElement(style, newCss); 383}); 384}); 385function foundStyle(el){ 386if (el.ieCP_polyfilled) return; 387if (el.ieCP_elementSheet) return; 388var css = el.innerHTML; 389var newCss = rewriteCss(css); 390if (css === newCss) return; 391activateStyleElement(el, newCss); 392} 393onElement('style', foundStyle); 394// immediate, to pass w3c-tests, bud its a bad idea 395// addEventListener('DOMNodeInserted',function(e){ e.target.tagName === 'STYLE' && foundStyle(e.target); }); 396onElement('[ie-style]', function (el) { 397var newCss = rewriteCss('{'+el.getAttribute('ie-style')).substr(1); 398el.style.cssText += ';'+ newCss; 399var found = parseRewrittenStyle(el.style); 400if (found.getters) addGetterElement(el, found.getters, '%styleAttr'); 401if (found.setters) addSetterElement(el, found.setters); 402}); 403function relToAbs(base, css) { 404return css.replace(/url\(([^)]+)\)/g, function($0, $1){ 405$1 = $1.trim().replace(/(^['"]|['"]$)/g,''); 406if ($1.match(/^([a-z]+:|\/)/)) return $0; 407base = base.replace(/\?.*/,''); 408return 'url('+ base + './../' + $1 +')'; 409}); 410} 411// ie has a bug, where unknown properties at pseudo-selectors are computed at the element 412// #el::after { -content:'x'; } => getComputedStyle(el)['-content'] == 'x' 413// should we add something like -ieVar-pseudo_after-content:'x'? 414function rewriteCss(css) { 415/* uncomment if spec finished and needed by someone 416css = css.replace(/@property ([^{]+){([^}]+)}/, function($0, prop, body){ 417prop = prop.trim(); 418const declaration = {name:prop}; 419body.split(';').forEach(function(pair){ 420const x = pair.split(':'); 421if (x[1]) declaration[ x[0].trim() ] = x[1]; 422}); 423declaration['inherits'] = declaration['inherits'].trim()==='true' ? true : false; 424declaration['initialValue'] = declaration['initial-value']; 425CSS.registerProperty(declaration) 426return '/*\n @property ... removed \n*'+'/'; 427}); 428*/ 429return css.replace(regFindSetters, function($0, $1, $2, $3, $4, important){ 430return $1+'-ie-'+(important?'â':'')+$3+':'+encodeValue($4); 431}).replace(regFindGetters, function($0, $1, $2, important){ 432return $1+'-ieVar-'+(important?'â':'')+$2+'; '+$2; // keep the original, so chaining works "--x:var(--y)" 433}); 434} 435function encodeValue(value){ 436return value; 437return value.replace(/ /g,'â£'); 438} 439const keywords = {initial:1,inherit:1,revert:1,unset:1}; 440function decodeValue(value){ 441return value; 442if (value===undefined) return; 443value = value.replace(/â£/g,' '); 444const trimmed = value.trim(); 445if (keywords[trimmed]) return trimmed; 446return value; 447} 448// beta 449const styles_of_getter_properties = {}; 450function parseRewrittenStyle(style) { // less memory then parameter cssText? 451// beta 452style['z-index']; // ie11 can access unknown properties in stylesheets only if accessed a dashed known property 453const cssText = style.cssText; 454var matchesGetters = cssText.match(regRuleIEGetters), j, match; 455if (matchesGetters) { 456var getters = []; // eg. [border,color] 457for (j = 0; match = matchesGetters[j++];) { 458let propName = match.slice(7, -1); 459if (propName[0] === 'â') propName = propName.substr(1); 460getters.push(propName); 461// beta 462if (!styles_of_getter_properties[propName]) styles_of_getter_properties[propName] = []; 463styles_of_getter_properties[propName].push(style); 464} 465} 466var matchesSetters = cssText.match(regRuleIESetters); 467if (matchesSetters) { 468var setters = {}; // eg. [--color:#fff, --padding:10px]; 469for (j = 0; match = matchesSetters[j++];) { 470let x = match.substr(4).split(':'); 471let propName = x[0]; 472let propValue = x[1]; 473if (propName[0] === 'â') propName = propName.substr(1); 474setters[propName] = propValue; 475} 476} 477return {getters:getters, setters:setters}; 478} 479function activateStyleElement(style, css) { 480style.innerHTML = css; 481style.ieCP_polyfilled = true; 482var rules = style.sheet.rules, i=0, rule; // cssRules = CSSRuleList, rules = MSCSSRuleList 483while (rule = rules[i++]) { 484const found = parseRewrittenStyle(rule.style); 485if (found.getters) addGettersSelector(rule.selectorText, found.getters); 486if (found.setters) addSettersSelector(rule.selectorText, found.setters); 487// mediaQueries: redraw the hole document 488// better add events for each element? 489const media = rule.parentRule && rule.parentRule.media && rule.parentRule.media.mediaText; 490if (media && (found.getters || found.setters)) { 491matchMedia(media).addListener(function(){ 492drawTree(document.documentElement) 493}) 494} 495} 496// beta 497redrawStyleSheets() 498} 499function addGettersSelector(selector, properties) { 500selectorAddPseudoListeners(selector); 501onElement(unPseudo(selector), function (el) { 502addGetterElement(el, properties, selector); 503drawElement(el); 504}); 505} 506function addGetterElement(el, properties, selector) { 507var i=0, prop, j; 508const selectors = selector.split(','); // split grouped selectors 509el.setAttribute('iecp-needed', true); 510if (!el.ieCPSelectors) el.ieCPSelectors = {}; 511while (prop = properties[i++]) { 512for (j = 0; selector = selectors[j++];) { 513const parts = selector.trim().split('::'); 514if (!el.ieCPSelectors[prop]) el.ieCPSelectors[prop] = []; 515el.ieCPSelectors[prop].push({ 516selector: parts[0], 517pseudo: parts[1] ? '::' + parts[1] : '' 518}); 519} 520} 521} 522function addSettersSelector(selector, propVals) { 523selectorAddPseudoListeners(selector); 524onElement(unPseudo(selector), function (el) { 525addSetterElement(el, propVals); 526}); 527} 528function addSetterElement(el, propVals) { 529if (!el.ieCP_setters) el.ieCP_setters = {}; 530for (var prop in propVals) { // eg. {foo:#fff, bar:baz} 531el.ieCP_setters['--' + prop] = 1; 532} 533drawTree(el); 534} 535//beta 536function redrawStyleSheets() { 537for (var prop in styles_of_getter_properties) { 538let styles = styles_of_getter_properties[prop]; 539for (var i=0, style; style=styles[i++];) { 540if (style.owningElement) continue; 541var value = style['-ieVar-'+prop]; 542if (!value) continue; 543value = styleComputeValueWidthVars(getComputedStyle(document.documentElement), value); 544if (value === '') continue; 545try { 546style[prop] = value; 547} catch(e) {} 548} 549} 550} 551const pseudos = { 552hover:{ 553on:'mouseenter', 554off:'mouseleave' 555}, 556focus:{ 557on:'focusin', 558off:'focusout' 559}, 560active:{ 561on:'CSSActivate', 562off:'CSSDeactivate' 563}, 564}; 565function selectorAddPseudoListeners(selector){ 566// ie11 has the strange behavoir, that groups of selectors are individual rules, but starting with the full selector: 567// td, th, button { color:red } results in this rules: 568// "td, th, button" | "th, th" | "th" 569selector = selector.split(',')[0]; 570for (var pseudo in pseudos) { 571var parts = selector.split(':'+pseudo); 572if (parts.length > 1) { 573var ending = parts[1].match(/^[^\s]*/); // ending elementpart of selector (used for not(:active)) 574let sel = unPseudo(parts[0]+ending); 575const listeners = pseudos[pseudo]; 576onElement(sel, function (el) { 577el.addEventListener(listeners.on, drawTreeEvent); 578el.addEventListener(listeners.off, drawTreeEvent); 579}); 580} 581} 582} 583let CSSActive = null; 584document.addEventListener('mousedown',function(e){ 585setTimeout(function(){ 586if (e.target === document.activeElement) { 587var evt = document.createEvent('Event'); 588evt.initEvent('CSSActivate', true, true); 589CSSActive = e.target; 590CSSActive.dispatchEvent(evt); 591} 592}) 593}); 594document.addEventListener('mouseup',function(){ 595if (CSSActive) { 596var evt = document.createEvent('Event'); 597evt.initEvent('CSSDeactivate', true, true); 598CSSActive.dispatchEvent(evt); 599CSSActive = null; 600} 601}); 602function unPseudo(selector){ 603return selector.replace(regPseudos,'').replace(':not()',''); 604} 605var uniqueCounter = 0; 606/* old * 607function _drawElement(el) { 608if (!el.ieCP_unique) { // use el.uniqueNumber? but needs class for the css-selector => test performance 609el.ieCP_unique = ++uniqueCounter; 610el.classList.add('iecp-u' + el.ieCP_unique); 611} 612var style = getComputedStyle(el); 613if (el.ieCP_sheet) while (el.ieCP_sheet.rules[0]) el.ieCP_sheet.deleteRule(0); 614for (var prop in el.ieCPSelectors) { 615var important = style['-ieVar-â' + prop]; 616let valueWithVar = important || style['-ieVar-' + prop]; 617if (!valueWithVar) continue; // todo, what if '0' 618var details = {}; 619var value = styleComputeValueWidthVars(style, valueWithVar, details); 620if (important) value += ' !important'; 621for (var i=0, item; item=el.ieCPSelectors[prop][i++];) { // todo: split and use requestAnimationFrame? 622if (item.selector === '%styleAttr') { 623el.style[prop] = value; 624} else { 625// beta 626if (!important && details.allByRoot !== false) continue; // dont have to draw root-properties 627//let selector = item.selector.replace(/>? \.[^ ]+/, ' ', item.selector); // todo: try to equalize specificity 628let selector = item.selector; 629elementStyleSheet(el).insertRule(selector + '.iecp-u' + el.ieCP_unique + item.pseudo + ' {' + prop + ':' + value + '}', 0); 630} 631} 632} 633} 634function elementStyleSheet(el){ 635if (!el.ieCP_sheet) { 636const styleEl = document.createElement('style'); 637styleEl.ieCP_elementSheet = 1; 638//el.appendChild(styleEl); // yes! self-closing tags can have style as children, but - if i set innerHTML, the stylesheet is lost 639document.head.appendChild(styleEl); 640el.ieCP_sheet = styleEl.sheet; 641} 642return el.ieCP_sheet; 643} 644/* */ 645function _drawElement(el) { 646if (!el.ieCP_unique) { // use el.uniqueNumber? but needs class for the css-selector => test performance 647el.ieCP_unique = ++uniqueCounter; 648el.classList.add('iecp-u' + el.ieCP_unique); 649} 650var style = getComputedStyle(el); 651let css = ''; 652for (var prop in el.ieCPSelectors) { 653var important = style['-ieVar-â' + prop]; 654let valueWithVar = important || style['-ieVar-' + prop]; 655if (!valueWithVar) continue; // todo, what if '0' 656var details = {}; 657var value = styleComputeValueWidthVars(style, valueWithVar, details); 658//if (value==='initial') value = initials[prop]; 659if (important) value += ' !important'; 660for (var i=0, item; item=el.ieCPSelectors[prop][i++];) { // todo: split and use requestAnimationFrame? 661if (item.selector === '%styleAttr') { 662el.style[prop] = value; 663} else { 664// beta 665if (!important && details.allByRoot !== false) continue; // dont have to draw root-properties 666//let selector = item.selector.replace(/>? \.[^ ]+/, ' ', item.selector); // todo: try to equalize specificity 667let selector = item.selector; 668css += selector + '.iecp-u' + el.ieCP_unique + item.pseudo + '{' + prop + ':' + value + '}\n'; 669} 670} 671} 672elementSetCss(el, css); 673} 674function elementSetCss(el, css){ 675if (!el.ieCP_styleEl && css) { 676const styleEl = document.createElement('style'); 677styleEl.ieCP_elementSheet = 1; 678//el.appendChild(styleEl); // yes! self-closing tags can have style as children, but - if i set innerHTML, the stylesheet is lost 679document.head.appendChild(styleEl); 680el.ieCP_styleEl = styleEl; 681} 682if (el.ieCP_styleEl) el.ieCP_styleEl.innerHTML = css; 683} 684/* */ 685function drawTree(target) { 686if (!target) return; 687var els = target.querySelectorAll('[iecp-needed]'); 688if (target.hasAttribute && target.hasAttribute('iecp-needed')) drawElement(target); // self 689for (var i = 0, el; el = els[i++];) drawElement(el); // tree 690} 691// draw queue 692let drawQueue = new Set(); 693let collecting = false;
vendor: 4,379 bytes, lines 694-827
694let drawing = false; 695function drawElement(el){ 696drawQueue.add(el); 697if (collecting) return; 698collecting = true; 699requestAnimationFrame(function(){ 700//setImmediate(function(){ 701collecting = false; 702drawing = true; 703drawQueue.forEach(_drawElement); 704drawQueue.clear(); 705setTimeout(function(){ // mutationObserver will trigger delayed, requestAnimationFrame will miss some changes 706drawing = false; 707}) 708}) 709} 710function drawTreeEvent(e) { 711drawTree(e.target) 712} 713function findVars(str, cb){ // css value parser 714let level=0, openedLevel=null, lastPoint=0, newStr = '', i=0, char, insideCalc; 715while (char=str[i++]) { 716if (char === '(') { 717++level; 718if (openedLevel === null && str[i-4]+str[i-3]+str[i-2] === 'var') { 719openedLevel = level; 720newStr += str.substring(lastPoint, i-4); 721lastPoint = i; 722} 723if (str[i-5]+str[i-4]+str[i-3]+str[i-2] === 'calc') { 724insideCalc = level; 725} 726} 727if (char === ')' && openedLevel === level) { 728let variable = str.substring(lastPoint, i-1).trim(), fallback; 729let x = variable.indexOf(','); 730if (x!==-1) { 731fallback = variable.slice(x+1); 732variable = variable.slice(0,x); 733} 734newStr += cb(variable, fallback, insideCalc); 735lastPoint = i; 736openedLevel = null; 737} 738if (char === ')') { 739--level; 740if (insideCalc === level) insideCalc = null; 741} 742} 743newStr += str.substring(lastPoint); 744return newStr; 745} 746function styleComputeValueWidthVars(style, valueWithVars, details){ 747return findVars(valueWithVars, function(variable, fallback, insideCalc){ 748var value = style.getPropertyValue(variable); 749if (insideCalc) value = value.replace(/^calc\(/, '('); // prevent nested calc 750if (details && style.lastPropertyServedBy !== document.documentElement) details.allByRoot = false; 751if (value==='' && fallback) value = styleComputeValueWidthVars(style, fallback, details); 752return value; 753}); 754} 755// mutation listener 756var observer = new MutationObserver(function(mutations) { 757if (drawing) return; 758for (var i=0, mutation; mutation=mutations[i++];) { 759if (mutation.attributeName === 'iecp-needed') continue; // why? 760// recheck all selectors if it targets new elements? 761drawTree(mutation.target); 762} 763}); 764setTimeout(function(){ 765observer.observe(document,{attributes: true, subtree: true }); 766}) 767// :target listener 768var oldHash = location.hash 769addEventListener('hashchange',function(e){ 770var newEl = document.getElementById(location.hash.substr(1)); 771if (newEl) { 772var oldEl = document.getElementById(oldHash.substr(1)); 773drawTree(newEl); 774drawTree(oldEl); 775} else { 776drawTree(document); 777} 778oldHash = location.hash; 779}); 780// add owningElement to Element.style 781var descriptor = Object.getOwnPropertyDescriptor(HTMLElement.prototype, 'style'); 782var styleGetter = descriptor.get; 783descriptor.get = function () { 784const style = styleGetter.call(this); 785style.owningElement = this; 786return style; 787} 788Object.defineProperty(HTMLElement.prototype, 'style', descriptor); 789// add computedFor to computed style-objects 790var originalGetComputed = getComputedStyle; 791window.getComputedStyle = function (el) { 792var style = originalGetComputed.apply(this, arguments); 793style.computedFor = el; 794//style.pseudoElt = pseudoElt; //not needed at the moment 795return style; 796} 797// getPropertyValue / setProperty hooks 798const StyleProto = CSSStyleDeclaration.prototype; 799const oldGetP = StyleProto.getPropertyValue; 800StyleProto.getPropertyValue = function (property) { 801this.lastPropertyServedBy = false; 802property = property.trim(); 803/* * 804if (this.owningElement) { 805const ieProperty = '-ieVar-'+property; 806const iePropertyImportant = '-ieVar-â'+property; 807let value = this[iePropertyImportant] || this[ieProperty]; 808if (value !== undefined) { 809// todo, test if syntax valid 810return value; 811} 812} 813/* */ 814if (property[0] !== '-' || property[1] !== '-') return oldGetP.apply(this, arguments); 815const undashed = property.substr(2); 816const ieProperty = '-ie-'+undashed; 817const iePropertyImportant = '-ie-â'+undashed; 818let value = decodeValue(this[iePropertyImportant] || this[ieProperty]); 819if (this.computedFor) { // computedStyle 820if (value !== undefined && !inheritingKeywords[value]) { 821//if (regHasVar.test(value)) // todo: to i need this check?!!! i think its faster without 822value = styleComputeValueWidthVars(this, value); 823this.lastPropertyServedBy = this.computedFor; 824} else { // inherited 825if (inheritingKeywords[value] || !register[property] || register[property].inherits) { 826//let el = this.pseudoElt ? this.computedFor : this.computedFor.parentNode; 827let el = this.computedFor.parentNode;
828while (el.nodeType === 1) { 829// how slower would it be to getComputedStyle for every element, not just with defined ieCP_setters 830if (el.ieCP_setters && el.ieCP_setters[property]) { 831// i could make 832// value = el.nodeType ? getComputedStyle(this.computedFor.parentNode).getPropertyValue(property) 833// but i fear performance, stupid? 834var style = getComputedStyle(el); 835var tmpVal = decodeValue(style[iePropertyImportant] || style[ieProperty]); 836if (tmpVal !== undefined) { 837// calculated style from current element not from the element the value was inherited from! (style, value) 838//value = tmpVal; if (regHasVar.test(tmpVal)) // todo: to i need this check?!!! i think its faster without 839value = styleComputeValueWidthVars(this, tmpVal); 840this.lastPropertyServedBy = el; 841break; 842} 843} 844el = el.parentNode; 845} 846} 847} 848if (value==='initial') return ''; 849} 850//if ((value === undefined || value === 'initial') && register[property]) value = register[property].initialValue; // todo? 851if (value === undefined && register[property]) value = register[property].initialValue; 852if (value === undefined) return ''; 853return value; 854}; 855const inheritingKeywords = {inherit:1,revert:1,unset:1}; 856const oldSetP = StyleProto.setProperty; 857StyleProto.setProperty = function (property, value, prio) { 858if (property[0] !== '-' || property[1] !== '-') return oldSetP.apply(this, arguments); 859const el = this.owningElement; 860if (el) { 861if (!el.ieCP_setters) el.ieCP_setters = {}; 862el.ieCP_setters[property] = 1; 863} 864property = '-ie-'+(prio==='important'?'â':'') + property.substr(2); 865this.cssText += '; ' + property + ':' + encodeValue(value) + ';'; 866//this[property] = value; 867el === document.documentElement && redrawStyleSheets(); 868el && drawTree(el); // its delayed internal 869}; 870/* 871var descriptor = Object.getOwnPropertyDescriptor(StyleProto, 'cssText'); 872var cssTextGetter = descriptor.get; 873var cssTextSetter = descriptor.set; 874// descriptor.get = function () { 875// const style = styleGetter.call(this); 876// style.owningElement = this; 877// return style; 878// } 879descriptor.set = function (css) { 880var el = this.owningElement; 881if (el) { 882css = rewriteCss('{'+css).substr(1); 883cssTextSetter.call(this, css); 884var found = parseRewrittenStyle(this); 885if (found.getters) addGetterElement(el, found.getters, '%styleAttr'); 886if (found.setters) addSetterElement(el, found.setters); 887return; 888} 889return cssTextSetter.call(this, css); 890} 891Object.defineProperty(StyleProto, 'cssText', descriptor); 892*/ 893if (!window.CSS) window.CSS = {}; 894const register = {} 895CSS.registerProperty = function(options){ 896register[options.name] = options; 897} 898// fix "initial" keyword with generated custom properties, this is not supported ad all by ie, should i make a separate "inherit"-polyfill? 899/* 900const computed = getComputedStyle(document.documentElement) 901const initials = {}; 902for (let i in computed) { 903initials[i.replace(/([A-Z])/, function(x){ return '-'+x.toLowerCase(x) })] = computed[i]; 904} 905initials['display'] = 'inline'; 906*/ 907// utils 908function fetchCss(url, callback) { 909var request = new XMLHttpRequest(); 910request.open('GET', url); 911request.overrideMimeType('text/css'); 912request.onload = function () { 913if (request.status >= 200 && request.status < 400) { 914callback(request.responseText); 915} 916}; 917request.send(); 918} 919}(); 920; 921var scripts=document.getElementsByTagName("script"),path=scripts[scripts.length-1].src.split("?")[0],tarteaucitronForceCDN=(tarteaucitronForceCDN===undefined)?"":tarteaucitronForceCDN,cdn=(tarteaucitronForceCDN==="")?path.split("/").slice(0,-1).join("/")+"/":tarteaucitronForceCDN,alreadyLaunch=(alreadyLaunch===undefined)?0:alreadyLaunch,tarteaucitronForceLanguage=(tarteaucitronForceLanguage===undefined)?"":tarteaucitronForceLanguage,tarteaucitronForceExpire=(tarteaucitronForceExpire===undefined)?"":tarteaucitronForceExpire,tarteaucitronCustomText=(tarteaucitronCustomText===undefined)?"":tarteaucitronCustomText,tarteaucitronExpireInDay=(tarteaucitronExpireInDay===undefined||typeof tarteaucitronExpireInDay!=="boolean")?true:tarteaucitronExpireInDay,timeExpire=31536000000,tarteaucitronProLoadServices,tarteaucitronNoAdBlocker=false;var tarteaucitron={version:20210422,cdn:cdn,user:{},lang:{},services:{},added:[],idprocessed:[],state:[],launch:[],parameters:{},isAjax:false,reloadThePage:false,events:{init:function(){},load:function(){}},init:function(b){var a;tarteaucitron.parameters=b;if(alreadyLaunch===0){alreadyLaunch=1;if(window.addEventListener){window.addEventListener("load",function(){tarteaucitron.initEvents.loadEvent(false)},false);window.addEventListener("scroll",function(){tarteaucitron.initEvents.scrollEvent()},false);window.addEventListener("keydown",function(c){tarteaucitron.initEvents.keydownEvent(false,c)},false);window.addEventListener("hashchange",function(){tarteaucitron.initEvents.hashchangeEvent()},false);window.addEventListener("resize",function(){tarteaucitron.initEvents.resizeEvent()},false)}else{window.attachEvent("onload",function(){tarteaucitron.initEvents.loadEvent(true)});window.attachEvent("onscroll",function(){tarteaucitron.initEvents.scrollEvent()});window.attachEvent("onkeydown",function(c){tarteaucitron.initEvents.keydownEvent(true,c)});window.attachEvent("onhashchange",function(){tarteaucitron.initEvents.hashchangeEvent()});window.attachEvent("onresize",function(){tarteaucitron.initEvents.resizeEvent()})}if(typeof XMLHttpRequest!=="undefined"){a=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){if(window.addEventListener){this.addEventListener("load",function(){if(typeof tarteaucitronProLoadServices==="function"){tarteaucitronProLoadServices()}},false)}else{if(typeof this.attachEvent!=="undefined"){this.attachEvent("onload",function(){if(typeof tarteaucitronProLoadServices==="function"){tarteaucitronProLoadServices()}})}else{if(typeof tarteaucitronProLoadServices==="function"){setTimeout(tarteaucitronProLoadServices,1000)}}}try{a.apply(this,arguments)}catch(c){}}}}if(tarteaucitron.events.init){tarteaucitron.events.init()}},initEvents:{loadEvent:function(a){tarteaucitron.load();tarteaucitron.fallback(["tarteaucitronOpenPanel"],function(b){if(a){b.attachEvent("onclick",function(c){tarteaucitron.userInterface.openPanel
921();c.preventDefault()})}else{b.addEventListener("click",function(c){tarteaucitron.userInterface.openPanel();c.preventDefault()},false)}},true)},keydownEvent:function(b,a){if(a.keyCode===27){tarteaucitron.userInterface.closePanel()}if(b){if(a.keyCode===9&&focusableEls.indexOf(a.target)>=0){if(a.shiftKey){if(document.activeElement===firstFocusableEl){lastFocusableEl.focus();a.preventDefault()}}else{if(document.activeElement===lastFocusableEl){firstFocusableEl.focus();a.preventDefault()}}}}},hashchangeEvent:function(){if(document.location.hash===tarteaucitron.hashtag&&tarteaucitron.hashtag!==""){tarteaucitron.userInterface.openPanel()}},resizeEvent:function(){var b=document.getElementById("tarteaucitron");var a=document.getElementById("tarteaucitronCookiesListContainer");if(b&&b.style.display==="block"){tarteaucitron.userInterface.jsSizing("main")}if(a&&a.style.display==="block"){tarteaucitron.userInterface.jsSizing("cookie")}},scrollEvent:function(){var d=window.pageYOffset||document.documentElement.scrollTop;var a;var c=document.getElementById("tarteaucitronPercentage");var b=document.getElementById("tarteaucitronAlertBig");if(b&&!tarteaucitron.highPrivacy){if(b.style.display==="block"){a=b.offsetHeight+"px";if(d>(screen.height*2)){tarteaucitron.userInterface.respondAll(true)}else{if(d>(screen.height/2)){document.getElementById("tarteaucitronDisclaimerAlert").innerHTML="<strong>"+tarteaucitron.lang.alertBigScroll+"</strong> "+tarteaucitron.lang.alertBig}}if(c){if(tarteaucitron.orientation==="top"){c.style.top=a}else{c.style.bottom=a}c.style.width=((100/(screen.height*2))*d)+"%"}}}}},load:function(){var i=tarteaucitron.cdn,h=tarteaucitron.getLanguage(),a=(i.indexOf("cdn.jsdelivr.net")>=0),b=i+"lang/tarteaucitron."+h+(a?".min":"")+".js?v="+tarteaucitron.version,c=i+"tarteaucitron.services"+(a?".min":"")+".js?v="+tarteaucitron.version,d=document.createElement("link"),g={adblocker:false,hashtag:"#tarteaucitron",cookieName:"tarteaucitron",highPrivacy:true,orientation:"middle",bodyPosition:"bottom",removeCredit:false,showAlertSmall:false,showIcon:true,iconPosition:"BottomRight",cookieslist:false,handleBrowserDNTRequest:false,DenyAllCta:true,AcceptAllCta:true,moreInfoLink:true,privacyUrl:"",useExternalCss:false,useExternalJs:false,mandatory:true,closePopup:false,groupServices:false},f=tarteaucitron.parameters;if(((tarteaucitron.parameters.readmoreLink!==undefined&&window.location.href==tarteaucitron.parameters.readmoreLink)||window.location.href==tarteaucitron.parameters.privacyUrl)&&tarteaucitron.parameters.orientation=="middle"){tarteaucitron.parameters.orientation="bottom"}if(typeof tarteaucitronCustomPremium!=="undefined"){tarteaucitronCustomPremium()}if(f!==undefined){for(var e in g){if(!tarteaucitron.parameters.hasOwnProperty(e)){tarteaucitron.parameters[e]=g[e]}}}tarteaucitron.orientation=tarteaucitron.parameters.orientation;tarteaucitron.hashtag=tarteaucitron.parameters.hashtag;tarteaucitron.highPrivacy=tarteaucitron.parameters.highPrivacy;tarteaucitron.handleBrowserDNTRequest=tarteaucitron.parameters.handleBrowserDNTRequest;if(!tarteaucitron.parameters.useExternalCss){d.rel="stylesheet";d.type="text/css";d.href=i+"css/tarteaucitron"+(a?".min":"")+".css?v="+tarteaucitron.version;document.getElementsByTagName("head")[0].appendChild(d)}tarteaucitron.addInternalScript(b,"",function(){if(tarteaucitronCustomText!==""){tarteaucitron.lang=tarteaucitron.AddOrUpdate(tarteaucitron.lang,tarteaucitronCustomText)}tarteaucitron.addInternalScript(c,"",function(){if(tarteaucitron.orientation==="middle"){var j=document.createElement("style"),n="div#tarteaucitronRoot.tarteaucitronBeforeVisible:before {content: '';position: fixed;width: 100%;height: 100%;background: white;top: 0;left: 0;z-index: 999;opacity: 0.5;}div#tarteaucitronAlertBig:before {content: '"+tarteaucitron.lang.middleBarHead+"';font-size: 35px;}body #tarteaucitronRoot div#tarteaucitronAlertBig {width: 60%;min-width: 285px;height: auto;margin: auto;left: 50%;top: 50%;transform: translate(-50%, -50%);box-shadow: 0 0 9000px #000;border-radius: 20px;padding: 35px 25px;}
921span#tarteaucitronDisclaimerAlert {padding: 0 30px;}#tarteaucitronRoot span#tarteaucitronDisclaimerAlert {margin: 10px 0 30px;display: block;text-align: center;font-size: 21px;}@media screen and (max-width: 900px) {div#tarteaucitronAlertBig button {margin: 0 auto 10px!important;display: block!important;}}";j.type="text/css";if(j.styleSheet){j.styleSheet.cssText=n}else{j.appendChild(document.createTextNode(n))}document.getElementsByTagName("head")[0].appendChild(j)}if(tarteaucitron.orientation==="popup"){var v=document.createElement("style"),t="div#tarteaucitronAlertBig:before {content: '"+tarteaucitron.lang.middleBarHead+"';font-size: 22px;}body #tarteaucitronRoot div#tarteaucitronAlertBig {bottom: 0;top: auto!important;left: 8px!important;right: auto!important;transform: initial!important;border-radius: 5px 5px 0 0!important;max-width: 250px!important;width: Calc(100% - 16px)!important;min-width: 0!important;padding: 25px 0;}span#tarteaucitronDisclaimerAlert {padding: 0 30px;font-size: 15px!important;}#tarteaucitronRoot span#tarteaucitronDisclaimerAlert {margin: 10px 0 30px;display: block;text-align: center;font-size: 21px;}div#tarteaucitronAlertBig button {margin: 0 auto 10px!important;display: block!important;width: Calc(100% - 60px);box-sizing: border-box;}";v.type="text/css";if(v.styleSheet){v.styleSheet.cssText=t}else{v.appendChild(document.createTextNode(t))}document.getElementsByTagName("head")[0].appendChild(v)}var q=document.body,k=document.createElement("div"),p="",r,l="Top",s=["ads","analytic","api","comment","social","support","video","other"],o;s=s.sort(function(x,w){if(tarteaucitron.lang[x].title>tarteaucitron.lang[w].title){return 1}if(tarteaucitron.lang[x].title<tarteaucitron.lang[w].title){return -1}return 0});p+='<div id="tarteaucitronPremium"></div>';p+='<button type="button" id="tarteaucitronBack" aria-label="'+tarteaucitron.lang.close+'"></button>';p+='<div id="tarteaucitron" role="dialog" aria-labelledby="dialogTitle">';p+=' <button type="button" id="tarteaucitronClosePanel">';p+=" "+tarteaucitron.lang.close;p+=" </button>";p+=' <div id="tarteaucitronServices">';p+=' <div class="tarteaucitronLine tarteaucitronMainLine" id="tarteaucitronMainLineOffset">';p+=' <span class="tarteaucitronH1" role="heading" aria-level="1" id="dialogTitle">'+tarteaucitron.lang.title+"</span>";p+=' <div id="tarteaucitronInfo">';p+=" "+tarteaucitron.lang.disclaimer;if(tarteaucitron.parameters.privacyUrl!==""){p+=" <br/><br/>";p+=' <button type="button" id="tarteaucitronPrivacyUrlDialog">';p+=" "+tarteaucitron.lang.privacyUrl;p+=" </button>"}p+=" </div>";p+=' <div class="tarteaucitronName">';p+=' <span class="tarteaucitronH2" role="heading" aria-level="2">'+tarteaucitron.lang.all+"</span>";p+=" </div>";p+=' <div class="tarteaucitronAsk" id="tarteaucitronScrollbarAdjust">';p+=' <button type="button" id="tarteaucitronAllAllowed" class="tarteaucitronAllow">';p+=' <span class="tarteaucitronCheck"></span> '+tarteaucitron.lang.allowAll;p+=" </button> ";p+=' <button type="button" id="tarteaucitronAllDenied" class="tarteaucitronDeny">';p+=' <span class="tarteaucitronCross"></span> '+tarteaucitron.lang.denyAll;p+=" </button>";p+=" </div>";p+=" </div>";p+=' <div class="tarteaucitronBorder">';p+=' <div class="clear"></div><ul>';if(tarteaucitron.parameters.mandatory==true){p+='<li id="tarteaucitronServicesTitle_mandatory">';p+='<div class="tarteaucitronTitle">';p+=' <button type="button" tabindex="-1"><span class="tarteaucitronPlus"></span> '+tarteaucitron.lang.mandatoryTitle+"</button>";p+="</div>";p+='<ul id="tarteaucitronServices_mandatory">';p+='<li class="tarteaucitronLine">';p+=' <div class="tarteaucitronName">';p+=' <span class="tarteaucitronH3" role="heading" aria-level="3">'+tarteaucitron.lang.mandatoryText+"</span>";p+=' <span class="tarteaucitronListCookies"></span><br/>';p+=" </div>";p+=' <div class="tarteaucitronAsk">';p+=' <button type="button" class="tarteaucitronAllow" tabindex="-1" disabled>';
921p+=' <span class="tarteaucitronCheck"></span> '+tarteaucitron.lang.allow;p+=" </button> ";p+=' <button type="button" class="tarteaucitronDeny" style="visibility:hidden" tabindex="-1">';p+=' <span class="tarteaucitronCross"></span> '+tarteaucitron.lang.deny;p+=" </button> ";p+=" </div>";p+="</li>";p+="</ul></li>"}for(o=0;o<s.length;o+=1){p+=' <li id="tarteaucitronServicesTitle_'+s[o]+'" class="tarteaucitronHidden">';p+=' <div class="tarteaucitronTitle">';p+=' <button type="button" class="catToggleBtn" data-cat="tarteaucitronDetails'+s[o]+'"><span class="tarteaucitronPlus"></span> '+tarteaucitron.lang[s[o]].title+"</button>";p+=" </div>";p+=' <div id="tarteaucitronDetails'+s[o]+'" class="tarteaucitronDetails tarteaucitronInfoBox">';p+=" "+tarteaucitron.lang[s[o]].details;p+=" </div>";p+=' <ul id="tarteaucitronServices_'+s[o]+'"></ul></li>'}p+=' <li id="tarteaucitronNoServicesTitle" class="tarteaucitronLine">'+tarteaucitron.lang.noServices+"</li>";p+=" </ul>";p+=' <div class="tarteaucitronHidden tarteaucitron-spacer-20" id="tarteaucitronScrollbarChild"></div>';if(tarteaucitron.parameters.removeCredit===false){p+=' <a class="tarteaucitronSelfLink" href="https://tarteaucitron.io/" rel="nofollow noreferrer noopener" target="_blank" title="tarteaucitron '+tarteaucitron.lang.newWindow+'"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHcAAAAeCAYAAAAWwoEYAAADl0lEQVRoge1Y0W3bQAx9CjKARlC+9GVUmqDJBHEmiDyB6wkcTxBngtgTxJ0gzgQW4C/9aYOmE6g4lTQo+k6y3Rb94QOERNQd+cjj8XiGwWAwGAwGg8FgMBgMBoPB8F8RNRXe+whEKe7c36ZCAeCRxC9Rig2PUd8kPgAsoxSfQ3YAzAA8D/HwYYCb05kBKKO0teFkmbC1jlKsAnq/Abjn+QBqAIsoRS30ttwG/HNz1wH/XIxWTicLdvtW7xTAGEAMtP685CNsBTe2d/BLydfXAG57SEnMAST0zgYZSUCPk02bCvkJduIzuJzDLfPolbY+tLKmar+/8+IRePy4qdpE03qHuH8fipFb4N2+XdA3AJ/0vaQxt7s9FvkIS2XvtqnwM0rxpOQfbnE5G2LhTCmUO2fHIngOmcv+KG3HafDchB6ntwjYqenR2PqC7sOZ3E7FXHB0vqxoFyUyLh7OEH7LOGouvhhN3eIBeKXv0n5MsufdHqXcwYR5U2EbpV35lSspVPJmQj4TcgRK7jTg5IzmPUhhwM5a2WHUFCx+NgiDucmgh7idikLovHFlL0pxQ9xzX+IIP9Y6FrJsqhjlQpZRAkFVDCjZfcCHt6bqJDmuh5ylCWx0RVnk3oumaknqTH5sqrY0fBWyULaHUIgAgxb46MxV3DbieAhxOxUxjSuljig9lMQ/Bcfoi9BTEv9aLORSndVxYOH525sUDC6u2gWxcNzBNRxPanyh3ktKinOgy3WoxPbtUM0t6RkbQnzBnFPgi9GCOEubY9UffIryz9iKRe8s/FUfEWosJJGxagp85bpUO3VywQ46lOtAWfNxKwa4JXQ+628+bpxYGXXMzp5rXH401VEyXwIdowXFaKWSMFHvMTVmGnc+P3oXV2QOiBCfgex8QtcQCbcQE/H+eoHzrkFo1KM7zVO4jVVj5s6lRiWF7zyXyfRMc97J3tzj87mYqZ7E2YjzUct9GUi4tjHLR8dVkBLjQcuHFleWvQfRNEhFR7uX7pkctOwvZXsft7sAtyldEUIN2UTeLxnEfxKYswzdi88BdbZ8hifUoSMftQvP+muRwN6+Q3DeqqRExP9QmTtcheiHh0Ot1x2i2km1bP9pbufw5zZdyWsOrh7vQae5OZWbsMv30pi7cd/CKj3coPEVaCP4Zhx4eQWhOZ1Y9MTXGyP8/iGjEyfa1T4fO/4Lea9vBoPBYDAYDAaDwWAwGAwGwz8GgF8siXCCbrSRhgAAAABJRU5ErkJggg==" alt="tarteaucitron.io" /></a>'}p+=" </div>";p+=" </div>";p+="</div>";if(tarteaucitron.parameters.orientation==="bottom"){l="Bottom"}if(tarteaucitron.parameters.highPrivacy&&!tarteaucitron.parameters.AcceptAllCta){p+='<div tabindex="-1" id="tarteaucitronAlertBig" class="tarteaucitronAlertBig'+l+'">';p+=' <span id="tarteaucitronDisclaimerAlert">';p+=" "+tarteaucitron.lang.alertBigPrivacy;p+=" </span>";p+=' <button type="button" id="tarteaucitronPersonalize">';p+=" "+tarteaucitron.lang.personalize;p+=" </button>";if(tarteaucitron.parameters.privacyUrl!==""){p+=' <button type="button" id="tarteaucitronPrivacyUrl">';p+=" "+tarteaucitron.lang.privacyUrl;p+=" </button>"}p+="</div>"}else{p+='<div tabindex="-1" id="tarteaucitronAlertBig" class="tarteaucitronAlertBig'+l+'">';p+=' <span id="tarteaucitronDisclaimerAlert">';if(tarteaucitron.parameters.highPrivacy){p+=" "+tarteaucitron.lang.alertBigPrivacy}else{p+=" "+tarteaucitron.lang.alertBigClick+" "+tarteaucitron.lang.alertBig}p+=" </span>";p+=' <button type="button" class="tarteaucitronCTAButton tarteaucitronAllow" id="tarteaucitronPersonalize2">';p+=' <span class="tarteaucitronCheck"></span> '+tarteaucitron.lang.acceptAll;p+=" </button>";if(tarteaucitron.parameters.DenyAllCta){p+=' <button type="button" class="tarteaucitronCTAButton tarteaucitronDeny" id="tarteaucitronAllDenied2">';
921p+=' <span class="tarteaucitronCross"></span> '+tarteaucitron.lang.denyAll;p+=" </button>"}p+=' <button type="button" id="tarteaucitronCloseAlert">';p+=" "+tarteaucitron.lang.personalize;p+=" </button>";if(tarteaucitron.parameters.privacyUrl!==""){p+=' <button type="button" id="tarteaucitronPrivacyUrl">';p+=" "+tarteaucitron.lang.privacyUrl;p+=" </button>"}p+="</div>";p+='<div id="tarteaucitronPercentage"></div>'}if(tarteaucitron.parameters.showIcon===true){p+='<div id="tarteaucitronIcon" class="tarteaucitronIcon'+tarteaucitron.parameters.iconPosition+'">';p+=' <button type="button" id="tarteaucitronManager">';p+=' <img src="'+(tarteaucitron.parameters.iconSrc?tarteaucitron.parameters.iconSrc:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAGA0lEQVRoge1a207bWBRdBtJwLYZhKDMVmlSK1LxNkPo+ZH6g8B6p5AuALwC+APoFoVLeoT8whPeRSt+CZKmZVu3AiIsRlEtCktGyjy8xzuXYhvahS0JJHJ/4rLP3XnuffcAPfGdQ7mM6jRLSAF4BxqsbewB2lRS2o35mpEQaJcwCyANIdLi1DGBNSWEzqmdHRqRRwjqAJclhtExOSUEP+/xIiDRKhhUWfL7ShTtBuJnqcw+/z4Ql0xNmMEwSSz4ku
921NIzSgpjSsqYJP/GeE185wYJroedRyiLNEpGLLzzrHSuk+83SgbxvOcyyRaDziWsRVZkSRDinpzPbwVGWIucuohsKynMS47fAQyls/BMSRmKJo3AFhG5wm2N1wF+Zs3zebbFfR0RxrXcJHQlgH+LMW616pR/WiIMEXfW3mtzXyeEGWsjKot8c4TOI98L+iKaR5PS6IUk88RLAO9F8UjrbYoYMOosNavpfmODIiwRXRR/G3ohaWVo1RU/c30jV8ab2mV8qVGzHWBOLyTLZiWs5Rolg/C3ySOi0tXP/k4aEwOwSBKPJs7Rp16ABJTe+p1xVX0It/owqqdDEMRoqd3RFxqDPh20Ig6VEPVC0i5RSCD+6wl6HlW7GksSlUMV11/GrUs5NasFLusDE9ELSVphXemtJwaT/8JyIRvxNNCfBmIiNdR04LII3DSrbe0yjqvyJF/ppptqVlt+MCLCEh/oOkPPP6N38Mb5cnQBGFsEqmXg5j3QMwoMzwGnr4HYbybBq13gZAOom/FO63zdf2qQArCsZrUN2TlJy69eSDKYV+6Q4MpP75ivHzPA53ngaBW4eGuSOt0A/lsGPmXMz0+3TFJcTfFbPfFbfnwlhON+iQhlWmA82CQ4ocQ7c6KcfL3DHuls0yT6Sx4YnLXJDCQOIRRv5yGIJBgP8Sdisj2qubpc5UGJmo+W49ifVmzL8HcpGhQPvZCUKiCliIhEN0tr2OCqHuSA8gwQ/92MkU7gxEmeVqGrTTgpxPXbUrtGWYus0I9thRIraagRQUIDf7Qn4yZhKRiFQIyhfMfUr3yblokVWSJ6k8xSnc7eNN/RjowfCYiFoDUFer1S3gW6JiJ8Nt30EMbEhU+vzSIztuRYjRLsR8IHLjlf7HZ+MrWWEXxNmbvapt4jGSqZRYSkGUetSNTPzHsui5YMQ2ajJUNks6mw4wT54Ok2ShnzzIPCUGshzawCRKy5FqvrTZe0RWzQGvw79m67XZjKmxJrLsICjtZa55gxXy+6F4sYsEtxTqhXdRTLC8ulSDaWoCLsolfN+8YUhOsJV709H7Cudr0LlVEtzqBcN+shEyThdR941OnAbF8pirKJqXyupTRTtQSReiVmXW1j7oBErB0d9xM2WEd5J9ZKYtuR4WKwwBSoORbpGrJ5ZI9lt71irJmGX1px0JYE26uNErawr2zfIcP4OHEKXm66PA3wjpCNEfpJunI4muifPjKvsFCkGjExTq63yxMJsZNMYF/J4HmDC5A3Yq36jy0ClePHVhwuu/b1HSFlEfHD5ZtD1bEK44Qu1mWys6tbWmZyPWckzlPTGiRw/XHCuk+q4Rek+mVrVL/UppwrdDEGNV2kpyuhccgc5Oxm9vWnn+19vJrVpLor0kTUrGacMplb1CfOFyTD4o9uNrHqr2Z+ZMSp1c2XcVSORnh9Q81q3k599ETgkNnjg0nGzi10K7rX+bZpHbrblPcY5A4Zxk2xcjzCvTpd9027Aa0QtouyyrKFRR6D/04DwkFGvHPXM3Qda/Jb4nPgI7hQLVM1q5HIBt2MzQNa57Z1DiiLAGa5Mi+O4Sz3Mpp6laPHO6InII3ITnX1QtI+EOX+m9ZxleOZ/j9PiuKoLi3aqXPuEoSye/Vhkm+LalbLtHhMS0R6zu7aZ3vP2jOjL7QVv4McxhcDnZIelAQibGIbULOapf3PuE1Vs9qeaOTdkVKr00gCQiw4NlBzDvf1Lxx+uP5r3Dgv5KQZRzWn+GRwz8jmDS8itUg7iB6vLuJCF5Uty4A9mVKkFR6MiJDachST/oHvHgD+B4SoUIitpF05AAAAAElFTkSuQmCC")+'" alt="'+tarteaucitron.lang.icon+'" title="'+tarteaucitron.lang.icon+'">';p+=" </button>";p+="</div>"}if(tarteaucitron.parameters.showAlertSmall===true){p+='<div id="tarteaucitronAlertSmall" class="tarteaucitronAlertSmall'+l+'">';p+=' <button type="button" id="tarteaucitronManager">';p+=" "+tarteaucitron.lang.alertSmall;p+=' <span id="tarteaucitronDot">';p+=' <span id="tarteaucitronDotGreen"></span>';p+=' <span id="tarteaucitronDotYellow"></span>';p+=' <span id="tarteaucitronDotRed"></span>';p+=" </span>";if(tarteaucitron.parameters.cookieslist===true){p+=" </button><!-- @whitespace";p+=' --><button type="button" id="tarteaucitronCookiesNumber">0</button>';p+=' <div id="tarteaucitronCookiesListContainer">';p+=' <button type="button" id="tarteaucitronClosePanelCookie">';p+=" "+tarteaucitron.lang.close;p+=" </button>";p+=' <div class="tarteaucitronCookiesListMain" id="tarteaucitronCookiesTitle">';p+=' <span class="tarteaucitronH2" role="heading" aria-level="2" id="tarteaucitronCookiesNumberBis">0 cookie</span>';p+=" </div>";p+=' <div id="tarteaucitronCookiesList"></div>';p+=" </div>"}else{p+=" </div>"}p+="</div>"}tarteaucitron.addInternalScript(tarteaucitron.cdn+"advertising"+(a?".min":"")+".js?v="+tarteaucitron.version,"",function(){if(tarteaucitronNoAdBlocker===true||tarteaucitron.parameters.adblocker===false){k.id="tarteaucitronRoot";if(tarteaucitron.parameters.bodyPosition==="top"){var w=q.firstChild;q.insertBefore(k,w)}else{q.appendChild(k,q)}k.innerHTML=p;var x;if(typeof(Event)==="function"){x=new Event("tac.root_available")}else{x=document.createEvent("Event");x.initEvent("tac.root_available",true,true)}window.dispatchEvent(x);if(tarteaucitron.job!==undefined){tarteaucitron.job=tarteaucitron.cleanArray(tarteaucitron.job);for(r=0;r<tarteaucitron.job.length;r+=1){tarteaucitron.addService(tarteaucitron.job[r])}}else{tarteaucitron.job=[]}if(tarteaucitron.job.length===0){tarteaucitron.userInterface.closeAlert()}tarteaucitron.isAjax=true;tarteaucitron.job.push=function(y){if(typeof tarteaucitron.job.indexOf==="undefined"){tarteaucitron.job.indexOf=function(B,C){var A,z=this.length;for(A=(C||0);A<z;A+=1){if(this[A]===B){return A}}return -1}}if(tarteaucitron.job.indexOf(y)===-1){Array.prototype.push.call(this,y)}
921tarteaucitron.launch[y]=false;tarteaucitron.addService(y)};if(document.location.hash===tarteaucitron.hashtag&&tarteaucitron.hashtag!==""){tarteaucitron.userInterface.openPanel()}tarteaucitron.cookie.number();setInterval(tarteaucitron.cookie.number,60000)}},tarteaucitron.parameters.adblocker);if(tarteaucitron.parameters.adblocker===true){setTimeout(function(){if(tarteaucitronNoAdBlocker===false){p='<div id="tarteaucitronAlertBig" class="tarteaucitronAlertBig'+l+' tarteaucitron-display-block" role="alert" aria-live="polite">';p+=' <p id="tarteaucitronDisclaimerAlert">';p+=" "+tarteaucitron.lang.adblock+"<br/>";p+=" <strong>"+tarteaucitron.lang.adblock_call+"</strong>";p+=" </p>";p+=' <button type="button" class="tarteaucitronCTAButton" id="tarteaucitronCTAButton">';p+=" "+tarteaucitron.lang.reload;p+=" </button>";p+="</div>";p+='<div id="tarteaucitronPremium"></div>';k.id="tarteaucitronRoot";if(tarteaucitron.parameters.bodyPosition==="top"){var w=q.firstChild;q.insertBefore(k,w)}else{q.appendChild(k,q)}k.innerHTML=p}},1500)}if(tarteaucitron.parameters.closePopup===true){setTimeout(function(){var w=document.getElementById("tarteaucitronAlertBig"),x=document.createElement("span");if(w){x.textContent="X";x.setAttribute("id","tarteaucitronCloseCross");w.insertBefore(x,w.firstElementChild)}},100)}if(tarteaucitron.parameters.groupServices===true){var m=document.createElement("style");m.innerHTML=".tarteaucitronTitle{display:none}";document.head.appendChild(m);var u=document.querySelectorAll('[id^="tarteaucitronServicesTitle_"]');Array.prototype.forEach.call(u,function(z){var w=z.getAttribute("id").replace(/^(tarteaucitronServicesTitle_)/,"");if(w!=="mandatory"){var y="";y+='<li class="tarteaucitronLine">';y+=' <div class="tarteaucitronName">';y+=' <span class="tarteaucitronH3" role="heading" aria-level="3">'+tarteaucitron.lang[w].title+"</span>";y+=" <span>"+tarteaucitron.lang[w].details+"</span>";y+=' <button type="button" class="tarteaucitron-toggle-group" id="tarteaucitron-toggle-group-'+w+'">'+tarteaucitron.lang.alertSmall+" ("+document.getElementById("tarteaucitronServices_"+w).childElementCount+")</button>";y+=" </div>";y+=' <div class="tarteaucitronAsk" id="tarteaucitron-group-'+w+'">';y+=' <button type="button" class="tarteaucitronAllow" id="tarteaucitron-accept-group-'+w+'">';y+=' <span class="tarteaucitronCheck"></span> '+tarteaucitron.lang.allow;y+=" </button> ";y+=' <button type="button" class="tarteaucitronDeny" id="tarteaucitron-reject-group-'+w+'">';y+=' <span class="tarteaucitronCross"></span> '+tarteaucitron.lang.deny;y+=" </button>";y+=" </div>";y+="</li>";var x=document.createElement("ul");x.innerHTML=y;z.insertBefore(x,z.querySelector("#tarteaucitronServices_"+w+""));document.querySelector("#tarteaucitronServices_"+w).style.display="none";tarteaucitron.addClickEventToId("tarteaucitron-toggle-group-"+w,function(){tarteaucitron.userInterface.toggle("tarteaucitronServices_"+w);if(document.getElementById("tarteaucitronServices_"+w).style.display=="block"){tarteaucitron.userInterface.addClass("tarteaucitronServicesTitle_"+w,"tarteaucitronIsExpanded")}else{tarteaucitron.userInterface.removeClass("tarteaucitronServicesTitle_"+w,"tarteaucitronIsExpanded")}});tarteaucitron.addClickEventToId("tarteaucitron-accept-group-"+w,function(){tarteaucitron.userInterface.respondAll(true,w)});tarteaucitron.addClickEventToId("tarteaucitron-reject-group-"+w,function(){tarteaucitron.userInterface.respondAll(false,w)})}})}tarteaucitron.userInterface.color("",true);setTimeout(function(){tarteaucitron.addClickEventToId("tarteaucitronCloseCross",function(){tarteaucitron.userInterface.closeAlert()});tarteaucitron.addClickEventToId("tarteaucitronPersonalize",function(){tarteaucitron.userInterface.openPanel
921()});tarteaucitron.addClickEventToId("tarteaucitronPersonalize2",function(){tarteaucitron.userInterface.respondAll(true)});tarteaucitron.addClickEventToId("tarteaucitronManager",function(){tarteaucitron.userInterface.openPanel()});tarteaucitron.addClickEventToId("tarteaucitronBack",function(){tarteaucitron.userInterface.closePanel()});tarteaucitron.addClickEventToId("tarteaucitronClosePanel",function(){tarteaucitron.userInterface.closePanel()});tarteaucitron.addClickEventToId("tarteaucitronClosePanelCookie",function(){tarteaucitron.userInterface.closePanel()});tarteaucitron.addClickEventToId("tarteaucitronPrivacyUrl",function(){document.location=tarteaucitron.parameters.privacyUrl});tarteaucitron.addClickEventToId("tarteaucitronPrivacyUrlDialog",function(){document.location=tarteaucitron.parameters.privacyUrl});tarteaucitron.addClickEventToId("tarteaucitronCookiesNumber",function(){tarteaucitron.userInterface.toggleCookiesList()});tarteaucitron.addClickEventToId("tarteaucitronAllAllowed",function(){tarteaucitron.userInterface.respondAll(true)});tarteaucitron.addClickEventToId("tarteaucitronAllDenied",function(){tarteaucitron.userInterface.respondAll(false)});tarteaucitron.addClickEventToId("tarteaucitronAllDenied2",function(){tarteaucitron.userInterface.respondAll(false,"",true);if(tarteaucitron.reloadThePage===true){window.location.reload()}});tarteaucitron.addClickEventToId("tarteaucitronCloseAlert",function(){tarteaucitron.userInterface.openPanel
921()});tarteaucitron.addClickEventToId("tarteaucitronCTAButton",function(){location.reload()});var z=document.getElementsByClassName("catToggleBtn"),y;for(y=0;y<z.length;y++){z[y].dataset.index=y;tarteaucitron.addClickEventToElement(z[y],function(){tarteaucitron.userInterface.toggle("tarteaucitronDetails"+s[this.dataset.index],"tarteaucitronInfoBox");return false})}var x=document.getElementsByClassName("tarteaucitronAllow");for(y=0;y<x.length;y++){tarteaucitron.addClickEventToElement(x[y],function(){tarteaucitron.userInterface.respond(this,true)})}var w=document.getElementsByClassName("tarteaucitronDeny");for(y=0;y<w.length;y++){tarteaucitron.addClickEventToElement(w[y],function(){tarteaucitron.userInterface.respond(this,false)})}if(tarteaucitron.events.load){tarteaucitron.events.load()}},500)})})},addService:function(n){var g="",p=tarteaucitron.services,j=p[n],b=tarteaucitron.cookie.read(),m=document.location.hostname,h=document.referrer.split("/")[2],i=(h===m&&window.location.href!==tarteaucitron.parameters.privacyUrl),a=(!j.needConsent),f=(b.indexOf(j.key+"=wait")>=0),c=(b.indexOf(j.key+"=false")>=0),d=((b.indexOf(j.key+"=true")>=0)||(!j.needConsent&&b.indexOf(j.key+"=false")<0)),l=(b.indexOf(j.key+"=false")>=0||b.indexOf(j.key+"=true")>=0),e=(navigator.doNotTrack==="1"||navigator.doNotTrack==="yes"||navigator.msDoNotTrack==="1"||window.doNotTrack==="1"),o=(d)?tarteaucitron.lang.allowed:tarteaucitron.lang.disallowed;if(tarteaucitron.added[j.key]!==true){tarteaucitron.added[j.key]=true;g+='<li id="'+j.key+'Line" class="tarteaucitronLine">';g+=' <div class="tarteaucitronName">';g+=' <span class="tarteaucitronH3" role="heading" aria-level="3">'+j.name+' (<span id="tacCurrentStatus'+j.key+'">'+o+"</span>)</span>";g+=' <span id="tacCL'+j.key+'" class="tarteaucitronListCookies"></span><br/>';if(tarteaucitron.parameters.moreInfoLink==true){var k="https://tarteaucitron.io/service/"+j.key+"/";if(j.readmoreLink!==undefined&&j.readmoreLink!==""){k=j.readmoreLink}if(tarteaucitron.parameters.readmoreLink!==undefined&&tarteaucitron.parameters.readmoreLink!==""){k=tarteaucitron.parameters.readmoreLink}g+=' <a href="'+k+'" target="_blank" rel="noreferrer noopener nofollow" title="'+tarteaucitron.lang.cookieDetail+" "+j.name+" "+tarteaucitron.lang.ourSite+" "+tarteaucitron.lang.newWindow+'" class="tarteaucitronReadmoreInfo">';g+=" "+tarteaucitron.lang.more;g+=" </a>";g+=' <span class="tarteaucitronReadmoreSeparator"> - </span>';g+=' <a href="'+j.uri+'" target="_blank" rel="noreferrer noopener" title="'+j.name+" "+tarteaucitron.lang.newWindow+'" class="tarteaucitronReadmoreOfficial">';g+=" "+tarteaucitron.lang.source;g+=" </a>"}g+=" </div>";g+=' <div class="tarteaucitronAsk">';g+=' <button type="button" id="'+j.key+'Allowed" class="tarteaucitronAllow">';g+=' <span class="tarteaucitronCheck"></span> '+tarteaucitron.lang.allow;g+=" </button> ";g+=' <button type="button" id="'+j.key+'Denied" class="tarteaucitronDeny">';g+=' <span class="tarteaucitronCross"></span> '+tarteaucitron.lang.deny;g+=" </button>";g+=" </div>";g+="</li>";tarteaucitron.userInterface.css("tarteaucitronServicesTitle_"+j.type,"display","block");if(document.getElementById("tarteaucitronServices_"+j.type)!==null){document.getElementById("tarteaucitronServices_"+j.type).innerHTML+=g}tarteaucitron.userInterface.css("tarteaucitronNoServicesTitle","display","none");tarteaucitron.userInterface.order(j.type);tarteaucitron.addClickEventToId(j.key+"Allowed",function(){tarteaucitron.userInterface.respond(this,true)});tarteaucitron.addClickEventToId(j.key+"Denied",function(){tarteaucitron.userInterface.respond(this,false)})}tarteaucitron.pro("!"+j.key+"="+d);if(l===false&&tarteaucitron.user.bypass===true){d=true;tarteaucitron.cookie.create(j.key,true)}if((!l&&(a||(i&&f))&&!tarteaucitron.highPrivacy)||d){if(!d||(!j.needConsent&&b.indexOf(j.key+"=false")<0)){tarteaucitron.cookie.create(j.key,true)}if(tarteaucitron.launch[j.key]!==true){tarteaucitron.launch[j.key]=true;if(typeof tarteaucitronMagic==="undefined"||tarteaucitronMagic.indexOf("_"+j.key+"_")<0){j.js()}tarteaucitron.sendEvent(j.key+"_loaded")}tarteaucitron.state[j.key]=true;tarteaucitron.userInterface.color(j.key,true)}else{if(c){if(typeof j.fallback==="function"){if(typeof tarteaucitronMagic==="undefined"||tarteaucitronMagic.indexOf("_"+j.key+"_")<0){j.fallback()}}tarteaucitron.state[j.key]=false;tarteaucitron.userInterface.color(j.key,false)}else{if(!l&&e&&tarteaucitron.handleBrowserDNTRequest){tarteaucitron.cookie.create(j.key,"false");if(typeof j.fallback==="function"){if(typeof tarteaucitronMagic==="undefined"||tarteaucitronMagic.indexOf("_"+j.key+"_")<0){j.fallback()}}tarteaucitron.state[j.key]=false;tarteaucitron.userInterface.color(j.key,false)}else{if(!l){tarteaucitron.cookie.create(j.key,"wait");if(typeof j.fallback==="function"){if(typeof tarteaucitronMagic==="undefined"||tarteaucitronMagic.indexOf("_"+j.key+"_")<0){j.fallback()}}tarteaucitron.userInterface.color(j.key,"wait");tarteaucitron.userInterface.openAlert()}}}}tarteaucitron.cookie.checkCount(j.key);tarteaucitron.sendEvent(j.key+"_added")},sendEvent:function(b){if(b!==undefined){var a;if(typeof(Event)==="function"){a=new Event(b)}else{a=document.createEvent("Event");a.initEvent(b,true,true)}document.dispatchEvent(a)}},cleanArray:function cleanArray(b){var d,a=b.length,c=[],f={},e=tarteaucitron.services;for(d=0;d<a;d+=1){if(!f[b[d]]){f[b[d]]={};if(tarteaucitron.services[b[d]]!==undefined){c.push(b[d])}}}c=c.sort(function(h,g){if(e[h].type+e[h].key>e[g].type+e[g].key){return 1}if(e[h].type+e[h].key<e[g].type+e[g].key){return -1}return 0});return c},userInterface:{css:function(c,b,a){if(document.getElementById(c)!==null){if(b=="display"&&a=="none"&&(c=="tarteaucitron"||c=="tarteaucitronBack"||c=="tarteaucitronAlertBig")){document.getElementById(c).style.opacity="0";setTimeout(function(){document.getElementById(c).style[b]=a},200)}else{document.getElementById(c).style[b]=a;if(b=="display"&&a=="block"&&(c=="tarteaucitron"||c=="tarteaucitronAlertBig")){document.getElementById(c).style.opacity="0";setTimeout(function(){document.getElementById(c).style.opacity="1"},1)}if(b=="display"&&a=="block"&&c=="tarteaucitronBack"){document.getElementById(c).style.opacity="0";setTimeout(function(){document.getElementById(c).style.opacity="0.7"},1)}}}},addClass:function(b,a){if(document.getElementById(b)!==null){document.getElementById(b).classList.add(a)}},removeClass:function(b,a){if(document.getElementById(b)!==null){document.getElementById(b).classList.remove(a)}},respondAll:function(c,h,b){var g=tarteaucitron.services,a,f,e=0;for(e=0;e<tarteaucitron.job.length;e+=1){if(typeof h!=="undefined"&&h!==""&&g[tarteaucitron.job[e]].type!==h){continue}if(b&&typeof g[tarteaucitron.job[e]].safeanalytic!=="undefined"&&g[tarteaucitron.job[e]].safeanalytic===true){continue}a=g[tarteaucitron.job[e]];f=a.key;
921if(tarteaucitron.state[f]!==c){if(c===false&&tarteaucitron.launch[f]===true){tarteaucitron.reloadThePage=true}if(tarteaucitron.launch[f]!==true&&c===true){tarteaucitron.pro("!"+f+"=engage");tarteaucitron.launch[f]=true;if(typeof tarteaucitronMagic==="undefined"||tarteaucitronMagic.indexOf("_"+f+"_")<0){tarteaucitron.services[f].js()}tarteaucitron.sendEvent(f+"_loaded")}var d=document.getElementById("tacCurrentStatus"+f);if(c==true){d.innerHTML=tarteaucitron.lang.allowed}else{d.innerHTML=tarteaucitron.lang.disallowed}tarteaucitron.state[f]=c;tarteaucitron.cookie.create(f,c);tarteaucitron.userInterface.color(f,c)}}},respond:function(d,a){if(d.id===""){return}var c=d.id.replace(new RegExp("(Eng[0-9]+|Allow|Deni)ed","g"),"");if(c.substring(0,13)==="tarteaucitron"||c===""){return}if(tarteaucitron.state[c]===a){return}if(a===false&&tarteaucitron.launch[c]===true){tarteaucitron.reloadThePage=true}if(a===true){if(tarteaucitron.launch[c]!==true){tarteaucitron.pro("!"+c+"=engage");tarteaucitron.launch[c]=true;tarteaucitron.sendEvent(c+"_loaded");if(typeof tarteaucitronMagic==="undefined"||tarteaucitronMagic.indexOf("_"+c+"_")<0){tarteaucitron.services[c].js()}}}var b=document.getElementById("tacCurrentStatus"+c);if(a==true){b.innerHTML=tarteaucitron.lang.allowed}else{b.innerHTML=tarteaucitron.lang.disallowed}tarteaucitron.state[c]=a;tarteaucitron.cookie.create(c,a);tarteaucitron.userInterface.color(c,a)},color:function(j,b){var g="tarteaucitron",a=0,h=0,d=0,e=tarteaucitron.job.length,f,l=tarteaucitron.services;if(j!==""){if(b===true){document.getElementById(j+"Line").classList.add("tarteaucitronIsAllowed");document.getElementById(j+"Line").classList.remove("tarteaucitronIsDenied")}else{if(b===false){document.getElementById(j+"Line").classList.remove("tarteaucitronIsAllowed");document.getElementById(j+"Line").classList.add("tarteaucitronIsDenied")}}var i=0;for(f=0;f<e;f+=1){if(typeof l[tarteaucitron.job[f]].safeanalytic!=="undefined"&&l[tarteaucitron.job[f]].safeanalytic===true){i+=1;continue}if(tarteaucitron.state[tarteaucitron.job[f]]===false){a+=1}else{if(tarteaucitron.state[tarteaucitron.job[f]]===undefined){h+=1}else{if(tarteaucitron.state[tarteaucitron.job[f]]===true){d+=1}}}}e-=i;tarteaucitron.userInterface.css(g+"DotGreen","width",((100/e)*d)+"%");tarteaucitron.userInterface.css(g+"DotYellow","width",((100/e)*h)+"%");tarteaucitron.userInterface.css(g+"DotRed","width",((100/e)*a)+"%");if(a===0&&h===0){tarteaucitron.userInterface.removeClass(g+"AllDenied",g+"IsSelected");tarteaucitron.userInterface.addClass(g+"AllAllowed",g+"IsSelected");tarteaucitron.userInterface.addClass(g+"MainLineOffset",g+"IsAllowed");tarteaucitron.userInterface.removeClass(g+"MainLineOffset",g+"IsDenied")}else{if(d===0&&h===0){tarteaucitron.userInterface.removeClass(g+"AllAllowed",g+"IsSelected");tarteaucitron.userInterface.addClass(g+"AllDenied",g+"IsSelected");tarteaucitron.userInterface.removeClass(g+"MainLineOffset",g+"IsAllowed");tarteaucitron.userInterface.addClass(g+"MainLineOffset",g+"IsDenied")}else{tarteaucitron.userInterface.removeClass(g+"AllAllowed",g+"IsSelected");tarteaucitron.userInterface.removeClass(g+"AllDenied",g+"IsSelected");tarteaucitron.userInterface.removeClass(g+"MainLineOffset",g+"IsAllowed");tarteaucitron.userInterface.removeClass(g+"MainLineOffset",g+"IsDenied")}}if(h===0){tarteaucitron.userInterface.closeAlert()}if(tarteaucitron.services[j].cookies.length>0&&b===false){tarteaucitron.cookie.purge(tarteaucitron.services[j].cookies)}if(b===true){if(document.getElementById("tacCL"+j)!==null){document.getElementById("tacCL"+j).innerHTML="..."}setTimeout(function(){tarteaucitron.cookie.checkCount(j)},2500)}else{tarteaucitron.cookie.checkCount(j)}}var k=document.querySelectorAll('[id^="tarteaucitronServicesTitle_"]');Array.prototype.forEach.call(k,function(p){var m=p.getAttribute("id").replace(/^(tarteaucitronServicesTitle_)/,""),o=document.getElementById("tarteaucitronServices_"+m).childElementCount;var r=document.getElementById("tarteaucitronServices_"+m),q=0,c=0;for(var n=0;n<r.children.length;n++){if(r.children[n].className=="tarteaucitronLine tarteaucitronIsDenied"){q++}if(r.children[n].className=="tarteaucitronLine tarteaucitronIsAllowed"){c++}}if(o===c){tarteaucitron.userInterface.removeClass("tarteaucitron-group-"+m,"tarteaucitronIsDenied");tarteaucitron.userInterface.addClass("tarteaucitron-group-"+m,"tarteaucitronIsAllowed")}if(o===q){tarteaucitron.userInterface.addClass("tarteaucitron-group-"+m,"tarteaucitronIsDenied");tarteaucitron.userInterface.removeClass("tarteaucitron-group-"+m,"tarteaucitronIsAllowed")}if(o!==q&&o!==c){tarteaucitron.userInterface.removeClass("tarteaucitron-group-"+m,"tarteaucitronIsDenied");tarteaucitron.userInterface.removeClass("tarteaucitron-group-"+m,"tarteaucitronIsAllowed")}q=0;c=0})},openPanel:function(){tarteaucitron.userInterface.css("tarteaucitron","display","block");tarteaucitron.userInterface.css("tarteaucitronBack","display","block");tarteaucitron.userInterface.css("tarteaucitronCookiesListContainer","display","none");document.getElementById("tarteaucitronClosePanel").focus();document.getElementsByTagName("body")[0].classList.add("tarteaucitron-modal-open");tarteaucitron.userInterface.focusTrap();tarteaucitron.userInterface.jsSizing("main");var a;if(typeof(Event)==="function"){a=new Event("tac.open_panel")}else{a=document.createEvent("Event");a.initEvent("tac.open_panel",true,true)}window.dispatchEvent(a)},closePanel:function(){if(document.location.hash===tarteaucitron.hashtag){if(window.history){window.history.replaceState("",document.title,window.location.pathname+window.location.search)}else{document.location.hash=""}}tarteaucitron.userInterface.css("tarteaucitron","display","none");tarteaucitron.userInterface.css("tarteaucitronCookiesListContainer","display","none");tarteaucitron.fallback(["tarteaucitronInfoBox"],function(b){b.style.display="none"},true);if(tarteaucitron.reloadThePage===true){window.location.reload()}else{tarteaucitron.userInterface.css("tarteaucitronBack","display","none")}if(document.getElementById("tarteaucitronCloseAlert")!==null){document.getElementById("tarteaucitronCloseAlert").focus()}document.getElementsByTagName("body")[0].classList.remove("tarteaucitron-modal-open");var a;if(typeof(Event)==="function"){a=new Event("tac.close_panel")}else{a=document.createEvent("Event");a.initEvent("tac.close_panel",true,true)}window.dispatchEvent(a)},focusTrap:function(){var e,f,d,b;e=document.getElementById("tarteaucitron").querySelectorAll("a[href], button");b=[];for(var c=0,a=e.length;c<a;c++){if(e[c].offsetHeight>0){b.push(e[c])}}f=b[0];d=b[b.length-1];document.getElementById("tarteaucitron").addEventListener("keydown",function(g){if(g.key==="Tab"||g.keyCode===9){if(g.shiftKey){if(document.activeElement===f){d.focus();g.preventDefault()}}else{if(document.activeElement===d){f.focus();g.preventDefault()}}}})},openAlert:function(){var b="tarteaucitron";tarteaucitron.userInterface.css(b+"Percentage","display","block");tarteaucitron.userInterface.css(b+"AlertSmall","display","none");tarteaucitron.userInterface.css(b+"Icon","display","none");tarteaucitron.userInterface.css(b+"AlertBig","display","block");tarteaucitron.userInterface.addClass(b+"Root","tarteaucitronBeforeVisible");var a;if(typeof(Event)==="function"){a=new Event("tac.open_alert")}else{a=document.createEvent("Event");a.initEvent("tac.open_alert",true,true)}if(document.getElementById("tarteaucitronAlertBig")!==null){document.getElementById("tarteaucitronAlertBig").focus()}window.dispatchEvent(a)},closeAlert:function(){var b="tarteaucitron";tarteaucitron.userInterface.css(b+"Percentage","display","none");tarteaucitron.userInterface.css(b+"AlertSmall","display","block");tarteaucitron.userInterface.css(b+"Icon","display","block");tarteaucitron.userInterface.css(b+"AlertBig","display","none");tarteaucitron.userInterface.removeClass(b+"Root","tarteaucitronBeforeVisible");tarteaucitron.userInterface.jsSizing("box");var a;if(typeof(Event)==="function"){a=new Event("tac.close_alert")}else{a=document.createEvent("Event");a.initEvent("tac.close_alert",true,true)}window.dispatchEvent(a)},toggleCookiesList:function(){var a=document.getElementById("tarteaucitronCookiesListContainer");if(a===null){return}if(a.style.display!=="block"){tarteaucitron.cookie.number();a.style.display="block";tarteaucitron.userInterface.jsSizing("cookie");tarteaucitron.userInterface.css("tarteaucitron","display","none");tarteaucitron.userInterface.css("tarteaucitronBack","display","block");tarteaucitron.fallback(["tarteaucitronInfoBox"],function(b){b.style.display="none"},true)}else{a.style.display="none";tarteaucitron.userInterface.css("tarteaucitron","display","none");tarteaucitron.userInterface.css("tarteaucitronBack","display","none")}},toggle:function(c,a){var b=document.getElementById(c);if(b===null){return}if(a!==undefined){tarteaucitron.fallback([a],function(d){if(d.id!==c){d.style.display="none"}},true)}if(b.style.display!=="block"){b.style.display="block"}else{b.style.display="none"}},order:function(e){var a=document.getElementById("tarteaucitronServices_"+e),d,b=[],c;if(a===null){return}d=a.childNodes;if(typeof Array.prototype.map==="function"&&typeof Enumerable==="undefined"){Array.prototype.map.call(a.children,Object).sort(function(g,f){if(tarteaucitron.services[g.id.replace(/Line/g,"")].name>tarteaucitron.services[f.id.replace(/Line/g,"")].name){return 1}if(tarteaucitron.services[g.id.replace(/Line/g,"")].name<tarteaucitron.services[f.id.replace(/Line/g,"")].name){return -1}return 0}
921).forEach(function(f){a.appendChild(f)})}},jsSizing:function(g){var b=10,h,q,r,p=window,s="inner",l=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,j,k,f,o,i,m,t,n,d,c;if(g==="box"){if(document.getElementById("tarteaucitronAlertSmall")!==null&&document.getElementById("tarteaucitronCookiesNumber")!==null){tarteaucitron.userInterface.css("tarteaucitronCookiesNumber","padding","0px 10px");d=document.getElementById("tarteaucitronAlertSmall").offsetHeight;c=document.getElementById("tarteaucitronCookiesNumber").offsetHeight;n=(d-c)/2;tarteaucitron.userInterface.css("tarteaucitronCookiesNumber","padding",n+"px 10px")}}else{if(g==="main"){if(window.innerWidth===undefined){s="client";p=document.documentElement||document.body}if(document.getElementById("tarteaucitron")!==null&&document.getElementById("tarteaucitronClosePanel")!==null&&document.getElementById("tarteaucitronMainLineOffset")!==null){tarteaucitron.userInterface.css("tarteaucitronServices","height","auto");k=document.getElementById("tarteaucitron").offsetHeight;f=document.getElementById("tarteaucitronClosePanel").offsetHeight;r=(k-f+2);tarteaucitron.userInterface.css("tarteaucitronServices","height",r+"px");tarteaucitron.userInterface.css("tarteaucitronServices","overflow-x","auto")}if(document.getElementById("tarteaucitronServices")!==null&&document.getElementById("tarteaucitronScrollbarChild")!==null){if(p[s+"Width"]<=479){}else{if(p[s+"Width"]<=767){b=12}}h=document.getElementById("tarteaucitronServices").offsetWidth;q=document.getElementById("tarteaucitronScrollbarChild").offsetWidth}if(document.getElementById("tarteaucitron")!==null){if(p[s+"Width"]<=767){j=0}else{j=((l-document.getElementById("tarteaucitron").offsetHeight)/2)-21}if(document.getElementById("tarteaucitronMainLineOffset")!==null){if(document.getElementById("tarteaucitron").offsetHeight<(l/2)){j-=document.getElementById("tarteaucitronMainLineOffset").offsetHeight}}if(j<0){j=0}tarteaucitron.userInterface.css("tarteaucitron","top",j+"px")}}else{if(g==="cookie"){if(document.getElementById("tarteaucitronAlertSmall")!==null){tarteaucitron.userInterface.css("tarteaucitronCookiesListContainer","bottom",(document.getElementById("tarteaucitronAlertSmall").offsetHeight)+"px")}if(document.getElementById("tarteaucitronCookiesListContainer")!==null){tarteaucitron.userInterface.css("tarteaucitronCookiesList","height","auto");i=document.getElementById("tarteaucitronCookiesListContainer").offsetHeight;m=document.getElementById("tarteaucitronClosePanelCookie").offsetHeight;t=document.getElementById("tarteaucitronCookiesTitle").offsetHeight;tarteaucitron.userInterface.css("tarteaucitronCookiesList","height",(i-m-t-2)+"px")}}}}}},cookie:{owner:{},create:function(k,g){if(tarteaucitronForceExpire!==""){if((tarteaucitronExpireInDay&&tarteaucitronForceExpire<365)||(!tarteaucitronExpireInDay&&tarteaucitronForceExpire<8760)){if(tarteaucitronExpireInDay){timeExpire=tarteaucitronForceExpire*86400000}else{timeExpire=tarteaucitronForceExpire*3600000}}}var h=new Date(),e=h.getTime(),b=e+timeExpire,i=new RegExp("!"+k+"=(wait|true|false)","g"),c=tarteaucitron.cookie.read().replace(i,""),j=tarteaucitron.parameters.cookieName+"="+c+"!"+k+"="+g,f=(tarteaucitron.parameters.cookieDomain!==undefined&&tarteaucitron.parameters.cookieDomain!=="")?"; domain="+tarteaucitron.parameters.cookieDomain:"",a=location.protocol==="https:"?"; Secure":"";h.setTime(b);document.cookie=j+"; expires="+h.toGMTString()+"; path=/"+f+a+"; samesite=lax"},read:function(){var d=tarteaucitron.parameters.cookieName+"=",a=document.cookie.split(";"),b,e;for(b=0;b<a.length;b+=1){e=a[b];while(e.charAt(0)===" "){e=e.substring(1,e.length)}if(e.indexOf(d)===0){return e.substring(d.length,e.length)}}return""},purge:function(a){var b;for(b=0;b<a.length;b+=1){document.cookie=a[b]+"=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/;";document.cookie=a[b]+"=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=."+location.hostname+";";document.cookie=a[b]+"=; expires=Thu, 01 Jan 2000 00:00:00 GMT; path=/; domain=."+location.hostname.split(".").slice(-2).join(".")+";"}},checkCount:function(g){var b=tarteaucitron.services[g].cookies,a=b.length,f=0,e="",d,c=document.cookie.indexOf(g+"=true");if(c>=0&&a===0){e+=tarteaucitron.lang.useNoCookie}else{if(c>=0){for(d=0;d<a;d+=1){if(document.cookie.indexOf(b[d]+"=")!==-1){f+=1;if(tarteaucitron.cookie.owner[b[d]]===undefined){tarteaucitron.cookie.owner[b[d]]=[]}if(tarteaucitron.cookie.crossIndexOf(tarteaucitron.cookie.owner[b[d]],tarteaucitron.services[g].name)===false){tarteaucitron.cookie.owner[b[d]].push(tarteaucitron.services[g].name)}}}if(f>0){e+=tarteaucitron.lang.useCookieCurrent+" "+f+" cookie";if(f>1){e+="s"}e+="."}else{e+=tarteaucitron.lang.useNoCookie}}else{if(a===0){e=tarteaucitron.lang.noCookie}else{e+=tarteaucitron.lang.useCookie+" "+a+" cookie";if(a>1){e+="s"}e+="."}}}if(document.getElementById("tacCL"+g)!==null){document.getElementById("tacCL"+g).innerHTML=e}},crossIndexOf:function(a,b){var c;for(c=0;c<a.length;c+=1){if(a[c]===b){return true}}return false},number:function(){var o=document.cookie.split(";"),h=(document.cookie!=="")?o.length:0,f="",b,a,g,e,k,j,r=(h>1)?"s":"",m,l=/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i,q=(tarteaucitron.cdn.match(l)!==null)?tarteaucitron.cdn.match(l)[1]:tarteaucitron.cdn,p=(tarteaucitron.domain!==undefined)?tarteaucitron.domain:q;o=o.sort(function(d,c){g=d.split("=",1).toString().replace(/ /g,"");e=c.split("=",1).toString().replace(/ /g,"");
921k=(tarteaucitron.cookie.owner[g]!==undefined)?tarteaucitron.cookie.owner[g]:"0";j=(tarteaucitron.cookie.owner[e]!==undefined)?tarteaucitron.cookie.owner[e]:"0";if(k+d>j+c){return 1}if(k+d<j+c){return -1}return 0});if(document.cookie!==""){for(b=0;b<h;b+=1){a=o[b].split("=",1).toString().replace(/ /g,"");if(tarteaucitron.cookie.owner[a]!==undefined&&tarteaucitron.cookie.owner[a].join(" // ")!==m){m=tarteaucitron.cookie.owner[a].join(" // ");f+='<div class="tarteaucitronHidden">';f+=' <span class="tarteaucitronTitle tarteaucitronH3" role="heading" aria-level="3">';f+=" "+tarteaucitron.cookie.owner[a].join(" // ");f+=" </span>";f+='</div><ul class="cookie-list">'}else{if(tarteaucitron.cookie.owner[a]===undefined&&p!==m){m=p;f+='<div class="tarteaucitronHidden">';f+=' <span class="tarteaucitronTitle tarteaucitronH3" role="heading" aria-level="3">';f+=" "+p;f+=" </span>";f+='</div><ul class="cookie-list">'}}f+='<li class="tarteaucitronCookiesListMain">';f+=' <div class="tarteaucitronCookiesListLeft"><button type="button" class="purgeBtn" data-cookie="'+tarteaucitron.fixSelfXSS(o[b].split("=",1))+'"><strong>×</strong></button> <strong>'+tarteaucitron.fixSelfXSS(a)+"</strong>";f+=" </div>";f+=' <div class="tarteaucitronCookiesListRight">'+tarteaucitron.fixSelfXSS(o[b].split("=").slice(1).join("="))+"</div>";f+="</li>"}f+="</ul>"}else{f+='<div class="tarteaucitronCookiesListMain">';f+=' <div class="tarteaucitronCookiesListLeft"><strong>-</strong></div>';f+=' <div class="tarteaucitronCookiesListRight"></div>';f+="</div>"}f+='<div class="tarteaucitronHidden tarteaucitron-spacer-20"></div>';if(document.getElementById("tarteaucitronCookiesList")!==null){document.getElementById("tarteaucitronCookiesList").innerHTML=f}if(document.getElementById("tarteaucitronCookiesNumber")!==null){document.getElementById("tarteaucitronCookiesNumber").innerHTML=h}if(document.getElementById("tarteaucitronCookiesNumberBis")!==null){document.getElementById("tarteaucitronCookiesNumberBis").innerHTML=h+" cookie"+r}var n=document.getElementsByClassName("purgeBtn");for(b=0;b<n.length;b++){tarteaucitron.addClickEventToElement(n[b],function(){tarteaucitron.cookie.purge([this.dataset.cookie]);tarteaucitron.cookie.number();tarteaucitron.userInterface.jsSizing("cookie");return false})}for(b=0;b<tarteaucitron.job.length;b+=1){tarteaucitron.cookie.checkCount(tarteaucitron.job[b])}}},fixSelfXSS:function(a){return a.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")},getLanguage:function(){var b="bg,ca,cn,cs,da,de,el,en,es,fi,fr,hu,it,ja,lv,nl,no,oc,pl,pt,ro,ru,se,sk,sv,tr,vi,zh",d="en";if(tarteaucitronForceLanguage!==""){if(b.indexOf(tarteaucitronForceLanguage)!==-1){return tarteaucitronForceLanguage}}if(!navigator){return"en"}var a=navigator.language||navigator.browserLanguage||navigator.systemLanguage||navigator.userLang||null,c=a?a.substr(0,2):null;if(b.indexOf(c)===-1){return d}return c},getLocale:function(){if(!navigator){return"en_US"}var a=navigator.language||navigator.browserLanguage||navigator.systemLanguage||navigator.userLang||null,b=a?a.substr(0,2):null;if(b==="fr"){return"fr_FR"}else{if(b==="en"){return"en_US"}else{if(b==="de"){return"de_DE"}else{if(b==="es"){return"es_ES"}else{if(b==="it"){return"it_IT"}else{if(b==="pt"){return"pt_PT"}else{if(b==="nl"){return"nl_NL"}else{if(b==="el"){return"el_EL"}else{return"en_US"}}}}}}}}},addScript:function(a,b,i,g,f,e,d){var h,c=false;if(g===false){if(typeof i==="function"){i()}}else{h=document.createElement("script");h.id=(b!==undefined)?b:"";h.async=true;h.src=a;if(f!==undefined&&e!==undefined){h.setAttribute(f,e)}if(typeof i==="function"){if(!tarteaucitron.parameters.useExternalJs||!d){h.onreadystatechange=h.onload=function(){var j=h.readyState;if(!c&&(!j||/loaded|complete/.test(j))){c=true;i()}}}else{i()}}if(!tarteaucitron.parameters.useExternalJs||!d){document.getElementsByTagName("head")[0].appendChild(h)}}},addInternalScript:function(b,f,e,d,c,a){tarteaucitron.addScript(b,f,e,d,c,a,true)},makeAsync:{antiGhost:0,buffer:"",init:function(b,d){var c=document.write,a=document.writeln;document.write=function(e){tarteaucitron.makeAsync.buffer+=e};document.writeln=function(e){tarteaucitron.makeAsync.buffer+=e.concat("\n")};setTimeout(function(){document.write=c;document.writeln=a},20000);tarteaucitron.makeAsync.getAndParse(b,d)},getAndParse:function(a,b){if(tarteaucitron.makeAsync.antiGhost>9){tarteaucitron.makeAsync.antiGhost=0;return}tarteaucitron.makeAsync.antiGhost+=1;tarteaucitron.addInternalScript(a,"",function(){if(document.getElementById(b)!==null){document.getElementById(b).innerHTML+="<span class='tarteaucitron-display-none'> </span>"+tarteaucitron.makeAsync.buffer;tarteaucitron.makeAsync.buffer="";tarteaucitron.makeAsync.execJS(b)}})},execJS:function(id){var i,scripts,childId,type;if(document.getElementById(id)===null){return}scripts=document.getElementById(id).getElementsByTagName("script");for(i=0;i<scripts.length;i+=1){type=(scripts[i].getAttribute("type")!==null)?scripts[i].getAttribute("type"):"";if(type===""){type=(scripts[i].getAttribute("language")!==null)?scripts[i].getAttribute("language"):""}if(scripts[i].getAttribute("src")!==null&&scripts[i].getAttribute("src")!==""){childId=id+Math.floor(Math.random()*99999999999);document.getElementById(id).innerHTML+='<div id="'+childId+'"></div>';tarteaucitron.makeAsync.getAndParse(scripts[i].getAttribute("src"),childId)}else{if(type.indexOf("javascript")!==-1||type===""){eval(scripts[i].innerHTML)}}}}},fallback:function(e,f,a){var b=document.getElementsByTagName("*"),d,c=0;for(d in b){if(b[d]!==undefined){for(c=0;c<e.length;c+=1){if((" "+b[d].className+" ").indexOf(" "+e[c]+" ")>-1){if(typeof f==="function"){if(a===true){f(b[d])}else{b[d].innerHTML=f(b[d])}}else{b[d].innerHTML=f}}}}}},engage:function(d){var b="",c=Math.floor(Math.random()*100000),a=tarteaucitron.services[d].name+" "+tarteaucitron.lang.fallback;if(tarteaucitron.lang["engage-"+d]!==undefined){a=tarteaucitron.lang["engage-"+d]}b+='<div class="tac_activate tac_activate_'+d+'">';b+=' <div class="tac_float">';b+=" "+a;b+=' <button type="button" class="tarteaucitronAllow" id="Eng'+c+"ed"+d+'">';
921b+=' <span class="tarteaucitronCheck"></span> '+tarteaucitron.lang.allow;b+=" </button>";b+=" </div>";b+="</div>";return b},extend:function(d,c){var e;for(e in c){if(c.hasOwnProperty(e)){d[e]=c[e]}}},proTemp:"",proTimer:function(){setTimeout(tarteaucitron.proPing,500)},pro:function(a){tarteaucitron.proTemp+=a;clearTimeout(tarteaucitron.proTimer);tarteaucitron.proTimer=setTimeout(tarteaucitron.proPing,500)},proPing:function(){if(tarteaucitron.uuid!==""&&tarteaucitron.uuid!==undefined&&tarteaucitron.proTemp!==""){var c=document.getElementById("tarteaucitronPremium"),b=new Date().getTime(),a="https://tarteaucitron.io/log/?";if(c===null){return}a+="account="+tarteaucitron.uuid+"&";a+="domain="+tarteaucitron.domain+"&";a+="status="+encodeURIComponent(tarteaucitron.proTemp)+"&";a+="_time="+b;c.innerHTML='<img src="'+a+'" class="tarteaucitron-display-none" alt="" />';tarteaucitron.proTemp=""}tarteaucitron.cookie.number()},AddOrUpdate:function(b,a){for(key in a){if(a[key] instanceof Object){b[key]=tarteaucitron.AddOrUpdate(b[key],a[key])}else{b[key]=a[key]}}return b},getElemWidth:function(a){return a.getAttribute("width")||a.clientWidth},getElemHeight:function(a){return a.getAttribute("height")||a.clientHeight},addClickEventToId:function(b,a){tarteaucitron.addClickEventToElement(document.getElementById(b),a)},addClickEventToElement:function(b,a){if(b){if(b.addEventListener){b.addEventListener("click",a)}else{b.attachEvent("onclick",a)}}},triggerJobsAfterAjaxCall:function(){tarteaucitron.job.forEach(function(d){tarteaucitron.job.push(d)});var c;var b=document.getElementsByClassName("tarteaucitronAllow");for(c=0;c<b.length;c++){tarteaucitron.addClickEventToElement(b[c],function(){tarteaucitron.userInterface.respond(this,true)})}var a=document.getElementsByClassName("tarteaucitronDeny");for(c=0;c<a.length;c++){tarteaucitron.addClickEventToElement(a[c],function(){tarteaucitron.userInterface.respond(this,false)})}}};; 922!function(a){a(document).ready(function(){tarteaucitron.init({privacyUrl:"cookiespolicy",hashtag:"#tarteaucitron",cookieName:"tarteaucitron",orientation:"top",showAlertSmall:false,cookieslist:false,closePopup:false,showIcon:true,iconPosition:"BottomLeft",adblocker:false,DenyAllCta:true,AcceptAllCta:true,highPrivacy:true,handleBrowserDNTRequest:false,removeCredit:false,moreInfoLink:true,useExternalCss:false,useExternalJs:false,readmoreLink:"",mandatory:true});tarteaucitron.load()})}(jQuery);;
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.