// ==UserScript== // @name Facturier // @namespace https://stephanety-pro.github.io/OC-Mentors-AccountAddon/ // @version 1.10.0015 // @description Un addon pour vous aider dans votre facturation // @author Stéphane TORCHY // @updateURL https://raw.githubusercontent.com/StephaneTy-Pro/OC-Mentors-AccountAddon/master/dist/app.min.js // @downloadURL https://raw.githubusercontent.com/StephaneTy-Pro/OC-Mentors-AccountAddon/master/dist/app.min.js // @icon https://mirrors.creativecommons.org/presskit/icons/heart.red.png // multiple usage // @match https://openclassrooms.com/fr/mentorship/dashboard/mentorship-sessions-history* // @match https://openclassrooms.com/fr/mentorship/dashboard/sessions // @match https://openclassrooms.com/fr/mentorship/dashboard/booked-mentorship-sessions // Start at document start https://www.tampermonkey.net/documentation.php#_run_at // @run-at document-start // @grant unsafeWindow // @grant GM_addStyle // @grant GM_getResourceText // @grant GM_registerMenuCommand // @grant GM_unregisterMenuCommand // @grant GM_xmlhttpRequest // @grant GM.xmlHttpRequest // @grant GM_notification // @require https://cdn.jsdelivr.net/npm/lodash@4.17.19/lodash.min.js // @require https://unpkg.com/lowdb@0.17/dist/low.min.js // @require https://unpkg.com/lowdb@0.17/dist/LocalStorage.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/dayjs.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/locale/fr.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/plugin/isBetween.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/plugin/isSameOrBefore.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/plugin/isSameOrAfter.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/plugin/customParseFormat.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.8.29/plugin/localeData.min.js //// GM_Compat : Portable monkey-patching for userscripts // SRC https://github.com/chocolateboy/gm-compat // permet notamment d'utiliser GMCompat.unsafeWindow.notify('loaded', { value: 42 }) sous chrome // @require https://unpkg.com/gm-compat@1.1.0 //// GM_Config // SRC https://github.com/sizzlemctwizzle/GM_config/wiki // require https://openuserjs.org/src/libs/sizzle/GM_config.js (cassé ce jour 28/08/2020); // require https://raw.githubusercontent.com/sizzlemctwizzle/GM_config/master/gm_config.js //(semble de nouveau utilisable 07/06/2023) // @require https://openuserjs.org/src/libs/sizzle/GM_config.js // Legacy GM3 support // @grant GM_getValue // @grant GM_setValue // Current GM4 support // @grant GM.getValue // @grant GM.setValue //// sweetalert 2 // require https://cdn.jsdelivr.net/npm/sweetalert2@9/dist/sweetalert2.all.min.js // @require https://cdn.jsdelivr.net/npm/sweetalert2@10 //// draggabilly // @require https://cdnjs.cloudflare.com/ajax/libs/draggabilly/2.2.0/draggabilly.pkgd.min.js //// toastify // @require https://cdn.jsdelivr.net/npm/toastify-js@1.8.0/src/toastify.min.js // @resource toastifycss https://raw.githubusercontent.com/apvarun/toastify-js/master/src/toastify.css // https://github.com/uzairfarooq/arrive --> included manually // require https://raw.githubusercontent.com/uzairfarooq/arrive/master/minified/arrive.min.js ////simple-datatables //// https://github.com/fiduswriter/Simple-DataTables // @require https://cdn.jsdelivr.net/npm/simple-datatables@latest // @resource simpledatatablecss https://cdn.jsdelivr.net/npm/simple-datatables@latest/dist/style.css //// MEMOIZATION //// TODO : check best function // require https://raw.githubusercontent.com/anywhichway/nano-memoize/master/dist/nano-memoize.min.js // https://github.com/planttheidea/moize#usage // @require https://cdn.jsdelivr.net/npm/moize@5.4.7/dist/moize.min.js // require https://cdn.jsdelivr.net/npm/moize@6.0.2/dist/moize.min.js -> probleme 20210701 // require https://cdn.jsdelivr.net/npm/moize@6.0.3/dist/moize.min.js -> probleme 20210701 // USAGE OF https://caolan.github.io/async/v3/docs.html // FONCTIONNE PAS require https://cdn.jsdelivr.net/npm/async@3.2.0/memoize.min.js probleme export // @require https://cdn.jsdelivr.net/npm/async@3.2.0/dist/async.min.js // TOTEST https://github.com/sindresorhus/p-memoize // Ne fonctionne pasrequire https://cdn.skypack.dev/p-memoize //// FETCH INJECT --> included manually // require https://cdn.jsdelivr.net/npm/fetch-inject //// PARSER MKDOWN // @require https://cdn.jsdelivr.net/npm/showdown@1.9.1/dist/showdown.min.js //// PDF https://pdf-lib.js.org/docs/api/ // @require https://unpkg.com/pdf-lib@1.9.0/dist/pdf-lib.min.js // @require https://unpkg.com/downloadjs@1.4.7/download.js //// HTMX https://htmx.org --> included dynamically // require https://unpkg.com/htmx.org@1.1.0/dist/htmx.min.js //// ALPINE JS --> included dynamically // require https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.js // ProgressBar // https://loading.io/progress/ // require https://raw.githubusercontent.com/loadingio/loading-bar/master/dist/loading-bar.js // resource loading_barcss https://raw.githubusercontent.com/loadingio/loading-bar/master/dist/loading-bar.css // @require https://loadingio.github.io/loading-bar/dist/loading-bar.js // @resource loading_barcss https://loadingio.github.io/loading-bar/dist/loading-bar.min.css // https://www.cssscript.com/demo/text-progress-bar-ascii-loader/ // https://github.com/kimmobrunfeldt/progressbar.js - fonctionne mais probleme avec le easing dans mon popup progress bar // require https://raw.githubusercontent.com/kimmobrunfeldt/progressbar.js/master/dist/progressbar.min.js // require https://raw.githubusercontent.com/kimmobrunfeldt/progressbar.js/master/dist/progressbar.js // https://pvdlg.github.io/uprogress/js-api/#UProgress+start // https://ricostacruz.com/nprogress // @require https://unpkg.com/nprogress@0.2.0/nprogress.js // @resource nprogress_css https://unpkg.com/nprogress@0.2.0/nprogress.css // semble cassé // https://github.com/webosorg/Process // https://unpkg.com/@webos/process@0.2.0/dist/process.js // https://cdn.jsdelivr.net/npm/@webos/process@0.2.0/dist/process.min.js // bof ... je ne parviens pas à faire fonctionner l'exemple // https://cdn.jsdelivr.net/npm/worker-function@2.0.1/WorkerFunction.min.js // Threading // require https://raw.githubusercontent.com/gkjohnson/threading-js/master/umd/Thread.js // require https://raw.githubusercontent.com/gkjohnson/threading-js/master/umd/ThreadPool.js // require https://raw.githubusercontent.com/gkjohnson/threading-js/master/umd/ThreadQueue.js // semble cassé // https://cdn.jsdelivr.net/npm/threads@1.6.3/dist/index.min.js // https://unpkg.com/paralleljs@1.0/lib/parallel.js // https://cdn.jsdelivr.net/npm/threads@1.6.3/dist/index.min.js // Freelancer // https://github.com/Wildhoney/Freelancer // fonctionne require https://raw.githubusercontent.com/arqex/worker-function/master/WorkerFunction.js // ne fonctonne pas https://raw.githubusercontent.com/duart38/Thread/master/Thread.bundle.js // require https://cdn.jsdelivr.net/npm/paralleljs@1.0.1/lib/parallel.min.js /* * History * cf https://github.com/StephaneTy-Pro/OC-Mentors-AccountAddon/blob/master/CHANGELOG.md */ // ==/UserScript== (()=>{var Or=Object.create;var tn=Object.defineProperty;var Mr=Object.getOwnPropertyDescriptor;var Nr=Object.getOwnPropertyNames;var Ir=Object.getPrototypeOf,Br=Object.prototype.hasOwnProperty;var Yr=(d,e,t)=>e in d?tn(d,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):d[e]=t;var kr=(d,e)=>()=>(e||d((e={exports:{}}).exports,e),e.exports);var $r=(d,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Nr(e))!Br.call(d,n)&&n!==t&&tn(d,n,{get:()=>e[n],enumerable:!(s=Mr(e,n))||s.enumerable});return d};var jr=(d,e,t)=>(t=d!=null?Or(Ir(d)):{},$r(e||!d||!d.__esModule?tn(t,"default",{value:d,enumerable:!0}):t,d));var K=(d,e,t)=>(Yr(d,typeof e!="symbol"?e+"":e,t),t);var ir=kr((mn,hn)=>{(function(d,e){typeof define=="function"&&define.amd?define([],e):typeof hn=="object"&&typeof mn<"u"?hn.exports=e():d.Papa=e()})(mn,function d(){"use strict";var e=typeof self<"u"?self:typeof window<"u"?window:e!==void 0?e:{},t=!e.document&&!!e.postMessage,s=t&&/blob:/i.test((e.location||{}).protocol),n={},o=0,u={parse:function(m,l){var N=(l=l||{}).dynamicTyping||!1;if(y(N)&&(l.dynamicTypingFunction=N,N={}),l.dynamicTyping=N,l.transform=!!y(l.transform)&&l.transform,l.worker&&u.WORKERS_SUPPORTED){var x=function(){if(!u.WORKERS_SUPPORTED)return!1;var $=(B=e.URL||e.webkitURL||null,I=d.toString(),u.BLOB_URL||(u.BLOB_URL=B.createObjectURL(new Blob(["(",I,")();"],{type:"text/javascript"})))),O=new e.Worker($),B,I;return O.onmessage=b,O.id=o++,n[O.id]=O}();return x.userStep=l.step,x.userChunk=l.chunk,x.userComplete=l.complete,x.userError=l.error,l.step=y(l.step),l.chunk=y(l.chunk),l.complete=y(l.complete),l.error=y(l.error),delete l.worker,void x.postMessage({input:m,config:l,workerId:x.id})}var M=null;return u.NODE_STREAM_INPUT,typeof m=="string"?M=l.download?new p(l):new a(l):m.readable===!0&&y(m.read)&&y(m.on)?M=new E(l):(e.File&&m instanceof File||m instanceof Object)&&(M=new f(l)),M.stream(m)},unparse:function(m,l){var N=!1,x=!0,M=",",$=`\r `,O='"',B=O+O,I=!1,L=null,J=!1;(function(){if(typeof l=="object"){if(typeof l.delimiter!="string"||u.BAD_DELIMITERS.filter(function(F){return l.delimiter.indexOf(F)!==-1}).length||(M=l.delimiter),(typeof l.quotes=="boolean"||typeof l.quotes=="function"||Array.isArray(l.quotes))&&(N=l.quotes),typeof l.skipEmptyLines!="boolean"&&typeof l.skipEmptyLines!="string"||(I=l.skipEmptyLines),typeof l.newline=="string"&&($=l.newline),typeof l.quoteChar=="string"&&(O=l.quoteChar),typeof l.header=="boolean"&&(x=l.header),Array.isArray(l.columns)){if(l.columns.length===0)throw new Error("Option columns is empty");L=l.columns}l.escapeChar!==void 0&&(B=l.escapeChar+O),typeof l.escapeFormulae=="boolean"&&(J=l.escapeFormulae)}})();var H=new RegExp(v(O),"g");if(typeof m=="string"&&(m=JSON.parse(m)),Array.isArray(m)){if(!m.length||Array.isArray(m[0]))return R(null,m,I);if(typeof m[0]=="object")return R(L||P(m[0]),m,I)}else if(typeof m=="object")return typeof m.data=="string"&&(m.data=JSON.parse(m.data)),Array.isArray(m.data)&&(m.fields||(m.fields=m.meta&&m.meta.fields),m.fields||(m.fields=Array.isArray(m.data[0])?m.fields:P(m.data[0])),Array.isArray(m.data[0])||typeof m.data[0]=="object"||(m.data=[m.data])),R(m.fields||[],m.data||[],I);throw new Error("Unable to serialize unrecognized input");function P(F){if(typeof F!="object")return[];var U=[];for(var j in F)U.push(j);return U}function R(F,U,j){var ue="";typeof F=="string"&&(F=JSON.parse(F)),typeof U=="string"&&(U=JSON.parse(U));var re=Array.isArray(F)&&0=this._config.preview;if(s)e.postMessage({results:$,workerId:u.WORKER_ID,finished:B});else if(y(this._config.chunk)&&!N){if(this._config.chunk($,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);$=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat($.data),this._completeResults.errors=this._completeResults.errors.concat($.errors),this._completeResults.meta=$.meta),this._completed||!B||!y(this._config.complete)||$&&$.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),B||$&&$.meta.paused||this._nextChunk(),$}this._halted=!0},this._sendError=function(l){y(this._config.error)?this._config.error(l):s&&this._config.error&&e.postMessage({workerId:u.WORKER_ID,error:l,finished:!1})}}function p(m){var l;(m=m||{}).chunkSize||(m.chunkSize=u.RemoteChunkSize),g.call(this,m),this._nextChunk=t?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(N){this._input=N,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(l=new XMLHttpRequest,this._config.withCredentials&&(l.withCredentials=this._config.withCredentials),t||(l.onload=w(this._chunkLoaded,this),l.onerror=w(this._chunkError,this)),l.open(this._config.downloadRequestBody?"POST":"GET",this._input,!t),this._config.downloadRequestHeaders){var N=this._config.downloadRequestHeaders;for(var x in N)l.setRequestHeader(x,N[x])}if(this._config.chunkSize){var M=this._start+this._config.chunkSize-1;l.setRequestHeader("Range","bytes="+this._start+"-"+M)}try{l.send(this._config.downloadRequestBody)}catch($){this._chunkError($.message)}t&&l.status===0&&this._chunkError()}},this._chunkLoaded=function(){l.readyState===4&&(l.status<200||400<=l.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:l.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(N){var x=N.getResponseHeader("Content-Range");return x===null?-1:parseInt(x.substring(x.lastIndexOf("/")+1))}(l),this.parseChunk(l.responseText)))},this._chunkError=function(N){var x=l.statusText||N;this._sendError(new Error(x))}}function f(m){var l,N;(m=m||{}).chunkSize||(m.chunkSize=u.LocalChunkSize),g.call(this,m);var x=typeof FileReader<"u";this.stream=function(M){this._input=M,N=M.slice||M.webkitSlice||M.mozSlice,x?((l=new FileReader).onload=w(this._chunkLoaded,this),l.onerror=w(this._chunkError,this)):l=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(M.target.result)},this._chunkError=function(){this._sendError(l.error)}}function a(m){var l;g.call(this,m=m||{}),this.stream=function(N){return l=N,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var N,x=this._config.chunkSize;return x?(N=l.substring(0,x),l=l.substring(x)):(N=l,l=""),this._finished=!l,this.parseChunk(N)}}}function E(m){g.call(this,m=m||{});var l=[],N=!0,x=!1;this.pause=function(){g.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){g.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(M){this._input=M,this._input.on("data",this._streamData),this._input.on("end",this._streamEnd),this._input.on("error",this._streamError)},this._checkIsFinished=function(){x&&l.length===1&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),l.length?this.parseChunk(l.shift()):N=!0},this._streamData=w(function(M){try{l.push(typeof M=="string"?M:M.toString(this._config.encoding)),N&&(N=!1,this._checkIsFinished(),this.parseChunk(l.shift()))}catch($){this._streamError($)}},this),this._streamError=w(function(M){this._streamCleanUp(),this._sendError(M)},this),this._streamEnd=w(function(){this._streamCleanUp(),x=!0,this._streamData("")},this),this._streamCleanUp=w(function(){this._input.removeListener("data",this._streamData),this._input.removeListener("end",this._streamEnd),this._input.removeListener("error",this._streamError)},this)}function S(m){var l,N,x,M=Math.pow(2,53),$=-M,O=/^\s*-?(\d+\.?|\.\d+|\d+\.\d+)(e[-+]?\d+)?\s*$/,B=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,I=this,L=0,J=0,H=!1,P=!1,R=[],Y={data:[],errors:[],meta:{}};if(y(m.step)){var F=m.step;m.step=function(Z){if(Y=Z,ue())j();else{if(j(),Y.data.length===0)return;L+=Z.data.length,m.preview&&L>m.preview?N.abort():(Y.data=Y.data[0],F(Y,I))}}}function U(Z){return m.skipEmptyLines==="greedy"?Z.join("").trim()==="":Z.length===1&&Z[0].length===0}function j(){if(Y&&x&&(he("Delimiter","UndetectableDelimiter","Unable to auto-detect delimiting character; defaulted to '"+u.DefaultDelimiter+"'"),x=!1),m.skipEmptyLines)for(var Z=0;Z=R.length?"__parsed_extra":R[be]),m.transform&&(ve=m.transform(ve,W)),ve=re(W,ve),W==="__parsed_extra"?(ie[W]=ie[W]||[],ie[W].push(ve)):ie[W]=ve}return m.header&&(be>R.length?he("FieldMismatch","TooManyFields","Too many fields: expected "+R.length+" fields but parsed "+be,J+ce):be=xe.length/2?`\r `:"\r"}(Z,pe)),x=!1,m.delimiter)y(m.delimiter)&&(m.delimiter=m.delimiter(Z),Y.meta.delimiter=m.delimiter);else{var ce=function(ie,W,ve,xe,Pe){var Be,qe,Oe,We;Pe=Pe||[","," ","|",";",u.RECORD_SEP,u.UNIT_SEP];for(var Ne=0;Ne=O)return Ne(!0)}else for(W=L,L++;;){if((W=H.indexOf(l,W+1))===-1)return R||he.push({type:"Quotes",code:"MissingQuotes",message:"Quoted field unterminated",row:re.length,index:L}),Oe();if(W===Y-1)return Oe(H.substring(L,W).replace(ie,l));if(l!==I||H[W+1]!==I){if(l===I||W===0||H[W-1]!==I){ce!==-1&&ce=O)return Ne(!0);break}he.push({type:"Quotes",code:"InvalidQuotes",message:"Trailing quote on quoted field is malformed",row:re.length,index:L}),W++}}else W++}return Oe();function Be(Se){re.push(Se),G=L}function qe(Se){var tt=0;if(Se!==-1){var Re=H.substring(W+1,Se);Re&&Re.trim()===""&&(tt=Re.length)}return tt}function Oe(Se){return R||(Se===void 0&&(Se=H.substring(L)),Z.push(Se),L=Y,Be(Z),ue&&ht()),Ne()}function We(Se){L=Se,Be(Z),Z=[],be=H.indexOf(x,L)}function Ne(Se){return{data:re,errors:he,meta:{delimiter:N,linebreak:x,aborted:J,truncated:!!Se,cursor:G+(P||0)}}}function ht(){$(Ne()),re=[],he=[]}function Ot(Se,tt,Re){var nt={nextDelim:void 0,quoteSearch:void 0},Fe=H.indexOf(l,tt+1);if(tt{Object.assign(d,{onabort:s,onerror:s,onload:t,ontimeout:s}),e(d)}):Promise.reject()},async getValue(d,e=null){return window.GM_getValue?Promise.resolve(GM_getValue(d)||e):await GM.getValue(d)||e},async setValue(d,e){window.GM_setValue?GM_setValue(d,e):GM.setValue(d,e)}};var Tn="OC-Addons",_i="St\xE9phane TORCHY",k="background-color:green;color:white",wi="background-color:black;color:white",Ge="background-color:coral;color:white",jt="background-color:cyan;color:white",me="background-color:red;color:white",Ke="background-color:blue;color:white",Ze="auto-financ\xE9",Ye="financ\xE9 par un tiers",gt="autre",yt="r\xE9alis\xE9e",pt="annul\xE9e",bt="annul\xE9e tardivement",vt="\xE9tudiant absent",Lt="\xE9tudiante absente",_t=6,Dn=30,Cn=35,On=40,Mn=45,Nn=50,In=55,X=0,ee=1,te=2,Si=[{pathId:158,path:"158-trouvez-lemploi-qui-vous-correspond",value:2}],se=0,ae=1,ne=2,de=3,q=0,V=1,Q=2,Bn=0,Yn="completed",kn="canceled",$n="late canceled",jn="marked student as absent",Pt="ol";var Ln=function(){return new Promise(d=>{document.readyState=="loading"?document.addEventListener("DOMContentLoaded",d):d()})},Lr=Object.prototype.toString;function Pr(d){return d==null?d===void 0?"[object Undefined]":"[object Null]":Lr.call(d)}function Pn(d){let e=typeof d;return e=="symbol"||e==="object"&&d!=null&&Pr(d)=="[object Symbol]"}function Rr(d){if(typeof d=="string"||Pn(d))return d;let e=`${d}`;return e=="0"&&1/d==-INFINITY?"-0":e}function nn(d,e){if(typeof d!="function"||e!=null&&typeof e!="function")throw new TypeError("Expected a function");let t=function(...s){let n=e?e.apply(this,s):s[0],o=t.cache;if(o.has(n))return o.get(n);let u=d.apply(this,s);return t.cache=o.set(n,u)||o,u};return t.cache=new(nn.Cache||Map),t}nn.Cache=Map;var Fr=500;function Hr(d){let e=nn(d,t=>{let{cache:s}=e;return s.size===Fr&&s.clear(),t});return e}var Ur=".".charCodeAt(0),qr=/\\(\\)?/g,Gr=RegExp(`[^.[\\]]+|\\[(?:([^"'][^[]*)|(["'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))`,"g"),Vr=Hr(d=>{let e=[];return d.charCodeAt(0)===Ur&&e.push(""),d.replace(Gr,(t,s,n,o)=>{let u=t;n?u=o.replace(qr,"$1"):s&&(u=s.trim()),e.push(u)}),e}),Qr=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,zr=/^\w*$/;function Wr(d,e){if(Array.isArray(d))return!1;let t=typeof d;return t==="number"||t==="boolean"||d==null||Pn(d)?!0:zr.test(d)||!Qr.test(d)||e!=null&&d in Object(e)}function Kr(d,e){return Array.isArray(d)?d:Wr(d,e)?[d]:Vr(d)}function Jr(d,e){e=Kr(e,d);let t=0,s=e.length;for(;d!=null&&t{console.error(`%cError ${v}`,me)}),o=new DOMParser().parseFromString(s.responseText.replace(/\n/mg,""),"text/html");if(o.querySelector("meta[id=captcha-bypass]")!==null)throw console.error(`%cError CloudFlare CAPTCHA : ${o.querySelector("title").innerText}`,k),new Error("Must Respond to Cloudflare Captcha or waiting....");if(e.length>0&&e.toUpperCase().startsWith("JSON:")){var c=e.split(":"),g=c[1],p=c[2]||"",f=c[3]||"";if(g.length>0){var a=JSON.parse(o.getElementById(g).textContent),E=Zr(a,p,f);return E}}var S={};return t===!0?S=o.querySelectorAll(e):S=o.querySelector(e),S};var Mt=function(d,e=-1){try{var t=(d.querySelector("a").href||"/").split("/");return t[t.length+e]}catch(s){console.error(`%cError in getkey${s.stack||s}`,me)}},Rn=function(d){var e=d.trim().split(" ");try{var t=dayjs_locale_fr.months.findIndex(s=>s===e[1])+1}catch(s){console.error(`%cError in extractDate${s.stack||s}`,me)}return`${e[2]}-${t}-${e[0]}T${e[4]}`};var Je=function(d){return new Promise(e=>setTimeout(e,d))},Fn=function(d){return d.substring(d.lastIndexOf(".")+1,d.length)||d},Rt=function(d,e){for(var t=d.split("."),s=e.split("."),n=0;n<3;n++){var o=Number(t[n]),u=Number(s[n]);if(o>u)return 1;if(u>o)return-1;if(!isNaN(o)&&isNaN(u))return 1;if(isNaN(o)&&!isNaN(u))return-1}return 0},Hn=function(e,t){return console.info("Reading:",e),fetch(e,{mode:"same-origin"}).then(function(s){return s.blob()}).then(function(s){var n=new FileReader;n.addEventListener("loadend",function(){t(this.result)}),n.readAsText(s)})},Un=function(d){let e=d,t=d.reduce(function(f,a){return f*a});var s=new Array(t);let n=function(...f){let a=f.pop();if(f.length!==d.length)throw"Wrong matrix dimensions, need "+d.length+", you provide "+a.length+"!";if(p(f)===0)throw"Wrong type for set need one or more int has dimension, check type of!";let E=g(f);return s[E]=a,a},o=function(...f){if(f.length!==d.length)throw"Wrong matrix dimensions, need "+d.length+", you provide "+f.length+"!";if(p(f)===0)throw"Wrong type for set need one or more int has dimension, check type of!";let a=g(f);return s[a]},u=function(...f){let a=g(f);return s[a]=void 0,s[a]===void 0},c=function(){console.group("dump table"),console.table(s),console.groupEnd("dump table")},g=function(f){return f.reduce(function(a,E,S,v){let A=e.slice(S+1),b=A.length>0?A.reduce(function(C,D){return C*D}):1;return a+E*b},0)},p=function(f){return f.reduce((a,E)=>a&typeof E=="number",1)};return Object.freeze({set:n,get:o,del:u,toConsole:c})},qn=function(d,e=0){let t=3735928559^e,s=1103547991^e;for(let n=0,o;n>>16,2246822507)^Math.imul(s^s>>>13,3266489909),s=Math.imul(s^s>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),4294967296*(2097151&s)+(t>>>0)},fe=function(d,e,t=Error){if(!d)throw new t(e)};var Gn=d=>d==null;var rn=d=>Array.isArray(d),Vn=d=>d.toString().trim().length<=12;var wt=function(d){var e;return function(){var t=this,s=arguments;e&&window.cancelAnimationFrame(e),e=window.requestAnimationFrame(function(){d.apply(t,s)})}};var Qn=function(d){let e=Date.now(),t=null;do t=Date.now();while(t-e':s+='',s+='',d?s+='':s+='',s+="";let{value:n}=await Swal.fire({title:"Choix de la p\xE9riode",icon:"info",html:s,showCloseButton:!0,focusConfirm:!1,position:"top-start",grow:"row",footer:"Choisissez la p\xE9riode pour la s\xE9lection des temps factur\xE9s",showLoaderOnConfirm:!0,preConfirm:()=>[document.getElementById("dtFrom").value,document.getElementById("dtTo").value],onRender:o=>{},onOpen:o=>{t===!0&&o.querySelector("#dtFrom").addEventListener("change",_handler=function(){document.getElementById("dtTo").value=dayjs(document.getElementById("dtFrom").value).endOf("month").format("YYYY-MM-DD")})},onClose:o=>{t===!0&&o.querySelector("#dtFrom").removeEventListener("change",_handler)},onAfterClose:o=>{},onDestroy:o=>{}});return d=dayjs(n[0]),e=dayjs(n[1]),await Je(250),[d,e]},It=async function(d){await Swal.fire({position:"top-end",icon:"success",title:d,showConfirmButton:!1,timer:1500})};var rt=class{},mt=rt;K(mt,"tbl_name","f_archives"),K(mt,"add",async function(e){let t=z.Cfg.dbase,s=dayjs().format("YYYY-MM-DDTHH:mm:ssZ[Z]"),n={id:e[0].to.format("YYYYMM"),data:e,created_at:e[0].now};console.log(`%cWill create archive for id ${e[0].to.format("YYYYMM")} (YYYYMM)`,k),t.get(rt.tbl_name).push(JSON.parse(JSON.stringify(n))).write()}),K(mt,"exists",function(e){return z.Cfg.dbase.get(rt.tbl_name).find({id:e}).value()!==void 0}),K(mt,"get",function(e){var s=z.Cfg.dbase.get(rt.tbl_name).find({id:e}).value();if(s===void 0)throw Error("Erreur qui ne devrait jamais arriver en Archive.get");return console.log(`%cWill use archive for id ${e} (YYYYMM)`,k),s}),K(mt,"delete",function(e=null,t=null){let s=z.Cfg.dbase;if(typeof e=="string"&&(e=e.format("YYYY-MM-DD")),typeof t=="string"&&(t=t.format("YYYY-MM-DD")),e===null&&t==null){console.log("%cWanna suppress ALL Archives from DB ",k),s.get(rt.tbl_name).remove().write();return}if(t==null){s.get(rt.tbl_name).remove(function(n){return dayjs(n.id,"YYYYMM").isBefore(t),"month"}).write();return}if(e==null){s.get(rt.tbl_name).remove(function(n){return dayjs(n.id,"YYYYMM").isAfter(e,"month")}).write();return}s.get(rt.tbl_name).remove(function(n){return dayjs(n.id,"YYYYMM").isBetween(e,t,"month","[]")}).write()});var St=mt;var on=class{},Bt=on;K(Bt,"isInOldMode",function(e){var t=null;typeof e=="string"?t=dayjs(e):t=e;try{return t.isBefore(on.getOldModeDate())}catch(s){throw Error("Erreur qui ne devrait jamais arriver en IsInOldMode (probablement un probleme sur la conversion de la date en objet dayjs:"+s.stack||s)}}),K(Bt,"getOldModeDate",function(){return dayjs("2020-06-01")}),K(Bt,"getAppVersion",function(){return GM.info.script.version});var Te=Bt;var Xr=function(){let d="students_history",s=function(v){if(v.toUpperCase()==="FUNDING")return 1;if(v.toUpperCase()==="PATH")return 2;throw Error("Erreur qui ne devrait jamais arriver en getype")},n=function(v,A,b=null){return u(v,1,A,b)},o=function(v,A,b=null){return u(v,2,A,b)},u=function(v,A,b,C=null){let D=!1;typeof v=="number"&&(v=v.toString(10)),fe(typeof v=="string","You must provide a string.",TypeError);let T=z.Cfg.dbase;typeof C=="string"&&(C=dayjs(C)),C===null&&(C=dayjs()),fe(C instanceof dayjs,"created date must be a string, a dayjs instance or null.",TypeError);let w={id:v,type:0|A,value:b,date:C.valueOf(),humanDate:C.format("YYYY-MM-DDTHH:mm:ssZZ")};return D===!0&&console.log(`%cAdd in student history at date ${dayjs(w.date).format("YYYY-MM-DDTHH:mm:ssZZ")} data ${b} with type:${A} cf const of object`,k),T.get(d).push(JSON.parse(JSON.stringify(w))).write()},c=function(v,A=null,b=null){let C=z.Cfg.dbase;return v==null&&A==null&&b==null?(console.log("%cRemove all in student history",k),C.get(d).remove().write()):(typeof b=="string"&&(b=dayjs(b)),b==null?A==null?(console.log(`%cRemove for student id:${v} history for all type of event`,k),C.get(d).remove({id:v}).write()):(console.log(`%cRemove for student id:${v} history with event type:${A} cf const of object`,k),C.get(d).remove({id:v,type:A}).write()):(console.log(`%cRemove for student id:${v} history at date ${b.format("DD/MM/YYYY")} with event type:${A} cf const of object`,k),C.get(d).remove({id:v,type:A,date:b.valueOf()}).write()))},g=function(v,A,b=null){let D=z.Cfg.dbase;typeof b=="string"&&(b=dayjs(b)),b===null&&(b=dayjs());var T=+b.valueOf(),w=D.get(d).filter(l=>l.id===v&&l.type&A).map(l=>l.date-T).filter(l=>l>=0).value();if(w.length==0)return;let m=T+(l=>Math.min(...l))(w);return D.get(d).filter(l=>l.id===v&&l.type&A&&l.date==m).value()[0]},p=function(v,A,b=null,C){let T;if(T=g(v,A,b),typeof T>"u")return;let w=z.Cfg.dbase;typeof b=="string"&&(b=dayjs(b)),b===null&&(b=dayjs()),fe(b instanceof dayjs,"created date must be a string, a dayjs instance or null.",TypeError),w.get(d).find({id:T.id}).assign({value:C}).write()},f=function(v,A,b=null,C){},a=function(v){return S(v,1)},E=function(v){return S(v,2)},S=function(v,A){return v.type&A};return Object.freeze({addFunding:n,addPath:o,getType:s,remove:c,find:g,isFunding:a,isPath:E,tbl_name:d})},eo=Xr(),Ve=eo;var sn={APP_DEBUG_STYLE:["color: #373737","background-color: #CC6","padding: 2px 4px","border-radius: 2px"].join(";"),VERBOSE:!0,DEBUG:!0,NAME:"Api"},to=function(){let d={},e="0",t=sn.VERBOSE,s="https://api.openclassrooms.com",n="pending",o="canceled",u="completed",c="late canceled",g="marked student as absent",p=async function(){let Y=await a();return Y=JSON.parse(Y),e=Y.id,e},f=async function(){if(d.length==0)throw new Error("_header is empty, no xhr have been trapped so could't do some api request")},a=async function(){let Y=s+"/me";return await J(Y)},E=async function(Y){let F=`${s}/mentors/${Y}`;return await J(F)},S=function(Y,F){return{Range:`items=${Y}-${F}`}},v=async(Y=dayjs(),F=0,U=19)=>await C("AFTER",Y,[n],F,U),A=async(Y=dayjs(),F=0,U=19)=>await C("BEFORE",Y,[n],F,U),b=async(Y,F=0,U=19)=>await D(Y,F,U),C=async function(Y="BEFORE",F,U=[o,u,c,g],j=0,ue=19){bDebug=!0,typeof F=="string"&&(F=dayjs(F)),fe(rn(U)===!0,"You must provide an array as param aFilter.",TypeError),fe(F instanceof dayjs,"date must be a string or a dayjs object.",TypeError);let re=U.join(","),he=encodeURIComponent(F.format("YYYY-MM-DDTHH:MM:ss[Z]"));re=encodeURIComponent(re);let Z="";e==0&&await p(),Y==="AFTER"?(Z=`${s}/users/${e}/sessions?actor=expert&after=${he}&life-cycle-status=${re}`,console.log("URL IS %s",Z)):(Z=`${s}/users/${e}/sessions?actor=expert&before=${he}&life-cycle-status=${re}`,console.log("URL IS %s",Z));let G=S(j,ue);return bDebug&&console.log("%c_getSessionOnDate url to call is:%s , params are %o",k,Z,G),await O(Z,S(j,ue))},D=async function(Y=[],F=0,U=19){let j=`${sn.NAME}::_getSession()`,ue=sn.DEBUG;fe(rn(Y)===!0,"You must provide an array as param aFilter.",TypeError),Y.length==0&&(Y=[o,u,c,g]);let re=Y.join(",");re=encodeURIComponent(re),e==0&&await p();let he=`${s}/users/${e}/sessions?actor=expert&life-cycle-status=${re}`,Z=S(F,U);ue&&console.log("%c%s%c Url to call is:%o , params are %o",k,j,"",he,Z);let G=await O(he,Z);if(G==null)throw console.error("%cAPI have a problem returned value %o is null|undefined",me,G),new Error(`Request:${s}/users/${e}/sessions?actor=expert&life-cycle-status=${re} have a problem`);return G.errors&&console.error("%cAPI return an error %s",me,G.errors.message),G},T=async function(Y){let F=`${s}/users/${Y}`;return await O(F)},w=async function(Y){let F=`${s}/users/${Y}/availabilities`;return await O(F)},y=async function(Y,F=0,U=19){let j=`${s}/users/${Y}/events`;return await O(j,S(F,U))},m=async function(Y,F){typeof F=="string"&&(F=dayjs(F)),fe(F instanceof dayjs,"date must be a string or a dayjs object.",TypeError);let U=encodeURIComponent(F.format("YYYY-MM-DDTHH:MM:ss[Z]")),j=`${s}/users/${Y}/events?after=${U}`;return await O(j)},l=async function(Y,F){typeof F=="string"&&(F=dayjs(F)),fe(F instanceof dayjs,"date must be a string or a dayjs object.",TypeError);let U=encodeURIComponent(F.format("YYYY-MM-DDTHH:MM:ss[Z]")),j=`${s}/users/${Y}/events?before=${U}`;return await O(j)},N=async function(Y){await f();let F=`${s}/users/${Y}/paths/followed-path`;return await O(F)},x=async function(Y){let F=`${s}/users/${Y}/paths`;return await O(F)},M=async function(Y=null){if(Y===null){let j=await a();j=JSON.parse(j),Y=j.id}let F=`${s}/mentors/${Y}/students`,U;try{U=await O(F)}catch(j){console.error("%c[getUserStudents()] Trapped error %o",me,j)}finally{return U}},$=async function(Y=null,F,U,j){if(Y===null){let G=await a();G=JSON.parse(G),Y=G.id}let ue=`${s}/mentoring-sessions`,he=await B(ue,{},{mentorId:Y,projectId:F,studentId:U,sessionDate:j});if(typeof he=="string"){let G=JSON.parse(he);if("errors"in G&&G.errors.length==1&&G.errors[0].code==="SESSION_ALREADY_EXISTS"){let ye=G.errors[0];console.error("%c[Api.bookStudent()] call bookStudent error[%s] :%s ",me,ye.code,ye.message)}else console.log("%c[Api.bookStudent()] return an unknow value :%o",me,G);return G}let Z=await he.json();console.log("%c[Api.bookStudent()] return :%o ",k,Z)},O=async function(Y,F={}){await f();let U=await J(Y,F);if(typeof U=="string"){let j=JSON.parse(U);if(typeof j.errors<"u"){let ue=j.errors.reduce((re,he)=>`${re}{v.message}`);throw console.error("%c[Api.xGet()] call _fetchGet error :%s ",me,ue.message),new Error(`[Api.xGet()] Irrecoverable error :' ${ue.message}'`)}return U}throw new Error(`[Api.xGet()] Irrecoverable error result is not a string but a :' ${typeof U}'`)},B=async function(Y,F={},U={},j=!0){await f();let ue=await H(Y,F,U);if(console.log("%c[Api.xPost()] call _fetchPost with url :%s and with data:%o",k,Y,U),typeof ue=="string"){let re=JSON.parse(ue);if(typeof re.errors<"u"){if(re.errors.length==1&&re.errors[0].code==="SESSION_ALREADY_EXISTS"||re.errors.length==1&&re.errors[0].code==="TOO_LOW_ERROR"&&re.errors[0].field==="sessionDate")return ue;console.error("%c[Api.xPost()] raw list of error :%o ",me,re);let he=re.errors.reduce((Z,G)=>`${Z}{v.message}`);if(console.error("%c[Api.xPost()] call _fetchPost error :%s ",me,he.message),j===!0)throw new Error(`[Api.xPost()] Irrecoverable error :' ${he.message}'`);return}return ue}if(j===!0)throw new Error(`[Api.xPost()] Irrecoverable error result is not a string but a :' ${typeof ue}'`)},I=function(Y){e=Y},L=function(Y){return decodeURI(Y)!==decodeURIComponent(Y)},J=async function(Y="",F={},U="json",j="",ue=!0,re=!1){let he=Object.assign({"User-Agent":"Mozilla/5.0"},d,F);if(U.toLowerCase()==="json"){let G=await ft.XHR({method:"GET",url:Y,responseType:"application/json",headers:he}).catch(ye=>{if(Gn(G)){if(re===!0)throw new Error(`[Api._fetchGet()] Repsponse is undefined : ${ye}'`);return null}return console.error("%c[_fetchGet()]Error is %o",me,ye),null});return G.responseText}if(U.toLowerCase==="html"){let G=await ft.XHR({method:"GET",url:Y,responseType:"application/json",headers:he}).catch(ce=>{console.error("%c[Api_fetchGet()]Error is %o",me,ce)}),pe=new DOMParser().parseFromString(G.responseText.replace(/\n/mg,""),"text/html");var Z={};return ue===!0?Z=pe.querySelectorAll(j):Z=pe.querySelector(j),Z}},H=async function(Y="",F={},U={}){console.info(`%c[Api._fetchPost()] waiting return from : ${Y}`,k,Y);let j=Object.assign({"User-Agent":"Mozilla/5.0"},d,F);return console.log("%c[Api._fetchPost()]final header is %o",k,j),console.log("%c[Api._fetchPost()]data is %o",k,U),(await ft.XHR({method:"POST",url:Y,responseType:"application/json",headers:j,data:JSON.stringify(U)}).catch(re=>{console.error("%c[Api_fetchPost()]Error is %o",me,re)})).responseText},P=function(){let Y=/^https:\/\/api.openclassrooms.com/g;var F=window.XMLHttpRequest.prototype.open,U=window.XMLHttpRequest.prototype.send,j=window.XMLHttpRequest.prototype.setRequestHeader,ue=function(G,ye,pe,ce,be){return this._url=ye,this._requestHeaders={},this._knox=[],F.apply(this,arguments)},re=function(){if(this.readyState===4&&this.status&&this.status>=200&&this.status<300&&this._url.match(Y))for(var G in this._knox)d[this._knox[G].key]=this._knox[G].value},he=function(G){return this.onreadystatechange=re,U.apply(this,arguments)},Z=function(G,ye){return this._url.match(Y)&&this._knox.push({key:G,value:ye}),this._requestHeaders[G]=ye,j.apply(this,arguments)};window.XMLHttpRequest.prototype.open=ue,window.XMLHttpRequest.prototype.send=he,window.XMLHttpRequest.prototype.setRequestHeader=Z},R=function(){let F=/^https:\/\/api.openclassrooms.com/g,U="color:DarkSalmon;background-color:AliceBlue;";var j=window.XMLHttpRequest.prototype.open,ue=window.XMLHttpRequest.prototype.send,re=window.XMLHttpRequest.prototype.setRequestHeader,he=function(pe,ce,be,ie,W){return this._url=ce,this._requestHeaders={},this._knox=[],j.apply(this,arguments)},Z=function(){if(this.readyState===4&&this.status&&this.status>=200&&this.status<300&&this._url.match(F))for(var pe in this._knox)d[this._knox[pe].key]=this._knox[pe].value},G=function(pe){return this.onreadystatechange=Z,ue.apply(this,arguments)},ye=function(pe,ce){return this._url.match(F)&&this._knox.push({key:pe,value:ce}),this._requestHeaders[pe]=ce,re.apply(this,arguments)};window.XMLHttpRequest.prototype.open=he,window.XMLHttpRequest.prototype.send=G,window.XMLHttpRequest.prototype.setRequestHeader=ye};return P(),Object.freeze({bookStudent:$,forge:I,getMe:a,getMentor:E,getPendingSessionAfter:v,getPendingSessionBefore:A,getHistorySession:b,getUser:T,getUserAvailabilities:w,getUserEvents:y,getUserEventsAfter:m,getUserEventsBefore:l,getUserFollowedPath:N,getUserPath:x,getUserStudents:M,xGet:O,xPost:B})},no=to(),Yt=no;var le=(d,e)=>function(){return e||(0,d[Object.keys(d)[0]])((e={exports:{}}).exports,e),e.exports},je=le({"src/lib/isFunction.js"(d,e){e.exports=function(s){return typeof s=="function"}}}),Xe=le({"src/lib/isNil.js"(d,e){e.exports=function(s){return s==null}}}),ro=le({"src/lib/fail.js"(d,e){e.exports=function(s){throw new TypeError("[tcomb] "+s)}}}),Ft=le({"src/lib/getFunctionName.js"(d,e){e.exports=function(s){return s.displayName||s.name||""}}}),zn=le({"src/lib/stringify.js"(d,e){var t=Ft();function s(n,o){return typeof o=="function"?t(o):o}e.exports=function(o){try{return JSON.stringify(o,s,2)}catch{return String(o)}}}}),Ee=le({"src/lib/assert.js"(d,e){var t=je(),s=Xe(),n=ro(),o=zn();function u(c,g){c!==!0&&(t(g)?g=g():s(g)&&(g='Assert failed (turn on "Pause on exceptions" in your Source panel)'),u.fail(g))}u.fail=n,u.stringify=o,e.exports=u}}),Qt=le({"src/lib/isString.js"(d,e){e.exports=function(s){return typeof s=="string"}}}),it=le({"src/lib/isArray.js"(d,e){e.exports=function(s){return Array.isArray?Array.isArray(s):s instanceof Array}}}),st=le({"src/lib/isObject.js"(d,e){var t=Xe(),s=it();e.exports=function(o){return!t(o)&&typeof o=="object"&&!s(o)}}}),Le=le({"src/lib/isType.js"(d,e){var t=je(),s=st();e.exports=function(o){return t(o)&&s(o.meta)}}}),ke=le({"src/lib/getTypeName.js"(d,e){var t=Le(),s=Ft();e.exports=function(o){return t(o)?o.displayName:s(o)}}}),Ht=le({"src/lib/forbidNewOperator.js"(d,e){var t=Ee(),s=ke();e.exports=function(o,u){t(!(o instanceof u),function(){return"Cannot use the new operator to instantiate the type "+s(u)})}}}),He=le({"src/lib/irreducible.js"(d,e){var t=Ee(),s=Qt(),n=je(),o=Ht();e.exports=function(c,g){function p(f,a){return f}return p.meta={kind:"irreducible",name:c,predicate:g,identity:!0},p.displayName=c,p.is=g,p}}}),an=le({"src/lib/Any.js"(d,e){var t=He();e.exports=t("Any",function(){return!0})}}),oo=le({"src/lib/Array.js"(d,e){var t=He(),s=it();e.exports=t("Array",s)}}),zt=le({"src/lib/isBoolean.js"(d,e){e.exports=function(s){return s===!0||s===!1}}}),Wn=le({"src/lib/Boolean.js"(d,e){var t=He(),s=zt();e.exports=t("Boolean",s)}}),io=le({"src/lib/Date.js"(d,e){var t=He();e.exports=t("Date",function(s){return s instanceof Date})}}),so=le({"src/lib/Error.js"(d,e){var t=He();e.exports=t("Error",function(s){return s instanceof Error})}}),Wt=le({"src/lib/Function.js"(d,e){var t=He(),s=je();e.exports=t("Function",s)}}),Kn=le({"src/lib/Nil.js"(d,e){var t=He(),s=Xe();e.exports=t("Nil",s)}}),dn=le({"src/lib/isNumber.js"(d,e){e.exports=function(s){return typeof s=="number"&&isFinite(s)&&!isNaN(s)}}}),Jn=le({"src/lib/Number.js"(d,e){var t=He(),s=dn();e.exports=t("Number",s)}}),Qe=le({"src/lib/isTypeName.js"(d,e){var t=Xe(),s=Qt();e.exports=function(o){return t(o)||s(o)}}}),ot=le({"src/lib/isIdentity.js"(d,e){var t=Ee(),s=Wn(),n=Le(),o=ke();e.exports=function(c){return n(c)?c.meta.identity:!0}}}),at=le({"src/lib/create.js"(d,e){var t=Le(),s=Ft(),n=Ee(),o=zn();e.exports=function(c,g,p){return t(c)?!c.meta.identity&&typeof g=="object"&&g!==null?new c(g,p):c(g,p):g}}}),dt=le({"src/lib/is.js"(d,e){var t=Le();e.exports=function(n,o){return t(o)?o.is(n):n instanceof o}}}),ln=le({"src/lib/refinement.js"(d,e){var t=Ee(),s=Qe(),n=je(),o=Ht(),u=ot(),c=at(),g=dt(),p=ke(),f=Ft();function a(S,v){return"{"+p(S)+" | "+f(v)+"}"}function E(S,v,A){var b=A||a(S,v),C=u(S);function D(T,w){var y=c(S,T,w);return y}return D.meta={kind:"subtype",type:S,predicate:v,name:A,identity:C},D.displayName=b,D.is=function(T){return g(T,S)&&v(T)},D.update=function(T,w){return D(t.update(T,w))},D}E.getDefaultName=a,e.exports=E}}),ao=le({"src/lib/Integer.js"(d,e){var t=ln(),s=Jn();e.exports=t(s,function(n){return n%1===0},"Integer")}}),lo=le({"src/lib/Object.js"(d,e){var t=He(),s=st();e.exports=t("Object",s)}}),uo=le({"src/lib/RegExp.js"(d,e){var t=He();e.exports=t("RegExp",function(s){return s instanceof RegExp})}}),un=le({"src/lib/String.js"(d,e){var t=He(),s=Qt();e.exports=t("String",s)}}),co=le({"src/lib/Type.js"(d,e){var t=He(),s=Le();e.exports=t("Type",s)}}),cn=le({"src/lib/dict.js"(d,e){var t=Ee(),s=Qe(),n=je(),o=ke(),u=ot(),c=st(),g=at(),p=dt();function f(E,S){return"{[key: "+o(E)+"]: "+o(S)+"}"}function a(E,S,v){var A=v||f(E,S),b=o(E),C=o(S),D=u(E)&&u(S);function T(w,y){if(D)return w;var m=!0,l={};for(var N in w)if(w.hasOwnProperty(N)){N=g(E,N,null);var x=w[N],M=g(S,x,null);m=m&&x===M,l[N]=M}return m&&(l=w),l}return T.meta={kind:"dict",domain:E,codomain:S,name:v,identity:D},T.displayName=A,T.is=function(w){if(!c(w))return!1;for(var y in w)if(w.hasOwnProperty(y)&&(!p(y,E)||!p(w[y],S)))return!1;return!0},T.update=function(w,y){return T(t.update(w,y))},T}a.getDefaultName=f,e.exports=a}}),fn=le({"src/lib/mixin.js"(d,e){var t=Xe(),s=Ee();e.exports=function(o,u,c){if(t(u))return o;for(var g in u)u.hasOwnProperty(g)&&(o[g]=u[g]);return o}}}),Zn=le({"src/lib/isUnion.js"(d,e){var t=Le();e.exports=function(n){return t(n)&&n.meta.kind==="union"}}}),fo=le({"src/lib/declare.js"(d,e){var t=Ee(),s=Qe(),n=Le(),o=Xe(),u=fn(),c=ke(),g=Zn(),p=1;e.exports=function(a){var E;function S(v,A){return E(v,A)}return S.define=function(v){return g(v)&&S.hasOwnProperty("dispatch")&&(v.dispatch=S.dispatch),E=v,u(S,E,!0),a&&(E.displayName=S.displayName=a,S.meta.name=a),S.meta.identity=E.meta.identity,S.prototype=E.prototype,S},S.displayName=a||c(S)+"$"+p++,S.meta={identity:!1},S.prototype=null,S}}}),po=le({"src/lib/enums.js"(d,e){var t=Ee(),s=Qe(),n=Ht(),o=dn(),u=Qt(),c=st();function g(f){return Object.keys(f).map(function(a){return t.stringify(a)}).join(" | ")}function p(f,a){var E=a||g(f);function S(v,A){return v}return S.meta={kind:"enums",map:f,name:a,identity:!0},S.displayName=E,S.is=function(v){return(u(v)||o(v))&&f.hasOwnProperty(v)},S}p.of=function(f,a){f=u(f)?f.split(" "):f;var E={};return f.forEach(function(S){E[S]=S}),p(E,a)},p.getDefaultName=g,e.exports=p}}),Xn=le({"src/lib/list.js"(d,e){var t=Ee(),s=Qe(),n=je(),o=ke(),u=ot(),c=at(),g=dt(),p=it();function f(E){return"Array<"+o(E)+">"}function a(E,S){var v=S||f(E),A=o(E),b=u(E);function C(D,T){if(b)return D;for(var w=!0,y=[],m=0,l=D.length;m "+S(w)}function b(T){return n.is(T)&&c(T.instrumentation)}function C(T){for(var w=T.length,y=!1,m=w-1;m>=0;m--){var l=T[m];if(!v(l)||l.meta.kind!=="maybe")return m+1;y=!0}return y?0:w}function D(T,w,y){T=o(T)?T:[T];var m=y||A(T,w),l=T.length,N=C(T);function x(M,$){return b(M)?M:x.of(M)}return x.meta={kind:"func",domain:T,codomain:w,name:y,identity:!0},x.displayName=m,x.is=function(M){return b(M)&&M.instrumentation.domain.length===l&&M.instrumentation.domain.every(function($,O){return $===T[O]})&&M.instrumentation.codomain===w},x.of=function(M,$){if(x.is(M))return M;function O(){var B=Array.prototype.slice.call(arguments),I=B.length;if(!1)var L;if($&&I0?y.concat(w):y}function v(w,y){if(w.length>0){y=g(y);for(var m=0,l=w.length;m0?(y=g(y),w.reduce(function(m,l){return m.splice.apply(m,l),m},y)):y}function C(w,y){if(w.from!==w.to){y=g(y);var m=y[w.to];y[w.to]=y[w.from],y[w.from]=m}return y}function D(w,y){return w.length>0?w.concat(y):y}function T(w,y){var m=!1,l=g(y);for(var N in w)w.hasOwnProperty(N)&&(l[N]=w[N],m=m||l[N]!==y[N]);return m?l:y}a.commands={$apply:E,$push:S,$remove:v,$set:A,$splice:b,$swap:C,$unshift:D,$merge:T},e.exports=a}}),xo=le({"src/lib/match.js"(d,e){var t=Ee(),s=je(),n=Le(),o=an();e.exports=function(c){for(var g,p,f,a,E=1,S=arguments.length;En.id===e).write(),console.log(`%cAll students with id:${e} are removed from DataBase`,k)}),K(_e,"getAll",async(e,t)=>{let s=!1;var n=!1;let o=z.Cfg.dbase;var u="table.crud-list tbody";s===!0&&console.log("%c[getAll()] Enter function",k);let c=await Yt.getUserStudents();var g=JSON.parse(c);s===!0&&console.log("%cgetAll() collect this array of stundent %o",k,g);let p=dayjs().format("YYYY-MM-DDTHH:mm:ssZ[Z]");var f=performance.now();await ge.ocmapper(g[0]),s===!0&&console.log(`%cEstimated time for updating : ${(performance.now()-f)*g.length} ms`,k),Swal.fire({position:"top-end",icon:"info",toast:!0,title:`mise \xE0 jour de la base de donn\xE9e des \xE9tudiants... cela peut prendre du temps ~ ${(performance.now()-f)*g.length/1e3} s`,showConfirmButton:!1,timer:1e3}),await Je(1e3),s===!0&&console.log("%cWill process all students of board",k);for(let E of g){let S=await ge.ocmapper(E);s===!0&&console.log('%c Working on student "%s"',k,S.fullname),It(`Collecte les donn\xE9es de l'\xE9tudiant : ${S.fullname}`);var a=ge.m_findById(S.id,null);if(a===void 0){s===!0&&console.log(`%cStudent ${S.fullname} (id:${S.id}) not present in student database will create it`,k),ge.add(S.id,S.fullname,S.path,S.funding,S.created);continue}S.funding.toLowerCase()!==a.funding.toLowerCase()&&(o.get(ge.tbl_name).find({id:S.id}).assign({funding:S.funding}).write(),Ve.addFunding(S.id,a.funding,dayjs()),console.log(`%c[Student.getAll]Student ${S.fullname}(id:${S.id}) was already present in database but change of funding was detected (from ${a.funding.toLowerCase()} to ${S.funding.toLowerCase()})`,k)),S.path!==a.path&&(o.get(ge.tbl_name).find({id:S.id}).assign({path:S.path}).write(),Ve.addPath(S.id,a.path,dayjs()),console.log(`%c[Student.getAll]Student ${S.fullname}(id:${S.id}) was already present in database but change of path was detected (from ${a.path} to ${S.path})`,k))}moize.default.isMoized(ge.m_findById)&&ge.m_findById.clear(),moize.default.isMoized(ge.m_findByFullName)&&ge.m_findByFullName.clear(),moize.default.isMoized(ge.m_getFunding)&&ge.m_getFunding.clear(),console.log("%c[Student.getAll]Student cache cleared",k)}),K(_e,"showList",function(){let t=z.Cfg.dbase.get(ge.tbl_name).value();var s="";s+="",s+="",s+="",s+="",s+="",s+="",s+="",s+="";for(var n in t)s+="",s+=``,s+=``,s+=``,s+="";s+="",s+="
Liste des \xE9tudiant
NomParcoursFinancementDate de cr\xE9ationEdition
${t[n].fullname}${t[n].path}${t[n].funding}${dayjs(t[n].created,"YYYY-MM-DDTHH:mm:ssZ[Z]").format("DD/MM/YYYY \xE0 HH:mm")}${t[n].id}
",Swal.fire({title:"Liste des Etudiants",icon:"info",html:s,showCloseButton:!0,focusConfirm:!1,position:"top-start",grow:"fullscreen",onOpen:o=>{var u=o.querySelector("table"),c=new simpleDatatables.DataTable(u)}})}),K(_e,"createManually",async function(e,t,s){let n=["non pr\xE9sent dans la liste","Chef de projet digital","Chef de projet SI","D\xE9veloppeur d'application - Frontend","D\xE9veloppeur Web","Expert en strat\xE9gie marketing et communication ","Production de contenu web avec CMS et Content Marketing ","Tech lead"];var o="";o+="",o+='
',o+='',o+='',o+='',o+='',o+='',o+='',o+='',o+='',o+='';for(var u in n)o+=``;o+="/",o+='',o+='',o+="";let{value:c}=await Swal.fire({title:"Ajout d'un \xE9tudiant en mode manuel",icon:"info",html:o,showCloseButton:!0,focusConfirm:!1,position:"top-start",grow:"row",footer:`votre \xE9tudiant(e) ${t} n'a pas \xE9t\xE9 trouv\xE9`,preConfirm:()=>({student_id:document.getElementById("student_id").value,student_name:document.getElementById("student_name").value,student_path:document.getElementById("student_path").value,student_funding:document.getElementById("funding").checked,session_date:document.getElementById("session_date").value})});if(c&&c.hasOwnProperty("student_id")){var g="";c.student_funding===!0?g=Ze:g=Ye,ge.add(c.student_id,c.student_name,c.student_path,g,c.session_date)}});var we=_e;var Co=function(){let d="refs",n={DEFAULT:0,SESSIONID_DATEREFID:1},o=function(){z.Cfg.dbase.get("refs").value()===void 0&&(console.log("%cDb dont' contain ref table create it",k),z.Cfg.dbase.assign({refs:[]}).write())},u=function(E,S,v=n.DEFAULT){let A=z.Cfg.dbase;var b=dayjs().format("YYYY-MM-DDTHH:mm:ssZ[Z]");let D=c({key1:E,key2:S,type:v,created:b,updated:b});Qn(50),fe(Array.isArray(D)&&D.length>0,"Database insertion fail")},c=function(E){return z.Cfg.dbase.get(Et.tbl_name).push(JSON.parse(JSON.stringify(E))).write()};return Object.freeze({tbl_name:d,TYPE:n,add:u,updKey1:function(E,S,v=n.DEFAULT){let A=z.Cfg.dbase,b;b=A.get(Et.tbl_name).find(C=>C.key2===E&&C.type===v).assign({key1:S}).write(),console.log("%cNeedle %o mValue %o sType %o",k,E,S,v),console.log("%c_r %o",k,b),fe(Array.isArray(b)&&b.length>0,"Database insertion fail")},updKey2:function(E,S,v=n.DEFAULT){let A=z.Cfg.dbase,b;b=A.get(Et.tbl_name).find(C=>C.key1===E&&C.type===v).assign({key2:S}).write(),console.log("%cNeedle %o mValue %o sType %o",k,E,S,v),console.log("%c_r %o",k,b),fe(Array.isArray(b)&&b.length>0,"Database insertion fail")},checkSupport:o,exists:function(E,S,v=n.DEFAULT){let A=Et.getByKey(E,S,v);return console.log(`%cRef ${E} exists in db ? ${A!==void 0}`,k),A!==void 0},getByKey:function(E,S=1,v=n.DEFAULT){fe(typeof S=="number","You must provide a number as index of key.",TypeError);let A=z.Cfg.dbase,b=null;if(S==1&&(b=A.get(Et.tbl_name).find(C=>C.key1===E&&C.type===v).value()),S==2&&(b=A.get(Et.tbl_name).find(C=>C.key2===E&&C.type===v).value()),b!=null)return b}})},Et=Co(),Me=Et;var Oo=function(){let d="meta",e=function(p){return fe(typeof p=="string","You must provide a string.",TypeError),z.Cfg.dbase.get(Ut.tbl_name).find({key:"dbVersion"}).assign({value:p}).write().value},t=function(){let p=z.Cfg.dbase.get(Ut.tbl_name).find({key:"dbVersion"}).value();return typeof p>"u"?-1:p.value},s=function(){return z.Cfg.dbase.get("meta").remove(p=>!0).write()},n=function(){return console.log("%c resetDbVersion NE FONCTIONNE PAS",me),z.Cfg.dbase.get("meta").find({key:"dbVersion"}).remove(p=>!0).write()},o=function(p){return fe(typeof p=="string","You must provide a string.",TypeError),z.Cfg.dbase.get(Ut.tbl_name).find({key:"studentLstUpd"}).assign({value:p}).write().value},u=function(){let p=z.Cfg.dbase.get(Ut.tbl_name).find({key:"studentLstUpd"}).value();return typeof p>"u"?-1:p.value};return Object.freeze({checkSupport:function(){z.Cfg.dbase.get("meta").value()===void 0&&(console.log("%cDb dont' contain meta table create it",k),z.Cfg.dbase.assign({meta:[]}).write()),t()==-1&&z.Cfg.dbase.get("meta").push({key:"dbVersion",value:"1.0.0"}).write(),u()==-1&&z.Cfg.dbase.get("meta").push({key:"studentLstUpd",value:dayjs("19701006").toISOString()}).write()},getDbVersion:t,setDbVersion:e,delDbVersion:n,setStudentListUpd:o,getStudentListUpd:u,remStudentListUpd:function(){return o(dayjs("19701006").toISOString())},tbl_name:d})},Ut=Oo(),$e=Ut;var lt=function(){let e="history_session_cache",s=function(){z.Cfg.dbase.assign({history_session_cache:[]}).write()},n=function(){return z.Cfg.dbase.get(e).value()!==void 0};return{find:function(a){if(n===!1)throw new Error("%c_HistoryDb:DBFindInTable() failed reason : table is not defined",k);return z.Cfg.dbase.get(e).find(a).value()},getAll:function(){if(n===!1)throw new Error("%c_HistoryDb:DBGetAll() failed reason : table is not defined",k);return z.Cfg.dbase.get(e).value()},insert:function(a){return n===!1&&s(),z.Cfg.dbase.get(e).push(a).write()},remove:function(a={}){if(n===!1)throw new Error("%c_HistoryDb:DBRemove() failed reason : table is not defined",k);return Vn(a)===!0&&console.log("%c_HistoryDb:DBRemove /! filter is empty",k),z.Cfg.dbase.get(e).remove(a).write()},reset:function(){return z.Cfg.dbase.get(e).remove().write()},update:function(a,E){if(n===!1)throw new Error("%c_HistoryDb:DBUpdateInTable() failed reason : table is not defined",k);return z.Cfg.dbase.get(e).find(a).assign(E).write()}}}(),Mo=function(){let d="history_session_cache",e={VERBOSE:!1,DEBUG:!1},t=function(){let f=e.DEBUG;z.Cfg.dbase.get("history_session_cache").value()===void 0&&(f&&console.log("%cDb dont' contain history_session_cache table create it",k),z.Cfg.dbase.assign({history_session_cache:[]}).write())},s=function(f){let a=e.DEBUG;typeof f=="string"&&(f=dayjs(f)),fe(f instanceof dayjs,"date must be a string or a dayjs object.",TypeError);let E=lt.find({id:+f.format("YYYYMMDD")});return a&&console.log(`%cHistory:_exists ${f.format("YYYYMMDD")} in db ? ${E!==void 0}`,k),E!==void 0},n=function(f){let a=e.DEBUG;if(typeof f=="string"&&(f=dayjs(f)),fe(f instanceof dayjs,"date must be a string or a dayjs object.",TypeError),f.get("day")+b.id-E).filter(b=>b>0);let v=b=>Math.min(...b);if(S.length==0)return a===!0&&console.log("%cAll indexes %o are later than your date:%s",k,lt.getAll(),f.format("DD/MM/YYYY")),-1;let A=v(S)+E;if(a===!0&&console.log("%cNearest data in history session cache is data with id: %o",k,A),s(A)===!0){if(S=lt.find({id:+A.format("YYYYMMDD")}),typeof S.index!==void 0)return S.index;throw new Error("[History._getNearestSessionIndex()] failed reason : property index is unknown")}return-1},u=function(f){let a=n(f);return a===-1&&(a=o(f)),a},c=function(f=null,a=null){let E=e.VERBOSE;typeof f=="string"&&(f=dayjs(f)),typeof a=="string"&&(a=dayjs(a)),f===null&&a===null&&(E===!0&&console.info("%c%s%c Reset all data",jt,"Historyremove()",""),g());let S=function(){};return f!==null&&a!==null&&(E===!0&&console.info("%c%s%c remove data from %s to %s",jt,"Historyremove()","",f.format("DD/MM/YYYY"),a.format("DD/MM/YYYY")),S=function(v){return dayjs(v.id.toString(10)).isBetween(f,a,"day","[]")}),f==null&&a!==null&&(E===!0&&console.info("%c%s%c remove all data until %s",jt,"Historyremove()","",a.format("DD/MM/YYYY")),S=function(v){return dayjs(v.id.toString(10)).isBefore(a,"day")}),f!=null&&a==null&&(E===!0&&console.info("%c%s%c remove all data since %s",jt,"Historyremove()","",f.format("DD/MM/YYYY")),S=function(v){return dayjs(v.id.toString(10)).isAfter(f,"day")}),lt.remove(S)},g=function(){return lt.reset()};return Object.freeze({tbl_name:d,getSameOrNearestSessionIndex:u,remove:c,reset:g,setSessionIndex:function(f,a=0){let E=e.DEBUG;typeof f=="string"&&(f=dayjs(f)),fe(f instanceof dayjs,"date must be a string or a dayjs object.",TypeError),f.get("day")dayjs(o.when).isSameOrBefore(t,"day")&&dayjs(o.when).isSameOrAfter(e,"day")).value()}},Ie=Ae;K(Ie,"tbl_name","sessions"),K(Ie,"_checkObject",function(e){!1===!0&&console.log("%cChecking object session:%o ",k,e),fe(typeof e.id=="string","Session object id need to be a string.",TypeError),fe(typeof e.cid=="number","Session object cid need to be a number.",TypeError),fe(typeof e.who_id=="string","Session object who_id need to be a string.",TypeError),fe(typeof e.who_name=="string","Session object who_name need to be a string.",TypeError),fe(typeof e.status=="string","Session object status need to be a string.",TypeError),fe(typeof e.type=="string","Session object type need to be a string.",TypeError),fe(typeof e.lvl=="string","Session object lvl need to be a string.",TypeError),fe(typeof e.when=="string","Session object when need to be a string.",TypeError),fe(typeof e.path=="string","Session object path need to be a string.",TypeError),fe(typeof e.funding=="string","Session object funding need to be a string.",TypeError)}),K(Ie,"add",async function(e){let s=!1,n=!1;n===!0&&console.log("%c[Session.add()].................................. Start",k),n===!0&&console.log("%cSession.add() so you wanna add a session %o to database",k,e);let o=z.Cfg.dbase;if(GM_config.get("checksessionalreadyexists")===!0&&(s=!0),n===!0&&console.log("%cSession.add() will search if session %o is already in database",k,e),e.id.length>0){if(s===!0&&Ae.exists(e.id)===!0){n===!0&&console.info(`%cSession.add() session id:${e.id} already present in database table sessions, skip it!`,k);return}}else if(s===!0&&Ae.exists(e.cid)===!0){n===!0&&console.info(`%cSession.add() session cid:${e.cid} already present in database table sessions, skip it!`,k);return}s===!1&&n===!0&&console.info("%cSession.add() you have choose not to verify if session exist in database before adding it so !",k),e.type.toLowerCase()==="presentation"&&(e.type="soutenance"),Te.isInOldMode(dayjs(e.when))?(e.funding=Ye,e.type.toLowerCase()==="soutenance"?e.path="n/a (defense)":e.path="n/a (old mode)"):e.type.toLowerCase()==="soutenance"?(n===!0&&console.log("%c[Session.add()]This is a defense nothing to do specially for now",k),e.funding=Ye,e.path="n/a (defense)"):(we.exists(e.who_id)===!1&&(console.warn("%c[Session.add()]Student %s[%s] not in Db, will updating student db by fetching students list from dashboard",Ge,e.who_name,e.who_id),dayjs($e.getStudentListUpd()).diff(dayjs(),"m")<-30?(n===!0&&console.log("%c[Session.add()]Last Update of Student BDD was %i min ago which was more than treshold for update:%i, so will start to do a full update of student base",k,dayjs($e.getStudentListUpd()).diff(dayjs(),"m"),30),await we.getAll(),n===!0&&console.log("%c[Session.add()]Student database updated set lastupdate value to:%s",k,dayjs().toISOString()),n===!0&&console.log("%c[Session.add()]Delete cache of student",k),$e.setStudentListUpd(dayjs().toISOString())):(console.log("%c[Session.add()]last Update of database DB was less than %i min ago so will not update it",k,30),n===!0&&console.log("%c[Session.add()]student %s[%s] not exists, bd was updated less than %i, i have to manually create student",k,e.who_name,e.who_id,30),await we.createManually(e.who_id,e.who_name,e.when),moize.default.isMoized(we.m_findById)&&we.m_findById.has([e.who_id,null])&&(n===!0&&console.log("%c[Session.add()]student %s[%s] is in cache have to delete it",k,e.who_name,e.who_id),we.m_findById.remove([e.who_id,null]),n===!0&&console.log("%c[Session.add()]student %s[%s] removed from the m_findById function cache",k,e.who_name,e.who_id))),console.log("%c[Student.add()] pr\xE9c\xE9demment notre \xE9tudiant %s[%s] n'existait pas existe t'il maintenant ?",k,e.who_name,e.who_id),console.log("%c[Student.add()] la r\xE9ponse est :%o",k,we.exists(e.who_id,e.when)),we.exists(e.who_id,e.when)==!1&&(console.warn(`%c[Session.add()] Student ${e.who_name}[${e.who_id}] which exists at ${e.when} still not exit in Db, have to manually create him/her`,Ge),await we.createManually(e.who_id,e.who_name,e.when),moize.default.isMoized(we.m_findById)&&we.m_findById.has([e.who_id,e.when])&&(we.m_findById.remove([e.who_id,e.when]),n===!0&&console.log("%c[Session.add()]student %s removed from the m_findById function cache",k,e.who_id)))),e.funding=await we.getFunding(e.who_id,e.when),e.path=await we.getPath(e.who_id,e.when)),e.cid===void 0&&(n===!0&&console.log("%c[Session.add()] need to calculate a cid]",k),e.cid=Ae.getHashId(e.when,e.who_id)),n===!0&&console.log("%cSession.add() calculated id:%s",k,e.cid),_r=Me.getByKey(e.cid,2,Me.TYPE.SESSIONID_DATEREFID),_r!==void 0&&(n===!0&&console.log("%cSession.add() I've found a ref %d by using key (%s)%d",k,_r.key1,typeof e.cid,e.cid),e.id=_r.key1.toString()),Ae._save(e),n===!0&&console.log("%c[Session.add()].................................. End",k)}),K(Ie,"_save",function(e){var t=!1;Ae._checkObject(e),e.lvl==""&&(e.lvl="2"),e.lvl.lvl=parseInt(e.lvl.lvl,10),bDebug===!0&&console.log(`%c[Session._save()] saving session id:${e.id} of ${e.who_name}[cid:${e.cid}](${e.who_id}) at ${e.when} to DB`,k),z.Cfg.dbase.get(Ae.tbl_name).push(JSON.parse(JSON.stringify(e))).write()}),K(Ie,"exists",function(e){let t=z.Cfg.dbase;var s=!1;s===!0&&console.log(`%c[Session.exist()] will search existence of session id:(${typeof e})${e} in database`,k);var n=Ae.findById(e);return n!==void 0}),K(Ie,"findById",function(e){let t=z.Cfg.dbase;var s=t.get(Ae.tbl_name).find({id:e}).value();return s===void 0&&(s=t.get(Ae.tbl_name).find({cid:e}).value()),s}),K(Ie,"delete",function(e=null,t=null){let s=z.Cfg.dbase;if(typeof e=="string"&&(e=e.format("YYYY-MM-DD")),typeof t=="string"&&(t=t.format("YYYY-MM-DD")),e===null&&t==null){console.log("%cWanna suppress ALL Sessions from DB",k),s.get(Ae.tbl_name).remove().write();return}if(t==null){s.get(Ae.tbl_name).remove(function(n){return dayjs(n.when).isBefore(t),"day"}).write();return}if(e==null){s.get(Ae.tbl_name).remove(function(n){return dayjs(n.when).isAfter(e,"day")}).write();return}s.get(Ae.tbl_name).remove(function(n){return dayjs(n.when).isBetween(e,t,"day","[]")}).write()}),K(Ie,"deleteById",function(e){z.Cfg.dbase.get("sessions").remove(s=>s.id===e).write(),console.log(`%cSession ${e} suppressed from DB`,k)}),K(Ie,"parseTable",function(e){var t=e.children[0].children[0].innerText,s=Mt(e.children[0]),n=e.children[1].children[0].innerText.trim(),o=Mt(e.children[1],-2),u=e.children[2].innerText.trim().toLowerCase(),c=e.children[3].children.length?e.children[3].children[0].innerText.trim().toLowerCase():"session",g=-1;e.children[4].children.length>0&&(g=e.children[4].children[0].innerText.trim()),t=Rn(t);var p={id:s,when:t,who_id:o,who_name:n,status:u,type:c,lvl:g};return p}),K(Ie,"getHashId",function(e,t){return e instanceof dayjs&&(e=e.toISOString()),typeof t=="number"&&(t=t.toString(10)),fe(typeof e=="string"&&typeof t=="string","getId need two string",TypeError),qn(e+t)}),K(Ie,"parseRow",function(e){!0===!0&&console.log("%cparseRow() Row is %o",k,e);var s=e.children[0].innerText.length>0?e.children[0].innerText.trim().toLowerCase():"session",n=e.children[0].querySelector("svg").getAttribute("aria-label").trim().toLowerCase(),o=e.children[1].querySelector("time").dateTime;o=dayjs(o).toISOString();var u=Mt(e.children[2],-2),c=e.children[2].innerText.trim(),g=Ae.getHashId(o,u),p=e.children[3].innerText.trim();p=p.replace(/[^\d]/gmis,"");var f={id:"",cid:g,when:o,who_id:u,who_name:c,status:n,type:s,lvl:p};return f}),K(Ie,"getSessionsFromAPI",async function(e,t){let s=!1,n=999,o=0,u=!0,c=0,g=20;typeof e=="string"&&(e=dayjs(e)),fe(e instanceof dayjs,"dtFrom must be a string or a dayjs object.",TypeError),typeof t=="string"&&(t=dayjs(t)),fe(t instanceof dayjs,"dtTo must be a string or a dayjs object.",TypeError);let p=At.getSameOrNearestSessionIndex(t);p!==void 0&&typeof p=="number"&&p>c&&(c=p);var f=t.diff(e,"d")+1;for(NProgress.start();u===!0;){if(o>n){console.error("%c[Session.getSessionsFromAPI()] EMERGENCY EXIT LOOP",me);break}o+=1;var a=c+(g-1),E=await Yt.getHistorySession([],c,a);if(E===null)throw new Error("Api.getHistorySession is null");var S=JSON.parse(E);if(S.errors)throw Object.entries(oSession.errors).forEach(b=>console.log("%cApi.getHistorySession send us some errors : %s",Ge,b[1].message)),new Error("Api.getHistorySession send us some errors ");s===!0&&console.log("%cgetSessionsFromAPI() Sessions are %o",k,S),c=a+1,oSession=Ae.parseRowFromApi(S[S.length-1]),console.log("%c[Session.getSessionsFromAPI()]La derni\xE8re session r\xE9cuper\xE9e par api date de:%s et nous collectons les sessions entre %s et %s",k,dayjs(oSession.when).format("DD/MM/YYYY"),dayjs(e).format("DD/MM/YYYY"),dayjs(t).format("DD/MM/YYYY")),s===!0&&console.log("%cgetSessionsFromAPI() last session of loaded page is %o",k,oSession),console.log("%c[Session.getSessionsFromAPI()] compare last session date %s avec la date de d\xE9but %s est ce ant\xE9rieur %o",k,dayjs(oSession.when).format("DD/MM/YYYY"),dayjs(e).format("DD/MM/YYYY"),dayjs(oSession.when).isBefore(e)),dayjs(oSession.when).isBefore(e)===!0&&(u=!1,s===!0&&console.log("%cgetSessionsFromAPI() last session is before start date of parsing %s STOP browsing....",k,dayjs(oSession.dtFrom).format("DD/MM/YYYY")),At.setSessionIndex(oSession.when,c));let A=S.filter(b=>dayjs(b.sessionDate).isBetween(e,t,"day","[]"));s===!0&&console.log("%cgetSessionsFromAPI() Filtered on date Sessions are %o",k,A);for(let b of A){oSession=Ae.parseRowFromApi(b),s===!0&&console.log("%cgetSessionsFromAPI() will call Session.add() on %o",k,oSession);let C=await Ae.add(oSession);var v=dayjs(t).diff(oSession.when,"d")+1;NProgress.set(v/f)}c=a+1}NProgress.done(),await It(`Collecte des sessions du ${e.format("DD/MM/YYYY")} au ${t.format("DD/MM/YYYY")} termin\xE9e`)}),K(Ie,"parseRowFromApi",function(e){bDebug=!1,bDebug===!0&&console.log("%cparseRowFromApi() oSession is %o",k,e);let t={};return t.id="",t.who_id=e.recipient.id,typeof t.who_id=="number"&&(t.who_id=t.who_id.toString(10)),t.who_name=e.recipient.displayableName,e.status===Yn&&(t.status=yt),e.status===kn&&(t.status=pt),e.status===$n&&(t.status=bt),e.status===jn&&(t.status=vt),t.status===void 0&&(t.status=e.status),t.type=e.type,t.type.toLowerCase()==="mentoring"&&(t.type="mentorat"),t.lvl=e.projectLevel,t.lvl==null&&(t.lvl=""),t.when=dayjs(e.sessionDate).toISOString(),t.path=null,t.funding=null,t.cid=Ae.getHashId(t.when,t.who_id),t});var De=Ie;var qt=class{},xt=qt;K(xt,"calculateBill",function(e,t){let s=t.format("YYYYMM");return St.exists(s)===!0?(console.log(`%cUse Archived version ${s} of accounting`,k),St.get(s).data):(typeof e=="string"&&(e=e.format("YYYY-MM-DD")),typeof t=="string"&&(t=t.format("YYYY-MM-DD")),qt.m_calculateBill(e,t))}),K(xt,"_calculateBill",function(e,t){typeof e=="string"&&(e=dayjs(e)),typeof t=="string"&&(t=dayjs(t));let s=dayjs().format("YYYY-MM-DDTHH:mm:ssZ[Z]");var n=0,o=0,u=performance.now();let p=z.Cfg.dbase.get(De.tbl_name).filter(l=>dayjs(l.when).isSameOrBefore(t,"day")&&dayjs(l.when).isSameOrAfter(e,"day")).value(),f=p.length,a={from:e,to:t,created_at:null,maxLevel:6,number:0,amount:0,errors:{funding:[],level:[],path:[],status:[],type:[]},flatFee:[]},E=0,S=0,v=[];n=performance.now();let A=qt.getPriceList(e);o=performance.now(),console.log("%cGetPriceList took "+(o-n)+" milliseconds.",Ke);let b=Un([6+1,6+1,6+1,6+1]);for(var C=0;C0&&console.log("%cWarning some errors found %o",Ge,a.errors),b}),K(xt,"m_calculateBill",moize.default(qt._calculateBill,{maxAge:12e4,isSerialized:!0})),K(xt,"getPriceList",function(e){typeof e=="string"&&(e=dayjs(e));var t=[0,30,35,40,45,50,55];let s=Te.isInOldMode(e);var n=new Array(7);for(let o=1;o<=6;o+=1){let u=t[o],c=t[o]/2,g=t[o]/4;s?(n[o]=new Array(3),n[o][q]=new Array(5),n[o][q][se]=new Array(4),n[o][q][se][0]=u,n[o][q][se][1]=u,n[o][q][se][2]=u,n[o][q][ae]=new Array(4),n[o][q][ae][0]=0,n[o][q][ae][1]=0,n[o][q][ae][2]=0,n[o][q][ne]=new Array(4),n[o][q][ne][0]=c,n[o][q][ne][1]=c,n[o][q][ne][2]=c,n[o][q][de]=new Array(4),n[o][q][de][0]=c,n[o][q][de][1]=c,n[o][q][de][2]=c,n[o][V]=new Array(5),n[o][V][se]=new Array(4),n[o][V][se][0]=u,n[o][V][se][1]=u,n[o][V][se][2]=u,n[o][V][ae]=new Array(4),n[o][V][ae][0]=0,n[o][V][ae][1]=0,n[o][V][ae][2]=0,n[o][V][ne]=new Array(4),n[o][V][ne][0]=c,n[o][V][ne][1]=c,n[o][V][ne][2]=c,n[o][V][de]=new Array(4),n[o][V][de][0]=c,n[o][V][de][1]=c,n[o][V][de][2]=c,n[o][Q]=new Array(5),n[o][Q][se]=new Array(4),n[o][Q][se][0]=u,n[o][Q][se][1]=u,n[o][Q][se][2]=u,n[o][Q][ae]=new Array(4),n[o][Q][ae][0]=0,n[o][Q][ae][1]=0,n[o][Q][ae][2]=0,n[o][Q][ne]=new Array(4),n[o][Q][ne][0]=c,n[o][Q][ne][1]=c,n[o][Q][ne][2]=c,n[o][Q][de]=new Array(4),n[o][Q][de][0]=c,n[o][Q][de][1]=c,n[o][Q][de][2]=c):(n[o]=new Array(3),n[o][q]=new Array(5),n[o][q][se]=new Array(4),n[o][q][se][0]=c,n[o][q][se][1]=u,n[o][q][se][2]=u,n[o][q][ae]=new Array(4),n[o][q][ae][0]=0,n[o][q][ae][1]=0,n[o][q][ae][2]=0,n[o][q][ne]=new Array(4),n[o][q][ne][0]=0,n[o][q][ne][1]=0,n[o][q][ne][2]=0,n[o][q][de]=new Array(4),n[o][q][de][0]=g,n[o][q][de][1]=c,n[o][q][de][2]=c,n[o][V]=new Array(5),n[o][V][se]=new Array(4),n[o][V][se][0]=u,n[o][V][se][1]=u,n[o][V][se][2]=u,n[o][V][ae]=new Array(4),n[o][V][ae][0]=0,n[o][V][ae][1]=0,n[o][V][ae][2]=0,n[o][V][ne]=new Array(4),n[o][V][ne][0]=0,n[o][V][ne][1]=0,n[o][V][ne][2]=0,n[o][V][de]=new Array(4),n[o][V][de][0]=c,n[o][V][de][1]=c,n[o][V][de][2]=c,n[o][Q]=new Array(5),n[o][Q][se]=new Array(4),n[o][Q][se][0]=u,n[o][Q][se][1]=u,n[o][Q][se][2]=u,n[o][Q][ae]=new Array(4),n[o][Q][ae][0]=0,n[o][Q][ae][1]=0,n[o][Q][ae][2]=0,n[o][Q][ne]=new Array(4),n[o][Q][ne][0]=0,n[o][Q][ne][1]=0,n[o][Q][ne][2]=0,n[o][Q][de]=new Array(4),n[o][Q][de][0]=c,n[o][Q][de][1]=c,n[o][Q][de][2]=c)}return n});var et=xt;var pn=function(d,e){let t=[[0,1,2,3,4,5,5],[5,1,2,3,4,5,5],[4,5,1,2,3,4,4],[3,4,5,1,2,3,3],[2,3,4,5,1,2,2],[1,2,3,4,5,1,1],[0,1,2,3,4,5,0]];return Math.trunc(e.diff(d,"days")/7)*5+t[d.day()][e.day()]};var Tt=class{};K(Tt,"detail_bill","truc"),K(Tt,"getListDetailBill",function(e,t){let n=z.Cfg.dbase.get(De.tbl_name).filter(C=>dayjs(C.when).isSameOrBefore(t,"day")&&dayjs(C.when).isSameOrAfter(e,"day")).sortBy(function(C){return dayjs(C.when).valueOf()}).value(),o=Te.getOldModeDate(),u=et.getPriceList(o.subtract(1,"day")),c=et.getPriceList(o),g=0;var p=_.cloneDeep(n);for(var f in p){var a=0,E=0,S=!0,v=0;p[f].status===yt&&(v=se),p[f].status===pt&&(v=ae),p[f].status===bt&&(v=ne),(p[f].status===vt||p[f].status===Lt)&&(v=de);var A=0;p[f].type.toLowerCase()==="session"&&(A=q),p[f].type.toLowerCase()==="soutenance"&&(A=V),p[f].path!=null&&p[f].path.toLowerCase()==="158-trouvez-lemploi-qui-vous-correspond"&&p[f].type!=="soutenance"&&(A=Q);var b=0;p[f].funding===Ze&&(b=0),p[f].funding===Ye&&(b=1),p[f].funding===gt&&(b=2),Te.isInOldMode(dayjs(p[f].when))?a=+p[f].lvl>0?u[+p[f].lvl][A][v][b]:0:(S=!1,a=+p[f].lvl>0?c[+p[f].lvl][A][v][b]:0),g+=a,p[f].iPu=a,p[f].oldMode=S,p[f].iCumul=g}return p}),K(Tt,"getListStatistic",function(e,t){let s=e.clone(),n=s.endOf("month"),o=[],u=[],c=0,g=t.diff(e,"month");for(var p=performance.now();s.isSameOrBefore(t,"day");)o.push(et.calculateBill(s,n)),s=s.add(1,"month"),n=s.endOf("month");var f=performance.now();console.log("%cComputed data between the two dates in"+(f-p)+" milliseconds.",Ke),s=e.clone(),n=s.endOf("month");let a=0,E=0,S=0,v=0,A=0,b=0,C=0;for(;c<=g;){let T=o[c].get(0,0,0,0),w=T.maxLevel;u[c]={header:{dtFrom:null,dtTo:null,created_at:null},sessions:{total:0,nb:0,pu:0,nbc:0},defenses:{total:0,nb:0,pu:0,nbc:0},coaches:{total:0,nb:0,pu:0,nbc:0},bonus:0,kpi:{jrs:0,hrs:0,hrsp:0}};let y=1;for(;y"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(q,se,1,y),E=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(q,se,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=typeof a>"u"?0:a.number,Te.isInOldMode(s)?(u[c].kpi.hrs+=(a+E+S)*(45/60),u[c].kpi.hrsp+=(a+E+S)*(GM_config.get("nbHrsS")/60)):(u[c].kpi.hrs+=S*(30/60),u[c].kpi.hrsp+=S*(GM_config.get("nbHrsAfM")/60),u[c].kpi.hrs+=(a+E)*(45/60),u[c].kpi.hrsp+=(a+E)*(GM_config.get("nbHrsfM")/60)),a=o[c].get(q,ae,0,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(q,ae,1,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(q,ae,2,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,Te.isInOldMode(s)?(a=o[c].get(q,ne,0,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(q,ne,1,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(q,ne,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount):(a=o[c].get(q,ne,0,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(q,ne,1,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(q,ne,2,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount),a=o[c].get(q,de,0,y),S=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(q,de,1,y),E=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(q,de,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=typeof a>"u"?0:a,u[c].kpi.hrs+=(a+E+S)*(15/60),u[c].kpi.hrsp+=(a+E+S)*(15/60),l=u[c].sessions.total,N=u[c].sessions.nb,x=u[c].sessions.pu,M=u[c].sessions.nbc,u[c].sessions={total:A+l,nb:v+N,pu:(A+l)/(v+N),nbc:b+M},l=0,N=0,x=0,M=0,v=0,A=0,b=0,C=0,a=o[c].get(V,se,0,y),S=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(V,se,1,y),E=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(V,se,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=typeof a>"u"?0:a.number,u[c].kpi.hrs+=(a+E+S)*(45/60),u[c].kpi.hrsp+=(a+E+S)*(GM_config.get("nbHrsD")/60),a=o[c].get(V,ae,0,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(V,ae,1,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(V,ae,2,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(V,ne,0,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(V,ne,1,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(V,ne,2,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(V,de,0,y),S=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(V,de,1,y),E=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(V,de,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=typeof a>"u"?0:a.number,u[c].kpi.hrs+=(a+E+S)*(15/60),u[c].kpi.hrsp+=(a+E+S)*(15/60),l=u[c].defenses.total,N=u[c].defenses.nb,x=u[c].defenses.pu,M=u[c].defenses.nbc,u[c].defenses={total:A+l,nb:v+N,pu:(A+l)/(v+N),nbc:b+M},l=0,l=0,N=0,x=0,M=0,v=0,A=0,b=0,C=0,a=o[c].get(Q,se,0,y),S=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(Q,se,1,y),E=typeof a>"u"?0:a.number,v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(Q,se,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=typeof a>"u"?0:a.number,u[c].kpi.hrs+=(a+E+S)*(45/60),u[c].kpi.hrsp+=(a+E+S)*(GM_config.get("nbHrsC")/60),a=o[c].get(Q,ae,0,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(Q,ae,1,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(Q,ae,2,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(Q,ne,0,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(Q,ne,1,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(Q,ne,2,y),b=typeof a>"u"?b:b+a.number,C=typeof a>"u"?C:C+a.amount,a=o[c].get(Q,de,0,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(Q,de,1,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,a=o[c].get(Q,de,2,y),v=typeof a>"u"?v:v+a.number,A=typeof a>"u"?A:A+a.amount,l=u[c].coaches.total,N=u[c].coaches.nb,x=u[c].coaches.pu,M=u[c].coaches.nbc,a=typeof a>"u"?0:a.number,u[c].kpi.hrs+=a*(15/60),u[c].kpi.hrsp+=a*(15/60),u[c].coaches={total:A+l,nb:v+N,pu:(A+l)/(v+N),nbc:b+M},y+=1}let m=T.flatFee.length;for(var D=0;D0?30:0;n.isAfter(t,"day")&&(n=t.clone()),u[f].kpi.jrs=pn(s,n),u[f].header.dtFrom=s.format("YYYY-MM-DD"),u[f].header.dtTo=n.format("YYYY-MM-DD"),u[f].header.created_at=dayjs().format("YYYY-MM-DD HH:mm:ss"),s=s.add(1,"month"),n=s.endOf("month"),f+=1}return u});var Kt=Tt;var Jt=class{static changePgIfNeeded(e,t,s,n){var o=n.getPageCount(),u=n.getPages()[o-1],c=u.fontSize,g=u.getFont(),p=u.lineHeight;return e{if(!(m===!0&&N==0)){let{width:x,height:M}=l.getSize(),$=a+2*A+w+y;l.moveTo(S+D,a+y),l.setFont(f),l.setFontSize(a),l.setFontColor(u(1,0,0)),t!==void 0&&l.drawText(`${t}`),l.drawText(`page ${N+1} / ${g}`,{x:x-E-T}),l.drawRectangle({x:S,y:10,width:x-(S+v),height:$,color:C,opacity:.6,borderColor:b,borderWidth:A})}})});var ut=Jt;var or=async function(){let d=z.Cfg.dbase;return await Swal.mixin({confirmButtonText:"Suivant →",showCancelButton:!0,progressSteps:["0","1","2","3","4","5"],onOpen:function(a){console.log("...onOpen")},onRender:function(a){console.log("....onUpdate")},onClose:function(a){console.log(".....onClose")},onAfterClose:function(a){console.log("......onAfterClose")},onDestroy:function(a){console.log(".......onDestroy")}}).queue([{title:"Migration de la base",html:"

Cette migration va corriger la base et ajouter les nouveaux champs n\xE9cessaires, l`interrpuption du traitement est sans danger (mais ce n' est pas une raison !)

"},{title:"Correction de la table \xE9tudiant",html:"

Correction de la liste des \xE9tudiants (who_id)",onOpen:async function(a){console.log("%cMigration table des \xE9tudiants correction du who_id",k),Swal.showLoading();var E=dayjs("2020-06-01"),S=d.get("students"),v=S.value(),A=d.get("sessions").filter(w=>dayjs(w.when).isSameOrAfter(E,"day")),b=S.size().value(),C=Swal.getContent().textContent;for(g=0;gy.who_name===v[g].fullname).value();D!==void 0&&S.get(g).assign({who_id:D.who_id}).write();let w=Swal.getContent();w!=null&&(w.innerHTML=`${C}

Traitement en cours : ${g}/${v.length}

`),await Je(1)}Swal.hideLoading();let T=Swal.getContent();T!=null&&(T.textContent=`Traitement termin\xE9 : ${v.length}/${v.length}`)}},{title:"Correction de la table \xE9tudiant",html:"

Correction de la liste des \xE9tudiants funded devient funding

",onOpen:async function(a){console.log("%cMigration : table des \xE9tudiants suppression de l'ancien champs et ajout du champs funding",k),Swal.showLoading();for(var E=d.get("students"),S=E.size().value(),v=Swal.getContent().textContent,A=0;A

Traitement en cours : ${A}/${S}

`),await Je(1)}Swal.hideLoading();let C=Swal.getContent();C!=null&&(C.textContent=`Traitement termin\xE9 : ${S}/${S}`)}},{title:"Correction table Etudiants",html:"

Correction de la liste des sessions, ajout du path dans la session

",onOpen:async function(a){console.log("%cMigration table des sessions correction de id_who",k),Swal.showLoading();var E=dayjs("2020-06-01"),S=d.get("students"),v=S.value(),A=d.get("sessions").filter(y=>dayjs(y.when).isSameOrAfter(E,"day")),b=A.filter(y=>y.type!="soutenance").value(),C=Swal.getContent().textContent;for(g=0;g0?D.path:"0-unknown";d.get("sessions").find({id:b[g].id}).assign({path:T}).write();let y=Swal.getContent();y!=null&&(y.innerHTML=`${C}

Traitement en cours : ${g}/${b.length}

`),await Je(1)}Swal.hideLoading();let w=Swal.getContent();w!=null&&(w.textContent=`Traitement termin\xE9 : ${g}/${b.length}`)}},{title:"Migration de la table des Sessions",html:'

Correction de la liste des sessions, suppression du champs "isFunded"

',onOpen:async function(a){console.log("%cMigration : table des sessions suppression de isFunded",k),Swal.showLoading();for(var E=dayjs("2020-06-01"),S=d.get("students").value(),v=d.get("sessions").filter(T=>dayjs(T.when).isSameOrAfter(E,"day")),A=Swal.getContent().textContent,b=v.value().length;b-=1;){var C=v.get(b);C.value().isFunded===void 0||C.value().isFunded===void 0?console.log(`%cSkip ${C.value()} already converted`,k):C.unset(["isFunded"]).write();let T=Swal.getContent();T!=null&&(T.innerHTML=`${A}

Traitement en cours : il reste ${b} \xE9lements \xE0 convertir

`),await Je(1)}Swal.hideLoading();let D=Swal.getContent();D!=null&&(D.textContent=`Traitement en termin\xE9 : ${v.value().length}/${v.value().length}`)}},{title:"Migration de la table des Sessions",html:"

Correction de la liste des sessions, ajout de funding

",onOpen:async function(a){console.log("%cMigration : table des sessions ajout de fundedBy",k),Swal.showLoading();for(var E=dayjs("2020-06-01"),S=d.get("students").value(),v=d.get("sessions").filter(y=>dayjs(y.when).isSameOrAfter(E,"day")),T=v.filter(y=>y.type!="soutenance"),A=Swal.getContent().textContent,b=T.value().length;b-=1;){var C=T.get(b);C.value().funding!==void 0?console.log(`%cSkip ${C.value()} already converted`,k):C.assign({funding:we.getFunding(C.value().who_id)}).write();let y=Swal.getContent();y.innerHTML=`${A}

Traitement en cours : il rest ${b}\xE9lements \xE0 convertir

`,await Je(1)}for(var D=b,T=v.filter(y=>y.type=="soutenance"),b=0;b

Traitement en cours : ${D+b}/${v.value().length}

`),await Je(1)}Swal.hideLoading();let w=Swal.getContent();w!=null&&(w.textContent=`Traitement termin\xE9 : ${v.value().length}/${v.value().length}`)}}]).then(a=>{if(a.value){let E=JSON.stringify(a.value);Swal.fire({title:"Traitement termin\xE9!",html:` Your answers:
${E}
`,confirmButtonText:"Lovely!"})}else return console.log("%c resultat en erreur",k,a,a.dismiss===Swal.DismissReason.cancel),-1});var t,s,n;for(g=0;gG\xE9n\xE9rer un bug?'});else{let c=$e.setDbVersion(e);console.log(`%cChanged DB to version ${c}`,k)}let s=$e.setDbVersion(e);console.log(`%cChanged DB to version ${s}`,k)}),K(ze,"erase",function(e){return console.log(`%cErase all data of table: ${e}`,k),z.Cfg.dbase.get(e).remove().write()}),K(ze,"loadTable",function(e,t){if(table_exist(e))return z.Cfg.dbase.set(e,t).write();throw"Table :"+e+", not exists in DB !"}),K(ze,"table_exist",e=>z.Cfg.dbase.has(e).value),K(ze,"table_export",function(e){if(table_exist(e))return JSON.stringify(z.Cfg.dbase.get(e).value());throw"Table :"+e+", not exists id DB !"}),K(ze,"exportTblToCSV",function(e="",t,s){let n=gn.exportTblToJSON(e,t,s),o={quotes:!1,quoteChar:'"',escapeChar:'"',delimiter:",",header:!0,newline:`\r `,skipEmptyLines:!1,columns:null};return sr.default.unparse(n,o)}),K(ze,"exportTblToJSON",function(e="",t,s){if(e=="")return console.log("%cIrrecoverable Error: You forget to define a data table name",me),-1;if(t!==null&&t!==""&&(dtFrom=dayjs(t)),s!==null&&s!==""&&(dtTo=dayjs(s)),z.Cfg.dbase.has(e).value==!1)return console.log(`%cIrrecoverable Error: table ${e} don't exist`,me),-1;if(e===De.tbl_name){if(typeof dtFrom=="object"&&dtTo==="object")return z.Cfg.dbase.get(e).filter(n=>dayjs(n.when).isSameOrBefore(dtTo,"day")&&dayjs(n.when).isSameOrAfter(dtFrom,"day")).value();if(typeof dtFrom=="object")return z.Cfg.dbase.get(e).filter(n=>dayjs(n.when).isSameOrAfter(dtFrom,"day")).value();if(typeof dtTo=="object")return z.Cfg.dbase.get(e).filter(n=>dayjs(n.when).isSameOrBefore(dtTo,"day")).value()}return z.Cfg.dbase.get(e).value()});var Dt=ze;var Gt=async function(){var d="";d+="",d+='
',d+='
';var t=(await ft.XHR({method:"GET",url:"https://raw.githubusercontent.com/StephaneTy-Pro/OC-Mentors-AccountAddon/master/README.md",responseType:"text/html",headers:{"User-Agent":"Mozilla/5.0"}})).responseText,s=new showdown.Converter,n=s.makeHtml(t);d+=n,d+="
",d+="
",Swal.fire({title:`A propos de ${Tn}`,icon:"info",html:d,showCloseButton:!0,focusConfirm:!1,position:"center-start",grow:"fullscreen"})},Bo=function(d){if(d.querySelector(".Facturier__cbox input[type=checkbox]")===null){var e=yn(d);typeof e<"u"&&d.appendChild(e)}else dr(d)};var yn=function(d,e=!0){let s="do.js#_buildCbox()::";if(d.children.length!==1){console.error("Le DOM des lignes d'historique n'est plus conforme");return}let n=d.children[0],o;if(n.querySelector("svg")===null){console.info("%c%s%c je ne trouve pas de balise svg enfant, cette ligne pose probleme %o",Ge,s,"",n);return}var u=n.querySelector("svg").getAttribute("aria-label");if(o=n.querySelector("svg"),o.dataset.facturierType="state",o.dataset.facturierValue=u,n.querySelector("p")===null){console.info("%c%s%c je ne trouve pas de balise p enfant, cette ligne pose probleme %o",Ge,s,"",n);return}var c=n.querySelector("p").innerText;o=n.querySelector("p"),o.dataset.facturierType="sessionType",o.dataset.facturierValue=c,o=n.querySelector("time");var g=o.getAttribute("datetime").trim();if(o.dataset.facturierType="sessionDateTime",o.dataset.facturierValue=dayjs(g).toISOString(),o=n.querySelector("time").closest("div").nextElementSibling.querySelector("a"),o===null&&(o=n.querySelector("time").closest("div").nextElementSibling.querySelector("p")),o===null){console.error("Le DOM des lignes d'hsitorique n'est plus conforme");return}var p=o.innerText;o.dataset.facturierType="sessionStudentName",o.dataset.facturierValue=p,o=n.children[3];let f;o.querySelector("p")!==null&&o.querySelector("p").nextElementSibling!==null&&o.querySelector("p").nextElementSibling.querySelector("span")!==null&&(o=o.querySelector("p").nextElementSibling.querySelector("span"),f=o.innerText,o.dataset.facturierType="sessionLevel",o.dataset.facturierValue=f);let a=D=>D.querySelector("[data-facturier-type='sessionType'][data-facturier-value='Soutenance']")!==null,E=D=>D.querySelector("[data-facturier-type='sessionType'][data-facturier-value='Mentorat']")!==null;console.log("Tous les a de la ligne renvoient : %o",d.querySelectorAll("a")),console.log("Tous les a de la ligne renvoient : %o",n.querySelectorAll("a"));let S="";if(a(n)===!0&&(o=n.children[4],o.querySelector("a")!==null&&(S=o.querySelector("a").href,S=S.replace(document.location.origin+"/users/",""),S=S.substring(S.indexOf("/"),-1))),E(n)===!0&&(o=n.children[2],o.querySelector("a")!==null)){S=o.querySelector("a").href;let D=document.location.pathname.split("/")[1];S=S.replace(`${document.location.origin}/${D}/mentorship/dashboard/students/`,"")}E(n)===!0&&S.length==0&&(S=we.findByFullName(p).id),o=n.querySelector(".Facturier__cbox"),o!==null&&o.remove();var v=n.children[0].cloneNode();n.setAttribute("style","grid-template-columns:15rem 1fr 1fr 5.5rem 6.5rem 1rem");var A=dayjs(g).toISOString(),b="-1";S.length>0&&(b=De.getHashId(A,S));var C=document.createElement("input");return C.type="checkbox",C.name="name",C.value=b,C.onclick=function(D){D.stopPropagation()},bChecked=De.exists(b),bChecked===!0&&(C.checked=!0),v.appendChild(C),v.setAttribute("style","order:4;"),v.classList.add("Facturier__cbox"),v},ar=function(d){let t="do.js#updCboxValue()::";if(d.querySelector("input")===null)return;let s=d.querySelector("input"),n=E=>E.querySelector("[data-facturier-type='sessionDateTime']").getAttribute("data-facturier-value"),o=E=>E.querySelector("[data-facturier-type='sessionStudentName']").getAttribute("data-facturier-value"),u=E=>E.querySelector("[data-facturier-type='sessionType'][data-facturier-value='Soutenance']")!==null,c=E=>E.querySelector("[data-facturier-type='sessionType'][data-facturier-value='Mentorat']")!==null;if(c(d)===!1&&u(d)===!1){console.error("%cSomething wrong not possible to update input on line %o there is not type for session",me,d);return}let g=n(d),p="";u(d)===!0&&(_oEl=d.children[4],_oEl.querySelector("a")!==null&&(p=_oEl.querySelector("a").href,p=p.replace(document.location.origin+"/users/",""),p=p.substring(p.indexOf("/"),-1))),c(d)===!0&&(_oEl=d.children[2],_oEl.querySelector("a")!==null&&(p=_oEl.querySelector("a").href,p=p.replace(document.location.origin+"/mentorship/dashboard/students/","")));var f=dayjs(g).toISOString(),a="-1";if(p.length>0)a=De.getHashId(f,p);else{let E="";E=we.findByFullName(o(d)).id,E.length>0&&(a=De.getHashId(f,E))}s.value=a,bChecked=De.exists(a),console.log(`%cIs the session with cid ${a} (this is the calculated id) in db ? ${bChecked}`,k),bChecked===!0&&(s.checked=!0)},dr=function(d){try{oInput=d.querySelector("input")}catch{throw Error("IRRECOVERABLE ERROR: no input element")}let e=parseInt(oInput.value,10);bChecked=De.exists(e),bChecked===!0?oInput.checked=!0:oInput.checked=!1},Zt=function(){let e="do.js#addCbox()::";var t=Pt,s=document.querySelector(t),n=!0;if(s===null)throw console.log(`%cERROR:Could'nt find the table which display sessions : ${s}`,me),new Error("!!!! IRRECOVERABLE ERROR NO TABLE OF SESSIONS FOUNDED");if(s.querySelector(".Facturier__cbox input[type=checkbox]")===null){var s=document.querySelector(`${t}`).children;for(let[f,a]of Object.entries(s)){if(a.nodeName==="DIV"&&a.classList.contains("Facturier__cbox_all")){console.log("MON ENTETE"),a.dataset.facturierType="header";continue}if(a.querySelector("span")===null){console.log("UNE ETIQUETTE MOIS"),a.dataset.facturierType="section_month";continue}let E=a.children[0],S=yn(a);S!==null&&typeof S<"u"?(console.log("%c%s%c returned object to add to line is %o",k,e,"",S),E.appendChild(S)):console.warn("%c%s%c ptoblem returned object to add to line is %o (null or undefined)",Ge,e,"",S)}if(document.querySelector(`${t} .Facturier__cbox_all`)===null){let f=(E,S)=>S.insertAdjacentElement("beforebegin",E);var o=document.querySelector(`${t} li`);let a=o.firstChild.classList;var u=document.createElement("input");u.type="checkbox",u.name="name",u.value="value",u.id="id",u.onclick=function(){document.querySelectorAll(".Facturier__cbox input[type=checkbox]").forEach(E=>E.checked=!E.checked)},u.style="visibility: hidden;";var c=document.createElement("label");c.innerText="in DB",c.style="display:block;text-align:right;",c.onMouseOver="this.style.cursor=pointer;",c.onMouseOut="this.style.cursor=auto;",c.appendChild(u);var g=document.createElement("div");g.classList=a,g.classList.add("Facturier__cbox_all"),g.appendChild(c),f(g,document.querySelector(`${t} li`))}}else{var s=document.querySelector(`${t}`).children;for(let[f,a]of Object.entries(s)){if(a.firstChild.nodeName!=="A")continue;let E=a.firstChild;E.querySelector(".Facturier__cbox input[type=checkbox]")===null?E.appendChild(yn(E)):dr(E)}}},lr=function(d){return Bo(d)},ur=async function(){var[d,e]=await Nt(dayjs().startOf("month"),dayjs().endOf("month"));let t=Kt.getListDetailBill(d,e),s="";s+="",s+="",s+="",s+="",s+="";for(let n=0;n",s+=``,s+=``,sType=t[n].type,t[n].path!=null&&t[n].path.toLowerCase()==="158-trouvez-lemploi-qui-vous-correspond"&&t[n].type!=="soutenance"&&(sType="Coaching"),s+=``,s+=``,s+=``,s+=``,s+="";s+="",s+="
QuandQuiFinanc\xE9 ?TypeNiveauAncien Mode ?StatutPU HTCumul
${dayjs(t[n].when).format("DD/MM/YYYY \xE0 HH:mm:ss")}${t[n].who_name}${t[n].funding}${sType}${t[n].lvl}${t[n].oldMode===!0?"Oui":"Non"}${t[n].status}${t[n].iPu}${t[n].iCumul}\u20AC
",Swal.fire({title:`Liste d\xE9taill\xE9es des sessions du ${d.format("DD/MM/YYYY")} au ${e.format("DD/MM/YYYY")}`,icon:"info",html:s,showCloseButton:!0,focusConfirm:!1,position:"center-start",grow:"fullscreen",onOpen:n=>{var o=n.querySelector("table"),u=new simpleDatatables.DataTable(o)}})},cr=async function(){var d=!0,[e,t]=await Nt(dayjs().startOf("month"),dayjs().endOf("month"));d==!0&&console.log("%ccollectAuto() Wanna collect from %s to %s",k,e.format("DD/MM/YYYY"),t.format("DD/MM/YYYY"));var s=await De.getSessionsFromAPI(e,t);d==!0&&console.log("%ccollectAuto() Sessions are is %o",k,s)},fr=async function(){var d=Pt,e=document.querySelectorAll(d);GM_addStyle(".ldBar path.mainline{stroke-width:10;stroke:#09f;stroke-linecap:round}"),GM_addStyle(".ldBar path.baseline{stroke-width:14;stroke:#f1f2f3;stroke-linecap:round;filter:url(#custom-shadow)}");let t='
';Swal.fire({title:"Traitement en cours!",html:t,confirmButtonText:"Lovely!",onBeforeOpen:function(s){var n=new ldBar("#pbar")},onRender:function(s){},onOpen:async function(s){for(var n=document.getElementById("pbar").ldBar,o=0;og.id=="dayjs").ptr,t=unsafeWindow.Facturier.libs.find(g=>g.id=="fetchInject").ptr,s=unsafeWindow.Facturier.klass.find(g=>g.id=="Session").ptr,n=unsafeWindow.Facturier.klass.find(g=>g.id=="Student").ptr,o=unsafeWindow.Facturier.klass.find(g=>g.id=="History").ptr,u=unsafeWindow.Facturier.klass.find(g=>g.id=="Archive").ptr,c=unsafeWindow.Facturier.klass.find(g=>g.id=="StudentHistory").ptr;console.log("%cd_dbase, d_dayjs, d_Session, d_Student, d_History, d_Archive, d_StudentHistory are exported",k),console.log("%cfor examples write all code after $>",k),console.group("%cd_dbase",k),console.log("example : get last session in db $>d_dbase.get(d_Session.tbl_name).last().value();"),console.log(" get first student in db $>d_dbase.get(d_Student.tbl_name).first().value()"),console.log(" or d_dbase.get(d_Student.tbl_name).get(0).value()"),console.log(" get all sessions grouped by month/yyyy in db $>d_dbase.get(d_Session.tbl_name).groupBy( v => d_dayjs(v.when).format('MM/YYYY')).value()"),console.log(" get all table $> d_dbase.value()"),console.groupEnd(),console.group("%cd_fetchInject",k),console.log("same as fetchInject libs : https://habd.as/code/fetch-inject/"),console.groupEnd(),console.group("%cd_dayjs",k),console.log("same as dayjs libs"),console.groupEnd(),console.group("%cd_Student",k),console.log("find a student by id \xA4 d_Student.findById(STUDENT_ID, (DATE) ); // date is optionnal"),console.groupEnd(),console.group("%cd_Session",k),console.log("get a list of session \xA4 d_Session.getBetween('2020-08-01','2020-08-31')"),console.log("delete a session by id \xA4 d_Session.deleteById(SESSION_ID);"),console.groupEnd(),console.group("%cSome combinated example",k),console.log("Delete last saved session : d_Session.deleteById( d_dbase.get(d_Session.tbl_name).last().value().id ); "),console.log("Find all session between 01/08/2020 and 31/08/2020 : d_dbase.get(d_Session.tbl_name).filter( v => d_dayjs(v.when).isSameOrBefore('20200831', 'day') && d_dayjs(v.when).isSameOrAfter('20200801', 'day')).value(); "),console.groupEnd();debugger};var mr=function(){let{degrees:d,PDFDocument:e,rgb:t,StandardFonts:s}=PDFLib;async function n(){let g=await fetch("https://pdf-lib.js.org/assets/with_update_sections.pdf").then(b=>b.arrayBuffer()),p=await e.load(g),f=await p.embedFont(s.Helvetica),E=p.getPages()[0],{width:S,height:v}=E.getSize();E.drawText("This text was added with JavaScript!",{x:5,y:v/2+300,size:50,font:f,color:t(.95,.1,.1),rotate:d(-45)});let A=await p.save();download(A,"pdf-lib_modification_example.pdf","application/pdf")}async function o(){let c=await e.create(),g=await c.embedFont(s.TimesRoman),p=c.addPage(),{width:f,height:a}=p.getSize(),E=30;p.drawText("Creating PDFs in JavaScript is awesome!",{x:50,y:a-4*E,size:E,font:g,color:t(0,.53,.71)});let S=await c.save();download(S,"pdf-lib_modification_example.pdf","application/pdf")}async function u(){var[c,g]=await Nt(dayjs().startOf("month"),dayjs().endOf("month"));let p=Kt.getListDetailBill(c,g),f=await e.create(),a=await f.embedFont(s.TimesRoman),E=f.addPage(),{width:S,height:v}=E.getSize(),A=30;E.drawText(`Prestations en d\xE9tail du ${c.format("DD/MM/YYYY")} au ${g.format("DD/MM/YYYY")}`,{x:50,y:v/2-A,size:A,font:a,color:t(116/255,81/255,235/255)});let b=12,C=1.25,D=f.addPage();D.setFontSize(b),D.line_space=C,D.font=a;let T=1,w=20,y=C*b+w,m=v/2,l=function(ie){let W="LOrEm ipsum DOLor sit aMet, conSEc/tetUr 25 porttitor. ";return ie*1.0925*(a.widthOfTextAtSize(W,b)/W.length)},N=[0,18,36,10,13,8,5,7],x=[N[0],l(N[1]),l(N[2]),l(N[3]),l(N[4]),l(N[5]),l(N[6]),l(N[7])],M=E.lineHeight,$=25;for(let ie=1;ie"u"&&R===!1)continue;_i0.data=_i0.data.reverse();let ie=$;if(ye=`${F[_iSessionType]} de Niveau ${P} Etudiants ${re[_iFunding]}`,D.moveTo(ie,m),D.drawText(ye,{font:a,size:b+4,y:m,x:ie,lineHeight:M}),ie+=15,T+=1,[T,D]=ut.changePgIfNeeded(m,y,T,f),m=v-C*b*T,D.moveTo(ie,m),D.drawText(j[_iSessionQuality],{font:a,size:b+2,y:m,x:ie,lineHeight:M}),ie+=15,T+=1,[T,D]=ut.changePgIfNeeded(m,y,T,f),m=v-C*b*T,typeof _i0>"u"){D.drawText(`d\xE9sol\xE9 pas de r\xE9sultat pour cette section au niveau de facturation (${P})`,{font:a,size:b,y:m,x:ie,lineHeight:M}),T+=1,[T,D]=ut.changePgIfNeeded(m,y,T,f),m=v-C*b*T;continue}let W=ie,ve=0;D.moveTo(ie,m);for(let xe=1;xe0?J[P][Y[_iSessionType]][U[_iSessionQuality]][ue[_iFunding]]:0:iPu=+_i0.data[pe].lvl>0?H[P][Y[_iSessionType]][U[_iSessionQuality]][ue[_iFunding]]:0,D.drawText(iPu.toString(),{font:a,size:b,y:m,x:W,lineHeight:M}),W+=G[4],ve+=iPu,D.drawText(ve.toString(),{font:a,size:b,y:m,x:W,lineHeight:M}),T+=1,[T,D]=ut.changePgIfNeeded(m,y,T,f),m=v-C*b*T}P+=1,T+=1,[T,D]=ut.changePgIfNeeded(m,y,T,f),m=v-C*b*T}P=1}ut.addFooter(f,`G\xE9n\xE9r\xE9 avec Facturier version ${Te.getAppVersion()}`);let be=await f.save();download(be,`prestations_facturees_detail_${c.format("YYYYMMDD")}-${g.format("YYYYMMDD")}.pdf`,"application/pdf")}u()},hr=async function(){GM_addStyle('.formgrid{font-family: "Open Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial, sans-serif;}'),GM_addStyle(` .swal2-styled[type=button]{background-color:#3085d6;border-radius:.75em;color:#fff;font-size:1.0625em;border-left-color:#3085d6;border-right-color:#3085d6;display:inline-block} .formgrid{display:grid;grid-template-columns:1fr 1em 1fr;grid-gap:.3em .6em;grid-auto-flow:dense;align-items:center} .formgrid input,.formgrid output,.formgrid textarea,.formgrid select,.formgrid button{grid-column:2 / 4;width:auto;margin:0} .formgrid legend{font-size:1.2em;width:100%;border-bottom:1px dotted #99c} .formgrid fieldset{max-width:40em;padding:4px;margin:2em auto;border:0 none} `);let d="";d+="Que voulez vous faire ?",d+="
",d+='
',d+='Epurer',d+='Sauvegarder toute la base',d+='Charger toute la base',d+=`Exporter les tables `,d+="
",d+="";let{value:e}=await Swal.fire({title:"Gestion de la base de donn\xE9e",html:d,focusConfirm:!1,preConfirm:()=>[document.getElementById("answer1").value,document.getElementById("answer2").value],didOpen:t=>{console.log("%conOpen popup","color:coral"),htmx.process(document.querySelector(".swal2-container")),console.log("%cHtmx Process done","color:coral"),t.querySelector(".formgrid").addEventListener("click",_handler=function(s){let n=function(c){c.target.matches('button[data-action="raz"]')&&(Swal.close(),$o())},o=function(c){c.target.matches('button[data-action="export"]')&&(Swal.close(),Yo())},u=function(c){c.target.matches('button[data-action="import"]')&&(Swal.close(),ko())};n(s),o(s),u(s)})},onClose:t=>{t.querySelector(".formgrid").removeEventListener("click",_handler),console.log("%conClose popup","color:coral")}});e&&Swal.fire(JSON.stringify(e))},Yo=async function(){let d=Dt.save();console.log(`%cWanna save : ${d}`,k);let e=dayjs(),t="";t+=`save_${e.format("YYYYMMDD")}.json`,Swal.fire({title:"Sauvegarde de la base de donn\xE9e",html:t,focusConfirm:!1,onOpen:s=>{s.querySelector("#download").click()},onClose:s=>{}})};var ko=async function(){console.log("%cWanna load DATABASE",k);let{value:d}=await Swal.fire({title:"Selection de la sauvegarde (json)",input:"file",inputAttributes:{accept:".json","aria-label":"Upload your database"}});if(d){let e=new FileReader;e.onload=t=>{Dt.load(t.target.result),Zt(),It("Chargement de la base termin\xE9")},e.readAsText(d)}},$o=async function(){GM_addStyle(".form_addon {display: grid;padding: 1em;background: #f9f9f9;border: 1px solid #c1c1c1;margin: 2rem auto 0 auto;max-width: 600px;padding: 1em;}"),GM_addStyle(".form_addon input {background: #fff;border: 1px solid #9c9c9c;}"),GM_addStyle(".form_addon button {background: lightgrey;padding: 0.7em;width: 100%;border: 0;}"),GM_addStyle(".form_addon button:hover {background: gold;}"),GM_addStyle(".form_addon label {padding: 0.5em 0.5em 0.5em 0;}"),GM_addStyle(".form_addon input {padding: 0.7em;margin-bottom: 0.5rem;}"),GM_addStyle(".form_addon input:focus {outline: 3px solid gold;}"),GM_addStyle("@media (min-width: 400px) {.form_addon {grid-template-columns: 200px 1fr;grid-gap: 16px;} .form_addon label {text-align: right;grid-column: 1 / 2;} .form_addon input, .form_addon button {grid-column: 2 / 3;}}");var d="";d+='
',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+='',d+="",d+='',d+='',d+="
";let{value:e}=await Swal.fire({title:"RAZ des donn\xE9es",icon:"info",html:d,showCloseButton:!0,focusConfirm:!1,position:"top-start",grow:"row",footer:"Choisissez ce que vous allez supprimer de la base de donn\xE9e",preConfirm:()=>{let g=document.getElementsByName("date_filter"),p="notfound";for(var f in g)g[f].checked===!0&&(p=g[f].value);return console.log(document.getElementById("s1")),[document.getElementById("students").checked,document.getElementById("sessions").checked,document.getElementById("archives").checked,document.getElementById("history_cache").checked,document.getElementById("dtFrom").disabled===!0?null:document.getElementById("dtFrom").value,document.getElementById("dtTo").disabled===!0?null:document.getElementById("dtTo").value,p]},onOpen:g=>{g.querySelector("#radio1").addEventListener("change",function(){console.log(document.getElementById("radio1").checked);let p=document.getElementById("radio1").checked;document.getElementById("dtFrom").disabled=!p,document.getElementById("dtTo").disabled=!p}),g.querySelector("#radio2").addEventListener("change",function(){let p=document.getElementById("radio1").checked;document.getElementById("dtFrom").disabled=!p,document.getElementById("dtTo").disabled=!p}),g.querySelector("#dtFrom").addEventListener("change",function(){document.getElementById("dtTo").value=dayjs(document.getElementById("dtFrom").value).endOf("month").format("YYYY-MM-DD")})},onClose:g=>{g.querySelector("#radio1").removeEventListener("change"),g.querySelector("#radio2").removeEventListener("change"),g.querySelector("#dtFrom").removeEventListener("change")}}),t=e[0],s=e[1],n=e[2],o=e[3];console.log(`%cWanna raz students ? ${t}, wanna raz sessions ? ${s}, wanna raz archives ? ${n}`,k);let u=e[4]?dayjs(e[4]):null,c=e[5]?dayjs(e[5]):null;t===!0&&(setTimeout(function(){Toastify({text:"Suppression de la base des \xE9tudiants",gravity:"top",position:"right",close:!0,backgroundColor:"linear-gradient(to right, #ff5f6d, #ffc371)"}).showToast()},500),we.delete(u,c),$e.remStudentListUpd()),s===!0&&(setTimeout(function(){Toastify({text:"Suppression de la base des sessions",gravity:"top",position:"right",close:!0,backgroundColor:"linear-gradient(to right, #ff5f6d, #ffc371)"}).showToast()},500),De.delete(u,c),Zt()),n===!0&&(setTimeout(function(){Toastify({text:"Suppression de la base des archives (financi\xE8res)",gravity:"top",position:"right",close:!0,backgroundColor:"linear-gradient(to right, #ff5f6d, #ffc371)"}).showToast()},500),St.delete(u,c)),o===!0&&(setTimeout(function(){Toastify({text:"Suppression de la base du cache des historique de session",gravity:"top",position:"right",close:!0,backgroundColor:"linear-gradient(to right, #ff5f6d, #ffc371)"}).showToast()},500),At.remove(u,c))};var gr=async function(){var d="";d+="",d+='
',d+='',d+='',d+='',d+='',d+="
";var[e,t]=await Nt(dayjs().startOf("month"),dayjs().endOf("month")),s=await et.calculateBill(e,t);Te.isInOldMode(e)?jo(e,t,s):Lo(e,t,s)};var jo=function(d,e,t){let s=t.get(0,0,0,0),n=4;var o="",u=null,c=0,g=0,p=0,f=[[4,"Groupe"],[1,"Niveau 1"],[2,"Niveau 2"],[3,"Niveau 3"]],L=0,J=0,a=!1,E=0,S=0,v=0,A=0,b=0,C=0,D=0,T=0,w=0,y=0,m=0,l=0,N=0,x=0,M=0,$=0,O=0,B=0,I=1;t.toConsole(),o+="",o+='
',o+="",o+="",o+="",o+='',o+="",o+="",o+="",o+="",o+='',o+="";for(var L=performance.now();I<=n;)_i0=t.get(q,se,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(q,se,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(q,se,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(q,ae,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(q,ae,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(q,ae,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(q,ne,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(q,ne,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(q,ne,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(q,de,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(q,de,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(q,de,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),I+=1;var J=performance.now();console.log("%cCalculate first array"+(J-L)+" milliseconds.",Ke),o+="",o+="",o+=``,o+="",o+="",o+="",p+=g,c=0,g=0,o+="",o+='',o+="",I=1;for(var L=performance.now();I<=n;)_i0=t.get(V,se,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(V,se,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(V,se,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(V,ae,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(V,ae,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(V,ae,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(V,ne,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(V,ne,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(V,ne,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(V,de,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(V,de,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(V,de,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),I+=1;var J=performance.now();console.log("%cCalculate second array"+(J-L)+" milliseconds.",Ke),o+="",o+="",o+=``,o+="",o+="",o+="",p+=g,c=0,g=0,o+="",o+='',o+="",I=1;for(var L=performance.now();I<=n;)_i0=t.get(Q,se,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(Q,se,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(Q,se,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(Q,ae,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ae,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ae,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(Q,ne,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ne,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ne,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),_i0=t.get(Q,de,0,I),y=_i0===void 0?0:_i0.number,$=_i0===void 0?0:_i0.amount,_i0=t.get(Q,de,1,I),m=_i0===void 0?0:_i0.number,O=_i0===void 0?0:_i0.amount,_i0=t.get(Q,de,2,I),l=_i0===void 0?0:_i0.number,B=_i0===void 0?0:_i0.amount,N=y>0?$/y:$,x=m>0?O/m:O,M=l>0?B/l:B,(a===!0||y+m+l>0)&&(c+=y,c+=m,c+=l,g+=$,g+=O,g+=B,o+="",o+=``,o+=``,o+=""),I+=1;var J=performance.now();console.log("%cCalculate third array"+(J-L)+" milliseconds.",Ke),o+="",o+="",o+=``,o+="",o+="",o+="",p+=g,o+="",o+='',o+="",o+=``,o+="",o+="",o+="",o+="",o+="",o+="",o+="
TypenbPU(HT)Total(HT)
Sessions de Mentorat
Niveau ${I} : r\xE9alis\xE9es${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : annul\xE9es${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : annul\xE9es tard.${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : \xE9tudiant abs.${y+m+l}${x}${$+O+B}\u20AC
Total${c}${g}\u20AC
Sessions de Soutenance
Niveau ${I} : r\xE9alis\xE9es${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : annul\xE9es${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : annul\xE9es tard.${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : \xE9tudiant abs.${y+m+l}${x}${$+O+B}\u20AC
Total${c}${g}\u20AC
Sessions de Coaching
Niveau ${I} : r\xE9alis\xE9es${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : annul\xE9es${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : annul\xE9es tard.${y+m+l}${x}${$+O+B}\u20AC
Niveau ${I} : \xE9tudiant abs.${y+m+l}${x}${$+O+B}\u20AC
Total${c}${g}\u20AC
Total G\xE9n\xE9ral
${p}\u20AC
",o+=`

Soit un total g\xE9n\xE9ral \xE0 facturer de ${p}\u20AC`,Swal.fire({title:`Liste des formations tarif\xE9es du ${d.format("DD/MM/YYYY")} au ${e.format("DD/MM/YYYY")}`,html:o,showCloseButton:!0,focusConfirm:!1,position:"center-start",grow:"fullscreen"})},Lo=function(d,e,t){console.log("%cEnter computation bill",k);let s=!1;var n="",o=0,u=0,c=0,g=0,p=0,f=0,a=0,E=0,S=0,v=0,A=0,b=0;let C=t.get(0,0,0,0),D=C.maxLevel;var T=0,w=0,y=0,m=0,l=0,N=0,x=0,M=0,$=0,O=0,B=0,I=0,L=0,J=0,H=0,P=0,R=0,Y=0,j=1;n+="",n+='

',n+="",n+="",n+="",n+='',n+="",n+="",n+='',n+='',n+='',n+='',n+="",n+="",n+="",n+="",n+='',n+="";for(var F=performance.now();j<=D;)_i0=t.get(q,se,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(q,se,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(q,se,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(q,ae,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(q,ae,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(q,ae,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(q,ne,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(q,ne,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(q,ne,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(q,de,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(q,de,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(q,de,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),j+=1;var U=performance.now();for(console.log("%cCalculate first array"+(U-F)+" milliseconds.",Ke),n+="",n+="",n+=``,n+=``,n+=``,n+=``,n+="",n+="",n+="",a+=o,E+=u,S+=c,v+=g,A+=p,b+=f,o=0,u=0,c=0,g=0,p=0,f=0,n+="",n+='',n+="",j=1;j<=D;)_i0=t.get(V,se,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(V,se,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(V,se,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(V,ae,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(V,ae,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(V,ae,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(V,ne,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(V,ne,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(V,ne,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(V,de,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(V,de,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(V,de,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),j+=1;n+="",n+="",n+=``,n+=``,n+=``,n+=``,n+="",n+="",n+="",a+=o,E+=u,S+=c,v+=g,A+=p,b+=f,o=0,u=0,c=0,g=0,p=0,f=0,n+="",n+='',n+="";for(var j=1;j<=D;)_i0=t.get(Q,se,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(Q,se,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(Q,se,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(Q,ae,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ae,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ae,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(Q,ne,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ne,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(Q,ne,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),_i0=t.get(Q,de,0,j),O=_i0===void 0?0:_i0.number,P=_i0===void 0?0:_i0.amount,_i0=t.get(Q,de,1,j),B=_i0===void 0?0:_i0.number,R=_i0===void 0?0:_i0.amount,_i0=t.get(Q,de,2,j),I=_i0===void 0?0:_i0.number,Y=_i0===void 0?0:_i0.amount,L=O>0?P/O:P,J=B>0?R/B:R,H=I>0?Y/I:Y,(s===!0||O+B+I>0)&&(o+=O,u+=B,c+=I,g+=P,p+=R,f+=Y,n+="",n+=``,n+=``,n+=``,n+=``,n+=``,n+=""),j+=1;a+=o,E+=u,S+=c,v+=g,A+=p,b+=f,n+="",n+="",n+=``,n+=``,n+=``,n+=``,n+="",n+="",n+="",n+="",n+="",n+="",n+="
TypeAuto Financ\xE9sFinanc\xE9sAutresTotal
Nb.Pu.(HT)Mt.(HT)Nb.Pu.(HT)Mt.(HT)Nb.Pu.(HT)Mt.(HT)Nb.Mt.(HT)
Sessions de mentorat
Niveau ${j} : r\xE9alis\xE9es${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : annul\xE9es${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : annul\xE9es tard.${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : \xE9tud. absent${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Total${o}${g}\u20AC${u}${p}\u20AC${c}${f}\u20AC${o+u+c}${g+p+f}\u20AC
Sessions de Soutenance
Niveau ${j} : r\xE9alis\xE9es${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : annul\xE9es${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : annul\xE9es tard.${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : \xE9tud. absent${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Total${o}${g}\u20AC${u}${p}\u20AC${c}${f}\u20AC${o+u+c}${g+p+f}\u20AC
Sessions de Coaching
Niveau ${j} : r\xE9alis\xE9es${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : annul\xE9es${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : annul\xE9es tard.${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Niveau ${j} : \xE9tud. absent${O}${L}${P}\u20AC${B}${J}${R}\u20AC${I}${H}${Y}\u20AC${O+B+I}${P+R+Y}\u20AC
Total${o}${g}\u20AC${u}${p}\u20AC${c}${f}\u20AC${o+u+c}${g+p+f}\u20AC
";var ue=0,re="";let he=C.flatFee.length;for(var Z=0;Z1?n+=`

Calcul du forfait "autofinanc\xE9". Ce mois ci ${he} \xE9tudiants ont eu au moins une session il s'agit de : ${re.slice(0,-1)}`:n+=`

Calcul du forfait "autofinanc\xE9". Ce mois ci ${he} \xE9tudiant a eu au moins une session il s'agit de : ${re.slice(0,-1)}`,n+=`. Le forfait est donc de ${ue}\u20AC

`,n+=`

Soit un total g\xE9n\xE9ral \xE0 facturer de ${v+A+b+ue}\u20AC

`,Swal.fire({title:`Liste des formations tarif\xE9es du ${d.format("DD/MM/YYYY")} au ${e.format("DD/MM/YYYY")}`,html:n,showCloseButton:!0,focusConfirm:!1,position:"center-start",grow:"fullscreen"})},yr=async function(){var[d,e]=await Nt(dayjs().startOf("month"),dayjs().endOf("month"),!1);if(d===null||e===null)throw console.log("%cError need date from, date to",me),new Error;let t=Kt.getListStatistic(d,e),s="",n=new Array(22),o=Array.apply(null,Array(22)).map(Number.prototype.valueOf,0),u=d.clone(),c=u.endOf("month"),g="";n[0]="Sessions",n[1]="Sessions",n[2]='Montant',n[3]="Nb.",n[4]="Pu",n[5]='Soutenances',n[6]="Montant",n[7]="Nb.",n[8]="Pu",n[9]='Coaching',n[10]="Montant",n[11]="Nb.",n[12]="Pu",n[13]='Bonus',n[14]="Bonus AF",n[15]="Total G\xE9n\xE9ral",n[16]='KPI',n[17]="NbJrs",n[18]="TJM",n[19]="Nb hrs",n[20]="THM",n[21]="Nb hrs (p.)",n[22]="THM (p)";for(var p=0;p"),p===t.length-1&&t.length>1?c.isAfter(e,"day")?(o[2]-=t[p].sessions.total,o[3]-=t[p].sessions.nb-t[p].sessions.nbc,o[4]-=t[p].sessions.pu,o[6]-=t[p].defenses.total,o[7]-=t[p].defenses.nb-t[p].defenses.nbc,o[8]-=t[p].defenses.pu,o[10]-=t[p].coaches.total,o[11]-=t[p].coaches.nb-t[p].coaches.nbc,o[12]-=t[p].coaches.pu,o[14]-=t[p].bonus,o[15]-=f,o[16]-=t[p].kpi.jrs,o[18]-=t[p].kpi.hrs,o[20]-=t[p].kpi.hrsp,n[0]+=`Total(moy)${dayjs(t[p].header.dtTo).format("MMMM")}`,n[1]+="  ",n[2]+=`${o[2]} (${(o[2]/(t.length-1)).toFixed(2)})${t[p].sessions.total}`,n[3]+=`${o[3]} (${(o[3]/(t.length-1)).toFixed(2)})${t[p].sessions.nb} (${t[p].sessions.nbc})`,n[4]+=` n/a (${(o[4]/(t.length-1)).toFixed(2)})${t[p].sessions.pu.toFixed(2)}`,n[5]+="  ",n[6]+=`${o[6]} (${(o[6]/(t.length-1)).toFixed(2)})${t[p].defenses.total}`,n[7]+=`${o[7]} (${(o[7]/(t.length-1)).toFixed(2)})${t[p].defenses.nb} (${t[p].defenses.nbc})`,n[8]+=` n/a (${(o[8]/(t.length-1)).toFixed(2)})${t[p].defenses.pu.toFixed(2)}`,n[9]+=` ${g}`,n[10]+=`${o[10]} (${(o[10]/(t.length-1)).toFixed(2)})${t[p].coaches.total}`,n[11]+=`${o[11]} (${(o[11]/(t.length-1)).toFixed(2)})${t[p].coaches.nb} (${t[p].coaches.nbc})`,n[12]+=` n/a (${(o[12]/(t.length-1)).toFixed(2)})${t[p].coaches.pu.toFixed(2)}`,n[13]+=" ",n[14]+=`${o[14]} (${(o[14]/(t.length-1)).toFixed(2)})${t[p].bonus}`,n[15]+=`${o[15]} (${(o[15]/(t.length-1)).toFixed(2)})${f}`,n[16]+=" ",n[17]+=`${o[16]} (${(o[16]/(t.length-1)).toFixed(2)})${t[p].kpi.jrs}`,n[18]+=` n/a (${(o[15]/o[16]).toFixed(2)})${(f/t[p].kpi.jrs).toFixed(2)}`,n[19]+=`${o[18]} (${(o[18]/(t.length-1)).toFixed(2)})${t[p].kpi.hrs.toFixed(2)}`,n[20]+=` n/a (${(o[15]/o[18]).toFixed(2)})${(f/t[p].kpi.hrs).toFixed(2)}`,n[21]+=`${o[20].toFixed(2)} (${(o[20]/(t.length-1)).toFixed(2)})${t[p].kpi.hrsp.toFixed(2)}`,n[22]+=` n/a (${(o[15]/o[20]).toFixed(2)})${(f/t[p].kpi.hrsp).toFixed(2)}`):(n[0]+=`${dayjs(t[p].header.dtTo).format("MMMM")}Tot.`,n[1]+="  ",n[2]+=`${t[p].sessions.total}${o[2]} (${(o[2]/t.length).toFixed(2)})`,n[3]+=`${t[p].sessions.nb} (${t[p].sessions.nbc})${o[3]} (${(o[3]/t.length).toFixed(2)})`,n[4]+=`${t[p].sessions.pu.toFixed(2)} n/a (${(o[4]/t.length).toFixed(2)})`,n[5]+="  ",n[6]+=`${t[p].defenses.total}${o[6]} (${(o[6]/t.length).toFixed(2)})`,n[7]+=`${t[p].defenses.nb} (${t[p].defenses.nbc})${o[7]} (${(o[7]/t.length).toFixed(2)})`,n[8]+=`${t[p].defenses.pu.toFixed(2)} n/a (${(o[8]/t.length).toFixed(2)})`,n[9]+=` ${g}`,n[10]+=`${t[p].coaches.total}${o[10]} (${(o[10]/t.length).toFixed(2)})`,n[11]+=`${t[p].coaches.nb} (${t[p].coaches.nbc})${o[11]} (${(o[11]/t.length).toFixed(2)})`,n[12]+=`${t[p].coaches.pu.toFixed(2)} n/a (${(o[12]/t.length).toFixed(2)})`,n[13]+=" ",n[14]+=`${t[p].bonus}${o[14]} (${(o[14]/t.length).toFixed(2)})`,n[15]+=`${f}${o[15]} (${(o[15]/t.length).toFixed(2)})`,n[16]+=" ",n[17]+=`${t[p].kpi.jrs}${o[16]} (${(o[16]/t.length).toFixed(2)})`,n[18]+=`${(f/t[p].kpi.jrs).toFixed(2)} n/a (${(o[15]/o[16]).toFixed(2)})`,n[19]+=`${t[p].kpi.hrs.toFixed(2)}${o[18]} (${(o[18]/t.length).toFixed(2)})`,n[20]+=`${(f/t[p].kpi.hrs).toFixed(2)} n/a (${(o[15]/o[18]).toFixed(2)})`,n[21]+=`${t[p].kpi.hrsp.toFixed(2)}${o[20].toFixed(2)} (${(o[20]/t.length).toFixed(2)})`,n[22]+=`${(f/t[p].kpi.hrsp).toFixed(2)} n/a (${(o[15]/o[20]).toFixed(2)})`):(n[0]+=`${dayjs(t[p].header.dtTo).format("MMMM")}${g}`,n[1]+=` ${g}`,n[2]+=`${t[p].sessions.total}${g}`,n[3]+=`${t[p].sessions.nb} (${t[p].sessions.nbc})${g}`,n[4]+=`${t[p].sessions.pu.toFixed(2)}${g}`,n[5]+=` ${g}`,n[6]+=`${t[p].defenses.total}${g}`,n[7]+=`${t[p].defenses.nb} (${t[p].defenses.nbc})${g}`,n[8]+=`${t[p].defenses.pu.toFixed(2)}${g}`,n[9]+=` ${g}`,n[10]+=`${t[p].coaches.total}${g}`,n[11]+=`${t[p].coaches.nb} (${t[p].coaches.nbc})${g}`,n[12]+=`${t[p].coaches.pu.toFixed(2)}${g}`,n[13]+=` ${g}`,n[14]+=`${t[p].bonus}${g}`,n[15]+=`${f}${g}`,n[16]+=` ${g}`,n[17]+=`${t[p].kpi.jrs}${g}`,n[18]+=`${(f/t[p].kpi.jrs).toFixed(2)}${g}`,n[19]+=`${t[p].kpi.hrs.toFixed(2)}${g}`,n[20]+=`${(f/t[p].kpi.hrs).toFixed(2)}${g}`,n[21]+=`${t[p].kpi.hrsp.toFixed(2)}${g}`,n[22]+=`${(f/t[p].kpi.hrsp).toFixed(2)}${g}`),u=u.add(1,"month"),c=u.endOf("month")}s=""+n.join(" ")+`
la valeur entre parenth\xE8se fait reference aux annul\xE9s
`,Swal.fire({title:`Statistiques du ${d.format("DD/MM/YYYY")} au ${e.format("DD/MM/YYYY")}`,icon:"info",html:s,showCloseButton:!0,focusConfirm:!1,position:"center-start",grow:"fullscreen",onOpen:f=>{}})};var Ue=class{},kt=Ue;K(kt,"init",function(){console.log("%cin initUI",k),Ue.build();var e=new Draggabilly(".draggable",{handle:".handle"})}),K(kt,"build",function(){console.log("%c in buildUI","background-color:green;color:white"),GM_addStyle(` .flow > * + * { margin-top: var(--flow-space, 1em); } `),GM_addStyle(".panel {/* because of stacking context : https://stackoverflow.com/questions/5218927/z-index-not-working-with-fixed-positioning */position: relative;z-index: 666; /*seems that 4 is good*/}"),GM_addStyle(".menuBar {padding:7px;/*for handler*/font-size: 1rem; pointer-events: inherit;}"),GM_addStyle(".draggable {background: transparent;border-radius: 10px;padding: 20px;}"),GM_addStyle(".draggable.is-pointer-down {background: #09F;}"),GM_addStyle(".draggable.is-dragging { opacity: 0.7; }"),GM_addStyle(".handle {background: #555;background: hsla(0, 0%, 0%, 0.4);width: 20px;height: 20px; border-radius: 10px; position: relative; top:10px; left:-10px;}"),GM_addStyle(` .menuBar{ /*Smol Responsive CSS Grid*/ --min: 15ch; --gap: 1rem; display: grid; grid-gap: var(--gap); /* min() with 100% prevents overflow in extra narrow spaces */ grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--min)), 1fr)); /* 20 px is size of handle*/ } `);var e=document.createElement("div"),t=document.createElement("div");t.classList.add("handle"),e.appendChild(t),e.classList.add("panel","draggable"),document.body.insertAdjacentElement("beforeend",e),e.setAttribute("style",`top:-${document.body.offsetHeight-e.offsetHeight}px`);var s=document.createElement("div");s.classList.add("menuBar"),e.appendChild(s),Ue.addButton("collectChecked",fr,{},s),Ue.addButton("CollectAuto",cr,{},s),Ue.addButton("showBill",gr,{},s),Ue.addButton("billInDetails",ur,{},s),Ue.addButton("PDF",mr,{},s),Ue.addButton("SList",we.showList,{},s),Ue.addButton("DbgMode",pr,{},s),Ue.addButton("statistics",yr,{},s),Ue.addButton("Database",hr,{},s),Ue.addButton("about",Gt,{},s);let n=document.createElement("div"),o=n.style;n.id="sttPlaceHolder";let u={position:"absolute",bottom:"7%",left:"4%","z-index":999,display:"hidden"};document.body.insertAdjacentElement("beforeend",n),Object.keys(u).forEach(c=>o[c]=u[c])}),K(kt,"addButton",function(e,t,s,n){n=n||document.body,s=s||{position:"absolute",bottom:"7%",left:"4%","z-index":3};let o=document.createElement("button"),u=o.style;return o.classList.add("button--primary","button"),n.appendChild(o),o.innerHTML=e,o.onclick=t,Object.keys(s).forEach(c=>u[c]=s[c]),o});var br=kt;var Po="#OCAddonsCfg {background-color: lightblue;} #OCAddonsCfg .reset_holder {float: left; position: relative; bottom: -1em;} #OCAddonsCfg .saveclose_buttons {margin: .7em;}",Ro="height: 16.7em; width: 30em; border: 1px solid; border-radius: 3px; position: fixed; z-index: 999;";var bn={id:"OCAddonsCfg",title:"Configuration du module",fields:{nbHrsAfM:{section:["Statistiques","param\xE8tres"],label:"Nombre de minutes pour une session d'\xE9tudiant auto financ\xE9",title:"Dur\xE9e moyenne d'une session AF (calcul du THM)",labelPos:"left",type:"input",default:30},nbHrsfM:{label:"Nombre de minutes pour une session d'\xE9tudiant financ\xE9",title:"Dur\xE9e moyenne d'une session Financ\xE9e (calcul du THM)",labelPos:"left",type:"input",default:45},nbHrsS:{label:"Nombre de minutes pour une session (avant 01/07/2020)",title:"Dur\xE9e moyenne d'une session avant la s\xE9paration auto financ\xE9 | financ\xE9 (calcul du THM)",labelPos:"left",type:"input",default:45},nbHrsD:{label:"Nombre de minutes pour une session de soutenance",title:"Dur\xE9e moyenne d'une sessionde soutenance AF (calcul du THM)",labelPos:"left",type:"input",default:45},nbHrsC:{label:"Nombre de minutes pour une session de coaching",title:"Dur\xE9e moyenne d'une session de coachine (calcul du THM)",labelPos:"left",type:"input",default:45},maxfetchpg:{section:["Application","optimisation"],label:"Maximum de page recherch\xE9es dans l'historique",labelPos:"left",type:"input",default:1e3},datacachelifetime:{label:"Temps de conservation des donn\xE9es dans le cache (en ms)",labelPos:"left",type:"input",default:12e4},checksessionalreadyexists:{section:["Application","Base de donn\xE9e"],label:"sessions: v\xE9rifier existence avant insertion",labelPos:"left",type:"checkbox",default:!0},sizeofcontentlist:{section:["Interface","th\xE8me"],label:"taille de la police des listes",labelPos:"left",type:"input",default:"1em;"},use_custom_css:{label:"utiliser des styles personnalis\xE9s",labelPos:"left",type:"checkbox",default:!1},custom_css_url:{label:"url de la feuille de style (si plusieurs les s\xE9parer par des virgules)",labelPos:"left",type:"input",default:""},custom_css_data:{label:"code css \xE0 injecter ?",title:"saisir ici le code css \xE0 injecter directement dans la page web g\xE9n\xE9r\xE9e",labelPos:"left",type:"input",default:""},alwaysaddcbox:{section:["Interface","Gadget"],label:"Toujours ajouter les checkbox sur l'interface",labelPos:"left",type:"checkbox",default:!0},hackheaderzindex:{section:["","Hack"],label:"Changer le zindex du bandeau haut",title:"le bandeau haut \xE0 un z-index (1000) qui le place au dessus de tout ce qui est pr\xE9sent \xE0 l'\xE9cran, ce qui g\xEAne la barre de menu ; activer cette option r\xE9duit ce chiffre \xE0 0",labelPos:"left",type:"checkbox",default:!0},use_student_cache:{section:["Avanc\xE9es",""],label:"Utiliser le cache \xE9tudiant",title:"Lorsque l' application recherche si un \xE9tudiant est pr\xE9sent on utilise un cache pour \xE9viter de passer trop de temps dans les requ\xEAtes, d\xE9sactiver le cache permettra de toujours faire une requete en base ",labelPos:"left",type:"checkbox",default:!0},support:{section:["","Support"],label:"StephaneTy-Pro.github.io",title:"more info on https://github.com/StephaneTy-Pro",type:"button",click:()=>{GM_openInTab("https://github.com/StephaneTy-Pro/OC-Mentors-AccountAddon",{active:!0,insert:!0,setParent:!0})}}},css:Po,events:{init:()=>{},save:function(){GM_config.close()}}},vn=function(){GM_config.open(),OCAddonsCfg.style=Ro};var _n=function(d,e,t,s,n,o,u){o=e.createElement(t),u=e.getElementsByTagName(t)[0],o.appendChild(e.createTextNode(s.text)),o.onload=n(s),u?u.parentNode.insertBefore(o,u):e.head.appendChild(o)};var Fo=function(d,e){if(!arguments.length)return Promise.reject(new ReferenceError("Failed to execute 'fetchInject': 1 argument required but only 0 present."));if(arguments[0]&&arguments[0].constructor!==Array)return Promise.reject(new TypeError("Failed to execute 'fetchInject': argument 1 must be of type 'Array'."));if(arguments[1]&&arguments[1].constructor!==Promise)return Promise.reject(new TypeError("Failed to execute 'fetchInject': argument 2 must be of type 'Promise'."));let t=[],s=e?[].concat(e):[],n=[];return d.forEach(o=>s.push(window.fetch(o).then(u=>[u.clone().text(),u.blob()]).then(u=>Promise.all(u).then(c=>{t.push({text:c[0],blob:c[1]})})))),Promise.all(s).then(()=>(t.forEach(o=>{n.push({then:u=>{o.blob.type.includes("text/css")?_n(window,document,"style",o,u):_n(window,document,"script",o,u)}})}),Promise.all(n)))},Ct=Fo;var Ad=function(d,e,t){"use strict";if(!d.MutationObserver||typeof HTMLElement>"u")return;var s=0,n=function(){var v=HTMLElement.prototype.matches||HTMLElement.prototype.webkitMatchesSelector||HTMLElement.prototype.mozMatchesSelector||HTMLElement.prototype.msMatchesSelector;return{matchesSelector:function(A,b){return A instanceof HTMLElement&&v.call(A,b)},addMethod:function(A,b,C){var D=A[b];A[b]=function(){if(C.length==arguments.length)return C.apply(this,arguments);if(typeof D=="function")return D.apply(this,arguments)}},callCallbacks:function(A,b){b&&b.options.onceOnly&&b.firedElems.length==1&&(A=[A[0]]);for(var C=0,D;D=A[C];C++)D&&D.callback&&D.callback.call(D.elem,D.elem);b&&b.options.onceOnly&&b.firedElems.length==1&&b.me.unbindEventWithSelectorAndCallback.call(b.target,b.selector,b.callback)},checkChildNodesRecursively:function(A,b,C,D){for(var T=0,w;w=A[T];T++)C(w,b,D)&&D.push({callback:b.callback,elem:w}),w.childNodes.length>0&&n.checkChildNodesRecursively(w.childNodes,b,C,D)},mergeArrays:function(A,b){var C={},D;for(D in A)A.hasOwnProperty(D)&&(C[D]=A[D]);for(D in b)b.hasOwnProperty(D)&&(C[D]=b[D]);return C},toElementsArray:function(A){return typeof A<"u"&&(typeof A.length!="number"||A===d)&&(A=[A]),A}}}(),o=function(){var v=function(){this._eventsBucket=[],this._beforeAdding=null,this._beforeRemoving=null};return v.prototype.addEvent=function(A,b,C,D){var T={target:A,selector:b,options:C,callback:D,firedElems:[]};return this._beforeAdding&&this._beforeAdding(T),this._eventsBucket.push(T),T},v.prototype.removeEvent=function(A){for(var b=this._eventsBucket.length-1,C;C=this._eventsBucket[b];b--)if(A(C)){this._beforeRemoving&&this._beforeRemoving(C);var D=this._eventsBucket.splice(b,1);D&&D.length&&(D[0].callback=null)}},v.prototype.beforeAdding=function(A){this._beforeAdding=A},v.prototype.beforeRemoving=function(A){this._beforeRemoving=A},v}(),u=function(v,A){var b=new o,C=this,D={fireOnAttributesModification:!1};return b.beforeAdding(function(T){var w=T.target,y;(w===d.document||w===d)&&(w=document.getElementsByTagName("html")[0]),y=new MutationObserver(function(l){A.call(this,l,T)});var m=v(T.options);y.observe(w,m),T.observer=y,T.me=C}),b.beforeRemoving(function(T){T.observer.disconnect()}),this.bindEvent=function(T,w,y){w=n.mergeArrays(D,w);for(var m=n.toElementsArray(this),l=0;l0?n.checkChildNodesRecursively(m,w,C,N):y.type==="attributes"&&C(l,w,N)&&N.push({callback:w.callback,elem:l}),n.callCallbacks(N,w)})}function C(T,w,y){return n.matchesSelector(T,w.selector)&&(T._id===t&&(T._id=s++),w.firedElems.indexOf(T._id)==-1)?(w.firedElems.push(T._id),!0):!1}p=new u(A,b);var D=p.bindEvent;return p.bindEvent=function(T,w,y){typeof y>"u"?(y=w,w=v):w=n.mergeArrays(v,w);var m=n.toElementsArray(this);if(w.existing){for(var l=[],N=0;N0&&n.checkChildNodesRecursively(m,w,C,l),n.callCallbacks(l,w)})}function C(T,w){return n.matchesSelector(T,w.selector)}f=new u(A,b);var D=f.bindEvent;return f.bindEvent=function(T,w,y){typeof y>"u"?(y=w,w=v):w=n.mergeArrays(v,w),D.call(this,T,w,y)},f},p=new c,f=new g;function a(v,A,b){n.addMethod(A,b,v.unbindEvent),n.addMethod(A,b,v.unbindEventWithSelectorOrCallback),n.addMethod(A,b,v.unbindEventWithSelectorAndCallback)}function E(v){v.arrive=p.bindEvent,a(p,v,"unbindArrive"),v.leave=f.bindEvent,a(f,v,"unbindLeave")}e&&E(e.fn),E(HTMLElement.prototype),E(NodeList.prototype),E(HTMLCollection.prototype),E(HTMLDocument.prototype),E(Window.prototype);var S={};return a(p,S,"unbindAllArrive"),a(f,S,"unbindAllLeave"),S}(window,typeof jQuery>"u"?null:jQuery,void 0);var vr={data:"DwCwLgtgNgfAUKApgQwCb2BRZkAIDGIyATgM7YC8ARAK5gBmAtABxUYCEjjuADgPY1iARxp8AlrjEA7fFEGJcURKUViARitSIaAD1z1xKgPy5GMXgOIWaAN3FWlKgFYDEVxFNwQ+W3KRxSqMhQfFIKXBik+MRiPGB+xPjU4GA8pABcAPSZ+KhSAHROpFpQYjbE+WFgmVI8EJmkAO6I2MFuYABMAAIAjAAMbMAN0bFgkSNxCUlUKWlZmTS1ANYA5vn4fPVBAJ5FvfnM+R09mTtF+RDShaRUuFr0brgwQ1ExcRxcuNZWAJIAoj0eqYzAhXqMpskwKkMtlcgUiiUyhUqpkViBMsEeNJEEUMVAsWEujYOvkdKTTmJ-HiCYhGGJEIDrrd7m5nsM3mMEJxuPxBIplLhkHRiAKpMgbGIVsgwNoyMDxhyITMoXNYXlrojypVsKj0Zjsbj9YTiaTyahKdUjYgmWywe84KCwNslPA1D5trgAN5wL4GKRgRj0ZCXKDbdK4KgAeR4HlwAGVkFIbgAaUzIHg8JSMUjbfyICCpgBCpSkSwAssh8HHczKIAAxUJgVNUOOIFZ8BQAVR+VFTACU+G6wHxU5GdNsVh5GAmk6nO2pFmAaKmAMKJnAiqBQZsACUQUBs2DE+DwADltIhe7g9wejyfUwBBGLBVOkROkbNuMT0ADcuDgAC+CANE6LrASAKDoA6wBuqg2zwAg5o2AQUDIKQpDULWmbSpeGAUjYCGghMnJwI00ioHwjT5CyxAADJ8Gg0grA++LYrgFD6Is+BgGIoS4AAFCeW5qJWSwAJRenAACQUkbEmfBKPkIQrPxVA0YoDHmlIKxUGJP4+l8hlfGRgSUfkaCoH8h7+rRFoeG4-EAORNMEjmpvQXE8Xx-GIBJ3pGUZsmhKQCnWspqmINZ8TOY0rm4CK+CIGUiCoKmFEEMEUAifgSy6fpAWGUF8mKeFvn5QVAVCVlon8XpBkFQBdUVQQwWhUpfAqY5kUePE5BgI5TWGQB+lySFJUdapNH0Yx2ksTSfjYDKqB5XAHkyF5niTmAnbEFAABqJCkLVklGTYJC4GdcocZ6w31Rd508CQYAqBxJkUVRIQnht+QgCK9D5CK2GJfxmQANpGAAZAAugA1PxoMAHoUNDMNiRQ8MI9DABUYmomI7mebxUj8QWSyINsyZnXIvknRVl2kKDZPbFD7H3dT5VfI1HPxdggiePT+lAathN8VtO1QAACiQwb8Y9xDBtgbhpYgQY0FAYBUzQvn+YZl24II+LS1gMpWBx9xCurmuINz378W9ZmfdKRM-X9+TkYgOiRvQstG4rxASeYjA9GJOsFQbcsKybrNi7tB1kLVoMR8bbhQ9zRlAUZIpLsQnjh77JuCw6esURAfaQR6HFrdxRMCX50lZ3zuBhI0uAS8QmyUog-EimNh7seY3oyd+AkUfgNBYP6APl3GOAyuxHFUCEM06XXMlSaP489eZqCWVFtl5mExCqQAIpGZYro2PXTVoy2pj3CmHmJ0lSQBuD7uQklr-ft61fpMlAS-J+t04D8TQtsGQx0KAD2kqNNq4UqAAFJ8D5HyP4J6V4qAbBCMQdIGx5ZQBWlJZAsUxDxBLmXNA2xf4wNauNFSiDch8HwJIFQIpKEYKwXwHBeDgiEP4DwGgPBqFFTGmFCaDCUH5A8LfCMnDuFcN4XVKSgExLULgJkLGPosb6x4qUJ0nF1o1xoOQVAkhTFnBUJSRy-p9YmK0f+XA2ivgNxzgQQQIobFBBlKmR6O8Uq4DImAEAuA+iSHoE3FoN8tGZDgHrLaAAVCCx8cLsSrhtY6g80k118fxUgfkebZ08Lk3AwBcD9AkiYRyfRHK4Bhn4XA4ZSB-gAcXVmzdcDJJlLVeuvNXGg1QPkLadY1ZQAAJooCPhJHxaB+IDK2mWRsIBaow2DtM1AszBnYE6V3MSYkoaFHEMTRyjABqASLg9PgAieCszATIAx1dQi1UHsPfiToYx8HCXGWKUBcDsAoBxRyWTQgDUHiItqbh25HwYT8YgCU+CHnlmoJQb9YVcIwdlVY7dFioEYHI9IIpUp4qRaJQhUkXFSD-i-aS2RgR3AAJf0GkKQmuWgVD7nzD1FQGwIAQEWKQalORgq9RlGkVmoNHI9DcrgRyHQpWOQAMyOShtJJQwrECio4uKyVyYZVKpoUmXq3yACKWstYz3VazL5wQLhiB0NIfioKAD6WE44ZCbiM5MBkZJyUZcQCAhY6DDikPEj2YBwyOTjDQMo65cAQ3lrCn8bkvWyUTIlKAAaoShBDToMN0q250vwHSrQNiIaoQTUmr4MkeDtxWD3Ug5q5h+BFaQT1layXdTIIgDNQa3VgGIFrVtuAZJUzEF4omZZlBvknOGlcChCDBlFcoeIIoRBWM9TJc0qBoweHDECop3gghQFXmvWBdDVKSKtVAdIm7t1SFJTJe2VFzSkEemAQgVker8WfmvdpK5jHDggB+-0TkXJQCld+mSnpcALjUEi5Q4Y+0DruK0MQV6vS4BlDm8MUYADS+RbivwAWvKST9iNKJfqmZ+ZEty3t3SLYm2tv2nrEfQi93z0jUagLe0lAF13r1HWXQIbg6OGO8ge4IIcIPMfaqxtjwRr0CekW4e9UlH3UUpK+99UV+K-v-ZsIDYAQPfKlVBmDcHe39sQMrHAqHwxQcw7myB5gHMkBQPkK2uBCO7OfrxqjqGoArhCOQETDzibiaPaC71tCWPnskfkS9HH-OBb4OQHjfHN3JeC-c9J4XJPEek-AuLKCEsZaC5ecjvmN2juPku9uYZstExJj4CTkWwVnqoEV4r7HN01f8HVtLz9pJc2kvq-wbMtYvVwKDVOKrsBuNhT1Btf9RvxEemEKAjrGggFCpGYgrYlDcVZqCniYBkVSXDSahQdg1aIAAF4XQECoN8tg2wkC0MQJNMlwDQCMuGAABs-YAShJyBBgCubblJKTkHu2BulMpAhayGMD6R8AZLAEZfuVAfVUdSWAEhFCaEMJUAMH62to62CA+kAI+Io7qCEHEIlW4YosB04h4zjD2wYzJFHcW24VtqBSBGYMbkRBAjIoXJmzwshjxLAIGz8IIIZLxIEPED2-BiAmxgoGvitOqDvmaMQHozJpTIEYJWDa1A1dcLAI6zKtxZCE+oKBjo2ZQIpVuG8xA1AJdBrYJGHDQwfehBx3GOlUAC0bUPvyFQOBzNa8l2Y6g+u3AdGNzgM3oXLc6HVzb0Il4CfoSd98l3-hnTu451zqgQe70wH94H7XUgcdDAx1ALH2Am+ohiFBGSf2+PVsQBfKQvqIAhfScgVMahkz4GTKlGmn8ovFRi+Pyf0-Z-kakqq3Azr8w8Fdd+vtHpWvb4gLvw6rMABScZIynnyHLcgsymGb0niINw2x9uIG4lwpyoNmde8wfLqgKGAadzYILWdfKSWEaLGTVSENE-dIK8Y-U-MgdfV+L6QgHyY9GSSAxfaAv7JBP4HQRKOIGuAAEk9EQAAl72lTxR4SgB-AxVrQEECFxQUi4XxRSgGkpRkkvVQW20aAOlKDHVCAnXQmQEnH4j+wnUSAkF8Hp0hysEWAUFZWQ10FwEuQ2lID+3APJX0GCHIC4KIzaxi0v2v1v0Oi7g3gnjAHyBf2IDf3ZU-yPkch-wVlZwZ0vCALEhAOpl2S4OyFtk9w+S3xdTP3+QBWxRVmxFQBqQAB8Yjgid9XV54OJBctw8sh5vYEiT8kiwj3U0jWseDSA+CBDR0nZhDJ0xCu5JC3B8AZC50IdSAxAFCwhkNNBtA9B1CiZNDtDelPAgwoB9Dv1X5v1sDRFcCkFYCkCWFcAyDEDXVKDkxMFWD5F8F70dDPQ8weB0gehUwrZ0g5jDohZ-4+MNFn4nArtkBKRkM7AmjeAnpbjSA+RFDkMZRQs7hHI6VrIOUbE5smhSFCBHhHiHBHJFg1CaBFBHIhQ+0lCBR2UrC2jFA8AX8tY34+jQhQsziFAYxVCtBXio5UIWoDU7j1tNttslBdt39uJUxzivAupPByANc7h0TvheB25HpJwHAFBiA6VHj1ZpRcBJFcAABzvAFov0ULFox6FQZ+LGGJB9fzWjBrbyfcTAgrcROTK9Tjbjdfb9fcGwrWOwyk4cJw-IEnCAMnaIrwiyAzfeeHByRyaXHKKVR1UXVAJQU2JUhjSTKTKA8KPA-AAzXAeJEgLacMMg60DcLaBYpY7BXBBRAhcAn0okq3DXFiDbc3GuSuejHyGwMAdIteW2SKawyM7AC4aUAEo6RyavfpE3DPC3KgFMm3O3Tw-Mk9X0iaf0ggnPXAB8WiWiOXdw3vGMtg2glTLAzINbfcUknbPbBw6wg4q6aVRs23LcRyP8GlDYNWPIRyeIYxBQUhCDGSIs9YdxHqYM4gLafU1-I0r-Zw3-Nw48Dw4AjzDiEwm-PrJib8KhT0PYhs7Pa3FcghRqQ8iA04RABcFYDkrgmSIdHgx0pYQfYfYRYjIdQwmSclaC26fLIVN+f8jXSMMIW3N4rM0TBjXM1sqSQs3M-IEs6ww8iAcsiCSs6srxU3DM0ILPHPR1PPQAgaCi0CycjbLbGco0-IBcybLqPC3PMINc3ADcgQVvKQHc2xfcsAEC48seBbf0c8y82w+wg7Y07-e8--dw3irwl83AN81BPtT8+gb8385cni4C4jKSIdNUlSf0n4JMdoQUJtC1fk-gRojaBpGYz0HgraS7M1EVZZHoaMmg+Msc2C75N2byjXSKxABtH2EkrbaUZXBMQ8ZMcK7AdKzKsSFZUjFyzY0gVBTMR8-iIqsAEq6KsqnYkJVMCVNQTgkCng6QBkxq01DK6KwSx1M06UQq5KiKga0qmGDoCq4jKqmq0oYGBqpq9VZZDoVMPodqnofALqlyoybITfR1NQMATwDiBqxCpo-1BvZCteIdbIY6069YJapYW6mCqSOCl6y6v1N6l+f8YjDCiDLCteDRQUN40hRxOUteRstMoi9JMqCDRsgixAOGxrBGteYbf+IbB0ERVbRMKcnKsAPK8UBQa6Z+E7M7C7FE67JQe7a7J7IUQ8KUYgd7T7KSb7KAc7XAAHNePHMoZNKSHQRgVi6gUOIdGSWPRwOzO6NtKSHoOzMxcMfoVMMAJFdIZyJcYtZ6KVBzcNP4TWsQdcUgGpXzAqNeDoBW0dcMDoLajDNW5ySdLonW0NcNVsdCJ2zzQdQKGSeVS21AcMeVW21Wq9DWmgLW0gF0i0LhbYZ2rDaVHcKOmIF-FQOHMOw2-0Y2z2mW8WqSAAFj9vDFzqDvtpAETu2EdXIHdtCEdRPABNjtzUcgrGEBRPZIUErsaOChNq9sKhkgAFYC7cBe7i6Q7jZkB67w1j5QgpA6UWgVB0xaqvpkpM7Tae6qVZaAIqBv0cdcc1Z4BZbgBuQeYxsgisJUI54Ig7pebT6cJs614haSdqBQZR1djQDEAWZpBcBIw1BzjuIpF-QYhlBXlkBzMxJN6zaZJ0gmZqBydL6ZI96ApebSh4Hva0cqc6AK8-8ASco3QdBbh0hdcrY3ZloGljLCHg6+dX7qAKdwG0dUI1B9wGkH6qBCHydcAhaHNqAyHQ1BhMg6H9xkHV6kcxABHebMhr6ZRt7ccFhYBv0hgkIcde9n5+9vqR9a5+559QLBQY8IIRRpi8AsGlgcGAlSFgkpA+AzFJAvB-19BUMo4ddTFhw+AmMcLuLLUJrsAJZLlBFaorzDS5yuE0zv9PcKADGcGoYn7UBPCuDN8JAOJuKlIPAVgglUxbdYU2lEAW4nx5YqExA9J-qZISd+I-wxAuA-xUniAn6WZrorbuLKmiHUxf99i+A6nf8p8IIcoUomm6mDGUpMb0Lej0NNj0gNrxtEBwxymiMAEsLRo8aSSvFSb58KbEAuaqBLstwBR5mUxn4OauaebcdS8wIsDtEhJpEAGrA0B0wwA6VkNcBZgYRBVsFSg1B1hNhMhsB8BMgRQVgzSHmuEnnGAvmzTGAOhe7MhbmVR7m5EnmXmthKIpAl5UBMgegABOVFsF2U5+DRPhqAaiHCdIdIZAegKOT0OSeHXNKgAAHUQGYHlQADYqAfxArmVQhwxNwnZDwfwlAiXC6+geAdAfxhwtjB6+WfwAIMWCmuEIAvRn1sJ6sLTGWLImIlb8x6DRJGDsVwwABiegZFnVnV+grhd7JWvlvwBSUdXATV-AHa61n8Bii86Qa2kUKVqE8x0JF1215AIWsiVAIJcMWlvoXl-l3xLSFYZViAUV5+M0yQWodBz0BgrFQILV+gZNg1lm4TMpE1sac1zV5F-AXN3NiNiVv1aDBvL0eNpg-21QNEMAWtcmBVneJVkJfIAAdhVe9d9bKQDYQVTaNZCULakijer3SG2wRTLbVYTcrfbFb37ajexa9GDcbb6HyF7vzCbZXalaXfXb7aIyjbQfiE9AXe0nDCXdbfDbtZWGkEYCHAA2PeXadZnclejep3SAMDHhUE9BVxLDGdwHlUzbNdMSndQH7a6CwHNDwBJkvfbZAB5cDb8lNMldtx3j4k9AtMYHEdpCwXHiTGtoDZNZ6HoGIB-FQ6lCFZ6FpZFdfng79UQ4ok8Dnc9AczN1KBWCkFZclHACI67xYLkAgFY7KTktwA6FFYFLNJo51xjabBE4Q4sj4mry9FQ8w94+toE-lVFaIxeDdyb13dQGoD7AfAAC17dUJC9idpOkO70wb6yKdUGJOMHWcP9DG+BcHE8q8jS082LM8qA+oK65yjB7d2myZu9cc52mH8A1AjTdtTw+AwA2BQ8DKiYo9nieA6UYgfAFAjAkdgH+HAcQuuFqAfW6x24IAjPHc1IcI2BtkbnUA6UJdMv6GZGbPqcXOCuiuPdOc-95nbgGKdBqAbbA6g4Xd5UjcvBpBeu+h+gBvGAhv3O6yiYndsBHV5mRrWu7hazUJtIaBKiKBAUPsm9cviB8uia+ASuTPOuYBKvfBGUpA6vsvGv0HdcfXlc2vK9OuvBPWxv+uehBvhvLgpAxuJuvupvhvWLZuOKvOFulvhwZv1uVhNvJxtuCPHIO8zSm8X1EwYAouZRwxkVGV1ZdGgTETVu54WjShLg54X9o8Foq6kwClLBp7lAXg1sFG+8RQVHwwnMNHv01BzwUpKuzZH8rDNkwA-glArDCxtgfh1kqyjTgCemgPv0WvNhWZLCt4toRfviwBxfJenJFeIBnzX6uDHvzH+ex5Be1fReeotepfdf9f2Zv1v1bZufIk+f-kMNLNY0IYBI7gwBCulfciqBbg4jvfldkiIxdJcBWzCjijghSiNoRCp0qipDaibnSAw8P9I9Hhnj5mwT6UNgASYd9G0IYS-A0-QstDoKdD+jBiMb8nlEv4BnWshn5VKNiM9jQZDyVfJ5zeNerenJwu5zZeAuUo+M15O-rDu+xeJfrefeivgDn1gGlBTFcjEN0u8iflwwx+hf1fJ-tfHIbfzLX6R+N0BfVfsBt-Lep+deju5-KQF--Fl-3eTBUj1+mTTfT-heLf-Re+9-r+D-qYINlUGNSlJVn4xboYwfHHyEenUZi1AoepPSjeRNKicZOSlK0jvBtJ2RD4TkedNpEQDOlXS7pVmHugwIwCKouNBaGAG2S+8IAqNPiCRVCw5k8yrWSit7GPK0Uyyb6Jit-hB7sU-u4PG3EtwI6bAzKFFTfBYlZh1hzcggekBUCebVUru6yY3uYD4BEN540qCxHtWIy2wxBuRCIldxSj8V3KqkJBD8D7B9g-gK4SMHtD+B6dCwtEP4LgGsF9hIwfYXAKeD+B-Bj4PZFcCuD+Bxg4wQZSMPGDPj2CHwEsCWLRB+ArgHw8SH4NflwB7QHwfYOML2BApVlx2FbbjmwQJR-giUqEHKImhArgF+mhSaClShcraDVuuwaqnEGIAd8T+XfM-p-016X8f+yuW3iiQ4ggULED+N-g0I-498Wh+-bwmARAp-0t03sRyN4H9AgBgCo1QzFQFGSLDRkjAMsGWEYDHxj4Y5KSOQCgD-RxKYqT0IINUab8J+F-XfkMKtgq0+A16eoeP0aEDDzhv-YYRQUAEoU0K7aEoUDWgpJkxsfUB8HBjypzk+enpBgRRSorFkQypZBihwMAbOFuBnnbzjsPT5+cWyTAoyEdTUDK9bhW-Jod-374GVB+DnFKKUPXjYjThX-QYTP02A383wcGJfr8i3xqAuhZI+4Tv2n5tCvC8-OkazHYCMjDyaFYGkc0s41wIa4rNeH1EoFFcaBXpaCn8IBF8AjS2yDAmnAqjDZmoB1QVDgXgRIJQgt6CwFcg4TLE4yqxQaKqO7pGRSsKWb9pAIkhQJaY6ogKHAINL6V0+t5KjtQOQHAEnW8KRAOgIPgOR-8iYScAgVFyt43ApogKJViGx-wZmxJKcnMKOzk1SElNaVGs30CStpQbNHZv9kBxIQBaQtEWlQDFprxJa8Ge0avXlroYranbdyBmLDSOQigwKFWi7WlSNilKWdGhhbSrGVsbatYv1NKHVr4BSANgcetQWHFd1b6MkWBmvRzob0t6sjXegLQPqfAe48QE+jvjPoK4RGaOdDpOMFqBg8uVACJi-Wpjv1PAX9H+tYR6gAMjopYvJGAwQYQMoGVAGBigwEb70kGe43HHuzs7-4HOODPBgQ1fpEM8GpDYCXMIobUwqG74nOsFyy7r8mGLDYhuw1DScNgJDmHhtixgmiNPxKDIYOh0kZDBFxojeRoNh7ws8B8oQYfOz1tHQIQaYLNCBhh0b7k56cuf8U52MZBIm45jc1hIF5RjZcedjTwOa0cY-D4grjc6u4zACeMrkPjeAf42ICBNnCwTUJk53CajoomEGGJqzHiZKBtIyTLfCQA9LtIsmyAHJnkwgyFNimpTQybCkqZHYamzTMQPsmfpNwFYXTZyZUAVhtMiR-tWpp5Ll59NihjcKDEM1zonitY4zIyYYSmbLZthxqKaiKivJax4YSjfGkJTJKIAKSc5PvOlMW44R10UMLwkEg8D8QBIPcNWHmWgHPxRBjqY+CJA-gcQJB3EKQW4HyBLBjOcg8iPxEUFqEVBrvRyPVKL4aCtBdUhqaTVd66Coi+ZQwdClMHmDLB1gh8LYPsGODnBrg9wZ4IfDeDfB-g+JIEKvxlgQhYQiIVEJiFxCEhSQlIWvDSE5R1WzBPFNkJaixliUOUY2t+nXyA0saG6MaUX2V6-TyAt+PtM-BeQVT1YzwzAjSj7TvgzSjwMDIOHOKq5PA5oCUpcRFDfojqKM1mGDOsKEMCUNAYGKAmTA6BaJAkT0JInHxTYyQmxKGOGDJBWxGoqYG6BJChnywkwUbBGenwwzmMUZQaMUHYQEhMx0gmxCKWMythzVN8pAHcJACgDUApSNzbkryVngMsMZc2XXm0g9TB9jea-LgiMTBaNF+QcuBdJoBSRLpUSa-VMASWz5KUzZ8s6tJ3HNnco4giAB3uEn4iLdjwoMeVOEz6BVNXeK-TAuvCpFSspIcTFGV7PCY9AZsxGI3kOjDmezvZoMDoNHLbJaiOySCHng43MZ7kieCgMgrr1fjcB85R3BYrIiNGjkUC9vAspkQ9n4BQYUcj3l8Frn1z9kL5V3n+S4p24Q4clMFg2jKQQYaUOc0uioATH0MTwOciGrFG0YKA88KlUxB-StACQScb8MBC1B4DbA5qZAu8YmJcqVioM1Y5WnbRDr+Aw6nKUcY5H1pp0jaE4lyl2P3k9jh66tduk7WbFx0I0jtTulnRcq+1uxAdR+aHXDqR1-A0dc+QnWAVJ0JsuAVOmBwzo3ziM+dX+bgCLoq0S6ZdHztTxrqVgII58puhT1bpU8O6SYOBWvH7qIKh6KCkeq0HPmT0pA9PAUPPSWrstlAxCmcbLSOr3YOIF49Pn-RsqAM7xLMsFoU14nnjv63C68fSFvF388kIcQwXeIiZFTX4HiG4goGeIQpZQ7xd2HoD-DIpe6b8MbPLL7QCAbAdKLSb8S7LW4qGf4SyV-j1hiAKAjqW7Ak30kgAg4xTGABQD6DWTGAIg34sGTgyngFYOk27JUxbk0UkUpQ2aZxlwo54rwpAPxUoACVYAihpAcxYyRhivkr875GytpC-IOpSxws+JYgESVWZWK16AGdaEbLxIkUyuN8rkkKXFK0owcxpcrjEhBSyh4o6WdAEsUQYpZMs9JX9mAB4AHucLBFrcF+gqx8uJudIA5gnKoRpAP4edJ2jAAUA6ATAZgMmHDIyA0unYPsJEM2D8AwgwGFJVJVaXMgRlmkTigBTIIJIkkOEWqABGuChA2Ay5a5dgESSIAlRrSx5ddwxAwA-s0FbIL0ugD9LgAPAGAFc3DyLLJwVhG5i8s9BmMqIcwpyEsNGSrCNhA0B5W2MdmWBqqkiIYGCv+Vrwhib8AYgoCgw0pmgASRMGKGiXW5fKSIt4ifTv4DzeGFobGcoEqnPCyyQiPQHaIdSJgxADFNDDoEajgEaUnwUsdzNpUa5TF4k27BQGmzQVJZIqR1I2R0nhzk5Vi7CmnJUi1zN5EGNQA2H7FgA3y6qz2bnX2TyCypvU5Qb-lUENiQoKA9YEP1QAGqjV0IlcHGD2hfB45dci1aaW6lqF1GtqwJQNKHEjivCcvCDI73dXShPVe0CioUyOp2LbajqCABQE2KqqpKTipJiAB-COoxAwANNWUzEAwxUYTAowtAUzWNlQYBaoqSSNtjVqpKtagKS6v4pSQHFt+YxEslr4uVPQNTfGCBQ3RTKPAGwLQDsr2Un488wGVAOUqkRSUqlUAZXPGtyQqqa1daryVgEaVUDmlfAXZEf2IyNMm1OeFtfslaZDqpILYh0uOIvXvCZIRQ9pRjSBrRrvYhqusW+UTVf5k1HilJumuPXW4c1QSfNYWuLVb5S15akCoYP-Ua5T1D6xtWuubUbq5e7aztQIiKJlSL1-avyYOpcqj8R1Wy8dbsovhTrDlhmKyh+RyV2VZkc6ypdUr4C1LoNYAU9Zuqsze8d1Ws3ZGJAPU-p3JjG5jeetw1Hk35bYxyLeqHUPr3hAoiDD0s6WyyqAwAXeirOIxJq5sBan9VvilZxNHFek3NSWqLXhswNZanxb1DrCoYiloa7mnCocX8aFYAER1K8qJq3KukXy2YsEo3WhpKCh5IFVAH6WHkgcwjECoMua7nK0AYyv6JMpwDTLQ0syy4hSkWV9QVlDAFgBss9DWaN1rFOcYJvejwsLlVAMgqQFM0JLbNbAVzTZqwAAR+IpW9zTmmcq4bAtvyvzayr+XPr5qsm9JfJukYwAlNWNb2jwV9RdwSBEtZMd+0cimbCA0glQCsDpTT1FZ7ACtI+I5o5jmodfNHPI3y2yaAIcjMoNhKkiKNwGPqK6t2izRXr6Ih4UMHNtgZ9MpmdUV+IZGAh2hOQged0HhA5rwAgAA",method:"decompressFromEncodedURIComponent"};var wr=function(){var d=String.fromCharCode,e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",s={};function n(u,c){if(!s[u]){s[u]={};for(var g=0;g>>8,g[p*2+1]=a%256}return g},decompressFromUint8Array:function(u){if(u==null)return o.decompress(u);for(var c=new Array(u.length/2),g=0,p=c.length;g>1}else{for(f=1,p=0;p>1}b--,b==0&&(b=Math.pow(2,D),D++),delete E[A]}else for(f=a[A],p=0;p>1;b--,b==0&&(b=Math.pow(2,D),D++),a[v]=C++,A=String(S)}if(A!==""){if(Object.prototype.hasOwnProperty.call(E,A)){if(A.charCodeAt(0)<256){for(p=0;p>1}else{for(f=1,p=0;p>1}b--,b==0&&(b=Math.pow(2,D),D++),delete E[A]}else for(f=a[A],p=0;p>1;b--,b==0&&(b=Math.pow(2,D),D++)}for(f=2,p=0;p>1;for(;;)if(w=w<<1,y==c-1){T.push(g(w));break}else y++;return T.join("")},decompress:function(u){return u==null?"":u==""?null:o._decompress(u.length,32768,function(c){return u.charCodeAt(c)})},_decompress:function(u,c,g){var p=[],f,a=4,E=4,S=3,v="",A=[],b,C,D,T,w,y,m,l={val:g(0),position:c,index:1};for(b=0;b<3;b+=1)p[b]=b;for(D=0,w=Math.pow(2,2),y=1;y!=w;)T=l.val&l.position,l.position>>=1,l.position==0&&(l.position=c,l.val=g(l.index++)),D|=(T>0?1:0)*y,y<<=1;switch(f=D){case 0:for(D=0,w=Math.pow(2,8),y=1;y!=w;)T=l.val&l.position,l.position>>=1,l.position==0&&(l.position=c,l.val=g(l.index++)),D|=(T>0?1:0)*y,y<<=1;m=d(D);break;case 1:for(D=0,w=Math.pow(2,16),y=1;y!=w;)T=l.val&l.position,l.position>>=1,l.position==0&&(l.position=c,l.val=g(l.index++)),D|=(T>0?1:0)*y,y<<=1;m=d(D);break;case 2:return""}for(p[3]=m,C=m,A.push(m);;){if(l.index>u)return"";for(D=0,w=Math.pow(2,S),y=1;y!=w;)T=l.val&l.position,l.position>>=1,l.position==0&&(l.position=c,l.val=g(l.index++)),D|=(T>0?1:0)*y,y<<=1;switch(m=D){case 0:for(D=0,w=Math.pow(2,8),y=1;y!=w;)T=l.val&l.position,l.position>>=1,l.position==0&&(l.position=c,l.val=g(l.index++)),D|=(T>0?1:0)*y,y<<=1;p[E++]=d(D),m=E-1,a--;break;case 1:for(D=0,w=Math.pow(2,16),y=1;y!=w;)T=l.val&l.position,l.position>>=1,l.position==0&&(l.position=c,l.val=g(l.index++)),D|=(T>0?1:0)*y,y<<=1;p[E++]=d(D),m=E-1,a--;break;case 2:return A.join("")}if(a==0&&(a=Math.pow(2,S),S++),p[m])v=p[m];else if(m===E)v=C+C.charAt(0);else return null;A.push(v),p[E++]=C+v.charAt(0),a--,C=v,a==0&&(a=Math.pow(2,S),S++)}}};return o}();var Ho=function(){var d=[{id:"/views/test-swal-sauvegarde",path:"views",file:"test-swal-sauvegarde",ptr:vr}],e=function(t){oCurView=d.find(o=>o.id==t),oCurView===void 0&&console.log(`%cError view ${t} could't be found`,me),oCurView=oCurView.ptr;let s=oCurView.data;return wr[oCurView.method](s)};return Object.freeze({load:e})},Uo=Ho(),Sr=Uo;var qo=Object.create,Sn=Object.defineProperty,Go=Object.getOwnPropertyDescriptor,Vo=Object.getOwnPropertyNames,Qo=Object.getPrototypeOf,zo=Object.prototype.hasOwnProperty,Wo=d=>Sn(d,"__esModule",{value:!0}),Ko=(d,e)=>function(){return e||(0,d[Object.keys(d)[0]])((e={exports:{}}).exports,e),e.exports},Jo=(d,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Vo(e))!zo.call(d,s)&&s!=="default"&&Sn(d,s,{get:()=>e[s],enumerable:!(t=Go(e,s))||t.enumerable});return d},Zo=d=>Jo(Wo(Sn(d!=null?qo(Qo(d)):{},"default",d&&d.__esModule&&"default"in d?{get:()=>d.default,enumerable:!0}:{value:d,enumerable:!0})),d),Xo=Ko({"vendor/cross-fetch.js"(d){(function(e){(function(t){var s="URLSearchParams"in e,n="Symbol"in e&&"iterator"in Symbol,o="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch{return!1}}(),u="FormData"in e,c="ArrayBuffer"in e;if(c)var g=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],p=ArrayBuffer.isView||function(x){return x&&g.indexOf(Object.prototype.toString.call(x))>-1};function f(x){if(typeof x!="string"&&(x=String(x)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(x))throw new TypeError("Invalid character in header field name");return x.toLowerCase()}function a(x){return typeof x!="string"&&(x=String(x)),x}function E(x){var M={next:function(){var $=x.shift();return{done:$===void 0,value:$}}};return n&&(M[Symbol.iterator]=function(){return M}),M}function S(x){this.map={},x instanceof S?x.forEach(function(M,$){this.append($,M)},this):Array.isArray(x)?x.forEach(function(M){this.append(M[0],M[1])},this):x&&Object.getOwnPropertyNames(x).forEach(function(M){this.append(M,x[M])},this)}function v(x){if(x.bodyUsed)return Promise.reject(new TypeError("Already read"));x.bodyUsed=!0}function A(x){return new Promise(function(M,$){x.onload=function(){M(x.result)},x.onerror=function(){$(x.error)}})}function b(x){var M=new FileReader,$=A(M);return M.readAsArrayBuffer(x),$}function C(x){if(x.slice)return x.slice(0);var M=new Uint8Array(x.byteLength);return M.set(new Uint8Array(x)),M.buffer}function D(){return this.bodyUsed=!1,this._initBody=function(x){var M;this._bodyInit=x,x?typeof x=="string"?this._bodyText=x:o&&Blob.prototype.isPrototypeOf(x)?this._bodyBlob=x:u&&FormData.prototype.isPrototypeOf(x)?this._bodyFormData=x:s&&URLSearchParams.prototype.isPrototypeOf(x)?this._bodyText=x.toString():c&&o&&(M=x)&&DataView.prototype.isPrototypeOf(M)?(this._bodyArrayBuffer=C(x.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):c&&(ArrayBuffer.prototype.isPrototypeOf(x)||p(x))?this._bodyArrayBuffer=C(x):this._bodyText=x=Object.prototype.toString.call(x):this._bodyText="",this.headers.get("content-type")||(typeof x=="string"?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):s&&URLSearchParams.prototype.isPrototypeOf(x)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},o&&(this.blob=function(){var x=v(this);if(x)return x;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?v(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(b)}),this.text=function(){var x,M,$,O=v(this);if(O)return O;if(this._bodyBlob)return x=this._bodyBlob,M=new FileReader,$=A(M),M.readAsText(x),$;if(this._bodyArrayBuffer)return Promise.resolve(function(B){for(var I=new Uint8Array(B),L=new Array(I.length),J=0;J-1?O:$),this.mode=M.mode||this.mode||null,this.signal=M.signal||this.signal,this.referrer=null,(this.method==="GET"||this.method==="HEAD")&&B)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(B)}function y(x){var M=new FormData;return x.trim().split("&").forEach(function($){if($){var O=$.split("="),B=O.shift().replace(/\+/g," "),I=O.join("=").replace(/\+/g," ");M.append(decodeURIComponent(B),decodeURIComponent(I))}}),M}function m(x,M){M||(M={}),this.type="default",this.status=M.status===void 0?200:M.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in M?M.statusText:"OK",this.headers=new S(M.headers),this.url=M.url||"",this._initBody(x)}w.prototype.clone=function(){return new w(this,{body:this._bodyInit})},D.call(w.prototype),D.call(m.prototype),m.prototype.clone=function(){return new m(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new S(this.headers),url:this.url})},m.error=function(){var x=new m(null,{status:0,statusText:""});return x.type="error",x};var l=[301,302,303,307,308];m.redirect=function(x,M){if(l.indexOf(M)===-1)throw new RangeError("Invalid status code");return new m(null,{status:M,headers:{location:x}})},t.DOMException=e.DOMException;try{new t.DOMException}catch{t.DOMException=function(M,$){this.message=M,this.name=$;var O=Error(M);this.stack=O.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function N(x,M){return new Promise(function($,O){var B=new w(x,M);if(B.signal&&B.signal.aborted)return O(new t.DOMException("Aborted","AbortError"));var I=new XMLHttpRequest;function L(){I.abort()}I.onload=function(){var J,H,P={status:I.status,statusText:I.statusText,headers:(J=I.getAllResponseHeaders()||"",H=new S,J.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(Y){var F=Y.split(":"),U=F.shift().trim();if(U){var j=F.join(":").trim();H.append(U,j)}}),H)};P.url="responseURL"in I?I.responseURL:P.headers.get("X-Request-URL");var R="response"in I?I.response:I.responseText;$(new m(R,P))},I.onerror=function(){O(new TypeError("Network request failed"))},I.ontimeout=function(){O(new TypeError("Network request failed"))},I.onabort=function(){O(new t.DOMException("Aborted","AbortError"))},I.open(B.method,B.url,!0),B.credentials==="include"?I.withCredentials=!0:B.credentials==="omit"&&(I.withCredentials=!1),"responseType"in I&&o&&(I.responseType="blob"),B.headers.forEach(function(J,H){I.setRequestHeader(H,J)}),B.signal&&(B.signal.addEventListener("abort",L),I.onreadystatechange=function(){I.readyState===4&&B.signal.removeEventListener("abort",L)}),I.send(B._bodyInit===void 0?null:B._bodyInit)})}N.polyfill=!0,e.fetch||(e.fetch=N,e.Headers=S,e.Request=w,e.Response=m),t.Headers=S,t.Request=w,t.Response=m,t.fetch=N,Object.defineProperty(t,"__esModule",{value:!0})})({})})(typeof self<"u"?self:d)}}),wn={url:"",query:"",target:null,fetchSize:0,labels:[],rowTemplate:null,callback:null,reset:!1},Er={sql:"query",resetStatus:"reset",chunkSize:"fetchSize",rowHandler:"rowTemplate"},Ar={2014:{apiEndpoint:"https://docs.google.com/spreadsheets/d/%key%/gviz/tq?",keyFormat:new RegExp("spreadsheets/d/([^/#]+)","i"),gidFormat:new RegExp("gid=([^/&#]+)","i")},2010:{apiEndpoint:"https://spreadsheets.google.com/tq?key=%key%&",keyFormat:new RegExp("key=([^&#]+)","i"),gidFormat:new RegExp("gid=([^/&#]+)","i")}};function Dr(d){let e=d?d.f||d.v||d:"";return e instanceof Array&&(e=e.join("")),typeof e=="object"?"":`${e}`.replace(/^\s+|\s+$/,"")}function ei(d){let e=d;return typeof e=="object"&&e.jquery&&e.length&&([e]=e),e&&e.nodeType&&e.nodeType===1?e:null}function ti(d,e){d&&d.insertAdjacentHTML&&d.insertAdjacentHTML("beforeEnd",e)}function ni(d,e){return` ${d.className} `.indexOf(` ${e} `)!==-1}function ri(d){return d&&d.tagName==="TABLE"}function Xt(d,e){return`<${e}>${d}`}function oi(d){let e=d.num?"td":"th",t="";return Object.keys(d.cells).forEach(s=>{t+=Xt(d.cells[s],e)}),Xt(t,"tr")}function ii(d,e){if(typeof Event=="function"){let t=new Event(e);d.dispatchEvent(t)}}var ct=class extends Error{constructor(d="",e=null){super(),this.name="SheetrockError",this.code=e,this.message=d}};function si(d){let e={};return Object.keys(d).forEach(t=>{({}).hasOwnProperty.call(Er,t)?e[Er[t]]=d[t]:e[t]=d[t]}),e}function ai(d){let e={};if(e.target=ei(d.target),e.fetchSize=Math.max(0,parseInt(d.fetchSize,10)||0),!e.target&&!d.callback&&!wn.callback)throw new ct("No element targeted or callback provided.");return{...wn,...d,...e}}function di(d,e){if(e)return{data:e};let t=null;if(Object.keys(Ar).forEach(s=>{let n=Ar[s];n.keyFormat.test(d.url)&&n.gidFormat.test(d.url)&&(t=n)}),t){let s=d.url.match(t.keyFormat)[1];return{key:s,gid:d.url.match(t.gidFormat)[1],apiEndpoint:t.apiEndpoint.replace("%key%",s)}}throw new ct("No key/gid in the provided URL.")}var li=class{constructor(d={},e=!1){this.user=ai(si(d)),this.request=di(this.user,e),this.requestIndex=`${this.request.key}_${this.request.gid}_${this.user.query}`}},$t={defaults:{failed:!1,header:0,labels:null,loaded:!1,offset:0},store:{}},ui=class{constructor(d){if(this.options=d,this.index=d.requestIndex,this.state.failed)throw new ct("A previous request for this resource failed.");if(this.state.loaded)throw new ct("No more rows to load!")}get state(){let d={}.hasOwnProperty.call($t.store,this.index),e=this.options.user.reset||this.options.request.data;if(!d||e){let t={labels:d?$t.store[this.index].labels:null};$t.store[this.index]={...$t.defaults,...t}}return $t.store[this.index]}get url(){let d=this.options.user.fetchSize,e=d?` limit ${d+1} offset ${this.state.offset}`:"",t=[`gid=${encodeURIComponent(this.options.request.gid)}`,`tq=${encodeURIComponent(this.options.user.query+e)}`];return this.options.request.apiEndpoint+t.join("&")}update(d={}){$t.store[this.index]=Object.assign(this.state,d)}},xr=class{constructor(d,e,t){this.num=d,this.cellsArray=e.map(Dr),this.labels=t}get cells(){let d={};return this.labels.forEach((e,t)=>{d[e]=this.cellsArray[t]}),d}},ci=class{constructor(d){this.request=d,this.options=d.options}setAttributes(){let{fetchSize:d}=this.options.user,{rows:e}=this.raw.table,{cols:t}=this.raw.table,s={last:e.length-1,rowNumberOffset:this.request.state.header||0},n=this.request.state.labels;this.request.state.offset||(n=t.map((c,g)=>c.label?c.label.replace(/\s/g,""):(s.last+=1,s.rowNumberOffset=1,Dr(e[0].c[g])||c.id)),this.request.update({header:s.rowNumberOffset,labels:n,offset:this.request.state.offset+s.rowNumberOffset})),(!d||e.length-s.rowNumberOffset{if(d.c&&e"u"||d===null)return;let e=this.options.user.rowTemplate||oi,t=ri(d),s=d&&ni(d,"sheetrock-header"),n="",o="";this.rows.forEach(u=>{u.num?o+=e(u):(t||s)&&(n+=e(u))}),t&&(n=Xt(n,"thead"),o=Xt(o,"tbody")),ti(d,n+o),ii(d,"sheetrock:loaded"),this.html=n+o}loadData(d,e){this.raw=d;try{this.setAttributes(),this.setOutput()}catch{e(new ct("Unexpected API response format."));return}this.setHTML(),e(null)}},fi=Zo(Xo());function pi(d,e){let t={headers:{"X-DataSource-Auth":"true"}};(0,fi.default)(d.request.url,t).then(s=>{if(!s.ok)throw new ct("Request failed.",s.status);return s.text()}).then(s=>{let n=JSON.parse(s.replace(/^\)]\}'\n/,""));d.loadData(n,e)}).catch(s=>{if(s instanceof ct)return e(s);let n=s&&s.message?s.message:"Request failed.";return e(new ct(n,500))})}var Tr=0;function mi(d,e){let t=window.document.getElementsByTagName("head")[0],s=window.document.createElement("script"),n=`_sheetrock_callback_${Tr}`;Tr+=1;function o(){t.removeChild(s),delete window[n]}function u(g){o(),d.loadData(g,e)}function c(){o(),e(new ct("Request failed."))}unsafeWindow[n]=u,s.addEventListener&&(s.addEventListener("error",c,!1),s.addEventListener("abort",c,!1)),s.type="text/javascript",s.src=`${d.request.url}&tqx=responseHandler:${n}`,t.appendChild(s)}var hi="1.2.0";function En(d={},e=null){let t=null,s=null,n=null;function o(u){if(u&&u.name==="SheetrockError"&&s&&s.update&&s.update({failed:!0}),d.callback){d.callback(u,t,n);return}if(u)throw u}try{t=new li({target:this,...d},!!e),s=new ui(t),n=new ci(s)}catch(u){o(u)}return e?n.loadData(e,o):t&&s&&n&&(typeof window=="object"&&"document"in window?mi(n,o):pi(n,o)),this}Object.assign(En,{defaults:wn,version:hi});try{window.jQuery.fn.sheetrock=En}catch{}var An=En;var Cr="https://docs.google.com/spreadsheets/d/1hn8gBDB-7l02Gp0jAnFq15ogCjpDixKrsxLqAIk3Gt0/edit#gid=0",gi=function(){var d=function(s,n,o){if(!s)for(insert="",console.log("my callback"),console.dir(o),i=0;inew Promise(n=>{let o=()=>setTimeout(()=>s.isInit?n():o(),0);o()}))(bn).then(()=>{GM_config.get("hackheaderzindex")===!0&&(document.getElementById("header").style.zIndex=0)}),GM_addStyle(".swal2-title{font-size:1.275em}"),GM_addStyle(` .button { display: inline-flex; -webkit-box-align: center; align-items: center; -webkist-box-pack: center; justify-content: center; text-decoration: none; cursor: pointer; font-weight: 700; } .button--primary{ font-family: "Montserrat"; font-size: .875rem; font-weight: 700; text-align: center; line-height: 1.5rem; border-radius: 4px; border-width: 1px; border-style: solid; outline: none; padding: 8px 16px; text-transform: uppercase; position: relative; overflow: hidden; color: #fff; background-color: #7451eb; border-color: #7451eb; box-shadow: 0 1px 3px 0 rgba(0,0,0,0.1),0 1px 2px 0 rgba(0,0,0,0.2); } .button--primary:hover{ color: #fff; background-color: #7451eb; border-color: #7451eb; box-shadow: 0 6px 6px 0 rgba(0,0,0,0.26),0 10px 20px 0 rgba(0,0,0,0.19); } .button--primary:active{ color: #fff; background-color: #7451eb; border-color: #7451eb; -webkistbox-shadow: none; box-shadow: none; } .button--primary:after{ content: ''; position: 'absolute'; top: 50%; left: 50%; width: 5px; height: 5px; background-color: #fff; opacity: 0; border-radius: 100%; -webkit-transform:scale(1,1) translate(-50%); transform:scale(1,1) translate(-50%); -webkit-transform-origin: 50% 50%; transform-origin: 50% 50%; } .button--primary:disabled{ color: #545454; background-color: #d2d2d2; border-color: #d2d2d2; -webkit-box-shadow: none; box-shadow: none; }`);var t=oe.cssMainDataSelector;document.querySelector(t)===null?(console.log(`%c All condition not met, waiting element '${t}' `,k),document.arrive(t,oe._main)):(console.log("%c All condition already met go",k),oe._main())},_forceCbox:function(){oe._applyInjectionForSessionsHistory()},pathname:document.location.pathname,_getOCMainClass:function(){try{let e=document.querySelector(oe.cssMainDataSelector).classList.value.match(/webapp-(\d)/);if(e.length==2)return`webapp-${e[1]}`;throw new Error("_aOCMainSrvId.length must be 2")}catch(d){return console.error("%cError in _getOCMainClass():%s",me,d),""}},_sOCMainSrvClassName:"",_eventMonitor:function(){var d=document.querySelector("body"),e=new MutationObserver(function(s){s.forEach(function(n){n.target.classList.contains(`${oe._sOCMainSrvClassName}-MuiTouchRipple-root`),n.target.nodeName==="TBODY"&&n.target.parentElement.nodeName==="TABLE"&&wt(oe._applyInjectionOnPathNameMutation()),n.target.nodeName==="OL"&&wt(oe._applyInjectionOnPathNameMutation()),function(u){if(typeof u>"u"||u.nodeName==="#text"||u.nodeName==="IFRAME"||u.children.length==0||u.parentElement&&(u.parentElement.querySelector(".Facturier__cbox")||u.parentElement.querySelector(".Facturier__cbox_all")||u.parentElement.querySelector(".Facturier__header"))||u.nodeName==="UL")return null;if(u.nodeName==="LI"){wt(lr(u)),oe._lastMutation=dayjs().valueOf();return}if(u.nodeName==="A"&&u.href.includes("/users/")){u.parentElement.parentElement!==null?wt(ar(u.parentElement.parentElement)):console.warn("OC a chang\xE9 la mani\xE8re avec laquelles les lignes sont cr\xE9es");return}}(n.addedNodes[0]),n.target.nodeName==="BUTTON"&&n.target.parentElement.parentElement.parentElement.firstElementChild.nodeName==="TABLE"&&wt(oe._applyInjectionOnPathNameMutation()),n.target.ariaLabel,oe.pathname!=document.location.pathname&&(oe.pathname=document.location.pathname,wt(oe._applyInjectionOnPathNameMutation()))})}),t={childList:!0,subtree:!0};e.observe(d,t)},_applyInjectionOnPathNameMutation:function(){let d=!1;d===!1&&document.location.pathname.match(/\/sessions$/)&&(d=!0,oe._applyInjectionForSessionsToComplete()),d===!1&&document.location.pathname.match(/\/booked-mentorship-sessions$/)&&(d=!0,oe._applyInjectionForSessionsBooked()),d===!1&&document.location.pathname.match(/\/mentorship-sessions-history$/)&&(d=!0,oe._applyInjectionForSessionsHistory()),d===!1&&console.log("%cUnknow Route so could't guess what to do",me)},_lastMutation:0,_applyInjectionForSessionsToComplete:function(){document.querySelector(`${oe.cssMainDataSelector} .Facturier__cbox_all`)!==null&&(document.querySelector(`${oe.cssMainDataSelector} .Facturier__cbox_all`).style.display="none"),console.log("%cWill Patch All Buttons corresponding to this CSS PATH %s",k,`${oe.cssMainDataSelector} a a[href*=sessions]`);var d=Array.from(document.querySelectorAll(`${oe.cssMainDataSelector} a a[href*=sessions]`)),e;d.forEach(function(t){console.log("%cWill Patch Button %o",k,t),t.innerText=".:"+t.innerText+":.",t.addEventListener("click",e=function(s){s.stopPropagation(),s.preventDefault();var n=t.parentElement.parentElement.parentElement,o=n.children[1].querySelector("time").getAttribute("datetime").trim(),u=Mt(n.children[2],-2),c=n.children[3].querySelector("a").getAttribute("href-sav"),g=(c||"/").split("/"),p=g[g.length-1],f=dayjs(o).toISOString(),a=De.getHashId(f,u);let E=parseInt(p,10),S=Me.exists(E,1,Me.TYPE.SESSIONID_DATEREFID),v=Me.exists(a,2,Me.TYPE.SESSIONID_DATEREFID);S&&(v||(console.log(`[SESSIONID_DATEREFID] iSessionId ${E} est connu mais pas iHash${a}`),Me.updKey2(E,a,Me.TYPE.SESSIONID_DATEREFID))),v&&(S||(console.log(`[SESSIONID_DATEREFID] iHash${a} est connu mais pas iSessionId ${E}`),Me.updKey1(E,a,Me.TYPE.SESSIONID_DATEREFID))),!S&&!v&&(console.log(`[SESSIONID_DATEREFID] iHash${a} et iSessionId ${E} sont INconnus`),Me.add(E,a,Me.TYPE.SESSIONID_DATEREFID)),window.open(c,"blank").focus()}),t.setAttribute("href-sav",t.getAttribute("href")),t.removeAttribute("href")})},_applyInjectionForSessionsBooked:function(){document.querySelector(`${oe.cssMainDataSelector} .Facturier__cbox_all`)!==null&&(document.querySelector(`${oe.cssMainDataSelector} .Facturier__cbox_all`).style.display="none")},_applyInjectionForSessionsHistory:function(d=100){document.querySelector(`${oe.cssMainDataSelector} .Facturier__cbox_all`)!==null&&(document.querySelector(`${oe.cssMainDataSelector} .Facturier__cbox_all`).style.display="block"),!(dayjs().valueOf()-oe._lastMutation :not(div:empty)").children,e=0;for(e=d.length-1;e>=0&&(console.log(e,d[e].nodeName),d[e].nodeName!=="SECTION");e--);if(e===0){console.error("IRRECOVERABLE ERROR element
not found");return}e=e-1;let t=document.querySelector('#mainContent[class*="webapp"]'),s=document.querySelector('[role="tablist"]');var n=function(f){let a=document.querySelector('[role="tablist"]'),E=document.createElement("span");if(E.innerText="Facturier v."+GM.info.script.version,E.classList.add(...f.classList),E.classList.add("Facturier__header"),f.children.length>1){let v=document.createElement("span");v.classList.add(...f.children[1].classList),v.classList.add("Facturier__header")}let S=document.createElement("a");S.onclick=Gt,S.classList.add(...f.classList),S.classList.add("Facturier__header"),S.appendChild(E),f.children.length>1&&S.appendChild(g),S.style="margin-left: auto",a.appendChild(S)},o=new MutationObserver(function(f,a){let E=s.querySelector("a[aria-selected=false]");if(E.children){n(E),a.disconnect();return}});o.observe(document,{childList:!0,subtree:!0})},_userscriptless(){console.log("%cIm'not in a Tamper environment so i need to load js scripts",k)},_main:function(){console.log("\u200B\u200B\u200B%c[index._main()]MainLoaded\u200B\u200B\u200B",k),document.unbindArrive(oe._main),oe._eventMonitor();let d=new LocalStorage("db");var e=low(d);e.defaults({students:[],sessions:[],f_archives:[],history_session_cache:[],meta:[],refs:[],students_history:[]}).write(),oe.Cfg.dbase=e,dayjs.extend(dayjs_plugin_isSameOrAfter),dayjs.extend(dayjs_plugin_isSameOrBefore),dayjs.extend(dayjs_plugin_isBetween),dayjs.extend(dayjs_plugin_localeData),dayjs.extend(dayjs_plugin_customParseFormat),dayjs.locale("fr"),Me.checkSupport(),$e.checkSupport(),document.querySelector(".panel.menuBar.flex.draggable")===null&&br.init(),oe._addHeader(),oe._applyInjectionOnPathNameMutation(),console.log("%cWait for side menu to add element to it",k),sCSSObserved="nav:not([role])",document.arrive(sCSSObserved,oe._addLinkToMenu);let t=$e.getDbVersion();if(Rt(GM.info.script.version,t)==1&&(console.log(`%cDB is in version: ${$e.getDbVersion()} need to go to version ${GM.info.script.version}`,k),Dt.update(GM.info.script.version)),Ct(["https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js"]).then(async function(n){console.log("%cALPINE js fetched",k)}),Ct(["https://unpkg.com/htmx.org@1.1.0","https://unpkg.com/htmx.org@1.1.0/dist/ext/debug.js"]).then(async function(n){htmx.on("htmx:configRequest",function(o){}),htmx.on("htmx:beforeRequest",function(o){if(o.detail.pathInfo.finalPath&&Fn(o.detail.pathInfo.finalPath)!=="html"){o.detail.xhr.addEventListener("abort",function(){}),o.detail.xhr.onloadstart=function(f){this.abort()};let g=Sr.load(o.detail.pathInfo.finalPath),p=o.detail.target;var u=o.detail.elt.getAttribute("hx-select");if(u){let f=new DOMParser().parseFromString(g,"text/html");oNode=f.querySelector(u),oNode?g=oNode.outerHTML:console.log(`%cWanna select target ${u} in data received from calling ${o.detail.pathInfo.finalPath} but this node could'nt be found so return the whole string`,me)}var c=function(f,a){for(var E=document.createRange(),S=E.createContextualFragment(f),v=S.childNodes.length-1;v>=0;v--){var A=S.childNodes[v];a.appendChild(A),htmx.process(A)}return a.lastChild};c(g,o.detail.target)}}),htmx.on("htmx:xhr:loadstart",function(o){})}),Ct(["https://cdn.jsdelivr.net/npm/sweetalert2@10"]).then(async function(n){console.log("%cSweetAlert fetched",k)}),!1===!0){let o=GM_config.get("custom_css_url").split(",");if(o.length!==0)console.log(`%cWanna inject Custom CSS from URL:${o}`,k),Ct(o).then(()=>{console.log(`%cCustom CSS from URL:${o} loaded`,k)}).catch(u=>console.log(`%cError detected when loading dependencies ${u}`,me));else{let u=GM_config.get("custom_css_data");if(u.length()>0){console.log(`%cNeed to inject a custom css in application content is ${u}`,k);let c=document.createElement("style");c.innerHTML=u,document.head.insertAdjacentElement("beforeend",c)}}}unsafeWindow.Facturier={libs:[],cfg:{dbase:null},klass:[]},unsafeWindow.Facturier.cfg.dbase=oe.Cfg.dbase,unsafeWindow.Facturier.libs.push({id:"fetchInject",ptr:Ct}),unsafeWindow.Facturier.libs.push({id:"dayjs",ptr:dayjs}),unsafeWindow.Facturier.klass.push({id:"Student",ptr:we}),unsafeWindow.Facturier.klass.push({id:"Session",ptr:De}),unsafeWindow.Facturier.klass.push({id:"Archive",ptr:St}),unsafeWindow.Facturier.klass.push({id:"History",ptr:At}),unsafeWindow.Facturier.klass.push({id:"StudentHistory",ptr:Ve}),unsafeWindow.Facturier.klass.push({id:"Ref",ptr:Me}),unsafeWindow.Facturier.klass.push({id:"Dbase",ptr:Dt}),unsafeWindow.Facturier.klass.push({id:"Meta",ptr:$e}),unsafeWindow.Facturier.klass.push({id:"Ref",ptr:Me}),unsafeWindow.Facturier.klass.push({id:"Api",ptr:Yt}),unsafeWindow.Facturier.libs.push({id:"NProgress",ptr:NProgress}),xn.test_1(),unsafeWindow.Facturier.klass.push({id:"SandBox_Google",ptr:xn}),unsafeWindow.Facturier.libs.push({id:"Moise",ptr:moize}),GM.info.script.downloadURL==="http://localhost:8000/dist/app-facturier.iife.js"?(console.log("%cALERTE .... version locale !!!!!! ","background-color:coral;color:white"),console.log("%c test readfile",k),Hn("file:////media/pwyll/USB120Go/DevStt/UserScripts/SttAddon/src/update_data_base.js",function(n){console.log(n)}),oe.loadDependencies()):console.log(`%c GM.info.script.downloadURL url : ${GM.info.script.downloadURL}`,k)},_addLinkToMenu:function(){if(console.log("%cSide menu will be added",k),document.unbindArrive(oe._addLinkToMenu),document.querySelector("ul.Facturier__Menu-header")!==null){console.log("%cDirty Check no double launch",k);return}try{let d=document.querySelectorAll("nav:not([role])")[0],e=d.children[0].lastChild.cloneNode(!0);e.firstChild.innerText="Facturier",elMenu=document.querySelector(".panel.draggable"),e.firstChild.href="javascript::void(0);",e.firstChild.onclick=function(n){n.preventDefault(),n.stopPropagation(),elMenu=document.querySelector(".panel.draggable"),elMenu.style.display=elMenu.style.display!="block"?"block":"none"};let t=d.children[0].lastChild.firstChild;e.firstChild.appendChild(t.children[0].cloneNode(!0)),e.firstChild.appendChild(t.children[1].cloneNode(!1)),e.firstChild.appendChild(t.children[2].cloneNode(!1));let s=d.children[0].cloneNode(!1);s.appendChild(e),s.classList.add("Facturier__Menu-header"),d.appendChild(s),console.log("%cSide menu will added",k)}catch(d){console.log("%cInjecting menu encounter an error: %o",me,d)}},loadDependencies:function(){let d=[];d.push("http://localhost:8000/src/branch01/sandbox.js"),d.push("http://localhost:8000/src/branch01/sandbox.css"),Ct(d).then(()=>{console.log(`dependencies ${d} loaded`)})},dbUpdate:function(){console.log("%c Need to update DB",k),Rt(GM.info.script.version,"1.00.0006")==0&&(console.log("%c Need to update DB to version '1.00.0006'",k),Dt.update("1.00.0006"))}};window.Facturier!==void 0?window.Facturier.start():oe.start();var z=oe;})(); /* @license Papa Parse v5.3.0 https://github.com/mholt/PapaParse License: MIT */ /*! @preserve * * tcomb.js - Type checking and DDD for JavaScript * * The MIT License (MIT) * * Copyright (c) 2014-2016 Giulio Canti * */ /** * Fetch Inject module. * * @module fetchInject * @license Zlib * @param {(USVString[]|Request[])} inputs Resources you wish to fetch. * @param {Promise} [promise] A promise to await before attempting injection. * @throws {Promise} Rejects with error when given no arguments. * @throws {Promise} Rejects with error on invalid arguments. * @throws {Promise} Whatever `fetch` decides to throw. * @throws {SyntaxError} Via DOM upon attempting to parse unexpected tokens. * @returns {Promise} A promise which resolves to an `Array` of * Objects containing `Response` `Body` properties used by the module. */ /*! * Sheetrock * Quickly connect to, query, and lazy-load data from Google Sheets. * https://chriszarate.github.io/sheetrock/ * License: MIT */ //# sourceMappingURL=app.min.js.map