PageSourceSearch

https://bitol.io/author/jgperrin/

html bitol.io collected 2026-10-03 22:09:30 UTC 96,729 bytes, 558 lines download raw bytes

1<!doctype html>
2<html lang="en-US" class="no-js">
3<head>
4    <meta charset="UTF-8">
4<script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"NRJS-94ffe2b02f3815b2220",applicationID:"1033495754",browserID:"1103408312"};;/*! For license information please see nr-loader-rum-1.323.0.min.js.LICENSE.txt */
5(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),a=0===Object.keys(r).length?e:r;for(let s in a)if(void 0!==e[s])try{if(null===e[s]){r[s]=null;continue}Array.isArray(e[s])&&Array.isArray(t[s])?r[s]=Array.from(new Set([...e[s],...t[s]])):e[s]instanceof Map||e[s]instanceof Set||e[s]instanceof Date||e[s]instanceof RegExp?r[s]=e[s]:"object"==typeof e[s]&&null!==t[s]&&"object"==typeof t[s]?r[s]=i(e[s],t[s]):r[s]=e[s]}catch(e){r[s]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>s});var n=r(384),i=r(8122);const a={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function s(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,a)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["xv",0,"1.323.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,a="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),s=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===s?.document?.visibilityState),c=""+s?.location,u=/iPad|iPhone|iPod/.test(s.navigator?.userAgent),d=u&&"undefined"==typeof SharedWorker,l=((()=>{const e=s.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)());r.d(t,["OF",0,u,"RI",0,i,"WN",0,l,"bv",0,a,"gm",0,s,"m",0,c,"mw",0,o,"sb",0,d,"zk",0,()=>{const e=s?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<s.performance.now())return e}])},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>u,x3:()=>c});var n=r(3241),i=r(3606),a=r(860),s=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:a.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&d(e))}function u(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,d(e)}}function d(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const a=e.ee,o=i.i.handlers;if(a&&!a.aborted&&a.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=a.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}
5).forEach(t=>{t[0]?.on&&t[0].context()instanceof s.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}a.isolatedBacklog||delete o[t],a.backlog[t]=null,a.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],a=e[2];n.apply(i,a)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),a=r(2646),s=r(5607);const o="nr@context:".concat(s.W),c=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&u.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,a){!1!==a&&(a=!0);if(c.aborted&&!i)return;t&&a&&t.emit(e,r,n);var o=g(n);m(e).forEach(e=>{e.apply(o,r)});var u=v()[s[e]];u&&u.push([f,e,r,o]);return o},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{s[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,o,()=>new a.y(o)):new a.y(o)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),u=(0,n.Zm)();u.ee||(u.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,a){a?(a.buffer([e],i),a.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(9908);a.on=s;var i=a.handlers={};function a(e,t,r,a){s(a||n.d,i,e,t,r)}function s(e,t,r,i,a){a||(a="feature"),e||(e=n.d);var s=t[a]=t[a]||{};(s[r]=s[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function a(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>a,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,a=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const s=[];for(var o=0;o<e;o++)s.push(i(r,a++).toString(16));return s.join("")}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(944);const i=new Map;function a(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),a=t.includes("nrWrapper");return r||a||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},5289(e,t,r){"use strict";r.d(t,{GG:()=>s,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function a(){return"undefined"==typeof document||"complete"===document.readyState}function s(e,t){if(a())return e();const r=(0,i.J)(e),s=setInterval(()=>
5{a()&&(clearInterval(s),r())},500);(0,n.sp)("load",r,t)}function o(e){if(a())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(a())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>d,dV:()=>u,pV:()=>l});var n=r(6154),i=r(1863),a=r(944),s=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function u(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,s.i)(...Object.values(e.o))),e}function d(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,a.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),u(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>a,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function a(e,t,r){(0,n.sp)("pagehide",e,t,r)}},9300(e,t,r){"use strict";r(860).K7.ajax;r.d(t,["mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>a});var n=r(9566),i=r(1741);class a extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>a});var n=r(944),i=r(4261);class a{#e(e,...t){if(this[e]!==a.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>d});var n=r(3241),i=r(9908),a=r(1863),s=r(944),o=r(3969),c=r(8362),u=r(860);function d(e,t,r,a){const d=a||r;!d||d[e]&&d[e]!==c.d.prototype[e]||(d[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,u.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,s.R)(23,e)}})}function l(e,t,r,n,s){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(s||null===r)&&(0,i.p)("api-"+n,[(0,a.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",a="browser/blobs",s="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},u={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:a,[o.sessionReplay]:a,[o.logging]:s,[o.genericEvents]:"ins"};r.d(t,["$J",0,u,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,s,"df",0,a,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],a=t[n++];r.o(e,i)?0===a&&n++:0===a?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:a})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>"nr-rum-1.323.0.min.js",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.323.0.PROD:";r.l=(n,i,a,s)=>{if(e[n])return void e[n].push(i);let o,c;if(void 0!==a){const e=document.getElementsByTagName("script");for(var u=0;u<e.length;u++){const r=e[u];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+a){o=r;break}}}if(!o){c=!0;var d={296:"sha512-zhTI1o3vPu0UcYWUELiLeb9P46+LBW0K7R4KO/PafMc68L5tJ2mSHyvZtcNeG9Cw/PTZstuo62K1wwaoAsHdXQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+a),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),d[s]&&(o.integrity=d[s])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];
5if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={374:0,840:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const a=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=a);const s=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(s,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,a,s]=n;var o,c,u=0;if(i.some(t=>0!==e[t])){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(s)s(r)}for(t&&t(n);u<i.length;u++)c=i[u],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.323.0.PROD"]=self["webpackChunk:NRBA-1.323.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),a=r(1741);var s=r(2555),o=r(981);t.K7.genericEvents,o.R.PA,o.R.UA,o.R.BP;const c={RESOURCES:"experimental.resources",REGISTER:"register"};var u=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var l=r(2614),f=r(944),g=r(8122);const p="[data-nr-mask]",m=e=>(0,g.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:u.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(c.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(c.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,f.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(c.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:l.wk,inactiveMs:l.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(p):""===t||null===t?e.mask_selector=p:(0,f.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,f.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,f.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var h=r(6154),v=r(9324);let b=0;const y={buildEnv:"PROD",distMethod:"CDN",version:v.xv,originTime:h.WN},_={consented:!1},w={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||_.consented},set consented(e){_.consented=e}
5,customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++b},listeningForIframeMessages:!1},R="BA";var A=r(7836),x=r(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908);const k="newrelic-iframe-";function T(e,t={},n,o){let{init:c,info:u,loader_config:d,runtime:l={},exposed:f=!0}=t;if(!u){const e=(0,i.pV)();c=e.init,u=e.info,d=e.loader_config}var p;e.init=m(c||{}),e.loader_config=(p=d||{},(0,g.a)(p,E)),u.jsAttributes??={},h.bv&&(u.jsAttributes.isWorker=!0),e.info=(0,s.D)(u);const v=e.init;e.runtime??=(e=>{const t=(0,g.a)(e,w),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:R,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(a.W.prototype).forEach(r=>{const n=a.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=A.ee.get(e.agentIdentifier),e.exposed=f,(0,x.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&h.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(k)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var j=r(1863),P=r(4261),N=r(1738);
5var O=r(1687),M=r(4234),I=r(5289),D=r(7767);function V(e){return!!(0,i.dV)().o.MO&&(0,D.V)(e)&&!0===e?.session_trace.enabled}var W=r(6389),B=r(7699);const C=new WeakSet,K=new WeakMap;class U extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,W.J)(()=>{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,s.f)(e.info))return(0,f.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(K.has(e))return K.get(e);const i=(async()=>{if((0,D.V)(e.init))try{const{setupAgentSession:t}=await r.e(296).then(r.bind(r,1768));t(e)}catch(e){(0,f.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(B.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await Promise.resolve().then(function(){const e=new Error("Cannot find module '../../loaders/configure/iframe-message-handler'");throw e.code="MODULE_NOT_FOUND",e});t(e)}catch(e){(0,f.R)(23,e)}const[{Connector:i},{Harvester:a}]=await Promise.all([r.e(296).then(r.bind(r,6589)),r.e(296).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new a(e);const s=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(s.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();K.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,f.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,f.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};h.RI?(0,I.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return V(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!C.has(e)&&(C.add(e),!(0,s.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var L=r(6630);class F extends U{static featureName=L.T;constructor(e){var t;super(e,L.T),this.setupInspectionEvents(),t=e,(0,N.Y)(P.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+P.Fw,[(0,j.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(296).then(r.bind(r,908)):r.e(296).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,x.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,I.sB)(t=>{e(t,"DOMContentLoaded")}),(0,I.GG)(t=>{e(t,"load")}),(0,I.Qr)(t=>{e(t,"navigate")}),this.ee.on(l.tS.UPDATE,(e,t)=>{(0,x.W)({type:"lifecycle",name:"session",data:t})})}}class G extends e.d{constructor(e){var t;(super(),h.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(F),T(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(P.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,P.cD,n);(0,f.R)(40,typeof r)}else(0,f.R)(39,typeof e)},t),function(e){(0,N.Y)(P.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,f.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,P.Dl,!0)},e)}(this),function(e){(0,N.Y)(P.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,P.nb,!1);(0,f.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(P.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+P.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,f.R)(65,typeof t)},e)}(this),this.run()):(0,f.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};
5return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,f.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,f.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var H=r(2843),z=r(782);class Y extends U{static featureName=z.T;constructor(e){super(e,z.T),h.RI&&((0,H.u)(()=>(0,S.p)("docHidden",[(0,j.t)()],void 0,z.T,this.ee),!0),(0,H.G)(()=>(0,S.p)("winPagehide",[(0,j.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9981))))}}var Z=r(3969);class q extends U{static featureName=Z.TZ;constructor(e){super(e,Z.TZ),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9623)))}}new G({features:[F,Y,q],loaderType:"lite"})})()})();</script>
5
6    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" /><title>Jean-Georges Perrin &#8211; Bitol</title>
7<style>li#wp-admin-bar-my-sites ul#wp-admin-bar-my-sites-list {height: 550px !important; width: 1100px !important; display: flex !important; flex-direction: column !important; flex-wrap: wrap !important;}</style><style>#wpadminbar .menupop li.hover>.ab-sub-wrapper {z-index: 9999 !important;}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li {z-index: inherit !important;}</style><meta name='robots' content='max-image-preview:large' />
8<link rel='dns-prefetch' href='//bitol.io' />
9<link rel='dns-prefetch' href='//use.fontawesome.com' />
10<link rel='dns-prefetch' href='//fonts.googleapis.com' />
11<link rel="alternate" type="application/rss+xml" title="Bitol &raquo; Feed" href="https://bitol.io/feed/" />
12<link rel="alternate" type="application/rss+xml" title="Bitol &raquo; Comments Feed" href="https://bitol.io/comments/feed/" />
13<link rel="alternate" type="application/rss+xml" title="Bitol &raquo; Posts by Jean-Georges Perrin Feed" href="https://bitol.io/author/jgperrin/feed/" />
14<style id="wp-img-auto-sizes-contain-inline-css">
15img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
16/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
17</style>
18<style id="wp-emoji-styles-inline-css">
19
20	img.wp-smiley, img.emoji {
21		display: inline !important;
22		border: none !important;
23		box-shadow: none !important;
24		height: 1em !important;
25		width: 1em !important;
26		margin: 0 0.07em !important;
27		vertical-align: -0.1em !important;
28		background: none !important;
29		padding: 0 !important;
30	}
31/*# sourceURL=wp-emoji-styles-inline-css */
32</style>
33<style id="wp-block-library-inline-css">
34:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
34--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
35
36/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
37</style>
38
39<style id="global-styles-inline-css">
40:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
40--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:root { --wp--style--global--content-size: 1300px;--wp--style--global--wide-size: 1300px; }:where(body) { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}.is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}.is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}.is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}.is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
40.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
41/*# sourceURL=global-styles-inline-css */
42</style>
43
44<link rel='stylesheet' id='people-grid-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/people.css?ver=18.3.0' media='all' />
45<link rel='stylesheet' id='salient-child-featherlight-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/featherlight.css?ver=7.1.2' media='all' />
46<link rel='stylesheet' id='youtube-playlist-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/youtube-playlist.css?ver=1.0.0' media='all' />
47<link rel='stylesheet' id='cookie-settings-style-css' href='https://bitol.io/wp-content/themes/salient-child/includes/cookie-settings/cookie-settings.css?ver=18.3.0' media='all' />
48<link rel='stylesheet' id='salient-child-style-css' href='https://bitol.io/wp-content/themes/salient-child/style.css?ver=18.3.0' media='all' />
49<link rel='stylesheet' id='vc-addons-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/vc-addons.css?ver=18.3.0' media='all' />
50<link rel='stylesheet' id='templates-style-css' href='https://bitol.io/wp-content/themes/salient-child/templates/css/templates.css?ver=1790971014' media='all' />
51<link rel='stylesheet' id='widgets-style-css' href='https://bitol.io/wp-content/themes/salient-child/widgets/css/widgets.css?ver=18.3.0' media='all' />
52<link rel='stylesheet' id='results-style-css' href='https://bitol.io/wp-content/themes/salient-child/search-filter/css/results.css?ver=18.3.0' media='all' />
53<link rel='stylesheet' id='fonts-style-css' href='https://bitol.io/wp-content/themes/salient-child/fonts/fonts.css?ver=18.3.0' media='all' />
54<link rel='stylesheet' id='events-calendar-style-css' href='https://bitol.io/wp-content/themes/salient-child/css/events-calendar.css?ver=18.3.0' media='all' />
55<link rel='stylesheet' id='linux-foundation-components-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/linux-foundation-components.css?ver=18.3.0' media='all' />
56<link rel='stylesheet' id='latest-posts-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/latest-posts.css?ver=18.3.0' media='all' />
57<link rel='stylesheet' id='projects-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/projects.css?ver=18.3.0' media='all' />
58<link rel='stylesheet' id='members-style-css' href='https://bitol.io/wp-content/themes/salient-child/vc-addons/css/members.css?ver=18.3.0' media='all' />
59<link rel='stylesheet' id='insights-style-css' href='https://bitol.io/wp-content/themes/salient-child/templates/css/insights.css?ver=1790971014' media='all' />
60<link rel='stylesheet' id='projects-banner-style-css' href='https://bitol.io/wp-content/themes/salient-child/css/projects-banner.css?ver=18.3.0' media='all' />
61<link rel='stylesheet' id='font-awesome-css' href='https://use.fontawesome.com/releases/v6.0.0/css/all.css?ver=6.0.0' media='all' />
62<link rel='stylesheet' id='font-awesome-shim-css' href='https://use.fontawesome.com/releases/v6.0.0/css/v4-shims.css?ver=6.0.0' media='all' />
63<link rel='stylesheet' id='salient-grid-system-css' href='https://bitol.io/wp-content/themes/salient/css/build/grid-system.css?ver=18.3.0' media='all' />
64<link rel='stylesheet' id='main-styles-css' href='https://bitol.io/wp-content/themes/salient/css/build/style.css?ver=18.3.0' media='all' />
65<link rel='stylesheet' id='nectar-header-layout-centered-menu-css' href='https://bitol.io/wp-content/themes/salient/css/build/header/header-layout-centered-menu.css?ver=18.3.0' media='all' />
66<link rel='stylesheet' id='nectar-element-highlighted-text-css' href='https://bitol.io/wp-content/themes/salient/css/build/elements/element-highlighted-text.css?ver=18.3.0' media='all' />
67<link rel='stylesheet' id='nectar-element-fancy-unordered-list-css' href='https://bitol.io/wp-content/themes/salient/css/build/elements/element-fancy-unordered-list.css?ver=18.3.0' media='all' />
68<link rel='stylesheet' id='nectar_default_font_open_sans-css' href='https://fonts.googleapis.com/css?family=Open+Sans%3A300%2C400%2C600%2C700&#038;subset=latin%2Clatin-ext' media='all' />
69<link rel='stylesheet' id='nectar-blog-auto-masonry-meta-overlaid-spaced-css' href='https://bitol.io/wp-content/themes/salient/css/build/blog/auto-masonry-meta-overlaid-spaced.css?ver=18.3.0' media='all' />
70<link rel='stylesheet' id='responsive-css' href='https://bitol.io/wp-content/themes/salient/css/build/responsive.css?ver=18.3.0' media='all' />
71<link rel='stylesheet' id='skin-original-css' href='https://bitol.io/wp-content/themes/salient/css/build/skin-original.css?ver=18.3.0' media='all' />
72<link rel='stylesheet' id='salient-wp-menu-dynamic-css' href='https://bitol.io/wp-content/uploads/sites/3/salient/menu-dynamic.css?ver=35054' media='all' />
73<link rel='stylesheet' id='js_composer_front-css' href='https://bitol.io/wp-content/themes/salient/css/build/plugins/js_composer.css?ver=18.3.0' media='all' />
74<link rel='stylesheet' id='dynamic-css-css' href='https://bitol.io/wp-content/uploads/sites/3/salient/salient-dynamic-styles-multi-id-3.css?ver=22743' media='all' />
75<style id="dynamic-css-inline-css">
76body[data-bg-header="true"].category .container-wrap,body[data-bg-header="true"].author .container-wrap,body[data-bg-header="true"].date .container-wrap,body[data-bg-header="true"].blog .container-wrap{padding-top:var(--container-padding)!important}.archive.author .row .col.section-title span,.archive.category .row .col.section-title span,.archive.tag .row .col.section-title span,.archive.date .row .col.section-title span{padding-left:0}body.author #page-header-wrap #page-header-bg,body.category #page-header-wrap #page-header-bg,body.tag #page-header-wrap #page-header-bg,body.date #page-header-wrap #page-header-bg{height:auto;padding-top:8%;padding-bottom:8%;}.archive #page-header-wrap{height:auto;}.archive.category .row .col.section-title p,.archive.tag .row .col.section-title p{margin-top:10px;}body[data-bg-header="true"].archive .container-wrap.meta_overlaid_blog,body[data-bg-header="true"].category .container-wrap.meta_overlaid_blog,body[data-bg-header="true"].author .container-wrap.meta_overlaid_blog,body[data-bg-header="true"].date .container-wrap.meta_overlaid_blog{padding-top:0!important;}#page-header-bg[data-alignment="center"] .span_6 p{margin:0 auto;}body.archive #page-header-bg:not(.fullscreen-header) .span_6{position:relative;-webkit-transform:none;transform:none;top:0;}.blog-archive-header .nectar-author-gravatar img{width:125px;border-radius:100px;}.blog-archive-header .container .span_12 p{font-size:min(max(calc(1.3vw),16px),20px);line-height:1.5;margin-top:.5em;}body .page-header-no-bg.color-bg{padding:5% 0;}@media only screen and (max-width:999px){body .page-header-no-bg.color-bg{padding:7% 0;}}@media only screen and (max-width:690px){body .page-header-no-bg.color-bg{padding:9% 0;}.blog-archive-header .nectar-author-gravatar img{width:75px;}}.blog-archive-header.color-bg .col.section-title{border-bottom:0;padding:0;}.blog-archive-header.color-bg *{color:inherit!important;}.nectar-archive-tax-count{position:relative;padding:.5em;transform:translateX(0.25em) translateY(-0.75em);font-size:clamp(14px,0.3em,20px);display:inline-block;vertical-align:super;}.nectar-archive-tax-count:before{content:"";display:block;padding-bottom:100%;width:100%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:100px;background-color:currentColor;opacity:0.1;}@media only screen and (min-width:1000px){body #ajax-content-wrap.no-scroll{min-height:calc(100vh - 70px);height:calc(100vh - 70px)!important;}}@media only screen and (min-width:1000px){#page-header-wrap.fullscreen-header,#page-header-wrap.fullscreen-header #page-header-bg,html:not(.nectar-box-roll-loaded) .nectar-box-roll > #page-header-bg.fullscreen-header,.nectar_fullscreen_zoom_recent_projects,#nectar_fullscreen_rows:not(.afterLoaded) > div{height:calc(100vh - 69px);}.wpb_row.vc_row-o-full-height.top-level,.wpb_row.vc_row-o-full-height.top-level > .col.span_12{min-height:calc(100vh - 69px);}html:not(.nectar-box-roll-loaded) .nectar-box-roll > #page-header-bg.fullscreen-header{top:70px;}.nectar-slider-wrap[data-fullscreen="true"]:not(.loaded),.nectar-slider-wrap[data-fullscreen="true"]:not(.loaded) .swiper-container{height:calc(100vh - 68px)!important;}.admin-bar .nectar-slider-wrap[data-fullscreen="true"]:not(.loaded),.admin-bar .nectar-slider-wrap[data-fullscreen="true"]:not(.loaded) .swiper-container{height:calc(100vh - 68px - 32px)!important;}}.admin-bar[class*="page-template-template-no-header"] .wpb_row.vc_row-o-full-height.to
76p-level,.admin-bar[class*="page-template-template-no-header"] .wpb_row.vc_row-o-full-height.top-level > .col.span_12{min-height:calc(100vh - 32px);}body[class*="page-template-template-no-header"] .wpb_row.vc_row-o-full-height.top-level,body[class*="page-template-template-no-header"] .wpb_row.vc_row-o-full-height.top-level > .col.span_12{min-height:100vh;}@media only screen and (max-width:999px){.using-mobile-browser #nectar_fullscreen_rows:not(.afterLoaded):not([data-mobile-disable="on"]) > div{height:calc(100vh - 126px);}.using-mobile-browser .wpb_row.vc_row-o-full-height.top-level,.using-mobile-browser .wpb_row.vc_row-o-full-height.top-level > .col.span_12,[data-permanent-transparent="1"].using-mobile-browser .wpb_row.vc_row-o-full-height.top-level,[data-permanent-transparent="1"].using-mobile-browser .wpb_row.vc_row-o-full-height.top-level > .col.span_12{min-height:calc(100vh - 126px);}html:not(.nectar-box-roll-loaded) .nectar-box-roll > #page-header-bg.fullscreen-header,.nectar_fullscreen_zoom_recent_projects,.nectar-slider-wrap[data-fullscreen="true"]:not(.loaded),.nectar-slider-wrap[data-fullscreen="true"]:not(.loaded) .swiper-container,#nectar_fullscreen_rows:not(.afterLoaded):not([data-mobile-disable="on"]) > div{height:calc(100vh - 73px);}.wpb_row.vc_row-o-full-height.top-level,.wpb_row.vc_row-o-full-height.top-level > .col.span_12{min-height:calc(100vh - 73px);}body[data-transparent-header="false"] #ajax-content-wrap.no-scroll{min-height:calc(100vh - 73px);height:calc(100vh - 73px);}}.screen-reader-text,.nectar-skip-to-content:not(:focus){border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important;}.row .col img:not([srcset]){width:auto;}.row .col img.img-with-animation.nectar-lazy:not([srcset]){width:100%;}
77/* GENERAL INFORMATION 
78
79COLORS: 
80
81EXAMPLE
82GREY: #D0CFCF;
83PLEASE LIST COLORS FOR FUTURE ADDITIONS.
84
85*/
86
87
88/* GLOBAL */
89/*# sourceURL=dynamic-css-inline-css */
90</style>
91<link rel='stylesheet' id='redux-google-fonts-salient_redux-css' href='https://fonts.googleapis.com/css?family=Roboto+Slab:700,400%7COpen+Sans:500,400,700&#038;ver=7.1.2' media='all' />
92<script id="jquery-core-js" src="https://bitol.io/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 92
92
93<script id="jquery-migrate-js" src="https://bitol.io/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 93
93
94<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1"></script>
94<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://bitol.io/xmlrpc.php?rsd" />
95<meta name="generator" content="WordPress 7.1.2" />
96<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1"> var root = document.getElementsByTagName( "html" )[0]; root.setAttribute( "class", "js" ); </script>
96<script
97  src="https://transcend-cdn.com/cm/f484e2d0-ad2e-43a9-9d64-d07f6fa20966/airgap.js"
98  data-cfasync="false"
99  data-prompt="auto"
100></script>
100
101<!-- LFX Segments Analytics -->
102<script src="https://lfx-segment.platform.linuxfoundation.org/latest/lfx-segment-analytics.min.js"></script>
vendor: 2 bytes, line 102
102
103<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1">
104  // Initialize with default configuration (no custom write key needed)
105  LfxAnalytics.LfxSegmentsAnalytics.getInstance().init();
106</script>
106
107<!-- Google Tag Manager -->
108<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1">
vendor: 331 bytes, lines 108-112
108(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
109new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
110j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
111'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
112})(window,document,'script','dataLayer','
112GTM-M83Z3K7T
vendor: 3 bytes, line 112
112');
112</script>
112
113<!-- End Google Tag Manager --><meta name="generator" content="Powered by WPBakery Page Builder - drag and drop page builder for WordPress."/>
114<link rel="icon" href="https://bitol.io/wp-content/uploads/sites/3/2023/12/cropped-favicon_bitol-150x150.png" sizes="32x32" />
115<link rel="icon" href="https://bitol.io/wp-content/uploads/sites/3/2023/12/cropped-favicon_bitol-300x300.png" sizes="192x192" />
116<link rel="apple-touch-icon" href="https://bitol.io/wp-content/uploads/sites/3/2023/12/cropped-favicon_bitol-300x300.png" />
117<meta name="msapplication-TileImage" content="https://bitol.io/wp-content/uploads/sites/3/2023/12/cropped-favicon_bitol-300x300.png" />
118<noscript><style> .wpb_animate_when_almost_visible { opacity: 1; }</style></noscript><link data-pagespeed-no-defer data-nowprocket data-wpacu-skip data-no-optimize data-noptimize rel='stylesheet' id='main-styles-non-critical-css' href='https://bitol.io/wp-content/themes/salient/css/build/style-non-critical.css?ver=18.3.0' media='all' />
119<link data-pagespeed-no-defer data-nowprocket data-wpacu-skip data-no-optimize data-noptimize rel='stylesheet' id='fancyBox-css' href='https://bitol.io/wp-content/themes/salient/css/build/plugins/jquery.fancybox.css?ver=3.3.1' media='all' />
120<link data-pagespeed-no-defer data-nowprocket data-wpacu-skip data-no-optimize data-noptimize rel='stylesheet' id='nectar-ocm-core-css' href='https://bitol.io/wp-content/themes/salient/css/build/off-canvas/core.css?ver=18.3.0' media='all' />
121
122</head><body class="archive author author-jgperrin author-9 wp-theme-salient wp-child-theme-salient-child original wpb-js-composer js-comp-ver-8.7.3 vc_responsive" data-footer-reveal="false" data-footer-reveal-shadow="none" data-header-format="centered-menu" data-body-border="off" data-boxed-style="" data-header-breakpoint="1000" data-dropdown-style="minimal" data-cae="easeOutCubic" data-cad="750" data-megamenu-width="contained" data-aie="none" data-ls="fancybox" data-apte="standard" data-hhun="0" data-fancy-form-rcs="default" data-form-style="default" data-form-submit="regular" data-is="minimal" data-button-style="slightly_rounded_shadow" data-user-account-button="false" data-flex-cols="true" data-col-gap="default" data-header-inherit-rc="false" data-header-search="true" data-animated-anchors="true" data-ajax-transitions="false" data-full-width-header="false" data-slide-out-widget-area="false" data-slide-out-widget-area-style="slide-out-from-right" data-user-set-ocm="off" data-loading-animation="none" data-bg-header="false" data-responsive="1" data-ext-responsive="true" data-ext-padding="90" data-header-resize="1" data-header-color="custom" data-transparent-header="false" data-cart="false" data-remove-m-parallax="" data-remove-m-video-bgs="" data-m-animate="0" data-force-header-trans-color="light" data-smooth-scrolling="0" data-permanent-transparent="false" >
123    
124    
124<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1">
125	 (function(window, document) {
126
127		document.documentElement.classList.remove("no-js");
128
129		if(navigator.userAgent.match(/(Android|iPod|iPhone|iPad|BlackBerry|IEMobile|Opera Mini)/)) {
130			document.body.className += " using-mobile-browser mobile ";
131		}
132		if(navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2) {
133			document.body.className += " using-ios-device ";
134		}
135
136		if( !("ontouchstart" in window) ) {
137
138			var body = document.querySelector("body");
139			var winW = window.innerWidth;
140			var bodyW = body.clientWidth;
141
142			if (winW > bodyW + 4) {
143
144				var vwTestEl = document.createElement("div");
145				vwTestEl.style.position = "absolute";
146				vwTestEl.style.top = "-9999px";
147				vwTestEl.style.width = "100vw";
148				body.appendChild(vwTestEl);
149				var vwWidth = vwTestEl.offsetWidth;
150				body.removeChild(vwTestEl);
151
152				if (vwWidth > bodyW + 4) {
153					body.setAttribute("style", "--scroll-bar-w: " + (winW - bodyW - 4) + "px");
154				} else {
155					body.setAttribute("style", "--scroll-bar-w: 0px");
156				}
157
158			} else {
159				body.setAttribute("style", "--scroll-bar-w: 0px");
160			}
161		}
162
163	 })(window, document);
164   </script>
164<!-- Google Tag Manager (noscript) -->
vendor: 69 bytes, lines 164-165
164
165<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
165GTM-M83Z3K7T
vendor: 85 bytes, lines 165-166
165"
166height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
167<!-- End Google Tag Manager (noscript) --><nav aria-label="Skip links" class="nectar-skip-to-content-wrap" data-nosnippet><a href="#ajax-content-wrap" class="nectar-skip-to-content">Skip to main content</a></nav><div class='lfprojects'><div class='container'><a href='https://www.linuxfoundation.org/projects' target='_blank' rel='noopener noreferrer'><img src='/wp-content/uploads/banners/lfprojects_banner_other.svg' alt='THE LINUX FOUNDATION PROJECTS'></a></div></div>	
168	<div id="header-space"  data-header-mobile-fixed='1'></div> 
169	
170	    <div id="header-outer" data-has-menu="false" data-has-buttons="yes" data-header-button_style="default" data-using-pr-menu="false" data-mobile-fixed="1" data-ptnm="false" data-lhe="animated_underline" data-user-set-bg="#2e1354" data-format="centered-menu" data-permanent-transparent="false" data-megamenu-rt="0" data-remove-fixed="0" data-header-resize="1" data-cart="false" data-transparency-option="0" data-box-shadow="large" data-shrink-num="6" data-using-secondary="0" data-using-logo="1" data-logo-height="50" data-m-logo-height="50" data-padding="10" data-full-width="false" data-condense="false" >
171        
172<div id="search-outer" class="nectar" data-nosnippet>
173	<div id="search">
174		<div class="container">
175			 <div id="search-box">
176				 <div class="inner-wrap">
177					 <div class="col span_12">
178						  <form role="search" action="https://bitol.io/" method="GET">
179															<input type="text" name="s"  value="Start Typing..." aria-label="Search" data-placeholder="Start Typing..." />
180							
181						
182						<button aria-label="Search" class="search-box__button" type="submit">Search</button>						</form>
183					</div><!--/span_12-->
184				</div><!--/inner-wrap-->
185			 </div><!--/search-box-->
186			 <div id="close"><a href="#" role="button"><span class="screen-reader-text">Close Search</span>
187				<span class="icon-salient-x" aria-hidden="true"></span>				 </a></div>
188		 </div><!--/container-->
189	</div><!--/search-->
190</div><!--/search-outer-->
191
192<header id="top" role="banner" aria-label="Main Menu">
193		<div class="container">
194		<div class="row">
195			<div class="col span_3">
196								<a id="logo" href="https://bitol.io" data-supplied-ml-starting-dark="false" data-supplied-ml-starting="false" data-supplied-ml="false" >
197					<img class="stnd skip-lazy default-logo dark-version" width="" height="" alt="Bitol" src="https://bitol.io/wp-content/uploads/sites/3/2023/12/bitol_logo_white.svg" srcset="https://bitol.io/wp-content/uploads/sites/3/2023/12/bitol_logo_white.svg 1x, https://bitol.io/wp-content/uploads/sites/3/2023/12/bitol_logo_white.svg 2x" />				</a>
198							</div><!--/span_3-->
199
200			<div class="col span_9 col_last">
201									<div class="nectar-mobile-only mobile-header"><div class="inner"></div></div>
202									<a class="mobile-search" href="#searchbox"><span class="nectar-icon icon-salient-search" aria-hidden="true"></span><span class="screen-reader-text">search</span></a>
203									
204									<nav aria-label="Main Menu">
205													<ul class="sf-menu">
206								<li class="no-menu-assigned"><a href="#"></a></li>							</ul>
207													<ul class="buttons sf-menu" data-user-set-ocm="off"><li id="search-btn"><div><a href="#search-box"><span class="icon-salient-search" aria-hidden="true"></span><span class="screen-reader-text">search</span></a></div> </li></ul>
208						
209					</nav>
210
211					<div class="logo-spacing" data-using-image="true"><img class="hidden-logo skip-lazy" alt="Bitol" width="" height="" src="https://bitol.io/wp-content/uploads/sites/3/2023/12/bitol_logo_white.svg" /></div>
212				</div><!--/span_9-->
213
214				
215			</div><!--/row-->
216					</div><!--/container-->
217	</header>
218
219    </div>
220    
220<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1">
221    // SIZE #header-space TO THE REAL HEADER HEIGHT IMMEDIATELY, RATHER THAN WAITING FOR THE
222    // window.load EVENT (SALIENT'S headerSpace() DOESN'T RUN UNTIL THEN). THE STATIC 90px
223    // DEFAULT IN style.css DOESN'T ACCOUNT FOR THE NOTIFICATIONS BAR, SO WITHOUT THIS THE
224    // PAGE VISIBLY JUMPS ONCE ALL ASSETS FINISH LOADING AND SALIENT CORRECTS IT LATE.
225    (function () {
226        var headerEl = document.getElementById('header-outer');
227        var spaceEl = document.getElementById('header-space');
228        if (headerEl && spaceEl) {
229            spaceEl.style.height = headerEl.clientHeight + 'px';
230        }
231    })();
232    </script>
232
233        <div id="ajax-content-wrap">
234<style>
235.lf-author-archive .lf-list__title:hover a { color: #b6408d !important; }
236</style>
237<div class="container-wrap">
238    <div class="container main-content">
239        <div class="row">
240            <main class="lf-author-archive" role="main">
241
242                <header class="lf-archive-header">
243                    <h1 class="lf-archive-title">
244                        Jean-Georges Perrin                    </h1>
245                </header>
246
247                                    <div class="lf-list">
248                                                    <article id="post-359" class="lf-list__item lf-list__item--featured">
249
250                                                                    <figure class="lf-list__image">
251                                        <a href="https://bitol.io/data-contracts-data-products-for-ai/" tabindex="-1" aria-hidden="true">
252                                            <img width="1024" height="576" src="https://bitol.io/wp-content/uploads/sites/3/2026/09/260908-Bitol-release-1024x576.png" class="attachment-large size-large wp-post-image" alt="Bitol releases ODCS v3.2.0 and ODPS v1.1.0" decoding="async" fetchpriority="high" srcset="https://bitol.io/wp-content/uploads/sites/3/2026/09/260908-Bitol-release-1024x576.png 1024w, https://bitol.io/wp-content/uploads/sites/3/2026/09/260908-Bitol-release-300x169.png 300w, https://bitol.io/wp-content/uploads/sites/3/2026/09/260908-Bitol-release.png 1672w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
253                                    </figure>
254                                
255                                <div class="lf-list__content">
256
257                                    <h2 class="lf-list__title">
258                                        <a href="https://bitol.io/data-contracts-data-products-for-ai/">
259                                            Data Contracts &amp; Data Products for AI                                        </a>
260                                    </h2>
261
262                                    
263                                    <div class="lf-list__byline">
264                                        <time class="lf-list__byline-date" datetime="2026-09-08T14:59:28+00:00">
265                                            September 8, 2026                                        </time>
266                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
267                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
268                                            Jean-Georges Perrin                                        </a>
269                                    </div>
270
271                                </div>
272
273                            </article>
274                                                    <article id="post-351" class="lf-list__item">
275
276                                                                    <figure class="lf-list__image">
277                                        <a href="https://bitol.io/bitol-graduates/" tabindex="-1" aria-hidden="true">
278                                            <img width="1024" height="683" src="https://bitol.io/wp-content/uploads/sites/3/2026/07/260729-Graduation-Announcement-1.0.0-1024x683.jpg" class="attachment-large size-large wp-post-image" alt="Graduation Announcement" decoding="async" srcset="https://bitol.io/wp-content/uploads/sites/3/2026/07/260729-Graduation-Announcement-1.0.0-1024x683.jpg 1024w, https://bitol.io/wp-content/uploads/sites/3/2026/07/260729-Graduation-Announcement-1.0.0-300x200.jpg 300w, https://bitol.io/wp-content/uploads/sites/3/2026/07/260729-Graduation-Announcement-1.0.0.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
279                                    </figure>
280                                
281                                <div class="lf-list__content">
282
283                                    <h2 class="lf-list__title">
284                                        <a href="https://bitol.io/bitol-graduates/">
285                                            Three Years, 59 RFCs, One Vote: Bitol Graduates                                        </a>
286                                    </h2>
287
288                                    
289                                    <div class="lf-list__byline">
290                                        <time class="lf-list__byline-date" datetime="2026-07-28T11:47:36+00:00">
291                                            July 28, 2026                                        </time>
292                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
293                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
294                                            Jean-Georges Perrin                                        </a>
295                                    </div>
296
297                                </div>
298
299                            </article>
300                                                    <article id="post-228" class="lf-list__item">
301
302                                                                    <figure class="lf-list__image">
303                                        <a href="https://bitol.io/announcing-odps-v1-0-0-building-the-language-of-data-products/" tabindex="-1" aria-hidden="true">
304                                            <img width="1024" height="576" src="https://bitol.io/wp-content/uploads/sites/3/2025/10/251002-Announce-ODPS-1.0.0-1024x576.jpg" class="attachment-large size-large wp-post-image" alt="Announcing ODPS 1.0.0" decoding="async" srcset="https://bitol.io/wp-content/uploads/sites/3/2025/10/251002-Announce-ODPS-1.0.0-1024x576.jpg 1024w, https://bitol.io/wp-content/uploads/sites/3/2025/10/251002-Announce-ODPS-1.0.0-300x169.jpg 300w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
305                                    </figure>
306                                
307                                <div class="lf-list__content">
308
309                                    <h2 class="lf-list__title">
310                                        <a href="https://bitol.io/announcing-odps-v1-0-0-building-the-language-of-data-products/">
311                                            Announcing ODPS v1.0.0: Building the Language of Data Products                                        </a>
312                                    </h2>
313
314                                                                            <p class="lf-list__excerpt">We are thrilled to announce the release of version 1.0.0 of the Open Data Product Standard (ODPS): a major milestone in shaping how the industry defines, shares, and manages data...</p>
315                                    
316                                    <div class="lf-list__byline">
317                                        <time class="lf-list__byline-date" datetime="2025-10-02T15:13:56+00:00">
318                                            October 2, 2025                                        </time>
319                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
320                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
321                                            Jean-Georges Perrin                                        </a>
322                                    </div>
323
324                                </div>
325
326                            </article>
327                                                    <article id="post-211" class="lf-list__item">
328
329                                                                    <figure class="lf-list__image">
330                                        <a href="https://bitol.io/announcing-odps-major-step-toward-standardizing-data-products/" tabindex="-1" aria-hidden="true">
331                                            <img width="1024" height="576" src="https://bitol.io/wp-content/uploads/sites/3/2025/07/250717-Announce-ODPS-0.9.0-1024x576.jpg" class="attachment-large size-large wp-post-image" alt="Announcing ODPS v0.9.0" decoding="async" srcset="https://bitol.io/wp-content/uploads/sites/3/2025/07/250717-Announce-ODPS-0.9.0-1024x576.jpg 1024w, https://bitol.io/wp-content/uploads/sites/3/2025/07/250717-Announce-ODPS-0.9.0-300x169.jpg 300w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
332                                    </figure>
333                                
334                                <div class="lf-list__content">
335
336                                    <h2 class="lf-list__title">
337                                        <a href="https://bitol.io/announcing-odps-major-step-toward-standardizing-data-products/">
338                                            Announcing ODPS 0.9.0 – A Major Step Toward Standardizing Data Products                                        </a>
339                                    </h2>
340
341                                                                            <p class="lf-list__excerpt">The Open Data Product Standard (ODPS) v0.9.0 is here, bringing a unified, open framework for defining, governing, and scaling data products across modern platforms. Closely aligned with the Open Data Contract Standard (ODCS), ODPS introduces structured metadata, lifecycle management, and federated governance—all built on JSON Schema. Learn how ODPS helps organizations turn data into discoverable,&hellip;</p>
342                                    
343                                    <div class="lf-list__byline">
344                                        <time class="lf-list__byline-date" datetime="2025-07-17T14:40:24+00:00">
345                                            July 17, 2025                                        </time>
346                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
347                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
348                                            Jean-Georges Perrin                                        </a>
349                                    </div>
350
351                                </div>
352
353                            </article>
354                                                    <article id="post-202" class="lf-list__item">
355
356                                                                    <figure class="lf-list__image">
357                                        <a href="https://bitol.io/bitol-announces-two-new-members-to-its-technical-steering-committee-reinforcing-global-leadership-in-open-data-standards/" tabindex="-1" aria-hidden="true">
358                                            <img width="1024" height="576" src="https://bitol.io/wp-content/uploads/sites/3/2025/05/250513-Announce-TSC-members-1024x576.jpg" class="attachment-large size-large wp-post-image" alt="New TSC Members" decoding="async" srcset="https://bitol.io/wp-content/uploads/sites/3/2025/05/250513-Announce-TSC-members-1024x576.jpg 1024w, https://bitol.io/wp-content/uploads/sites/3/2025/05/250513-Announce-TSC-members-300x169.jpg 300w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
359                                    </figure>
360                                
361                                <div class="lf-list__content">
362
363                                    <h2 class="lf-list__title">
364                                        <a href="https://bitol.io/bitol-announces-two-new-members-to-its-technical-steering-committee-reinforcing-global-leadership-in-open-data-standards/">
365                                            Bitol Announces Two New Members to Its Technical Steering Committee, Reinforcing Global Leadership in Open Data Standards                                        </a>
366                                    </h2>
367
368                                                                            <p class="lf-list__excerpt">May 13, 2025 – bitol.io — The Bitol project, an open initiative hosted by the Linux Foundation to drive standardization around data contracts and data products, is proud to announce...</p>
369                                    
370                                    <div class="lf-list__byline">
371                                        <time class="lf-list__byline-date" datetime="2025-05-13T20:58:04+00:00">
372                                            May 13, 2025                                        </time>
373                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
374                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
375                                            Jean-Georges Perrin                                        </a>
376                                    </div>
377
378                                </div>
379
380                            </article>
381                                                    <article id="post-120" class="lf-list__item">
382
383                                                                    <figure class="lf-list__image">
384                                        <a href="https://bitol.io/odcs-version-3-transforming-data-contracts-with-enhanced-flexibility-integration-and-global-collaboration/" tabindex="-1" aria-hidden="true">
385                                            <img width="1024" height="576" src="https://bitol.io/wp-content/uploads/sites/3/2024/10/241021-Announce-OCDS-v3-1024x576.jpg" class="attachment-large size-large wp-post-image" alt="Announce OCDS v3" decoding="async" srcset="https://bitol.io/wp-content/uploads/sites/3/2024/10/241021-Announce-OCDS-v3-1024x576.jpg 1024w, https://bitol.io/wp-content/uploads/sites/3/2024/10/241021-Announce-OCDS-v3-300x169.jpg 300w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
386                                    </figure>
387                                
388                                <div class="lf-list__content">
389
390                                    <h2 class="lf-list__title">
391                                        <a href="https://bitol.io/odcs-version-3-transforming-data-contracts-with-enhanced-flexibility-integration-and-global-collaboration/">
392                                            ODCS Version 3: Transforming Data Contracts with Enhanced Flexibility, Integration, and Global Collaboration                                        </a>
393                                    </h2>
394
395                                                                            <p class="lf-list__excerpt">Open Data Contract Standard (ODCS) Version 3, is now available featuring significant improvements and new functionalities to better support modern data management needs. It is avilable at: https://github.com/bitol-io/open-data-contract-standard.</p>
396                                    
397                                    <div class="lf-list__byline">
398                                        <time class="lf-list__byline-date" datetime="2024-10-21T14:39:21+00:00">
399                                            October 21, 2024                                        </time>
400                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
401                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
402                                            Jean-Georges Perrin                                        </a>
403                                    </div>
404
405                                </div>
406
407                            </article>
408                                                    <article id="post-79" class="lf-list__item">
409
410                                                                    <figure class="lf-list__image">
411                                        <a href="https://bitol.io/incubation/" tabindex="-1" aria-hidden="true">
412                                            <img width="1024" height="585" src="https://bitol.io/wp-content/uploads/sites/3/2024/10/Bitol-Incubator-1024x585.jpg" class="attachment-large size-large wp-post-image" alt="Bitol Iis now an incubation-level project" decoding="async" srcset="https://bitol.io/wp-content/uploads/sites/3/2024/10/Bitol-Incubator-1024x585.jpg 1024w, https://bitol.io/wp-content/uploads/sites/3/2024/10/Bitol-Incubator-300x171.jpg 300w, https://bitol.io/wp-content/uploads/sites/3/2024/10/Bitol-Incubator.jpg 1792w" sizes="(max-width: 1024px) 100vw, 1024px" />                                        </a>
413                                    </figure>
414                                
415                                <div class="lf-list__content">
416
417                                    <h2 class="lf-list__title">
418                                        <a href="https://bitol.io/incubation/">
419                                            Bitol is now an incubation-level project                                        </a>
420                                    </h2>
421
422                                                                            <p class="lf-list__excerpt">Bitol is now an incubation-level project. In less than a year, we moved the old PayPal&#8217;s Data Contract Template to a global standard, recognized by many organizations from non-profits to Fortune 500....</p>
423                                    
424                                    <div class="lf-list__byline">
425                                        <time class="lf-list__byline-date" datetime="2024-10-09T15:01:16+00:00">
426                                            October 9, 2024                                        </time>
427                                        <span class="lf-list__byline-sep" aria-hidden="true">|</span>
428                                        <a class="lf-list__byline-author" href="https://bitol.io/author/jgperrin/" rel="author">
429                                            Jean-Georges Perrin                                        </a>
430                                    </div>
431
432                                </div>
433
434                            </article>
435                                            </div>
436
437                    
438                
439            </main>
440        </div>
441    </div>
442    </div>
443
444<div id="footer-outer" data-midnight="light" data-cols="4" data-custom-color="false" data-disable-copyright="false" data-matching-section-color="false" data-copyright-line="false" data-using-bg-img="false" data-bg-img-overlay="0.8" data-full-width="false" data-using-widget-area="true" data-link-hover="default"role="contentinfo">
445	
446		
447	<div id="footer-widgets" data-has-widgets="false" data-cols="4">
448		
449		<div class="container">
450			
451						
452			<div class="row">
453				
454								
455				<div class="col span_3">
456												<div class="widget">			
457							</div>
458											</div>
459					
460											
461						<div class="col span_3">
462																<div class="widget">			
463									</div>
464																
465							</div>
466							
467												
468						
469													<div class="col span_3">
470																		<div class="widget">			
471										</div>		   
472																		
473								</div>
474														
475															<div class="col span_3">
476																				<div class="widget">		
477											</div>
478																				
479									</div>
480																
481							</div>
482													</div><!--/container-->
483					</div><!--/footer-widgets-->
484					
485					
486  <div class="row" id="copyright" data-layout="default">
487
488	<div class="container">
489
490				<div class="col span_5">
491
492			<p>&copy; 2026 Bitol. Copyright © 2023 Bitol The Linux Foundation®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our Trademark Usage page. Linux is a registered trademark of Linus Torvalds. Privacy Policy and Terms of Use.</p>
493		</div><!--/span_5-->
494		
495	  <div class="col span_7 col_last">
496      <ul class="social">
497              </ul>
498	  </div><!--/span_7-->
499
500	  
501	</div><!--/container-->
502  </div><!--/row-->
503		
504</div><!--/footer-outer-->
505
506
507</div> <!--/ajax-content-wrap-->
508
509	<a id="to-top" aria-label="Back to top" role="button" href="#" class="mobile-disabled"><i role="presentation" class="fa fa-angle-up"></i></a>
510	
510<script type="speculationrules">
511{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/sites/3/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/salient-child/*","/wp-content/themes/salient/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
512</script>
512
513<a href="#" class="cookie-settings-link" aria-label="Cookie Settings"><?xml version="1.0" encoding="UTF-8"?>
514<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 400 400">
515  <!-- Generator: Adobe Illustrator 30.8.0, SVG Export Plug-In . SVG Version: 2.1.4 Build 114)  -->
516  <defs>
517    <style>
518      .st0 {
519        fill: #fff;
520        stroke: #d5d5d5;
521        stroke-miterlimit: 10;
522      }
523    </style>
524  </defs>
525  <circle class="st0" cx="200" cy="200" r="196.5"/>
526  <path d="M354.5,169.9c-1.9.5-3.8.7-5.8.7-12.8,0-23.2-10.4-23.2-23.2s.3-4,.8-5.9c-5.6,3.7-12.2,5.9-19.5,5.9-19.3,0-34.9-15.6-34.9-34.9h0c-.9,0-1.8,0-2.8,0-24.3,0-43.9-19.7-43.9-43.9s1.8-14.2,4.9-20.2c-8.6-1.5-17.5-2.3-26.6-2.3-85.1,0-154,68.9-154,154s68.9,154,154,154,154-68.9,154-154-1-20.4-3-30.2ZM126.1,286.5c-11.2,0-20.3-9.1-20.3-20.3s9.1-20.3,20.3-20.3,20.3,9.1,20.3,20.3-9.1,20.3-20.3,20.3ZM129.9,193.1c-12.2,0-22.1-9.9-22.1-22.1s9.9-22.1,22.1-22.1,22.1,9.9,22.1,22.1-9.9,22.1-22.1,22.1ZM152.8,105.5c-7.8,0-14.1-6.3-14.1-14.1s6.3-14.1,14.1-14.1,14.1,6.3,14.1,14.1-6.3,14.1-14.1,14.1ZM191.3,135.1c0-9.1,7.4-16.5,16.5-16.5s16.5,7.4,16.5,16.5-7.4,16.5-16.5,16.5-16.5-7.4-16.5-16.5ZM225.1,308.8c-7.8,0-14.1-6.3-14.1-14.1s6.3-14.1,14.1-14.1,14.1,6.3,14.1,14.1-6.3,14.1-14.1,14.1ZM225.1,240.8c-10.5,0-19-8.5-19-19s8.5-19,19-19,19,8.5,19,19-8.5,19-19,19ZM295.6,259.3c-9.8,0-17.8-8-17.8-17.8s8-17.8,17.8-17.8,17.8,8,17.8,17.8-8,17.8-17.8,17.8Z"/>
527</svg></a>
527<script id="salient-child-featherlight-script-js" src="https://bitol.io/wp-content/themes/salient-child/vc-addons/js/featherlight.js?ver=3.6.1"></script>
vendor: 1 bytes, line 527
527
528<script id="youtube-playlist-js" src="https://bitol.io/wp-content/themes/salient-child/vc-addons/js/youtube-playlist.js?ver=1.0.0"></script>
vendor: 1 bytes, line 528
528
529<script id="cookie-settings-script-js" src="https://bitol.io/wp-content/themes/salient-child/includes/cookie-settings/cookie-settings.js?ver=18.3.0"></script>
vendor: 1 bytes, line 529
529
530<script id="salient-child-javascript-js" src="https://bitol.io/wp-content/themes/salient-child/javascript.js?ver=3.6.1"></script>
vendor: 1 bytes, line 530
530
531<script id="jquery-easing-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/jquery.easing.min.js?ver=1.3"></script>
vendor: 1 bytes, line 531
531
532<script id="nectar_priority-js" src="https://bitol.io/wp-content/themes/salient/js/build/priority.js?ver=18.3.0"></script>
vendor: 1 bytes, line 532
532
533<script id="nectar-transit-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/transit.min.js?ver=0.9.9"></script>
vendor: 1 bytes, line 533
533
534<script id="nectar-waypoints-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/waypoints.js?ver=4.0.2"></script>
vendor: 1 bytes, line 534
534
535<script id="imagesLoaded-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/imagesLoaded.min.js?ver=4.1.4"></script>
vendor: 1 bytes, line 535
535
536<script id="hoverintent-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/hoverintent.min.js?ver=1.9"></script>
vendor: 1 bytes, line 536
536
537<script id="fancyBox-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/jquery.fancybox.js?ver=18.3.0"></script>
vendor: 1 bytes, line 537
537
538<script id="anime-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/anime.min.js?ver=4.5.1"></script>
vendor: 1 bytes, line 538
538
539<script id="superfish-js" src="https://bitol.io/wp-content/themes/salient/js/build/third-party/superfish.js?ver=1.5.8"></script>
vendor: 1 bytes, line 539
539
540<script id="nectar-frontend-js-extra">
541var nectarLove = {"ajaxurl":"https://bitol.io/wp-admin/admin-ajax.php","postID":"359","rooturl":"https://bitol.io","disqusComments":"false","loveNonce":"86e3838d42","mapApiKey":""};
542var nectarOptions = {"delay_js":"false","smooth_scroll":"false","smooth_scroll_strength":"50","quick_search":"false","react_compat":"disabled","header_entrance":"false","body_border_func":"default","disable_box_roll_mobile":"false","body_border_mobile":"0","dropdown_hover_intent":"default","simplify_ocm_mobile":"0","mobile_header_format":"default","ocm_btn_position":"default","left_header_dropdown_func":"default","ajax_add_to_cart":"0","ocm_remove_ext_menu_items":"remove_images","woo_product_filter_toggle":"0","woo_sidebar_toggles":"true","woo_sticky_sidebar":"0","woo_minimal_product_hover":"default","woo_minimal_product_effect":"default","woo_related_upsell_carousel":"false","woo_product_variable_select":"default","woo_using_cart_addons":"false","view_transitions_effect":""};
543var nectar_front_i18n = {"menu":"Menu","next":"Next","previous":"Previous","close":"Close","slide_of":"Slide %1$s of %2$s","slide":"slide"};
544//# sourceURL=nectar-frontend-js-extra
545</script>
vendor: 1 bytes, line 545
545
546<script id="nectar-frontend-js" src="https://bitol.io/wp-content/themes/salient/js/build/init.js?ver=18.3.0"></script>
vendor: 1 bytes, line 546
546
547<script id="touchswipe-js" src="https://bitol.io/wp-content/plugins/salient-core/js/third-party/touchswipe.min.js?ver=3.1.6"></script>
vendor: 1 bytes, line 547
547
548<script id="wp-emoji-settings" type="application/json">
549{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://bitol.io/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}}
550</script>
vendor: 1 bytes, line 550
550
551<script type="module">
552/*! This file is auto-generated */
553var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
554//# sourceURL=https://bitol.io/wp-includes/js/wp-emoji-loader.min.js
555</script>
vendor: 1 bytes, line 555
555
556<script type="text/javascript" nonce="95d9ab427ec9966b8d350c7e8e1107b1"></script>
556<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"NRJS-94ffe2b02f3815b2220","applicationID":"1033495754","transactionName":"ZARSZhBSCEdRUEEIDF1OcVEWWglaH1JAFQtcEw==","queueTime":0,"applicationTime":251,"atts":"SENREFhIG0k=","errorBeacon":"bam.nr-data.net","agent":""}</script>
556</body>
557</html>
558<!-- plugin=object-cache-pro client=phpredis metric#hits=2506 metric#misses=20 metric#hit-ratio=99.2 metric#bytes=530899 metric#prefetches=146 metric#store-reads=32 metric#store-writes=4 metric#store-hits=159 metric#store-misses=9 metric#sql-queries=3 metric#ms-total=251.27 metric#ms-cache=11.48 metric#ms-cache-avg=0.3280 metric#ms-cache-ratio=4.6 -->

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.