diff --git a/css/bundle.css b/css/bundle.css index 6352205..f4238e7 100644 --- a/css/bundle.css +++ b/css/bundle.css @@ -1,4 +1,4 @@ html, body{height:100%;min-height:100%;width:100%;position:relative;--blueaf:#002157;--blueaf_rgb:9,34,84;--redaf:#FA3C35;--blood-red:#6B0504;--green:#2CA58D;;;--snow:#FFFBFF;--minion-yellow:#ECD444;--light-grey:#eee;--maximum-yellow-red:#FCBF49;--color:var(--blueaf);--white:white;--background-color:var(--snow);--navbar-background-color:var(--minion-yellow);--dropzone-background-color:var(--background-color);--table-background-color:var(--background-color);--table-color:var(--color);--table-highlight-color:#00215730;--table-border-color:#ccc;color:var(--color)}body{background-color:var(--background-color);margin:0;box-sizing:border-box;font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;font-size:1rem}main{text-align:center;padding:1em 1em 40px 1em}a{color:var(--redaf);text-decoration:none}a:hover{text-decoration:underline}a:visited{color:var(--blood-red)}a[href^="#"]:visited{color:var(--redaf)}a[href^=http]::after{content:"⬀"}label{display:block}input, button, select, textarea{font-family:inherit;font-size:inherit;-webkit-padding:0.4em 0;padding:0.4em;margin:0 0 0.5em 0;box-sizing:border-box;border:1px solid #ccc;border-radius:2px}input:disabled{color:#ccc}button{color:#333;background-color:#f4f4f4;outline:none;cursor:pointer}button:disabled{color:#999;cursor:not-allowed}button:not(:disabled):active {background-color:#ddd}button:focus{border-color:#666}.btn-sm{text-transform:uppercase;font-size:small;color:var(--color);border-color:var(--color);background-color:var(--background-color);margin-left:1rem}.select select{color:var(--color)}.select{display:inline-block}.select select{-webkit-padding:0.2em 0;padding:0.2em;margin:0 0 0 0.2em}table{border-collapse:collapse;width:100%}th, td{padding:0.25rem;text-align:left;border:1px solid var(--table-border-color)}svg{fill:var(--color)}svg[fill=none]{fill:none}span.logo{color:var(--blueaf);text-transform:uppercase}span.logo > span{color:var(--redaf)}.no-transition{animation:none !important}h1 span.logo{font-weight:bold}@font-face{font-family:'Abril Fatface';font-style:normal;font-weight:400;src:local(''), url('../fonts/abril-fatface-v12-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/abril-fatface-v12-latin-ext_latin-regular.woff') format('woff')}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.modal.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{position:fixed;z-index:19;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}.modal.svelte-1pe757z .toast.svelte-1pe757z.svelte-1pe757z{margin:15% auto 0 auto}.modal.svelte-1pe757z .toast-header.svelte-1pe757z.svelte-1pe757z{justify-content:center}.modal.svelte-1pe757z .toast-header.svelte-1pe757z strong.svelte-1pe757z{margin-right:0}.toast.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{opacity:1;z-index:20;max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.25rem}.toast-header.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-header.svelte-1pe757z strong.svelte-1pe757z.svelte-1pe757z{margin-right:auto}.toast-body.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{padding:.75rem;text-align:center}.toast-body.svelte-1pe757z button.svelte-1pe757z.svelte-1pe757z{border-radius:3px}button.manual.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{color:var(--background-color);background-color:var(--blueaf)}button.close.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5;padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-bottom:.25rem;margin-left:0.5rem}strong.svelte-1pe757z>span.svelte-1pe757z.svelte-1pe757z{padding-right:1em}.blinking.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{animation:svelte-1pe757z-blink 1s infinite}@keyframes svelte-1pe757z-blink{0%{opacity:1.0}50%{opacity:0.0}100%{opacity:1.0}}sup.svelte-98mib8.svelte-98mib8{background-color:var(--redaf);color:var(--background-color);padding:1px 3px;border-radius:3px;font-weight:normal;margin-left:4px;font-size:xx-small}a[href="#/"].svelte-98mib8 sup.svelte-98mib8{background-color:var(--blueaf);font-size:x-small;font-weight:bold;margin-left:2px}nav.svelte-98mib8.svelte-98mib8{display:flex;position:-webkit-sticky;position:sticky;top:0;background-color:var(--navbar-background-color);--item-color:rgba(var(--blueaf_rgb), 0.5);--active-color:rgba(var(--blueaf_rgb), 0.9);z-index:10}a.svelte-98mib8.svelte-98mib8{display:block;padding:10px;color:var(--item-color);text-decoration:none}a.active.svelte-98mib8.svelte-98mib8{color:var(--active-color);border-bottom:2px solid var(--redaf)}a.svelte-98mib8.svelte-98mib8:hover{text-decoration:none}a.svelte-98mib8.svelte-98mib8:visited{color:var(--item-color)}a[href="#/"].svelte-98mib8.svelte-98mib8{margin-right:0;font-weight:700}a[href="#/log"].svelte-98mib8.svelte-98mib8{padding-right:2px;padding-top:8px;padding-bottom:0}.flexspace{display:inline-block;flex:1}nav .select{display:flex;align-items:center;margin-right:10px}nav .select select{background-color:var(--navbar-background-color);border:none}a[href="#/log"].svelte-98mib8 sup.svelte-98mib8{top:-1em;position:relative;left:-0.5em}svg.svelte-98mib8.svelte-98mib8{fill:var(--redaf);opacity:1;width:24px;height:24px}.window-wrapper.svelte-1kkhzu1.svelte-1kkhzu1{width:60ch;max-width:100%;height:50%;position:fixed;right:0px;z-index:15;opacity:0.96}.window.svelte-1kkhzu1.svelte-1kkhzu1{height:100%;background:var(--background-color);border:3px solid var(--blueaf);border-top:none;flex:1;display:flex;flex-direction:column;overflow:auto;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.head.svelte-1kkhzu1.svelte-1kkhzu1{background:var(--blueaf);color:var(--background-color);display:flex;flex:0 0 auto;align-items:center;padding:5px 3px 5px 12px;border-top-left-radius:5px;border-top-right-radius:5px}.head.svelte-1kkhzu1 button.svelte-1kkhzu1{margin:0 0 0 20px;padding:0.2em 0.3em}.console{font-family:monospace;font-size:small;display:flex;flex-direction:column;min-height:min-content}.console ol{list-style:none;counter-reset:console-counter;padding-inline-start:0px}.console ol li{counter-increment:console-counter;position:relative}.console ol li::before{content:counter(console-counter);font-weight:bold;font-size:1rem;right:7px;position:absolute;top:0;color:rgba(var(--blueaf_rgb), 0.2)}.console p, .console ol{margin-block-end:0px;margin-block-start:0px}.console li{padding:5px 10px;border-bottom:1px solid #eee}.console .error{background-color:#ff000008;color:var(--redaf)}@media all and (min-width: 770px){.blockquote.svelte-15co0wx h1.svelte-15co0wx{font-size:3rem;line-height:1.2}.blockquote-wrapper.svelte-15co0wx.svelte-15co0wx{flex-wrap:nowrap;max-width:1000px;margin-left:auto;margin-right:auto;justify-content:left}.logo.svelte-15co0wx.svelte-15co0wx{margin-right:30px;margin-top:60px;margin-left:40px}section.svelte-15co0wx.svelte-15co0wx{padding:0 40px}}main.svelte-15co0wx.svelte-15co0wx{overflow-x:hidden}div.logo.svelte-15co0wx.svelte-15co0wx{font-size:4em;font-weight:800}section.svelte-15co0wx.svelte-15co0wx{margin:80px auto 0 auto;max-width:1000px;text-align:justify}section.svelte-15co0wx a.svelte-15co0wx{white-space:nowrap}ol.svelte-15co0wx.svelte-15co0wx{list-style:none;counter-reset:my-awesome-counter;margin:0;padding:0}ol.svelte-15co0wx li.svelte-15co0wx{counter-increment:my-awesome-counter;margin-bottom:0.5rem}ol.svelte-15co0wx li.svelte-15co0wx::before{content:counter(my-awesome-counter);font-weight:bold;font-size:2rem;margin-right:0.5rem;line-height:2rem;position:relative;top:0.3rem}.blockquote-wrapper{display:flex;flex-wrap:wrap;padding:0 20px;justify-content:center}.blockquote{position:relative;max-width:620px;margin:10px;align-self:center}.blockquote h1{font-family:'Abril Fatface';position:relative;color:var(--redaf);font-size:2.8rem;font-weight:normal;line-height:1;margin:0;border:solid 2px;border-color:var(--blueaf);border-radius:20px;padding:25px;text-transform:none;text-align:left}.blockquote h1:after{content:"";position:absolute;border:2px solid var(--blueaf);border-radius:0 50px 0 0;width:60px;height:60px;bottom:-62px;left:50px;border-bottom:none;border-left:none;z-index:3}.blockquote h1:before{content:"";position:absolute;width:80px;border:6px solid var(--background-color);bottom:-3px;left:50px;z-index:2}.blockquote h4{position:relative;color:var(--blueaf);font-size:1.3rem;font-weight:300;line-height:1.2;margin:0;padding-top:15px;z-index:1;margin-left:150px;padding-left:12px;text-align:left}.blockquote h4:first-letter{margin-left:-12px}.header.svelte-l9ncfd{min-height:50px}.wrapper.svelte-l9ncfd{max-width:1200px;margin:0 auto}.header.svelte-l9ncfd{min-height:50px}.wrapper.svelte-l9ncfd{max-width:1200px;margin:0 auto}div.footer.svelte-wtoba3.svelte-wtoba3{font-size:xx-small;margin-top:2rem}h1.svelte-wtoba3 small.svelte-wtoba3{font-weight:200;font-size:0.8rem}section.markdown{margin:0 auto;max-width:800px;text-align:justify}section.markdown a{white-space:nowrap}section.markdown ul{list-style-type:square;padding-inline-start:25px}section.markdown li{margin:3px 0}.modal.svelte-38j5yr{display:block}.modal-body.svelte-38j5yr{overflow-y:auto;max-height:calc(90vh - 3.875rem)}.expanded.svelte-38j5yr{height:calc(90vh - 3.875rem)}h5.svelte-38j5yr{font-size:1.25rem;margin-top:0}.flag + .flag{margin-top:3rem}.flag{display:grid;grid-column-gap:var(--flag-gap, 1em);grid-template-columns:auto 1fr;grid-template-rows:repeat(3, minmax(min-content, max-content)) 1fr;grid-template-areas:"signifier ." "signifier title" "signifier content" ". content"}.flag__title{grid-area:title;align-self:center;display:flex;align-items:center}.flag__title:empty{grid-column:1;grid-row:2}.flag__title:empty:after{content:"x";visibility:hidden}.flag__title:empty ~ .flag__content{grid-row-start:2}.flag__signifier{grid-area:signifier;display:flex;align-self:center}.flag__content{grid-area:content}.flag--large-icon svg{width:4rem;height:4rem}.flag--no-title{font-size:1.1rem}.flag--no-title p{margin:0}.flag--large-title h2.svelte-19o17qn{font-size:2.8rem}.dropzone{border:2px dashed var(--blueaf);border-radius:5px;background:var(--dropzone-background-color);width:80%;margin:0 auto 2em auto;position:relative}.dropzone figure{width:60px;height:60px;display:block;margin:0 auto}.dropzone figure svg{width:100%;height:100%;opacity:0.5}.dropzone figure svg use{width:100%;height:100%}.dropzone input[type=file]{opacity:0;overflow:hidden;position:absolute;width:100%;height:100%;left:0;top:0;z-index:1}.dropzone label{z-index:-1}.dropzone.focus{border-color:var(--green)}.dropzone.focus svg{fill:var(--green);opacity:1}.dropzone.focus input[type=file]:disabled + label svg{fill:var(--redaf);opacity:1}.dropzone input[type=file]:hover{cursor:pointer}.dropzone input[type=file]:disabled{cursor:not-allowed} .dropzone div[slot]{padding:20px -}.dropzone div[slot=top]{text-transform:uppercase;font-weight:200;font-size:1.5rem}.dropzone div[slot=top] strong{font-weight:200}div.svelte-ydi49e{font-size:small;margin-top:50px}p.svelte-ydi49e{margin-block-end:0;margin-block-start:0}td.svelte-c5u0z8.svelte-c5u0z8:nth-child(5),th.svelte-c5u0z8.svelte-c5u0z8:nth-child(5){text-align:right;white-space:nowrap}details[open].svelte-c5u0z8 summary.svelte-c5u0z8{margin-bottom:2px}tr.warning th{color:white;background-color:var(--redaf);text-align:center}table.data thead tr:nth-child(1) th{text-align:center;font-size:large;border:none;text-transform:uppercase;font-weight:300;background-color:var(--table-background-color)}table.data tfoot tr, tfoot td{border:none;font-size:small}table.data tbody td{font-family:monospace;font-size:1.3rem}table.data{margin-top:3em;color:var(--table-color)}table.data th, table.data td{border-color:var(--table-border-color)} tbody tr:nth-child(even), thead tr:nth-child(2), thead tr:nth-child(3){background-color:var(--table-highlight-color)}tbody tr:nth-child(odd){background-color:var(--table-background-color)}summary:focus{outline:none}table.data.print{color:black}table.data.print tfoot tr{background-color:white}table.data.print thead tr:nth-child(1) th{background-color:white}table.data.print tbody tr:nth-child(odd){background-color:white}table.data.print tbody tr:nth-child(even), table.data.print thead tr:nth-child(2), table.data.print thead tr:nth-child(3){background-color:var(--light-grey)}table.data.print th, table.data.print td{border-color:#ccc}picture img{max-width:100%;width:auto;height:auto}.illustration::after{content:'Exemple de résultat';display:block;padding:2px 5px;background-color:var(--green);color:var(--background-color);opacity:0.9;font-size:1.2em;border-radius:5px;top:calc(34 * calc(100% / 1032));position:absolute;width:220px;left:50%;margin-left:-110px;text-transform:uppercase;font-weight:200}@media all and (min-width: 1032px){picture img{max-width:800px}.illustration::after{font-size:1.5rem;width:300px;margin-left:-150px}}.illustration{margin:50px auto 0 auto;width:80%;position:relative}table.data.summary.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{table-layout:fixed}table.data.summary tfoot td{font-size:initial}.col1.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{width:130px}.col2.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{width:50%}table.data.summary thead th:first-child{position:relative}@media all and (min-width: 770px){.estimate.svelte-1njpx9m small.svelte-1njpx9m.svelte-1njpx9m{width:240px !important}}.estimate.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{position:absolute;bottom:0px;left:0px}.estimate.svelte-1njpx9m small.svelte-1njpx9m.svelte-1njpx9m{border-radius:2px;padding:2px;display:block;color:var(--background-color);background-color:var(--green);font-size:small;width:126px;text-align:center}td.svelte-1njpx9m input.svelte-1njpx9m.svelte-1njpx9m{margin-bottom:0;width:120px}td.svelte-1njpx9m input.svelte-1njpx9m.svelte-1njpx9m:disabled{color:var(--green);-webkit-text-fill-color:var(--green);opacity:0.85}tbody.svelte-1njpx9m th.svelte-1njpx9m.svelte-1njpx9m{font-family:monospace;font-size:1.3rem}td.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m:not(:nth-child(1)),th.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m:not(:nth-child(1)){text-align:right}td.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m:not(:nth-child(1)){white-space:nowrap}tbody.svelte-1njpx9m>tr.svelte-1njpx9m:nth-child(12)>td.svelte-1njpx9m:nth-child(3){font-weight:bold}ul.svelte-16swz26{display:block;margin:0.5em 0 0 0;padding:0}li.svelte-16swz26{--size:2em;display:inline-block;border-radius:5px;width:var(--size);height:var(--size);line-height:var(--size);text-align:center;background-color:var(--redaf);color:var(--white);margin:2px 5px}li.loaded.svelte-16swz26{background-color:var(--green) !important}li.optional.svelte-16swz26{background-color:var(--color)}ul.svelte-9ow13k.svelte-9ow13k{padding-left:1em}li.svelte-9ow13k.svelte-9ow13k{list-style:square}h2.svelte-9ow13k.svelte-9ow13k{font-size:1.25rem;border-bottom:1px solid #eee}li.svelte-9ow13k:not(:first-child) h2.svelte-9ow13k{margin-top:1rem}h2.svelte-9ow13k .date{font-size:0.9rem}h2.svelte-9ow13k .version::before{content:"v";font-variant:normal;font-size:1rem}.item.svelte-9ow13k.svelte-9ow13k{margin-bottom:0.25rem;margin-left:0.5rem;text-indent:-0.8em}.item.svelte-9ow13k .badge{text-indent:0;margin-right:0.5rem;min-width:8ch}@media(max-width: 1024px){thead.svelte-1pkoo1p th.svelte-1pkoo1p:nth-child(4),thead.svelte-1pkoo1p th.svelte-1pkoo1p:nth-child(5),td.svelte-1pkoo1p.svelte-1pkoo1p:nth-child(5),td.svelte-1pkoo1p.svelte-1pkoo1p:nth-child(6){display:none}}th.svelte-1pkoo1p.svelte-1pkoo1p,td.svelte-1pkoo1p.svelte-1pkoo1p{text-align:right}thead.svelte-1pkoo1p tr:nth-child(2) th.svelte-1pkoo1p{border-bottom:none;padding-top:0.5em;padding-bottom:0}thead.svelte-1pkoo1p td.svelte-1pkoo1p{border-top:none;font-weight:normal;font-size:x-small}thead.svelte-1pkoo1p tr.svelte-1pkoo1p:nth-child(3){height:0.7em;line-height:0.1em;padding-top:0;padding-bottom:0}thead.svelte-1pkoo1p tr:nth-child(2) th.svelte-1pkoo1p:nth-child(1),tbody.svelte-1pkoo1p td.svelte-1pkoo1p:nth-child(2),td.svelte-1pkoo1p.svelte-1pkoo1p:nth-child(1){text-align:left}a[download]{padding:10px;background-color:var(--blueaf);display:inline-block;color:var(--white);border-radius:5px;text-decoration:none}a[download].disabled.svelte-j6w2rc{display:none} \ No newline at end of file + url('../fonts/abril-fatface-v12-latin-ext_latin-regular.woff') format('woff')}h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.modal.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{position:fixed;z-index:19;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}.modal.svelte-1pe757z .toast.svelte-1pe757z.svelte-1pe757z{margin:15% auto 0 auto}.modal.svelte-1pe757z .toast-header.svelte-1pe757z.svelte-1pe757z{justify-content:center}.modal.svelte-1pe757z .toast-header.svelte-1pe757z strong.svelte-1pe757z{margin-right:0}.toast.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{opacity:1;z-index:20;max-width:350px;overflow:hidden;font-size:.875rem;background-color:rgba(255,255,255,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.25rem}.toast-header.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:rgba(255,255,255,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05)}.toast-header.svelte-1pe757z strong.svelte-1pe757z.svelte-1pe757z{margin-right:auto}.toast-body.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{padding:.75rem;text-align:center}.toast-body.svelte-1pe757z button.svelte-1pe757z.svelte-1pe757z{border-radius:3px}button.manual.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{color:var(--background-color);background-color:var(--blueaf)}button.close.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5;padding:0;background-color:transparent;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-bottom:.25rem;margin-left:0.5rem}strong.svelte-1pe757z>span.svelte-1pe757z.svelte-1pe757z{padding-right:1em}.blinking.svelte-1pe757z.svelte-1pe757z.svelte-1pe757z{animation:svelte-1pe757z-blink 1s infinite}@keyframes svelte-1pe757z-blink{0%{opacity:1.0}50%{opacity:0.0}100%{opacity:1.0}}.window-wrapper.svelte-1kkhzu1.svelte-1kkhzu1{width:60ch;max-width:100%;height:50%;position:fixed;right:0px;z-index:15;opacity:0.96}.window.svelte-1kkhzu1.svelte-1kkhzu1{height:100%;background:var(--background-color);border:3px solid var(--blueaf);border-top:none;flex:1;display:flex;flex-direction:column;overflow:auto;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.head.svelte-1kkhzu1.svelte-1kkhzu1{background:var(--blueaf);color:var(--background-color);display:flex;flex:0 0 auto;align-items:center;padding:5px 3px 5px 12px;border-top-left-radius:5px;border-top-right-radius:5px}.head.svelte-1kkhzu1 button.svelte-1kkhzu1{margin:0 0 0 20px;padding:0.2em 0.3em}.console{font-family:monospace;font-size:small;display:flex;flex-direction:column;min-height:min-content}.console ol{list-style:none;counter-reset:console-counter;padding-inline-start:0px}.console ol li{counter-increment:console-counter;position:relative}.console ol li::before{content:counter(console-counter);font-weight:bold;font-size:1rem;right:7px;position:absolute;top:0;color:rgba(var(--blueaf_rgb), 0.2)}.console p, .console ol{margin-block-end:0px;margin-block-start:0px}.console li{padding:5px 10px;border-bottom:1px solid #eee}.console .error{background-color:#ff000008;color:var(--redaf)}sup.svelte-98mib8.svelte-98mib8{background-color:var(--redaf);color:var(--background-color);padding:1px 3px;border-radius:3px;font-weight:normal;margin-left:4px;font-size:xx-small}a[href="#/"].svelte-98mib8 sup.svelte-98mib8{background-color:var(--blueaf);font-size:x-small;font-weight:bold;margin-left:2px}nav.svelte-98mib8.svelte-98mib8{display:flex;position:-webkit-sticky;position:sticky;top:0;background-color:var(--navbar-background-color);--item-color:rgba(var(--blueaf_rgb), 0.5);--active-color:rgba(var(--blueaf_rgb), 0.9);z-index:10}a.svelte-98mib8.svelte-98mib8{display:block;padding:10px;color:var(--item-color);text-decoration:none}a.active.svelte-98mib8.svelte-98mib8{color:var(--active-color);border-bottom:2px solid var(--redaf)}a.svelte-98mib8.svelte-98mib8:hover{text-decoration:none}a.svelte-98mib8.svelte-98mib8:visited{color:var(--item-color)}a[href="#/"].svelte-98mib8.svelte-98mib8{margin-right:0;font-weight:700}a[href="#/log"].svelte-98mib8.svelte-98mib8{padding-right:2px;padding-top:8px;padding-bottom:0}.flexspace{display:inline-block;flex:1}nav .select{display:flex;align-items:center;margin-right:10px}nav .select select{background-color:var(--navbar-background-color);border:none}a[href="#/log"].svelte-98mib8 sup.svelte-98mib8{top:-1em;position:relative;left:-0.5em}svg.svelte-98mib8.svelte-98mib8{fill:var(--redaf);opacity:1;width:24px;height:24px}.header.svelte-l9ncfd{min-height:50px}.wrapper.svelte-l9ncfd{max-width:1200px;margin:0 auto}@media all and (min-width: 770px){.blockquote.svelte-15co0wx h1.svelte-15co0wx{font-size:3rem;line-height:1.2}.blockquote-wrapper.svelte-15co0wx.svelte-15co0wx{flex-wrap:nowrap;max-width:1000px;margin-left:auto;margin-right:auto;justify-content:left}.logo.svelte-15co0wx.svelte-15co0wx{margin-right:30px;margin-top:60px;margin-left:40px}section.svelte-15co0wx.svelte-15co0wx{padding:0 40px}}main.svelte-15co0wx.svelte-15co0wx{overflow-x:hidden}div.logo.svelte-15co0wx.svelte-15co0wx{font-size:4em;font-weight:800}section.svelte-15co0wx.svelte-15co0wx{margin:80px auto 0 auto;max-width:1000px;text-align:justify}section.svelte-15co0wx a.svelte-15co0wx{white-space:nowrap}ol.svelte-15co0wx.svelte-15co0wx{list-style:none;counter-reset:my-awesome-counter;margin:0;padding:0}ol.svelte-15co0wx li.svelte-15co0wx{counter-increment:my-awesome-counter;margin-bottom:0.5rem}ol.svelte-15co0wx li.svelte-15co0wx::before{content:counter(my-awesome-counter);font-weight:bold;font-size:2rem;margin-right:0.5rem;line-height:2rem;position:relative;top:0.3rem}.blockquote-wrapper{display:flex;flex-wrap:wrap;padding:0 20px;justify-content:center}.blockquote{position:relative;max-width:620px;margin:10px;align-self:center}.blockquote h1{font-family:'Abril Fatface';position:relative;color:var(--redaf);font-size:2.8rem;font-weight:normal;line-height:1;margin:0;border:solid 2px;border-color:var(--blueaf);border-radius:20px;padding:25px;text-transform:none;text-align:left}.blockquote h1:after{content:"";position:absolute;border:2px solid var(--blueaf);border-radius:0 50px 0 0;width:60px;height:60px;bottom:-62px;left:50px;border-bottom:none;border-left:none;z-index:3}.blockquote h1:before{content:"";position:absolute;width:80px;border:6px solid var(--background-color);bottom:-3px;left:50px;z-index:2}.blockquote h4{position:relative;color:var(--blueaf);font-size:1.3rem;font-weight:300;line-height:1.2;margin:0;padding-top:15px;z-index:1;margin-left:150px;padding-left:12px;text-align:left}.blockquote h4:first-letter{margin-left:-12px}div.footer.svelte-wtoba3.svelte-wtoba3{font-size:xx-small;margin-top:2rem}h1.svelte-wtoba3 small.svelte-wtoba3{font-weight:200;font-size:0.8rem}section.markdown{margin:0 auto;max-width:800px;text-align:justify}section.markdown a{white-space:nowrap}section.markdown ul{list-style-type:square;padding-inline-start:25px}section.markdown li{margin:3px 0}.header.svelte-l9ncfd{min-height:50px}.wrapper.svelte-l9ncfd{max-width:1200px;margin:0 auto}.modal.svelte-38j5yr{display:block}.modal-body.svelte-38j5yr{overflow-y:auto;max-height:calc(90vh - 3.875rem)}.expanded.svelte-38j5yr{height:calc(90vh - 3.875rem)}h5.svelte-38j5yr{font-size:1.25rem;margin-top:0}div.svelte-ydi49e{font-size:small;margin-top:50px}p.svelte-ydi49e{margin-block-end:0;margin-block-start:0}.dropzone{border:2px dashed var(--blueaf);border-radius:5px;background:var(--dropzone-background-color);width:80%;margin:0 auto 2em auto;position:relative}.dropzone figure{width:60px;height:60px;display:block;margin:0 auto}.dropzone figure svg{width:100%;height:100%;opacity:0.5}.dropzone figure svg use{width:100%;height:100%}.dropzone input[type=file]{opacity:0;overflow:hidden;position:absolute;width:100%;height:100%;left:0;top:0;z-index:1}.dropzone label{z-index:-1}.dropzone.focus{border-color:var(--green)}.dropzone.focus svg{fill:var(--green);opacity:1}.dropzone.focus input[type=file]:disabled + label svg{fill:var(--redaf);opacity:1}.dropzone input[type=file]:hover{cursor:pointer}.dropzone input[type=file]:disabled{cursor:not-allowed} .dropzone div[slot]{padding:20px +}.dropzone div[slot=top]{text-transform:uppercase;font-weight:200;font-size:1.5rem}.dropzone div[slot=top] strong{font-weight:200}ul.svelte-16swz26{display:block;margin:0.5em 0 0 0;padding:0}li.svelte-16swz26{--size:2em;display:inline-block;border-radius:5px;width:var(--size);height:var(--size);line-height:var(--size);text-align:center;background-color:var(--redaf);color:var(--white);margin:2px 5px}li.loaded.svelte-16swz26{background-color:var(--green) !important}li.optional.svelte-16swz26{background-color:var(--color)}.flag + .flag{margin-top:3rem}.flag{display:grid;grid-column-gap:var(--flag-gap, 1em);grid-template-columns:auto 1fr;grid-template-rows:repeat(3, minmax(min-content, max-content)) 1fr;grid-template-areas:"signifier ." "signifier title" "signifier content" ". content"}.flag__title{grid-area:title;align-self:center;display:flex;align-items:center}.flag__title:empty{grid-column:1;grid-row:2}.flag__title:empty:after{content:"x";visibility:hidden}.flag__title:empty ~ .flag__content{grid-row-start:2}.flag__signifier{grid-area:signifier;display:flex;align-self:center}.flag__content{grid-area:content}.flag--large-icon svg{width:4rem;height:4rem}.flag--no-title{font-size:1.1rem}.flag--no-title p{margin:0}.flag--large-title h2.svelte-19o17qn{font-size:2.8rem}picture img{max-width:100%;width:auto;height:auto}.illustration::after{content:'Exemple de résultat';display:block;padding:2px 5px;background-color:var(--green);color:var(--background-color);opacity:0.9;font-size:1.2em;border-radius:5px;top:calc(34 * calc(100% / 1032));position:absolute;width:220px;left:50%;margin-left:-110px;text-transform:uppercase;font-weight:200}@media all and (min-width: 1032px){picture img{max-width:800px}.illustration::after{font-size:1.5rem;width:300px;margin-left:-150px}}.illustration{margin:50px auto 0 auto;width:80%;position:relative}table.data.summary.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{table-layout:fixed}table.data.summary tfoot td{font-size:initial}.col1.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{width:130px}.col2.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{width:50%}table.data.summary thead th:first-child{position:relative}@media all and (min-width: 770px){.estimate.svelte-1njpx9m small.svelte-1njpx9m.svelte-1njpx9m{width:240px !important}}.estimate.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m{position:absolute;bottom:0px;left:0px}.estimate.svelte-1njpx9m small.svelte-1njpx9m.svelte-1njpx9m{border-radius:2px;padding:2px;display:block;color:var(--background-color);background-color:var(--green);font-size:small;width:126px;text-align:center}td.svelte-1njpx9m input.svelte-1njpx9m.svelte-1njpx9m{margin-bottom:0;width:120px}td.svelte-1njpx9m input.svelte-1njpx9m.svelte-1njpx9m:disabled{color:var(--green);-webkit-text-fill-color:var(--green);opacity:0.85}tbody.svelte-1njpx9m th.svelte-1njpx9m.svelte-1njpx9m{font-family:monospace;font-size:1.3rem}td.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m:not(:nth-child(1)),th.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m:not(:nth-child(1)){text-align:right}td.svelte-1njpx9m.svelte-1njpx9m.svelte-1njpx9m:not(:nth-child(1)){white-space:nowrap}tbody.svelte-1njpx9m>tr.svelte-1njpx9m:nth-child(12)>td.svelte-1njpx9m:nth-child(3){font-weight:bold}td.svelte-c5u0z8.svelte-c5u0z8:nth-child(5),th.svelte-c5u0z8.svelte-c5u0z8:nth-child(5){text-align:right;white-space:nowrap}details[open].svelte-c5u0z8 summary.svelte-c5u0z8{margin-bottom:2px}tr.warning th{color:white;background-color:var(--redaf);text-align:center}table.data thead tr:nth-child(1) th{text-align:center;font-size:large;border:none;text-transform:uppercase;font-weight:300;background-color:var(--table-background-color)}table.data tfoot tr, tfoot td{border:none;font-size:small}table.data tbody td{font-family:monospace;font-size:1.3rem}table.data{margin-top:3em;color:var(--table-color)}table.data th, table.data td{border-color:var(--table-border-color)} tbody tr:nth-child(even), thead tr:nth-child(2), thead tr:nth-child(3){background-color:var(--table-highlight-color)}tbody tr:nth-child(odd){background-color:var(--table-background-color)}summary:focus{outline:none}table.data.print{color:black}table.data.print tfoot tr{background-color:white}table.data.print thead tr:nth-child(1) th{background-color:white}table.data.print tbody tr:nth-child(odd){background-color:white}table.data.print tbody tr:nth-child(even), table.data.print thead tr:nth-child(2), table.data.print thead tr:nth-child(3){background-color:var(--light-grey)}table.data.print th, table.data.print td{border-color:#ccc}ul.svelte-9ow13k.svelte-9ow13k{padding-left:1em}li.svelte-9ow13k.svelte-9ow13k{list-style:square}h2.svelte-9ow13k.svelte-9ow13k{font-size:1.25rem;border-bottom:1px solid #eee}li.svelte-9ow13k:not(:first-child) h2.svelte-9ow13k{margin-top:1rem}h2.svelte-9ow13k .date{font-size:0.9rem}h2.svelte-9ow13k .version::before{content:"v";font-variant:normal;font-size:1rem}.item.svelte-9ow13k.svelte-9ow13k{margin-bottom:0.25rem;margin-left:0.5rem;text-indent:-0.8em}.item.svelte-9ow13k .badge{text-indent:0;margin-right:0.5rem;min-width:8ch}a[download]{padding:10px;background-color:var(--blueaf);display:inline-block;color:var(--white);border-radius:5px;text-decoration:none}a[download].disabled.svelte-j6w2rc{display:none}@media(max-width: 1024px){thead.svelte-1pkoo1p th.svelte-1pkoo1p:nth-child(4),thead.svelte-1pkoo1p th.svelte-1pkoo1p:nth-child(5),td.svelte-1pkoo1p.svelte-1pkoo1p:nth-child(5),td.svelte-1pkoo1p.svelte-1pkoo1p:nth-child(6){display:none}}th.svelte-1pkoo1p.svelte-1pkoo1p,td.svelte-1pkoo1p.svelte-1pkoo1p{text-align:right}thead.svelte-1pkoo1p tr:nth-child(2) th.svelte-1pkoo1p{border-bottom:none;padding-top:0.5em;padding-bottom:0}thead.svelte-1pkoo1p td.svelte-1pkoo1p{border-top:none;font-weight:normal;font-size:x-small}thead.svelte-1pkoo1p tr.svelte-1pkoo1p:nth-child(3){height:0.7em;line-height:0.1em;padding-top:0;padding-bottom:0}thead.svelte-1pkoo1p tr:nth-child(2) th.svelte-1pkoo1p:nth-child(1),tbody.svelte-1pkoo1p td.svelte-1pkoo1p:nth-child(2),td.svelte-1pkoo1p.svelte-1pkoo1p:nth-child(1){text-align:left} \ No newline at end of file diff --git a/js/bundle.js b/js/bundle.js index d22c428..88d9f6b 100644 --- a/js/bundle.js +++ b/js/bundle.js @@ -1,2 +1,2 @@ -var app=function(){"use strict";function e(){}const t=e=>e;function n(e,t){for(const n in t)e[n]=t[n];return e}function S(e){return e()}function s(){return Object.create(null)}function r(e){e.forEach(S)}function o(e){return"function"==typeof e}function U(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function l(t,...n){if(null==t)return e;const S=t.subscribe(...n);return S.unsubscribe?()=>S.unsubscribe():S}function i(e,t,n){e.$$.on_destroy.push(l(t,n))}function a(e,t,n,S){if(e){const s=c(e,t,n,S);return e[0](s)}}function c(e,t,S,s){return e[1]&&s?n(S.ctx.slice(),e[1](s(t))):S.ctx}function A(e,t,n,S){if(e[2]&&S){const s=e[2](S(n));if(void 0===t.dirty)return s;if("object"==typeof s){const e=[],n=Math.max(t.dirty.length,s.length);for(let S=0;S32){const t=[],n=e.ctx.length/32;for(let e=0;ewindow.performance.now():()=>Date.now(),E=N?e=>requestAnimationFrame(e):e;const I=new Set;function T(e){I.forEach((t=>{t.c(e)||(I.delete(t),t.f())})),0!==I.size&&E(T)}function L(e){let t;return 0===I.size&&E(T),{promise:new Promise((n=>{I.add(t={c:e,f:n})})),abort(){I.delete(t)}}}function P(e,t){e.appendChild(t)}function p(e){if(!e)return document;const t=e.getRootNode?e.getRootNode():e.ownerDocument;return t.host?t:document}function G(e){const t=K("style");return function(e,t){P(e.head||e,t)}(p(e),t),t}function D(e,t,n){e.insertBefore(t,n||null)}function O(e){e.parentNode.removeChild(e)}function f(e,t){for(let n=0;ne.removeEventListener(t,n,S)}function g(e){return function(t){return t.preventDefault(),e.call(this,t)}}function Z(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function V(e,t){const n=Object.getOwnPropertyDescriptors(e.__proto__);for(const S in t)null==t[S]?e.removeAttribute(S):"style"===S?e.style.cssText=t[S]:"__value"===S?e.value=e[S]=t[S]:n[S]&&n[S].set?e[S]=t[S]:Z(e,S,t[S])}function v(e){return""===e?null:+e}function $(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function J(e,t){e.value=null==t?"":t}function W(e,t,n,S){e.style.setProperty(t,n,S?"important":"")}function X(e,t){for(let n=0;n>>0}(a)}_${U}`,A=p(e);w.add(A);const C=A.__svelte_stylesheet||(A.__svelte_stylesheet=G(e).sheet),R=A.__svelte_rules||(A.__svelte_rules={});R[c]||(R[c]=!0,C.insertRule(`@keyframes ${c} ${a}`,C.cssRules.length));const u=e.style.animation||"";return e.style.animation=`${u?`${u}, `:""}${c} ${S}ms linear ${s}ms 1 both`,j+=1,c}function z(e,t){const n=(e.style.animation||"").split(", "),S=n.filter(t?e=>e.indexOf(t)<0:e=>-1===e.indexOf("__svelte")),s=n.length-S.length;s&&(e.style.animation=S.join(", "),j-=s,j||E((()=>{j||(w.forEach((e=>{const t=e.__svelte_stylesheet;let n=t.cssRules.length;for(;n--;)t.deleteRule(n);e.__svelte_rules={}})),w.clear())})))}function q(e){x=e}function ee(){if(!x)throw new Error("Function called outside component initialization");return x}function te(e){ee().$$.on_mount.push(e)}function ne(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach((e=>e.call(this,t)))}const Se=[],se=[],re=[],oe=[],Ue=Promise.resolve();let le=!1;function ie(e){re.push(e)}let ae=!1;const ce=new Set;function Ae(){if(!ae){ae=!0;do{for(let e=0;e{Re=null}))),Re}function Be(e,t,n){e.dispatchEvent(y(`${t?"intro":"outro"}${n}`))}const Me=new Set;let Ne;function de(){Ne={r:0,c:[],p:Ne}}function Ee(){Ne.r||r(Ne.c),Ne=Ne.p}function Ie(e,t){e&&e.i&&(Me.delete(e),e.i(t))}function Te(e,t,n,S){if(e&&e.o){if(Me.has(e))return;Me.add(e),Ne.c.push((()=>{Me.delete(e),S&&(n&&e.d(1),S())})),e.o(t)}}const Le={duration:0};function Pe(n,S,s){let r,U,l=S(n,s),i=!1,a=0;function c(){r&&z(n,r)}function A(){const{delay:S=0,duration:s=300,easing:o=t,tick:A=e,css:C}=l||Le;C&&(r=k(n,0,1,s,S,o,C,a++)),A(0,1);const R=d()+S,u=R+s;U&&U.abort(),i=!0,ie((()=>Be(n,!0,"start"))),U=L((e=>{if(i){if(e>=u)return A(1,0),Be(n,!0,"end"),c(),i=!1;if(e>=R){const t=o((e-R)/s);A(t,1-t)}}return i}))}let C=!1;return{start(){C||(C=!0,z(n),o(l)?(l=l(),ue().then(A)):A())},invalidate(){C=!1},end(){i&&(c(),i=!1)}}}function pe(n,S,s,U){let l=S(n,s),i=U?0:1,a=null,c=null,A=null;function C(){A&&z(n,A)}function R(e,t){const n=e.b-i;return t*=Math.abs(n),{a:i,b:e.b,d:n,duration:t,start:e.start,end:e.start+t,group:e.group}}function u(S){const{delay:s=0,duration:o=300,easing:U=t,tick:u=e,css:B}=l||Le,M={start:d()+s,b:S};S||(M.group=Ne,Ne.r+=1),a||c?c=M:(B&&(C(),A=k(n,i,S,o,s,U,B)),S&&u(0,1),a=R(M,o),ie((()=>Be(n,S,"start"))),L((e=>{if(c&&e>c.start&&(a=R(c,o),c=null,Be(n,a.b,"start"),B&&(C(),A=k(n,i,a.b,a.duration,0,U,l.css))),a)if(e>=a.end)u(i=a.b,1-i),Be(n,a.b,"end"),c||(a.b?C():--a.group.r||r(a.group.c)),a=null;else if(e>=a.start){const t=e-a.start;i=a.a+a.d*U(t/a.duration),u(i,1-i)}return!(!a&&!c)})))}return{run(e){o(l)?ue().then((()=>{l=l(),u(e)})):u(e)},end(){C(),a=c=null}}}function Ge(e,t){const n=t.token={};function S(e,S,s,r){if(t.token!==n)return;t.resolved=r;let o=t.ctx;void 0!==s&&(o=o.slice(),o[s]=r);const U=e&&(t.current=e)(o);let l=!1;t.block&&(t.blocks?t.blocks.forEach(((e,n)=>{n!==S&&e&&(de(),Te(e,1,1,(()=>{t.blocks[n]===e&&(t.blocks[n]=null)})),Ee())})):t.block.d(1),U.c(),Ie(U,1),U.m(t.mount(),t.anchor),l=!0),t.block=U,t.blocks&&(t.blocks[S]=U),l&&Ae()}if((s=e)&&"object"==typeof s&&"function"==typeof s.then){const n=ee();if(e.then((e=>{q(n),S(t.then,1,t.value,e),q(null)}),(e=>{if(q(n),S(t.catch,2,t.error,e),q(null),!t.hasCatch)throw e})),t.current!==t.pending)return S(t.pending,0),!0}else{if(t.current!==t.then)return S(t.then,1,t.value,e),!0;t.resolved=e}var s}function De(e){e&&e.c()}function Oe(e,t,n,s){const{fragment:U,on_mount:l,on_destroy:i,after_update:a}=e.$$;U&&U.m(t,n),s||ie((()=>{const t=l.map(S).filter(o);i?i.push(...t):r(t),e.$$.on_mount=[]})),a.forEach(ie)}function fe(e,t){const n=e.$$;null!==n.fragment&&(r(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function Ke(e,t){-1===e.$$.dirty[0]&&(Se.push(e),le||(le=!0,Ue.then(Ae)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const s=S.length?S[0]:n;return A.ctx&&U(A.ctx[e],A.ctx[e]=s)&&(!A.skip_bound&&A.bound[e]&&A.bound[e](s),C&&Ke(t,e)),n})):[],A.update(),C=!0,r(A.before_update),A.fragment=!!o&&o(A.ctx),n.target){if(n.hydrate){const e=function(e){return Array.from(e.childNodes)}(n.target);A.fragment&&A.fragment.l(e),e.forEach(O)}else A.fragment&&A.fragment.c();n.intro&&Ie(t.$$.fragment),Oe(t,n.target,n.anchor,n.customElement),Ae()}q(c)}class Fe{$destroy(){fe(this,1),this.$destroy=e}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Ye=e=>({}),He=e=>({}),he=e=>({}),ge=e=>({});function Ze(e){let t,n,S,s,r,o,U,l,i,c;const u=e[4].icon,B=a(u,e,e[3],ge),M=e[4].content,N=a(M,e,e[3],He);return{c(){t=K("div"),n=Y(),S=K("div"),B&&B.c(),s=Y(),r=K("div"),o=K("h2"),U=F(e[0]),l=Y(),i=K("div"),N&&N.c(),Z(S,"class","flag__signifier"),b(S,"flag--large-icon",e[1].includes("large-icon")),b(S,"flag--no-title",!e[0]),b(S,"flag--large-title",e[0]&&e[1].includes("large-title")),Z(o,"class","svelte-19o17qn"),Z(r,"class","flag__title"),Z(i,"class","flag__content"),Z(t,"class","flag")},m(e,a){D(e,t,a),P(t,n),P(t,S),B&&B.m(S,null),P(t,s),P(t,r),P(r,o),P(o,U),P(t,l),P(t,i),N&&N.m(i,null),c=!0},p(e,[t]){B&&B.p&&(!c||8&t)&&C(B,u,e,e[3],c?A(u,e[3],t,he):R(e[3]),ge),1&t&&b(S,"flag--no-title",!e[0]),3&t&&b(S,"flag--large-title",e[0]&&e[1].includes("large-title")),(!c||1&t)&&$(U,e[0]),N&&N.p&&(!c||8&t)&&C(N,M,e,e[3],c?A(M,e[3],t,Ye):R(e[3]),He)},i(e){c||(Ie(false),Ie(B,e),Ie(N,e),c=!0)},o(e){Te(false),Te(B,e),Te(N,e),c=!1},d(e){e&&O(t),B&&B.d(e),N&&N.d(e)}}}function Ve(e,t,n){let{$$slots:S={},$$scope:s}=t,{style:r="large-icon"}=t;const o=r.split().map((e=>e.trim()));let{title:U}=t;return e.$$set=e=>{"style"in e&&n(2,r=e.style),"title"in e&&n(0,U=e.title),"$$scope"in e&&n(3,s=e.$$scope)},[U,o,r,s,S]}class ve extends Fe{constructor(e){super(),me(this,e,Ve,Ze,U,{style:2,title:0})}}function $e(e){let t,S;const s=e[3].default,r=a(s,e,e[2],null);let o=[{href:e[0]},e[1]],U={};for(let e=0;e{t=n(n({},t),function(e){const t={};for(const n in e)"$"!==n[0]&&(t[n]=e[n]);return t}(e)),S(5,r=u(t,s)),"href"in e&&S(0,l=e.href),"$$scope"in e&&S(2,U=e.$$scope)},[l,i,U,o]}class We extends Fe{constructor(e){super(),me(this,e,Je,$e,U,{href:0})}}class Xe{constructor(){this.promise=new Promise(((e,t)=>{this.reject=t,this.resolve=e}))}}const be='',ye="undefined"!=typeof navigator&&navigator.languages?Array.from(Intl.DateTimeFormat.supportedLocalesOf(Intl.NumberFormat.supportedLocalesOf(navigator.languages))).shift():void 0,Qe=["01","02","03","04","05","06","07","08","09","10","11","12"],we=["00",...Qe,"13"],xe=["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],je=(e,t={})=>{if(void 0!==ye){const n=new Intl.NumberFormat(ye,t).format(e);return"currency"===t.style?n.replace(/\s/gu," "):n}{const n=e.toFixed?e:parseFloat(e);return"currency"===t.style?n.toFixed(t.maximumFractionDigits||2)+" "+t.currency:void 0===t.maximumFractionDigits||t.maximumFractionDigits!==t.minimumFractionDigits?n.toString():n.toFixed(t.maximumFractionDigits)}},ke=(e,t=2)=>je(e,{style:"currency",currency:"EUR",minimumFractionDigits:t}),_e=e=>je(e,{style:"decimal",minimumFractionDigits:4,maximumFractionDigits:4}),ze=(e,t={})=>{if(void 0!==ye){const n=new Date(Date.parse(e.substring(0,10)+"T00:00Z")),S=Object.assign({timezone:"UTC"},t);return new Intl.DateTimeFormat(ye,S).format(n)}return e.substring(0,10)},qe=function(e,t){let n=new Promise(((t,n)=>{let S=setTimeout((()=>{clearTimeout(S),n("Timed out in "+e+"ms.")}),e)}));return Promise.race([t,n])},et=(e,t)=>{let n=e.split("."),S=t.split(".");for(var s=0;s<3;s++){let e=Number(n[s]),t=Number(S[s]);if(e>t)return 1;if(t>e)return-1;if(!isNaN(e)&&isNaN(t))return 1;if(isNaN(e)&&!isNaN(t))return-1}return 0},tt=async()=>{const e={title:"FLYTAX",url:window.location.pathname};try{await navigator.share(e)}catch(e){}return!1};function nt(e){const t=e-1;return t*t*t+1}function St(e,{delay:n=0,duration:S=400,easing:s=t}={}){const r=+getComputedStyle(e).opacity;return{delay:n,duration:S,easing:s,css:e=>"opacity: "+e*r}}function st(e,{delay:t=0,duration:n=400,easing:S=nt,x:s=0,y:r=0,opacity:o=0}={}){const U=getComputedStyle(e),l=+U.opacity,i="none"===U.transform?"":U.transform,a=l*(1-o);return{delay:t,duration:n,easing:S,css:(e,t)=>`\n\t\t\ttransform: ${i} translate(${(1-e)*s}px, ${(1-e)*r}px);\n\t\t\topacity: ${l-a*t}`}}const rt=[];function ot(e,t){return{subscribe:Ut(e,t).subscribe}}function Ut(t,n=e){let S;const s=new Set;function r(e){if(U(t,e)&&(t=e,S)){const e=!rt.length;for(const e of s)e[1](),rt.push(e,t);if(e){for(let e=0;e{s.delete(l),0===s.size&&(S(),S=null)}}}}function lt(t,n,S){const s=!Array.isArray(t),U=s?[t]:t,i=n.length<2;return ot(S,(t=>{let S=!1;const a=[];let c=0,A=e;const C=()=>{if(c)return;A();const S=n(s?a[0]:a,t);i?t(S):A=o(S)?S:e},R=U.map(((e,t)=>l(e,(e=>{a[t]=e,c&=~(1<{c|=1<{const[t,n]=e.split(",");return`${t}:${(.6*parseFloat(n)).toFixed(0).padStart(2,"0")}Z`},Ct=(e,t)=>{const n=Date.parse(t.replace("24:00","23:59"))-Date.parse(e.replace(/\d\d:\d\d/,"00:00"));return Math.floor(n/864e5)},Rt=((e,t,n=0)=>{if(void 0===t)return e;let S=new Date(Date.parse(t));n&&S.setUTCDate(S.getUTCDate()+n);const s=S.toLocaleString("en-GB",{timeZone:e});let r;if(null!==(r=/(\d\d)\/(\d\d)\/(\d\d\d\d), (\d\d):(\d\d):\d\d/.exec(s))){const[,e,t,n,s,o]=r;let U=`${n}-${t}-${e}T${s}:${o}`;const l=(new Date(Date.parse(U+"Z"))-S)/36e5;let i=Math.trunc(l),a=Math.round(60*(Math.abs(l)-Math.abs(i))/100);return 0===i?U+"Z":(U+=i>=0?"+":"-",U+=Math.abs(i).toString().padStart(2,"0")+":"+a.toString().padStart(2,"0"),U)}throw new Error(`Can not convert ${t} to timeZone ${e}`)}).bind(null,"Europe/Paris"),ut=e=>{const t=e.nights.reduce(((e,t)=>(t!==e[e.length-1]&&e.push(t),e)),[]);return[e.dep,...t,e.arr].join("-").replace("-...",at).replace("...-",at)},Bt=(e,{tzConverter:t,base:n,iataMap:S})=>{const s=t();try{(new Date).toLocaleString("en-GB",{timeZone:s,timeZoneName:"short"})}catch(e){throw new Error(`Date.toLocaleString("en-GB", {"timeZone": "${s}"}) not supported`)}const r=e=>-1!==n.indexOf(e);let o,U,l=[],i=null;for(const[s,B]of e.entries()){const M=B.start.substring(0,4),N=B.start.substring(5,7),d=Object.assign({},B);if(t&&Object.assign(d,{start:t(B.start),end:t(B.end)}),null===i&&(o=[],U=[],i={isComplete:"<>",nights:[],start:d.start}),0===s&&(r(d.dep)&&"0,00"===d.stop&&"01"===B.start.substring(8,10)||!r(d.dep))){if(i.isComplete=">",!r(d.dep)){i.start=`${M}-${N}-01T00:00Z`,t&&(i.start=t(i.start));const e=Ct(i.start,d.start)+1;for(let t=0;t0)&&i.nights.push(d.dep)}const E=e[s+1]?Object.assign({},e[s+1]):void 0;if(t&&E&&Object.assign(E,{start:t(e[s+1].start),end:t(e[s+1].end)}),void 0!==E){const e=(R=d.end,u=E.start,(Date.parse(u)-Date.parse(R))/36e5);let t=0;if(t+=0===Ct(i.start,d.start)&&r(d.dep)?Ct(d.start,d.end):0,t+=Ct(d.end,E.start),t+=Ct(E.start,E.end),t=Math.max(t,1),e>=7&&!r(d.arr)){for(let e=0;e=12)){o.push(B);continue}}else if(r(d.arr))d.end.substring(5,7)!==N&&"24:00Z"===B.end.substring(11)&&(i.isComplete="<",i.days=Ct(i.start,d.end));else{i.isComplete="<";const e=(A=void 0,C=void 0,`${c=M}-${a=N}-${A=parseInt(a,10),C=parseInt(c,10),2===A?3&C||!(C%25)&&15&C?28:29:30+(A+(A>>3)&1)}T24:00Z`);i.end=t?t(e):e;const n=Ct(d.end,i.end)+1;for(let e=0;e0&&U.push(d.arr);i.end.substring(5,7)!==N&&(d.end.substring(5,7)===N&&i.nights.pop(),i.days=Ct(i.start,i.end))}o.push(B),"<>"!==i.isComplete&&(i.flights=o,i.base=n),i.end||(i.end=d.end),i.days||(i.days=Ct(i.start,i.end)+1);let I=n[0],T=n[0];i.isComplete.startsWith("<")?o.length>0&&(I=o[0].dep):I=at,i.isComplete.endsWith(">")?o.length>0&&(T=o[o.length-1].arr):T=at,i.dep=I,i.arr=T,i.summary=ut(i);const L=i.nights.length,P=i.days-L,p=i.nights.length>0?i.nights[L-1]:I!==at?I:T!==at?T:n[0];for(let e=0;e"===i.isComplete&&([i.nights]=Mt(i,U));0===o.reduce(((e,t)=>e+(r(t.dep)&&r(t.arr)?0:1)),0)&&(i.nights=[]),S&&(i.countries=i.nights.map((e=>S(e)))),l.push(i),i=null}var a,c,A,C,R,u;return l},Mt=(e,t)=>{const n=e.nights,S=e.countries;if(Array.isArray(t)){const s=t.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t===e[n][0]?e[n][1]+=1:e.push([t,1]),e}),[]),r=n.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t===e[n][0]?e[n][1]+=1:e.push([t,1]),e}),[]);if(2===s.length&&s[0][1]===s[1][1]&&2===r.length&&r[1][1]-r[0][1]==2){const t=[].concat(n[0],...n.slice(0,-1));let s=S;return void 0!==S&&(s=[].concat(S[0],...S.slice(0,-1))),console.log(`Optimisation des nuits sur ${e.summary} du ${e.start.substring(0,10).split("-").reverse().join("/")}\n(conformément à l'exemple 13 du mémento fiscal)\n${n} -> ${t}`),[t,s]}}return[n,S]},Nt=e=>{const t=it.indexOf(e+":");return t>=0?it.substring(t+4,t+6):e};class dt extends Error{}const Et=(e,t,n)=>{const[S,s]=It(e,t),r=n[s];if(r){const e=parseFloat(r[2]);return parseFloat((parseFloat(S)/e).toFixed(2))}throw new dt(`Taux de change inconnu pour ${s}`)},It=(e,t)=>{for(const[n,S,s]of e.a)if(n.localeCompare(t)<=0)return[s,S];throw new dt(e?`Pas d'indemnité définie pour ${e.n} au ${t}`:"Indemnité manquante")},Tt=(e,t,n,S,s)=>{const r=[],o=n.countries,U=n.exr,l=.5,i=(parseInt(e,10)+1).toString(),a=(parseInt(e,10)-1).toString();for(const n of t){let t=!1;const c=[];let A=l,C=0;if(0===n.nights.length)n.formula="rotation sur base";else if(n.nights.length>n.days||n.countries.length>n.days)n.formula="Erreur: nuitées > nb de jours",n.currencyFormula="Vérifiez le choix de la base",console.log(`%c${s}\n%ctype [ep5] %cVérifiez la base`,"font-family: monospace;","color: black;","color: red;"),t=!0;else{for(const e of n.countries){const t=o[e];if(t&&1!==t.z){A=0;break}}let s=n.countries.length;const r=n.countries.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t===e[n][1]?e[n][0]+=1:e.push([1,t]),e}),[]);let R=[],u=0;0!==A&&r.length>0&&(r[r.length-1][0]-=A,s-=A);let B=0;for(const[s,A]of r){let r=s,M=o[A];M&&1===M.f&&(M=o.EU);let N=0;const d=[];if(M)try{const t=[],o=Math.ceil(s)>s;for(let c=0;c"===n.isComplete||R===a&&"<"===n.isComplete||(r-=0===c&&o?l:1);B+=1}u+=r,r>=0&&R.push([r,A]),t.length>0&&d.push(...t.reverse())}catch(e){t=!0,e instanceof dt?console.error(e.message):console.error(e)}else t=!0,2===A.length?console.error(`Données pays manquantes pour ${A}`):console.error(`Code IATA inconnu ${A}`);d.length>0&&c.push(d.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t[1]===e[n][1]?e[n][0]+=t[0]:e.push(t),e}),[])),C+=N}R=R.reduce(((e,t)=>t[0]>0?e.concat([[je(t[0],{style:"decimal",minFractionDigits:0,maxFractionDigits:1}),t[1]]]):e),[]),n.formula=R.map((e=>e.join(" x "))).join(" + "),n.formula+=t||s===u?"":" ¹",n.formula+=t||se.concat([[je(t[0],{style:"decimal",minFractionDigits:0,maxFractionDigits:1}),t[1]]])),[]).map((e=>e.join(" x "))).join(" + ");e.length>1?M.push(`(${t})`):M.push(t)}if(n.currencyFormula=M.join(" + "),R.length<=0&&0!==r.length&&!t)continue}n.indemnity=t?0:parseFloat(C.toFixed(2)),n.error=t,r.push(n)}return r};function*Lt(e){for(const t of we){const n=e[t];n&&(yield*n.rots)}}function*Pt(e){for(const t of e)yield*t}const pt=(e,t)=>{const n=[...e],S=[...t];if(S.length>0&&"0,00"===S[0].stop&&n.length>0){const e=S.shift(),t={...n.pop()};return t.end=e.end,n.concat(t,[...S])}return n.concat(S)},Gt=[{label:"Marseille",selected:!1,value:["MRS"],tzConverter:Rt},{label:"Nice",selected:!1,value:["NCE"],tzConverter:Rt},{label:"Paris",selected:!0,value:["CDG","ORY"],tzConverter:Rt},{label:"Toulouse",selected:!1,value:["TLS"],tzConverter:Rt}].sort(((e,t)=>e.label.localeCompare(t.label))),Dt=[{label:"2024",selected:!1,url:"./data/data2023b.json"},{label:"2023",selected:!0,url:"./data/data2023b.json"},{label:"2022",selected:!1,url:"./data/data2022.json"},{label:"2021",selected:!1,url:"./data/data2021.json"},{label:"2020",selected:!1,url:"./data/data2020.json"},{label:"2019",selected:!1,url:"./data/data2019.json"},{label:"2018",selected:!1,url:"./data/data2018.json"}].sort(((e,t)=>t.label.localeCompare(e.label))),Ot=Dt.filter((e=>e.selected)).pop().label,ft=Ut(Gt.filter((e=>e.selected)).pop().value),Kt=Ut(Gt.filter((e=>e.selected)).pop().tzConverter);function mt(e){const{subscribe:t,set:n,update:S}=Ut(e);return{subscribe:t,set:n,update:S,reset:()=>n("object"==typeof e?{...e}:Array.isArray(e)?[...e]:e)}}const Ft=(()=>{const{subscribe:e,set:t,update:n}=Ut(new Array),S=(e,t,n)=>e.push({type:t,values:n});let s,r;"undefined"!=typeof window&&console&&(s=console.log,r=console.error);const o=function(){n((e=>(S(e,"log",[...arguments]),e))),s&&console&&s.apply(console,arguments)},U=function(){n((e=>(S(e,"error",[...arguments]),e))),r&&console&&r.apply(console,arguments)};return"undefined"!=typeof window&&console&&(console.log=o,console.error=U),{subscribe:e,log:o,error:U,reset:()=>t(new Array)}})();function Yt(){return 2===Object.keys(this).length}const Ht=mt({type:"ep5",isEmpty:Yt}),ht=mt({type:"pay",isEmpty:Yt}),gt=mt(),Zt=mt(),Vt=Ut(Ot),vt=lt(Vt,((e,t)=>{Ht.reset(),ht.reset(),Ft.reset(),gt.reset(),Zt.reset(),fetch(Dt.filter((t=>t.label===e)).pop().url).then((e=>e.json())).then((e=>t(e)))}),void 0),$t=lt([Ht,Vt,vt,Kt],(([e,t,n,S])=>void 0===n?[]:((e,t,n,S)=>{const s=Array.isArray(e)?Pt(e):Lt(e),r=Array.isArray(e)?Pt(e):Lt(e);r.next();const o=[];for(const e of s){const U=r.next().value;if(U&&"<"===e.isComplete&&">"===U.isComplete&&e.end.substring(0,7)===U.end.substring(0,7)){const[l]=Bt(pt(e.flights,U.flights),{base:e.base,tzConverter:S,iataMap:Nt}),[i]=Tt(t,[l],n,S);o.push(i),s.next(),r.next()}else o.push(e)}return o})(e,t,n,S))),Jt=lt($t,(e=>Object.values(e).reduce(((e,t)=>e+t.indemnity),0).toFixed(0)));ot({},(e=>{const t=()=>{e(navigator.onLine)};return"undefined"!=typeof navigator&&"onLine"in navigator?(t(),window.addEventListener("offline",t),window.addEventListener("online",t)):e(void 0),()=>{"undefined"!=typeof navigator&&"onLine"in navigator&&(window.removeEventListener("offline",t),window.removeEventListener("online",t))}}));const Wt=Ut(!1),Xt=Ut();let bt=new Date;const yt=()=>{if("serviceWorker"in navigator){const e=18e5;new Date-bt>e&&navigator.serviceWorker.getRegistration().then((e=>{e&&(e.waiting||e.update(),Wt.set(!1),bt=new Date)}),console.error)}},Qt=()=>{document&&document.visibilityState&&"visible"===document.visibilityState&&yt()},wt=ot(null,(e=>{const t=()=>{e(window.location.hash.substr(1)||"/"),yt()};return t(),window.addEventListener("hashchange",t),()=>{window.removeEventListener("hashchange",t)}}));function xt(e,t,n){const S=e.slice();return S[10]=t[n],S}function jt(e){let t,n,S,s,o,U,l,i,a,c,A,C,R,u,B,N,d,E,I=e[1],T=[];for(let t=0;tX",c=Y(),A=K("div"),C=K("div"),R=K("ol");for(let e=0;e{B||(B=pe(t,St,{duration:200},!0)),B.run(1)})),N=!0)},o(e){B||(B=pe(t,St,{duration:200},!1)),B.run(0),N=!1},d(e){e&&O(t),f(T,e),e&&B&&B.end(),d=!1,r(E)}}}function kt(e){let t,n,S=e[2](e[10])+"";return{c(){t=new Q,n=H(),t.a=n},m(e,s){t.m(S,e,s),D(e,n,s)},p(e,n){2&n&&S!==(S=e[2](e[10])+"")&&t.p(S)},d(e){e&&O(n),e&&t.d()}}}function _t(e){let t,n,S=e[0]&&jt(e);return{c(){S&&S.c(),t=H()},m(e,s){S&&S.m(e,s),D(e,t,s),n=!0},p(e,[n]){e[0]?S?(S.p(e,n),1&n&&Ie(S,1)):(S=jt(e),S.c(),Ie(S,1),S.m(t.parentNode,t)):S&&(de(),Te(S,1,1,(()=>{S=null})),Ee())},i(e){n||(Ie(S),n=!0)},o(e){Te(S),n=!1},d(e){S&&S.d(e),e&&O(t)}}}const zt=Ut(!1);function qt(t,n,S){let s,r,o=e;i(t,zt,(e=>S(0,s=e))),i(t,Ft,(e=>S(1,r=e))),t.$$.on_destroy.push((()=>o()));const U=e=>e.replace(/\n/g,"
"),l=e=>`

${U(e)}

`,a=e=>e instanceof Error?e.message:null===e?"null":void 0===e?"undefined":"[object String]"===Object.prototype.toString.call(e)||e.toString?e.toString():"alerte visible dans la console du navigateur";return[s,r,e=>{try{const t=[];if(!Array.isArray(e.values)||0===e.values.lenght)return"";if("[object String]"===Object.prototype.toString.call(e.values[0])&&e.values[0].includes("%c"))t.push((e=>{const t=e.values.slice(1),n=e.values[0],S=n.match(/%c/g).length;t.length=S;const s=[],r=e=>e.replace("color: darkorange;","color: var(--maximum-yellow-red);").replace("color: red;","color: var(--redaf);").replace("color: black;","color: var(--blueaf);");for(const[e,S]of Object.entries(n.split("%c")))e>0&&s.push(`${U(S)}`);return`

${s.join("")}

`})(e));else for(const n of e.values)t.push(l(a(n)));return`
  • ${t.join("")}
  • `}catch(e){return`
  • Erreur dans la console: ${e.message}

  • `}},()=>{Ft.reset(),B(zt,s=!1,s)},e=>{e.scrollTop=e.scrollHeight},()=>B(zt,s=!1,s)]}class en extends Fe{constructor(e){super(),me(this,e,qt,_t,U,{})}}function tn(t){return{c:e,m:e,i:e,o:e,d:e}}function nn(t){let n,S;return{c(){n=K("div"),n.innerHTML='

    Simplifier les impôts des pilotes en respectant la confidentialité.

    \n

    —@flyingeek
    pilote de ligne

    ',Z(n,"class","blockquote svelte-15co0wx")},m(e,t){D(e,n,t)},p(e,n){t=e},i(e){S||ie((()=>{S=Pe(n,st,{x:t[0]?0:600,duration:t[0]?0:1e3}),S.start()}))},o:e,d(e){e&&O(n)}}}function Sn(t){return{c:e,m:e,i:e,o:e,d:e}}function sn(e){let t,n,S,s,r,o;return{c(){t=m("svg"),n=m("rect"),S=m("rect"),s=m("rect"),r=m("path"),o=m("polygon"),Z(n,"x","27.689"),Z(n,"y","181"),Z(n,"width","58.8"),Z(n,"height","30"),Z(S,"x","27.689"),Z(S,"y","301"),Z(S,"width","58.8"),Z(S,"height","30"),Z(s,"y","241"),Z(s,"width","86.49"),Z(s,"height","30"),Z(r,"d","M314.244,58.245c-109.042,0-197.755,88.713-197.755,197.755s88.712,197.755,197.755,197.755S512,365.042,512,256\n S423.287,58.245,314.244,58.245z M314.244,423.755c-92.5,0-167.755-75.255-167.755-167.755S221.744,88.245,314.244,88.245\n C406.745,88.245,482,163.5,482,256S406.745,423.755,314.244,423.755z"),Z(o,"points","323.93,263.454 323.93,166.557 293.93,166.557 293.93,279.313 371.238,331.996 388.133,307.205"),Z(t,"slot","icon"),Z(t,"width","47px"),Z(t,"height","47px"),Z(t,"viewBox","0 0 512 512")},m(e,U){D(e,t,U),P(t,n),P(t,S),P(t,s),P(t,r),P(t,o)},d(e){e&&O(t)}}}function rn(e){let t;return{c(){t=F("MyPeopleDoc")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function on(e){let t,n,S,s,r,o,U,l,i,a,c;return s=new We({props:{href:"https://www.mypeopledoc.com",$$slots:{default:[rn]},$$scope:{ctx:e}}}),{c(){t=K("ol"),n=K("li"),S=F("Récupérez vos EP4/EP5 et vos bulletins de salaire sur "),De(s.$$.fragment),r=Y(),o=K("li"),U=F("Choisissez l’année en haut à droite sur "),l=K("b"),i=Y(),a=K("li"),a.innerHTML='Déposez vos fichiers dans Frais de Mission\n ou dans Salaire',Z(n,"class","svelte-15co0wx"),Z(o,"class","svelte-15co0wx"),Z(a,"class","svelte-15co0wx"),Z(t,"slot","content"),Z(t,"class","svelte-15co0wx")},m(e,A){D(e,t,A),P(t,n),P(n,S),Oe(s,n,null),P(t,r),P(t,o),P(o,U),P(o,l),l.innerHTML=be,P(t,i),P(t,a),c=!0},p(e,t){const n={};8&t&&(n.$$scope={dirty:t,ctx:e}),s.$set(n)},i(e){c||(Ie(s.$$.fragment,e),c=!0)},o(e){Te(s.$$.fragment,e),c=!1},d(e){e&&O(t),fe(s)}}}function Un(e){let t,n;return{c(){t=m("svg"),n=m("path"),Z(n,"d","M34.451,18.851v-7.893C34.451,4.915,29.539,0,23.497,0c-6.04,0-10.952,4.915-10.952,10.958v7.893H7.471V47h32.059V18.851\n H34.451z M18.026,10.958c0-3.023,2.452-5.481,5.47-5.481s5.47,2.458,5.47,5.481v7.893h-10.94V10.958z M21.817,41.934l-10.171-7.216\n l3.188-5.985l7.277,6.119l10.479-10.27l2.761,4.82L21.817,41.934z"),Z(t,"slot","icon"),Z(t,"width","47px"),Z(t,"height","47px"),Z(t,"viewBox","0 0 47 47")},m(e,S){D(e,t,S),P(t,n)},d(e){e&&O(t)}}}function ln(t){let n,S,s,r;return{c(){n=K("p"),S=F("Inutile de partager son calendrier ou d’envoyer des données sur Internet : "),s=K("b"),r=F("\n fonctionne directement dans votre navigateur, aucun fichier n’est transmis sur le réseau, aucune donnée n’est collectée."),Z(n,"slot","content")},m(e,t){D(e,n,t),P(n,S),P(n,s),s.innerHTML=be,P(n,r)},p:e,d(e){e&&O(n)}}}function an(e){let t,n,S,s;return{c(){t=m("svg"),n=m("ellipse"),S=m("path"),s=m("path"),Z(n,"cx","12"),Z(n,"cy","5"),Z(n,"rx","9"),Z(n,"ry","3"),Z(S,"d","M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"),Z(s,"d","M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"),Z(t,"slot","icon"),Z(t,"width","24"),Z(t,"height","24"),Z(t,"viewBox","0 0 24 24"),Z(t,"fill","none"),Z(t,"stroke","currentColor"),Z(t,"stroke-width","2"),Z(t,"stroke-linecap","round"),Z(t,"stroke-linejoin","round")},m(e,r){D(e,t,r),P(t,n),P(t,S),P(t,s)},d(e){e&&O(t)}}}function cn(t){let n,S,s,r,o,U,l,i,a,c,A;return{c(){n=K("div"),S=K("p"),s=F("Chaque année "),r=K("b"),o=F(" récupère les données à la source : le montant des indemnités provient du\n "),U=K("strong"),U.textContent="Ministère de l’Économie",l=F(", les taux de change sont ceux de la "),i=K("strong"),i.textContent="Banque de France",a=F("."),c=Y(),A=K("p"),A.innerHTML="Le programme en lui même inclus des tests permettant de fiabiliser les résultats\n et les erreurs détectées sont clairement affichées. Les exemples du Mémento fiscal du SNPL\n ont été utilisés pour tester et valider les résultats de l’application.",Z(n,"slot","content")},m(e,t){D(e,n,t),P(n,S),P(S,s),P(S,r),r.innerHTML=be,P(S,o),P(S,U),P(S,l),P(S,i),P(S,a),P(n,c),P(n,A)},p:e,d(e){e&&O(n)}}}function An(e){let t,n,S,s,r,o,U,l,i,a,c,A,C={ctx:e,current:null,token:null,hasCatch:!1,pending:Sn,then:nn,catch:tn,value:2};return Ge(e[1],C),U=new ve({props:{title:"Un outil simple et rapide",$$slots:{content:[on],icon:[sn]},$$scope:{ctx:e}}}),i=new ve({props:{title:"Une confidentialité préservée",$$slots:{content:[ln],icon:[Un]},$$scope:{ctx:e}}}),c=new ve({props:{title:"Des sources fiables",$$slots:{content:[cn],icon:[an]},$$scope:{ctx:e}}}),{c(){t=K("main"),n=K("div"),S=K("div"),s=Y(),C.block.c(),r=Y(),o=K("section"),De(U.$$.fragment),l=Y(),De(i.$$.fragment),a=Y(),De(c.$$.fragment),Z(S,"class","logo svelte-15co0wx"),Z(n,"class","blockquote-wrapper svelte-15co0wx"),Z(o,"class","svelte-15co0wx"),Z(t,"class","svelte-15co0wx")},m(e,R){D(e,t,R),P(t,n),P(n,S),S.innerHTML=be,P(n,s),C.block.m(n,C.anchor=null),C.mount=()=>n,C.anchor=null,P(t,r),P(t,o),Oe(U,o,null),P(o,l),Oe(i,o,null),P(o,a),Oe(c,o,null),A=!0},p(t,[n]){e=t;const S={};8&n&&(S.$$scope={dirty:n,ctx:e}),U.$set(S);const s={};8&n&&(s.$$scope={dirty:n,ctx:e}),i.$set(s);const r={};8&n&&(r.$$scope={dirty:n,ctx:e}),c.$set(r)},i(e){A||(Ie(C.block),Ie(U.$$.fragment,e),Ie(i.$$.fragment,e),Ie(c.$$.fragment,e),A=!0)},o(e){Te(U.$$.fragment,e),Te(i.$$.fragment,e),Te(c.$$.fragment,e),A=!1},d(e){e&&O(t),C.block.d(),C.token=null,C=null,fe(U),fe(i),fe(c)}}}function Cn(e,t,n){let S;i(e,zt,(e=>n(0,S=e)));const s=document.fonts?document.fonts.load("3em Abril Fatface"):(new Xe).resolve(!0);return[S,s]}class Rn extends Fe{constructor(e){super(),me(this,e,Cn,An,U,{})}}function un(t){let n,S,s,r,o,U;return{c(){n=K("div"),S=K("p"),s=new Q,r=F(" est une aide au calcul des frais professionels sous licence GPLv3.0"),o=Y(),U=K("p"),U.innerHTML="Les PN restents seuls responsables face à l’administration pour justifier l’exactitude\n de leur déclaration",s.a=r,Z(S,"class","svelte-ydi49e"),Z(U,"class","svelte-ydi49e"),Z(n,"class","svelte-ydi49e")},m(e,t){D(e,n,t),P(n,S),s.m(be,S),P(S,r),P(n,o),P(n,U)},p:e,i:e,o:e,d(e){e&&O(n)}}}class Bn extends Fe{constructor(e){super(),me(this,e,null,un,U,{})}}function Mn(e,t,n){let S=e.length;function s(){S=--S,S<1&&n()}t()?n():e.forEach((({type:e,url:t,options:n={async:!0,defer:!0}})=>{const r="script"===e,o=document.createElement(r?"script":"link");(t.startsWith("http")||t.startsWith("//"))&&(o.crossOrigin="anonymous");let U=!0;r?(o.src=t,o.async=n.async,o.defer=n.defer):(o.href=t,"prefetch"in n?(o.rel="prefetch",S-=1,U=!1):"preload"in n?(o.rel="preload",S-=1,U=!1):(o.rel="stylesheet",S-=1,U=!1)),U&&(o.onload=s),document.body.appendChild(o)}))}const Nn=e=>{const t=e.replace(",",".").replace(" ",""),[n,S]=t.split(".");return n+"."+(S||"00").padEnd(2,"0")},dn=e=>{const[t,n]=e.split(".");return parseInt(t+(n||"00"),10)},En=e=>{const t=e.toString(10);switch(t.length){case 2:return"0."+t;case 1:return"0.0"+t;default:return t.slice(0,-2)+"."+t.slice(-2)}},In=(e,t,n)=>{const S=[];let s;for(;null!==(s=t.exec(e));)S.push(Nn(s[1]));if(S.length>0)return S;if(void 0===n)throw new Error(`No match found for ${t}`);return[n]},Tn=(e,t,n)=>{let S,s;for(;null!==(S=t.exec(e));)s=S;if(s)return s[1];if(void 0===n)throw new Error(`No match found for ${t}`);return n},Ln=(e,t,n)=>{let S={type:"pay",fileName:t,fileOrder:n,errors:[]},s=/(?:IND\.REPAS_+|INDEMNITE REPAS_+|IR\.FIN ANNEE DOUBL_+|IR EXONEREES_+|IR NON EXONEREES_+)([\-0-9, ]+)/g;S.repas=In(e,s,"0").map(Nn),s=/(?:IND\. TRANSPORT EXO_+|IND\. TRANSPORT_+|FRAIS REELS TRANSP_+|R\. FRAIS DE TRANSPORT_+)([\-0-9, ]+)/g,S.transport=In(e,s,"0").map(Nn),s=/(?:_I.DECOUCHERS F.PRO_+)([\-0-9, ]+)/g,S.decouchers_fpro=In(e,s,"0").map(Nn);try{const t=In(e,/_Mensuel_[\-0-9, ]+_{1,2}([\-0-9, ]+)_/g);S.imposable=(r=t.map(Nn),En(r.map(dn).reduce(((e,t)=>e+t)))),t.length>1&&S.errors.push({type:"warning",message:"Plusieurs bulletins de salaire trouvés"})}catch(e){S.errors.push({type:"error",message:"Net imposable non trouvé"}),S.imposable="0"}var r;try{S.cumul=Nn(Tn(e,/_Annuel_[\-0-9, ]+_{1,2}([\-0-9, ]+)_/g))}catch(e){S.errors.push({type:"error",msg:"Cumul Net imposable non trouvé"}),S.cumul="0"}try{if(S.date=Tn(e,/PERIODE DU \d{2}\/(\d{2}\/\d{4})/g).split("/").reverse().join("-"),S.date.endsWith("00"))throw new Error(`Date invalide: ${S.date}`)}catch(e){throw new Error("Date non trouvée")}return S},Pn=(e,t,n,S)=>{let s,r={type:"nights",fileName:t,fileOrder:n,errors:[]};try{s=((e,t,n)=>{let S;if(null!==(S=t.exec(e)))return S[1];if(void 0===n)throw new Error(`No match found for ${t}`);return n})(e,/compte s'élève à:\s([\-0-9,. ]+)\sEuros/),s=parseFloat(s.replace(/\s+/g,"").replace(",","."))}catch(e){r.errors.push({type:"error",message:"Montant des nuitées AF non trouvé"})}return r.total=s,r.date=S,r},pn=(e,t,n,S,s,r,o)=>{const U=[];if(e.match(/BULLETIN DE PAIE_(AIR FRANCE|BASE|DP GN)/))try{const S=Ln(e,t,n);if(S.errors)for(const s of S.errors)U.push({type:s.type,msg:s.message,fileName:t,fileOrder:n,content:e});U.push(S)}catch(e){U.push({type:"error",msg:`${e.message}`,fileName:t,fileOrder:n,content:e})}else{const l=-1!==e.indexOf(`ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE ${S}`);-1!==e.indexOf("CARNET _DE _VOL _- _EP _5")?l?U.push(Pn(e,t,n,S)):U.push(((e,t,n,S,s,r,o)=>{const U={type:"ep5",fileName:t,fileOrder:n},l=(parseInt(S,10)-1).toString(),i=(parseInt(S,10)+1).toString();let a,c,A,C;if(c=String.raw`\s(${ct.join("|")})\s+?(20\d{2})`,null===(a=new RegExp(c).exec(e)))throw new Error(`EP5 parser: Date not found in ${t}`);if(A=(ct.indexOf(a[1])+1).toString(10).padStart(2,"0"),C=a[2],"01"===A&&C===i)U.date=`${S}-13`;else if("12"===A&&C===l)U.date=`${S}-00`;else if(U.date=`${C}-${A}`,C!==S)return U;c=/([0-9,]+)\s(?:.{5})\s{2}(?:\S{4})\s(?:.+?)\s(\S{3})\s+(\d+)\s+([0-9,]+)\s+(\S{3})\s+(\d+)\s+([0-9,]+)/g;const R=[];for(;null!==(a=c.exec(e));){const[,e,t,n,S,s,r,o]=a;R.push({stop:e,dep:t,start:`${C}-${A}-${n}T${At(S)}`,arr:s,end:`${C}-${A}-${r}T${At(o)}`})}const u=R.sort(((e,t)=>e.start.localeCompare(t.start)));let B=Bt(u,{base:r,tzConverter:o,iataMap:Nt});return B=Tt(S,B,s,o,t),U.rots=B,U})(e,t,n,S,s,r,o)):l&&U.push(Pn(e,t,n,S))}if(0===U.length)if(-1!==e.indexOf("ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE "))U.push({type:"nuitées",error:`année ≠ ${S}`,fileName:t,fileOrder:n,content:e});else if(-1===e.indexOf("CARNET _DE _VOL _- _EP _5")){const s=String.raw`_EP\s?_4.+?_(${ct.join("|")})\s+?(20\d{2})`;let r;if(null!==(r=new RegExp(s).exec(e))){const s=(ct.indexOf(r[1])+1).toString(10).padStart(2,"0"),o=r[2],l=(parseInt(S,10)-1).toString(),i=(parseInt(S,10)+1).toString();o===S||"01"===s&&o===i||"12"===s&&o===l?U.push({type:"ep4",warning:"absence d'EP5",fileName:t,fileOrder:n,content:e}):U.push({type:"ep4",date:`${o}-${s}`,fileName:t,fileOrder:n,content:e})}else U.push({type:"error",msg:"fichier non reconnu",fileName:t,fileOrder:n,content:e})}else U.push({type:"error",msg:"fichier non reconnu",fileName:t,fileOrder:n,content:e});return U},Gn=e=>({}),Dn=e=>({}),On=e=>({}),fn=e=>({});function Kn(e){let t,n,S,s,o,U,l,i,c,u,B,M;const N=e[7].top,d=a(N,e,e[6],fn),E=e[7].bottom,I=a(E,e,e[6],Dn);return{c(){t=K("div"),n=Y(),S=K("input"),o=Y(),U=K("label"),d&&d.c(),l=Y(),i=K("figure"),i.innerHTML='',c=Y(),I&&I.c(),Z(S,"id",gn),Z(S,"name",gn),Z(S,"type","file"),S.multiple=!0,Z(S,"accept",hn),S.disabled=s=e[0]||!e[2],Z(U,"for",gn),Z(t,"class","dropzone"),b(t,"focus",e[1])},m(s,r){D(s,t,r),P(t,n),P(t,S),P(t,o),P(t,U),d&&d.m(U,null),P(U,l),P(U,i),P(U,c),I&&I.m(U,null),u=!0,B||(M=[h(S,"change",e[4]),h(S,"click",e[3],{once:!0}),h(S,"drop",g(e[5])),h(S,"dragenter",e[8]),h(S,"dragleave",e[9])],B=!0)},p(e,[n]){(!u||5&n&&s!==(s=e[0]||!e[2]))&&(S.disabled=s),d&&d.p&&(!u||64&n)&&C(d,N,e,e[6],u?A(N,e[6],n,On):R(e[6]),fn),I&&I.p&&(!u||64&n)&&C(I,E,e,e[6],u?A(E,e[6],n,Gn):R(e[6]),Dn),2&n&&b(t,"focus",e[1])},i(e){u||(Ie(false),Ie(d,e),Ie(I,e),u=!0)},o(e){Te(false),Te(d,e),Te(I,e),u=!1},d(e){e&&O(t),d&&d.d(e),I&&I.d(e),B=!1,r(M)}}}let mn,Fn=0;const Yn=[{type:"script",url:"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js"}],Hn=async(e,t,n="")=>{const S=await e.getPage(t);return(await S.getTextContent()).items.map((e=>e.str)).join(n)},hn="application/pdf";let gn="file";function Zn(e,t,n){let S,s,r,o,U;i(e,Zt,(e=>n(10,S=e))),i(e,Vt,(e=>n(11,s=e))),i(e,Kt,(e=>n(12,r=e))),i(e,ft,(e=>n(13,o=e))),i(e,vt,(e=>n(2,U=e)));let{$$slots:l={},$$scope:a}=t,c=!1,A=new Xe,C=!1;function R(){Mn(Yn,(()=>!!window["pdfjs-dist/build/pdf"]),(()=>{const e=window["pdfjs-dist/build/pdf"];e.GlobalWorkerOptions.workerSrc="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js",mn&&!mn.destroyed||(mn=new e.PDFWorker({verbosity:0})),A.resolve(!0)}))}class u extends Error{}const M=(e,t)=>{const n=new FileReader;return new Promise(((S,s)=>{n.onload=e=>{if(!mn||mn.destroyed){const e=window["pdfjs-dist/build/pdf"];mn=new e.PDFWorker({verbosity:0})}(async(e,t="")=>{const n=window["pdfjs-dist/build/pdf"],S=[],s=await n.getDocument(e).promise,r=s.numPages;for(let e=1;e<=r;e+=1){const n=await Hn(s,e,t);S.push(n)}return S.join("\n")})({data:e.target.result,verbosity:0,worker:mn},"_").then((e=>{if(e)S(e);else{const e=new u(`%c${t}\n%cabsence de texte dans le PDF`);s(e)}}),(e=>s(e)))},n.onerror=e=>{s(new u(`%c${t}\n%cfichier illisible !`))},n.readAsArrayBuffer(e)}))};async function N(e,t){n(0,c=!0),await A.promise.then((()=>{const l=[],i=e=>e.name.split(/([\\/])/g).pop();let a={},A={};for(let t=0;t{pn(n,e,t+Fn,s,U,o,r).forEach((t=>{if("error"!==t.type)if("warning"!==t.type)if(t.type&&t.warning)console.log(`%c${e}\n%ctype [${t.type}] %c${t.warning}`,"font-family: monospace;","color: black;","color: darkorange;");else if(t.type&&t.error)console.log(`%c${e}\n%ctype [${t.type}] %c${t.error}`,"font-family: monospace;","color: black;","color: red;");else{const[n,r]=t.date.split("-");if(n!==s)return void console.log(`%c${e}\n%ctype [${t.type}] %cannée ${n} iso ${s}`,"font-family: monospace;","color: black;","color: red;");"pay"===t.type?Object.assign(a,{[r]:t}):"ep5"===t.type?Object.assign(A,{[r]:t}):"nights"===t.type&&B(Zt,S=t.total,S)}else console.log(`%c${e}\n%c${t.msg}`,"font-family: monospace;","color: darkorange;");else console.log(`%c${e}\n%c${t.msg}`,"font-family: monospace;","color: red;")}))})).catch((e=>e instanceof u?console.log(e.message,"font-family: monospace;","color: red;"):console.error(e))))}}Fn+=e.length;const C=()=>{n(0,c=!1),t&&(t.value=null),ht.update((e=>Object.assign(e,a))),a={},Ht.update((e=>Object.assign(e,A))),A={}};Promise.all(l).then((()=>{C()})).catch((e=>{C(),console.error(e)}))}))}te((async()=>R()));return e.$$set=e=>{"$$scope"in e&&n(6,a=e.$$scope)},[c,C,U,R,async function(e){N(e.target.files,e.target)},async function(e){n(1,C=!1),n(0,c=!0);const t=[];async function*S(e){const t=e.createReader();let n;do{n=await new Promise(((e,n)=>{t.readEntries(e,n)}));for(const e of n)e.isFile&&(yield e)}while(n.length>0)}async function s(e){return new Promise(((t,n)=>{e.file(t,n)}))}const r=[...e.dataTransfer.items].map((e=>e.webkitGetAsEntry()));for(const e of r)if(e.isDirectory)for await(const n of S(e)){const e=await s(n);t.push(e)}else{const n=await s(e);t.push(n)}{const e=navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")>-1;N(t.filter((t=>t.type===hn||""===t.type&&e)))}},a,l,()=>n(1,C=!0),()=>n(1,C=!1)]}class Vn extends Fe{constructor(e){super(),me(this,e,Zn,Kn,U,{})}}function vn(e,t,n){const S=e.slice();return S[11]=t[n][0],S[12]=t[n][1],S}function $n(e){let t,n,S=e[3](e[11])+"";return{c(){t=K("li"),n=F(S),Z(t,"class","svelte-16swz26"),b(t,"loaded",void 0!==e[0][e[11]]),b(t,"optional",!0===e[12])},m(e,S){D(e,t,S),P(t,n)},p(e,s){4&s&&S!==(S=e[3](e[11])+"")&&$(n,S),5&s&&b(t,"loaded",void 0!==e[0][e[11]]),4&s&&b(t,"optional",!0===e[12])},d(e){e&&O(t)}}}function Jn(e){let t,n,S,s,r,o;const U=e[6].default,l=a(U,e,e[5],null);let i=e[2],c=[];for(let t=0;tn(7,s=e))),i(e,Vt,(e=>n(8,r=e)));let o,{$$slots:U={},$$scope:l}=t,{data:a=[]}=t,{name:c="Mois"}=t;const A=e=>{const t=r;if(!t)return c;if("ep5"===a.type){const n=(parseInt(t,10)-1).toString(),S=(parseInt(t,10)+1).toString();return`${c} de ${xe[11]} ${n} à ${e.length>13?xe[0]+" "+S:xe[11]+" "+t}`}return`${c} de ${xe[0]} ${t} à ${xe[11]} ${t}`};return e.$$set=e=>{"data"in e&&n(0,a=e.data),"name"in e&&n(4,c=e.name),"$$scope"in e&&n(5,l=e.$$scope)},e.$$.update=()=>{1&e.$$.dirty&&n(2,S=(e=>{if("ep5"===e.type){const t=s?s("2020-11-01T00:00Z").slice(-6):"+01:00";let S;S="+00:00"===t?Qe.map((e=>[e,!0])):"+"===t[0]?["00",...Qe].map((e=>[e,!0])):[...Qe,"13"].map((e=>[e,!0]));let r=[];if(e.isEmpty())r=[...S];else for(let t=0;t<14;t++){const n=t.toString().padStart(2,"0"),S=(t+1).toString().padStart(2,"0"),s=(t-1).toString().padStart(2,"0");e[S]&&e[S].rots&&e[S].rots.length>0&&">"===e[S].rots[0].isComplete||e[s]&&e[s].rots&&e[s].rots.length>0&&"<"===e[s].rots[e[s].rots.length-1].isComplete?r.push([n,!1]):(13!==t||13===t&&void 0!==e[n])&&r.push([n,!0])}return n(1,o=A(r)),r}return n(1,o=A()),Qe.map((e=>[e,!1]))})(a))},[a,o,S,e=>{switch(e){case"13":return"01";case"00":return"12";default:return e}},c,l,U]}class Xn extends Fe{constructor(e){super(),me(this,e,Wn,Jn,U,{data:0,name:4})}}function bn(e,t,n){const S=e.slice();return S[6]=t[n],S}function yn(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,m,H,h,g,V,v,J,W=e[1].year+"",X=parseInt(e[1].year,10)-1+"",b=e[1].year+"",y=e[1].zoneForfaitEuro.join(", ")+"",Q=e[2].reduce(zn,!1),w=e[2],x=[];for(let t=0;tPaysValiditéMontantTauxTauxTaux moyenMontant €Zone',i=Y(),a=K("tr"),c=K("td"),A=K("td"),A.textContent="(à compter du)",C=K("td"),R=K("td"),u=F("31/12/"),B=F(X),M=K("td"),N=F("31/12/"),d=F(b),E=K("td"),I=K("td"),T=K("td"),L=Y(),p=K("tbody");for(let e=0;e{j=null})),Ee()),(!J||1&n)&&Z(t,"id",e[0])},i(e){J||(Ie(j),J=!0)},o(e){Te(j),J=!1},d(e){e&&O(t),f(x,e),j&&j.d()}}}function Qn(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,f,m,H,h=e[6].code+"",g=(e[6].name.length<=21?e[6].name:e[6].name.substring(0,20)+"…")+"",V=!1===e[6].official?"²":"",v=ze(e[6].validity)+"",J=`${e[6].amount} ${e[6].currency}`,W=_e(e[6].startRate)+"",X=_e(e[6].endRate)+"",b=_e(e[6].averageRate)+"",y=ke(e[6].euros)+"",Q=e[6].zone+"";return{c(){t=K("tr"),n=K("td"),S=F(h),s=Y(),r=K("td"),o=F(g),U=F(V),l=Y(),i=K("td"),a=F(v),c=Y(),A=K("td"),C=F(J),R=Y(),u=K("td"),B=F(W),M=Y(),N=K("td"),d=F(X),E=Y(),I=K("td"),T=F(b),L=Y(),p=K("td"),G=F(y),f=Y(),m=K("td"),H=F(Q),Z(n,"class","svelte-1pkoo1p"),Z(r,"class","svelte-1pkoo1p"),Z(i,"class","svelte-1pkoo1p"),Z(A,"class","svelte-1pkoo1p"),Z(u,"class","svelte-1pkoo1p"),Z(N,"class","svelte-1pkoo1p"),Z(I,"class","svelte-1pkoo1p"),Z(p,"class","svelte-1pkoo1p"),Z(m,"class","svelte-1pkoo1p")},m(e,O){D(e,t,O),P(t,n),P(n,S),P(t,s),P(t,r),P(r,o),P(r,U),P(t,l),P(t,i),P(i,a),P(t,c),P(t,A),P(A,C),P(t,R),P(t,u),P(u,B),P(t,M),P(t,N),P(N,d),P(t,E),P(t,I),P(I,T),P(t,L),P(t,p),P(p,G),P(t,f),P(t,m),P(m,H)},p(e,t){4&t&&h!==(h=e[6].code+"")&&$(S,h),4&t&&g!==(g=(e[6].name.length<=21?e[6].name:e[6].name.substring(0,20)+"…")+"")&&$(o,g),4&t&&V!==(V=!1===e[6].official?"²":"")&&$(U,V),4&t&&v!==(v=ze(e[6].validity)+"")&&$(a,v),4&t&&J!==(J=`${e[6].amount} ${e[6].currency}`)&&$(C,J),4&t&&W!==(W=_e(e[6].startRate)+"")&&$(B,W),4&t&&X!==(X=_e(e[6].endRate)+"")&&$(d,X),4&t&&b!==(b=_e(e[6].averageRate)+"")&&$(T,b),4&t&&y!==(y=ke(e[6].euros)+"")&&$(G,y),4&t&&Q!==(Q=e[6].zone+"")&&$(H,Q)},d(e){e&&O(t)}}}function wn(e){let t,n,S,s;const r=[jn,xn],o=[];function U(e,t){return"2021"===e[1].year?0:1}return t=U(e),n=o[t]=r[t](e),{c(){n.c(),S=H()},m(e,n){o[t].m(e,n),D(e,S,n),s=!0},p(e,s){let l=t;t=U(e),t!==l&&(de(),Te(o[l],1,1,(()=>{o[l]=null})),Ee(),n=o[t],n||(n=o[t]=r[t](e),n.c()),Ie(n,1),n.m(S.parentNode,S))},i(e){s||(Ie(n),s=!0)},o(e){Te(n),s=!1},d(e){o[t].d(e),e&&O(S)}}}function xn(e){let t,n,S,s,r,o;return s=new We({props:{href:"https://github.com/fawazahmed0/currency-api",$$slots:{default:[kn]},$$scope:{ctx:e}}}),{c(){t=K("tr"),n=K("td"),S=F("2. Taux officiel non communiqué par la BNF, basé sur le taux de "),De(s.$$.fragment),r=F("."),Z(n,"colspan","9"),Z(n,"class","svelte-1pkoo1p")},m(e,U){D(e,t,U),P(t,n),P(n,S),Oe(s,n,null),P(n,r),o=!0},i(e){o||(Ie(s.$$.fragment,e),o=!0)},o(e){Te(s.$$.fragment,e),o=!1},d(e){e&&O(t),fe(s)}}}function jn(t){let n;return{c(){n=K("tr"),n.innerHTML='2. Taux officiel non communiqué par la BNF, basé sur le taux du marché moyen de Xe.com.'},m(e,t){D(e,n,t)},i:e,o:e,d(e){e&&O(n)}}}function kn(e){let t;return{c(){t=F("currency-api")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function _n(e){let t,n,S=e[2].length>1&&yn(e);return{c(){S&&S.c(),t=H()},m(e,s){S&&S.m(e,s),D(e,t,s),n=!0},p(e,[n]){e[2].length>1?S?(S.p(e,n),4&n&&Ie(S,1)):(S=yn(e),S.c(),Ie(S,1),S.m(t.parentNode,t)):S&&(de(),Te(S,1,1,(()=>{S=null})),Ee())},i(e){n||(Ie(S),n=!0)},o(e){Te(S),n=!1},d(e){S&&S.d(e),e&&O(t)}}}const zn=(e,t)=>e|!1===t.official;function qn(e,t,n){let S,s,r;i(e,$t,(e=>n(3,s=e))),i(e,vt,(e=>n(1,r=e)));let{tableId:o="Indemnities"}=t;function*U(e){const t=["EU"];for(const n of e)t.push(...n.countries);const n=Array.from(new Set(t)).sort(((e,t)=>e.localeCompare(t)));for(const e of n)for(const t of l(e))yield t}function*l(e){const t=r.countries[e],n=t&&t.f&&1===t.f?r.countries.EU.a:t&&t.a?t.a:[];for(const[S,s,o]of n){const[n,U,l,i]=r.exr[s];yield{name:"EU"===e?t.n+"¹":t.n,code:e,validity:S,amount:o,currency:s,startRate:n,endRate:U,averageRate:l,official:i,euros:(parseFloat(o)/l).toFixed(2),zone:"EU"===e?"":1===t.z?"Moyen":"Long"}}}return e.$$set=e=>{"tableId"in e&&n(0,o=e.tableId)},e.$$.update=()=>{10&e.$$.dirty&&n(2,S=r?[...U(s)]:[])},[o,r,S,s]}class eS extends Fe{constructor(e){super(),me(this,e,qn,_n,U,{tableId:0})}}function tS(t){let n,S,s,r;return{c(){n=K("a"),S=F(t[0]),Z(n,"href","."),Z(n,"download",t[1]),Z(n,"class","svelte-j6w2rc"),b(n,"disabled",t[2])},m(e,o){D(e,n,o),P(n,S),s||(r=h(n,"click",t[3]),s=!0)},p(e,[t]){1&t&&$(S,e[0]),2&t&&Z(n,"download",e[1]),4&t&&b(n,"disabled",e[2])},i:e,o:e,d(e){e&&O(n),s=!1,r()}}}const nS=[{type:"script",url:"https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.2.0/jspdf.umd.min.js",async:!1,defer:!1}],SS=[{type:"script",url:"https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.13/jspdf.plugin.autotable.min.js",async:!1,defer:!1}];function sS(e,t,n){let S=new Xe,s=!1,{label:r="Télécharger en PDF"}=t,{filename:o="table.pdf"}=t,{tableIds:U=["#my-table"]}=t;return te((async()=>{Mn(nS,(()=>!!window.jspdf),(()=>{Mn(SS,(()=>!!window.jspdfext),(()=>{window.jspdfext="autotable";const e="./fonts/HelveticaUTF8.ttf".split("/").pop();window.jspdffont?(n(2,s=!1),S.resolve(!0)):fetch("./fonts/HelveticaUTF8.ttf").then((async t=>{if(t.ok)try{const r=await t.blob(),o=new FileReader;o.onload=function(t){window.jspdffont=t.target.result,window.jspdf.jsPDF.API.events.push(["addFonts",function(){this.addFileToVFS(e,window.jspdffont),this.addFont(e,e.split(".").shift(),"normal")}]),n(2,s=!1),S.resolve(!0)},o.onerror=()=>{n(2,s=!0),S.reject(`failed to read the downloaded font ${e}`)},o.readAsBinaryString(r)}catch(e){n(2,s=!0),S.reject(e)}else n(2,s=!0),S.reject(`error loading ${e}: ${t.statusText}`)}),(e=>{n(2,s=!0),S.reject(e)}))}))}))})),e.$$set=e=>{"label"in e&&n(0,r=e.label),"filename"in e&&n(1,o=e.filename),"tableIds"in e&&n(4,U=e.tableIds)},[r,o,s,async e=>{if(s)return e.preventDefault(),e.stopPropagation(),!1;n(2,s=!0);try{if(await S.promise,U.includes("MissionTable")){const e=document.getElementById("MissionTable");e.querySelectorAll("summary").forEach((e=>{e.parentNode.parentNode.innerText=e.innerText}))}for(const e of U){document.getElementById(e).classList.add("print")}const t=new jspdf.jsPDF({orientation:"landscape"});for(const[e,n]of U.entries())t.autoTable({html:"#"+n,styles:{font:"HelveticaUTF8"},useCss:!0,showHead:"firstPage",showFoot:"lastPage",pageBreak:0===e?"auto":"avoid",includeHiddenHtml:!0});const n=e.target.download,s=new Blob([t.output("arraybuffer",{filename:n})],{type:"application/octet-stream"});if(e.target.href.startsWith("blob:")&&URL.revokeObjectURL(e.target.href),e.target.href=URL.createObjectURL(s),U.includes("MissionTable")){const e=document.getElementById("MissionTable");e.querySelectorAll("td[title]").forEach((e=>{e.innerHTML=`
    ${e.innerText}${e.title}
    `}))}for(const e of U){document.getElementById(e).classList.remove("print")}}catch(e){console.error(e)}n(2,s=!1)},U]}class rS extends Fe{constructor(e){super(),me(this,e,sS,tS,U,{label:0,filename:1,tableIds:4})}}function oS(e,t,n){const S=e.slice();return S[7]=t[n],S}function US(t){let n;return{c(){n=K("div"),n.innerHTML='exemple de résultat sur iPad',Z(n,"class","illustration")},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function lS(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L=e[1].reduce(e[6],!1);t=new rS({props:{tableIds:[e[0],e[5]],filename:`fraisdemission${e[2]}.pdf`}});let p=e[2]!==e[4].year&&iS(e),G=e[1],m=[];for(let t=0;tDateTypeDescriptionFormuleMontant',B=Y(),M=K("tbody");for(let e=0;e1. formule tronquée pour respecter l'année fiscale'},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function AS(e){let t,n,S,s;const r=[lS,US],o=[];function U(e,t){return e[1].length>0?0:1}return t=U(e),n=o[t]=r[t](e),{c(){n.c(),S=H()},m(e,n){o[t].m(e,n),D(e,S,n),s=!0},p(e,[s]){let l=t;t=U(e),t===l?o[t].p(e,s):(de(),Te(o[l],1,1,(()=>{o[l]=null})),Ee(),n=o[t],n?n.p(e,s):(n=o[t]=r[t](e),n.c()),Ie(n,1),n.m(S.parentNode,S))},i(e){s||(Ie(n),s=!0)},o(e){Te(n),s=!1},d(e){o[t].d(e),e&&O(S)}}}function CS(e,t,n){let S,s,r,o;i(e,$t,(e=>n(1,S=e))),i(e,Vt,(e=>n(2,s=e))),i(e,Jt,(e=>n(3,r=e))),i(e,vt,(e=>n(4,o=e)));let{tableId:U="MissionTable"}=t;const l=U+"Indemnities";return e.$$set=e=>{"tableId"in e&&n(0,U=e.tableId)},[U,S,s,r,o,l,(e,t)=>e|t.formula.includes(" ¹")]}class RS extends Fe{constructor(e){super(),me(this,e,CS,AS,U,{tableId:0})}}function uS(e,t,n){const S=e.slice();return S[4]=t[n],S}function BS(e){let t,n,S,s,r=e[4].label+"";return{c(){t=K("option"),n=F(r),t.__value=S=e[4].label,t.value=t.__value,t.selected=s=e[0].join("")===e[4].value.join("")},m(e,S){D(e,t,S),P(t,n)},p(e,n){1&n&&s!==(s=e[0].join("")===e[4].value.join(""))&&(t.selected=s)},d(e){e&&O(t)}}}function MS(e){let t;return{c(){t=K("div"),t.innerHTML="Déposez vos EP5 dans la zone ou Cliquez",Z(t,"slot","top")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function NS(e){let t,n,S;return n=new Xn({props:{data:e[1],name:"EP5"}}),{c(){t=K("div"),De(n.$$.fragment),Z(t,"slot","bottom")},m(e,s){D(e,t,s),Oe(n,t,null),S=!0},p(e,t){const S={};2&t&&(S.data=e[1]),n.$set(S)},i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){e&&O(t),fe(n)}}}function dS(e){let t,n;return t=new Bn({}),{c(){De(t.$$.fragment)},m(e,S){Oe(t,e,S),n=!0},i(e){n||(Ie(t.$$.fragment,e),n=!0)},o(e){Te(t.$$.fragment,e),n=!1},d(e){fe(t,e)}}}function ES(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u=!e[1].isEmpty(),B=Object.values(Gt),M=[];for(let t=0;t{N=null})),Ee())},i(e){A||(Ie(l.$$.fragment,e),Ie(a.$$.fragment,e),Ie(N),A=!0)},o(e){Te(l.$$.fragment,e),Te(a.$$.fragment,e),Te(N),A=!1},d(e){e&&O(t),f(M,e),fe(l),fe(a),N&&N.d(),C=!1,R()}}}function IS(e,t,n){let S,s,r;i(e,Kt,(e=>n(3,S=e))),i(e,ft,(e=>n(0,s=e))),i(e,Ht,(e=>n(1,r=e)));return[s,r,e=>{const t=Gt.filter((t=>t.label===e.target.value)).pop();B(ft,s=t.value,s),B(Kt,S=t.tzConverter,S)}]}class TS extends Fe{constructor(e){super(),me(this,e,IS,ES,U,{})}}function LS(e,t,n){const S=e.slice();return S[24]=t[n],S[26]=n,S}function PS(t){let n;return{c(){n=K("div"),n.innerHTML='exemple de résultat sur iPad',Z(n,"class","illustration")},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function pS(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,m,H,h,g,V,v=ke(e[5])+"",J=ke(e[2])+"",W=ke(e[4])+"";function X(e,t){return e[9]>0?DS:GS}t=new rS({props:{tableIds:[e[1]],filename:`revenus${e[6]}.pdf`}});let b=X(e),y=b(e),Q=Qe,w=[];for(let t=0;tMoisMontant imposableCumul imposableFrais d’emploi ¹Découchers F PRO ²',A=Y(),C=K("tbody");for(let e=0;e1. Les Frais d’emploi comprennent les lignes IND.REPAS, INDEMNITE REPAS, IR.FIN ANNEE DOUBL, IND. TRANSPORT, IND. TRANSPORT EXO, FRAIS REELS TRANSP, R. FRAIS DE TRANSPORT, IR EXONEREES, IR NON EXONEREES du bulletin de paye. \n 2. Cette colonne reprend la ligne I.DECOUCHERS F.PRO, elle est utilisée pour l’estimation. Pour les impôts, c’est uniquement l’attestation des nuitées AF qui doit être prise en compte.',Z(U,"colspan","5"),Z(U,"class","svelte-1njpx9m"),Z(B,"class","svelte-1njpx9m"),Z(N,"class","svelte-1njpx9m"),Z(I,"class","svelte-1njpx9m"),Z(L,"class","svelte-1njpx9m"),Z(m,"class","svelte-1njpx9m"),Z(C,"class","svelte-1njpx9m"),Z(s,"class","data"),Z(s,"id",e[1])},m(e,O){Oe(t,e,O),D(e,n,O),y.m(e,O),D(e,S,O),D(e,s,O),P(s,r),P(r,o),P(o,U),P(U,l),P(U,i),P(r,a),P(r,c),P(s,A),P(s,C);for(let e=0;e=e[13]?mS:KS}let Ae=ce(e),Ce=Ae(e);return{c(){t=K("table"),n=K("col"),S=Y(),s=K("col"),r=Y(),o=K("col"),U=Y(),l=K("thead"),i=K("tr"),a=K("th"),c=F("Comparatif "),A=F(e[6]),C=Y(),ie&&ie.c(),R=Y(),u=K("tr"),u.innerHTML='Nuitées AF \n Frais de Mission - Nuitées - Frais d’emploi \n Abattement de 10% plafonné',B=Y(),ae&&ae.c(),M=Y(),N=K("tbody"),d=K("tr"),E=K("td"),I=K("input"),p=Y(),G=K("td"),f=F(e[9]),m=F(" - "),H=F(re),g=F(" - "),V=F(oe),W=F(" = "),X=F(Ue),b=F(" €"),y=Y(),Q=K("td"),w=F(le),x=F(" €"),j=Y(),k=K("tfoot"),_=K("tr"),Ce.c(),z=Y(),q=K("tr"),ee=K("td"),te=F(e[11]),Z(n,"class","col1 svelte-1njpx9m"),Z(s,"class","col2 svelte-1njpx9m"),Z(o,"class","col3"),Z(a,"colspan","3"),Z(a,"class","svelte-1njpx9m"),Z(I,"name","nuitees"),Z(I,"type","number"),I.disabled=T=!!e[8],Z(I,"min","0"),Z(I,"step","100"),Z(I,"placeholder",L=e[8]?e[8]:e[3]),Z(I,"class","svelte-1njpx9m"),Z(E,"class","svelte-1njpx9m"),Z(G,"class","svelte-1njpx9m"),Z(Q,"class","svelte-1njpx9m"),Z(d,"class","svelte-1njpx9m"),Z(N,"class","svelte-1njpx9m"),Z(ee,"colspan","3"),Z(ee,"class","svelte-1njpx9m"),Z(t,"class","data summary svelte-1njpx9m"),Z(t,"id",ne=e[1]+"Summary")},m(T,L){D(T,t,L),P(t,n),P(t,S),P(t,s),P(t,r),P(t,o),P(t,U),P(t,l),P(l,i),P(i,a),P(a,c),P(a,A),P(a,C),ie&&ie.m(a,null),P(l,R),P(l,u),P(l,B),ae&&ae.m(l,null),P(t,M),P(t,N),P(N,d),P(d,E),P(E,I),J(I,e[7]),P(d,p),P(d,G),P(G,f),P(G,m),P(G,H),P(G,g),P(G,V),P(G,W),P(G,X),P(G,b),P(d,y),P(d,Q),P(Q,w),P(Q,x),P(t,j),P(t,k),P(k,_),Ce.m(_,null),P(k,z),P(k,q),P(q,ee),P(ee,te),Se||(se=h(I,"input",e[18]),Se=!0)},p(e,n){64&n&&$(A,e[6]),e[7]&&e[7]!=e[3]?ie&&(de(),Te(ie,1,1,(()=>{ie=null})),Ee()):ie?136&n&&Ie(ie,1):(ie=OS(),ie.c(),Ie(ie,1),ie.m(a,null)),e[6]!==e[10].year?ae?ae.p(e,n):(ae=fS(e),ae.c(),ae.m(l,null)):ae&&(ae.d(1),ae=null),256&n&&T!==(T=!!e[8])&&(I.disabled=T),264&n&&L!==(L=e[8]?e[8]:e[3])&&Z(I,"placeholder",L),128&n&&v(I.value)!==e[7]&&J(I,e[7]),512&n&&$(f,e[9]),392&n&&re!==(re=parseFloat(e[8]||e[7]||e[3]).toFixed(0)+"")&&$(H,re),4&n&&oe!==(oe=parseFloat(e[2]).toFixed(0)+"")&&$(V,oe),4096&n&&Ue!==(Ue=e[12].toFixed(0)+"")&&$(X,Ue),8192&n&&le!==(le=e[13].toFixed(0)+"")&&$(w,le),Ae===(Ae=ce(e))&&Ce?Ce.p(e,n):(Ce.d(1),Ce=Ae(e),Ce&&(Ce.c(),Ce.m(_,null))),2048&n&&$(te,e[11]),2&n&&ne!==(ne=e[1]+"Summary")&&Z(t,"id",ne)},d(e){e&&O(t),ie&&ie.d(),ae&&ae.d(),Ce.d(),Se=!1,se()}}}function OS(e){let t,n,S;return{c(){t=K("div"),t.innerHTML='basé sur une estimation des nuitées à ±20%',Z(t,"class","estimate svelte-1njpx9m")},m(e,n){D(e,t,n),S=!0},i(e){S||(e&&ie((()=>{n||(n=pe(t,St,{},!0)),n.run(1)})),S=!0)},o(e){e&&(n||(n=pe(t,St,{},!1)),n.run(0)),S=!1},d(e){e&&O(t),e&&n&&n.end()}}}function fS(e){let t,n,S,s,r=e[10].year+"";return{c(){t=K("tr"),n=K("th"),S=F("Attention les montants sont basés sur les données fiscales de "),s=F(r),Z(n,"colspan","3"),Z(n,"class","svelte-1njpx9m"),Z(t,"class","warning")},m(e,r){D(e,t,r),P(t,n),P(n,S),P(n,s)},p(e,t){1024&t&&r!==(r=e[10].year+"")&&$(s,r)},d(e){e&&O(t)}}}function KS(e){let t,n,S,s,r,o,U=(e[13]-e[12]).toFixed(0)+"";return{c(){t=K("td"),n=F("Il faudra que vos autres frais atteignent "),S=K("b"),s=F(U),r=F(" €"),o=F(" pour qu'une déclaration aux frais réels soit plus avantageuse."),Z(t,"colspan","3"),Z(t,"class","svelte-1njpx9m")},m(e,U){D(e,t,U),P(t,n),P(t,S),P(S,s),P(S,r),P(t,o)},p(e,t){12288&t&&U!==(U=(e[13]-e[12]).toFixed(0)+"")&&$(s,U)},d(e){e&&O(t)}}}function mS(e){let t,n,S,s,r,o,U=(e[12]-e[13]).toFixed(0)+"";return{c(){t=K("td"),n=F("Sans tenir compte de vos autres frais, vous serez déjà gagnant de "),S=K("b"),s=F(U),r=F(" €"),o=F(" en passant aux frais réels."),Z(t,"colspan","3"),Z(t,"class","svelte-1njpx9m")},m(e,U){D(e,t,U),P(t,n),P(t,S),P(S,s),P(S,r),P(t,o)},p(e,t){12288&t&&U!==(U=(e[12]-e[13]).toFixed(0)+"")&&$(s,U)},d(e){e&&O(t)}}}function FS(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B=xe[e[26]]+"",M=(e[0][e[24]]?ke(e[0][e[24]].imposable):"")+"",N=(e[0][e[24]]?ke(e[0][e[24]].cumul):"")+"",d=(e[0][e[24]]?ke(En(e[14](e[24]))):"")+"",E=(e[0][e[24]]?ke(e[0][e[24]].decouchers_fpro):"")+"";return{c(){t=K("tr"),n=K("td"),S=F(B),s=Y(),r=K("td"),o=F(M),U=Y(),l=K("td"),i=F(N),a=Y(),c=K("td"),A=F(d),C=Y(),R=K("td"),u=F(E),Z(n,"class","svelte-1njpx9m"),Z(r,"class","svelte-1njpx9m"),Z(l,"class","svelte-1njpx9m"),Z(c,"class","svelte-1njpx9m"),Z(R,"class","svelte-1njpx9m"),Z(t,"class","svelte-1njpx9m")},m(e,B){D(e,t,B),P(t,n),P(n,S),P(t,s),P(t,r),P(r,o),P(t,U),P(t,l),P(l,i),P(t,a),P(t,c),P(c,A),P(t,C),P(t,R),P(R,u)},p(e,t){1&t&&M!==(M=(e[0][e[24]]?ke(e[0][e[24]].imposable):"")+"")&&$(o,M),1&t&&N!==(N=(e[0][e[24]]?ke(e[0][e[24]].cumul):"")+"")&&$(i,N),1&t&&d!==(d=(e[0][e[24]]?ke(En(e[14](e[24]))):"")+"")&&$(A,d),1&t&&E!==(E=(e[0][e[24]]?ke(e[0][e[24]].decouchers_fpro):"")+"")&&$(u,E)},d(e){e&&O(t)}}}function YS(e){let t,n,S,s,r;const o=[pS,PS],U=[];function l(e,n){return 1&n&&(t=!e[0].isEmpty()),t?0:1}return n=l(e,-1),S=U[n]=o[n](e),{c(){S.c(),s=H()},m(e,t){U[n].m(e,t),D(e,s,t),r=!0},p(e,[t]){let r=n;n=l(e,t),n===r?U[n].p(e,t):(de(),Te(U[r],1,1,(()=>{U[r]=null})),Ee(),S=U[n],S?S.p(e,t):(S=U[n]=o[n](e),S.c()),Ie(S,1),S.m(s.parentNode,s))},i(e){r||(Ie(S),r=!0)},o(e){Te(S),r=!1},d(e){U[n].d(e),e&&O(s)}}}function HS(e,t,n){let S,s,r,o,U,l,a,c,A,C,R,u,M,N,d;i(e,Vt,(e=>n(6,C=e))),i(e,$t,(e=>n(17,R=e))),i(e,gt,(e=>n(7,u=e))),i(e,Zt,(e=>n(8,M=e))),i(e,Jt,(e=>n(9,N=e))),i(e,vt,(e=>n(10,d=e)));let{data:E}=t,{tableId:I="PayTable"}=t;const T=e=>E[e].repas.concat(E[e].transport).map(dn).reduce(((e,t)=>e+t));return e.$$set=e=>{"data"in e&&n(0,E=e.data),"tableId"in e&&n(1,I=e.tableId)},e.$$.update=()=>{var t,i;1&e.$$.dirty&&n(2,S=(e=>{let t=0;for(const n of Qe)t+=e[n]?T(n):0;return En(t)})(E)),1&e.$$.dirty&&n(5,s=(e=>{let t=0;for(const n of Qe)t+=e[n]?dn(e[n].imposable):0;return En(t)})(E)),1&e.$$.dirty&&n(16,r=E[12]&&"0"!==E[12].cumul?En(dn(E[12].cumul)):void 0),66592&e.$$.dirty&&n(13,o=d&&d.maxForfait10?Math.min(.1*(r||s),d.maxForfait10):0),1&e.$$.dirty&&n(4,U=(e=>{let t=0;for(const n of Qe)t+=e[n]?e[n].decouchers_fpro.map(dn).reduce(((e,t)=>e+t)):0;return En(t)})(E)),64&e.$$.dirty&&n(15,l=parseInt(C,10)>=2021?2.7:3.31),32784&e.$$.dirty&&n(3,a=(100*Math.ceil(parseFloat(U)*l/100)).toFixed(0)),264&e.$$.dirty&&(i=a,void 0!==(t=M)?B(gt,u=t,u):i&&B(gt,u=i,u)),908&e.$$.dirty&&n(12,c=parseFloat(N)-parseFloat(M||u||a)-parseFloat(S)),131136&e.$$.dirty&&n(11,A=((e,t)=>{if(!e||!t)return"";const n={count:e.length,OUT:new Map,IN:new Map};for(const S of e)Rt(S.start).substring(0,4)===t&&n.OUT.set(S.dep,(n.OUT.get(S.dep)||0)+1),Rt(S.end).substring(0,4)===t&&n.IN.set(S.arr,(n.IN.get(S.arr)||0)+1);const S=Array.from(n.OUT).map((([e,t])=>`${t} trajet${t>1?"s":""} vers ${e}`)),s=Array.from(n.IN).map((([e,t])=>`${t} trajet${t>1?"s":""} depuis ${e}`));return 0===n.count?"":1===n.count?`À titre d'information, pour les frais de transport, la rotation représente ${S.join(", ")} et ${s.join(", ")}.`:`À titre d'information, pour les frais de transport, les ${n.count} rotations représentent ${S.join(", ")} et ${s.join(", ")}.`})(R,C))},[E,I,S,a,U,s,C,u,M,N,d,A,c,o,T,l,r,R,function(){u=v(this.value),gt.set(u)}]}class hS extends Fe{constructor(e){super(),me(this,e,HS,YS,U,{data:0,tableId:1})}}function gS(e){let t;return{c(){t=K("div"),t.innerHTML="Déposez vos bulletins dans la zone ou Cliquez",Z(t,"slot","top")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function ZS(e){let t;return{c(){t=F(", attestation de nuitées si disponible")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function VS(e){let t,n,S;return n=new Xn({props:{data:e[0],name:"Bulletins de salaire",$$slots:{default:[ZS]},$$scope:{ctx:e}}}),{c(){t=K("div"),De(n.$$.fragment),Z(t,"slot","bottom")},m(e,s){D(e,t,s),Oe(n,t,null),S=!0},p(e,t){const S={};1&t&&(S.data=e[0]),2&t&&(S.$$scope={dirty:t,ctx:e}),n.$set(S)},i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){e&&O(t),fe(n)}}}function vS(e){let t,n;return t=new Bn({}),{c(){De(t.$$.fragment)},m(e,S){Oe(t,e,S),n=!0},i(e){n||(Ie(t.$$.fragment,e),n=!0)},o(e){Te(t.$$.fragment,e),n=!1},d(e){fe(t,e)}}}function $S(e){let t,n,S,s,r,o,U,l,i,a=!e[0].isEmpty();r=new Vn({props:{$$slots:{bottom:[VS],top:[gS]},$$scope:{ctx:e}}}),U=new hS({props:{data:e[0]}});let c=a&&vS();return{c(){t=K("main"),n=K("div"),S=K("div"),s=Y(),De(r.$$.fragment),o=Y(),De(U.$$.fragment),l=Y(),c&&c.c(),Z(S,"class","header svelte-l9ncfd"),Z(n,"class","wrapper svelte-l9ncfd")},m(e,a){D(e,t,a),P(t,n),P(n,S),P(n,s),Oe(r,n,null),P(n,o),Oe(U,n,null),P(t,l),c&&c.m(t,null),i=!0},p(e,[n]){const S={};3&n&&(S.$$scope={dirty:n,ctx:e}),r.$set(S);const s={};1&n&&(s.data=e[0]),U.$set(s),1&n&&(a=!e[0].isEmpty()),a?c?1&n&&Ie(c,1):(c=vS(),c.c(),Ie(c,1),c.m(t,null)):c&&(de(),Te(c,1,1,(()=>{c=null})),Ee())},i(e){i||(Ie(r.$$.fragment,e),Ie(U.$$.fragment,e),Ie(c),i=!0)},o(e){Te(r.$$.fragment,e),Te(U.$$.fragment,e),Te(c),i=!1},d(e){e&&O(t),fe(r),fe(U),c&&c.d()}}}function JS(e,t,n){let S;return i(e,ht,(e=>n(0,S=e))),[S]}class WS extends Fe{constructor(e){super(),me(this,e,JS,$S,U,{})}}function XS(e){let t;return{c(){t=F("GitHub")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function bS(e){let t;return{c(){t=F("Arrêté de 2006 fixant les taux des indemnités de mission")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function yS(e){let t;return{c(){t=F("La lettre de la DLF sur FraisPN (webarchive)")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function QS(e){let t;return{c(){t=F("L’annexe à lettre de la DLF sur FraisPN (webarchive)")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function wS(e){let t;return{c(){t=F("airportsdata")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function xS(e){let t;return{c(){t=F("GitHub")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function jS(e){let t;return{c(){t=F("licence GPLv3.0")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function kS(e){let t;return{c(){t=F("OFP2MAP")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function _S(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,f,m,H,h,g,Z,V,v,$,J,W,X,b,y,Q,w,x,j,k,_,z,q,ee,te,ne,Se,se,re,oe,Ue,le,ie,ae,ce,Ae,Ce,Re,ue,Be,Me,Ne,de,Ee,Le,Pe,pe,Ge,Ke,me,Fe,Ye,He,he,ge,Ze,Ve,ve,$e,Je,Xe,ye,Qe,we,xe,je,ke,_e,ze,qe,et,tt,nt,St,st,rt,ot,Ut,lt,it,at,ct,At,Ct,Rt,ut,Bt,Mt,Nt,dt,Et,It,Tt,Lt,Pt,pt,Gt,Dt,Ot,ft,Kt,mt,Ft,Yt;return xe=new We({props:{href:"https://github.com/flyingeek/flytax#donn%C3%A9es-fiscales",$$slots:{default:[XS]},$$scope:{ctx:e}}}),qe=new We({props:{href:"https://www.legifrance.gouv.fr/loda/id/JORFTEXT000045695811/2023-01-22/",$$slots:{default:[bS]},$$scope:{ctx:e}}}),nt=new We({props:{href:"https://web.archive.org/web/20190408001531/http://www.fraispn.com/dlf.html",rel:"noopener",$$slots:{default:[yS]},$$scope:{ctx:e}}}),rt=new We({props:{href:"https://web.archive.org/web/20190407212830/http://www.fraispn.com/dlfannexe.html",rel:"noopener",$$slots:{default:[QS]},$$scope:{ctx:e}}}),ct=new We({props:{href:"https://github.com/mborsetti/airportsdata",$$slots:{default:[wS]},$$scope:{ctx:e}}}),Et=new We({props:{href:"https://github.com/flyingeek/flytax",$$slots:{default:[xS]},$$scope:{ctx:e}}}),Tt=new We({props:{href:"https://raw.githubusercontent.com/flyingeek/flytax/main/LICENSE.md",$$slots:{default:[jS]},$$scope:{ctx:e}}}),mt=new We({props:{href:e[0],rel:"noopener",$$slots:{default:[kS]},$$scope:{ctx:e}}}),{c(){t=K("h2"),t.textContent="Préambule",n=Y(),S=K("p"),S.innerHTML="Cette application a été conçue pour le PilotPad. Elle nécessite des navigateurs récents pour fonctionner : Safari iOS13+/ Mac(Mojave/Catalina/Big Sur/Monterey), Firefox 86+, Chrome 87+ et Microsoft Edge 87+ sont compatibles.\nLes PDF utilisés ne transitent sur aucun serveur, tout est calculé localement dans votre navigateur. L’app ne collecte aucune donnée. Tout est 100 % SECURE.",s=Y(),r=K("h2"),r.textContent="Objectifs",o=Y(),U=K("p"),U.innerHTML="L'application ne gère pas l'article 81 A II qui se substitue pour les pilotes à cette méthode de calcul",l=Y(),i=K("p"),i.textContent="Calculer rapidement, facilement, et sans partage de données :",a=Y(),c=K("ul"),c.innerHTML="
  • le décompte des frais de mission, conformément à la méthodologie et aux conventions de calcul du SNPL
  • \n
  • les frais d’emploi des PN qui doivent s’ajouter aux revenus
  • \n
  • une estimation du montant des nuitées payées par AF
  • \n
  • la différence entre (Frais de Mission - Nuitées - Frais d’emploi) et un abattement de 10 % plafonné
  • ",A=Y(),C=K("p"),R=K("strong"),u=F(' fonctionne aussi pour les pilotes basés en province. (lire au préalable "Choix de la base").'),B=Y(),M=K("h2"),M.textContent="Utilisation sur l'iPad",N=Y(),d=K("p"),E=F("Sur MyPeopleDoc, commencez par sélectionner les bulletins de salaire de l'année N, et les ep4-ep5 de décembre N-1 à février N+1. Puis, en cliquant sur téléchargement, vous recevrez un lien par email. Dans votre dossier de téléchargement sur l'iPad, cliquez sur l'archive téléchargée, elle va se décompresser. Ensuite, après avoir vérifié que l'année N est bien sélectionnée en haut à droite de "),I=K("strong"),T=F(", deux solutions:"),L=Y(),p=K("ul"),p.innerHTML="
  • Soit, vous cliquez dans la zone de la page Frais de Mission ou de la page Salaire, puis vous choisissez le dossier des fichiers décompressés, puis vous cliquez sur "Sélectionner", puis "Tout select." et enfin, "Ouvrir"
  • \n
  • Soit, vous utilisez le mode Slide Over, ou le mode SplitView, avec l'application Fichiers, et vous faites glisser le dossier des fichiers décompressés dans la zone de la page Frais de Mission ou de la page Salaire
  • ",G=Y(),f=K("p"),f.innerHTML='Si vous le souhaitez, l’application peut être installée sur l’écran d’accueil du PilotPad via le menu « partage » de Safari. (comme OFP2MAP).',m=Y(),H=K("h2"),H.textContent="Utilisation de manière plus générale",h=Y(),g=K("ul"),Z=K("li"),Z.textContent="Les PDF mensuels sont symbolisés par des carrés numérotés. Un PDF manquant est rouge, un PDF optionnel est bleu, un PDF chargé est vert.",V=Y(),v=K("li"),v.textContent="Vous pouvez glisser-déposer un dossier ou des fichiers",$=Y(),J=K("li"),J.textContent="Vous pouvez déposer les PDF indifféremment sur la page Salaire ou la page Frais de mission",W=Y(),X=K("li"),X.textContent="Le symbole ▶ signale des informations additionnelles accessibles soit au survol de la souris, soit en cliquant sur la ligne",b=Y(),y=K("li"),y.textContent="Changer d’année fiscale efface les résultats",Q=Y(),w=K("li"),x=K("strong"),x.textContent="flytax.fr",j=F(" (plus simple à mémoriser et à partager) redirige vers "),k=K("strong"),_=F(" mais est bloqué sur le réseau AF"),z=Y(),q=K("li"),ee=K("strong"),te=F(" peut fonctionner en mode déconnecté"),ne=Y(),Se=K("p"),Se.innerHTML='En cas d’anomalie, le pictogramme apparaîtra en haut à droite, le cliquer affichera les détails. Si un message d’erreur apparaissait dans la table des résultats, merci de me contacter.',se=Y(),re=K("ul"),re.innerHTML="
  • L'alerte "absence d'EP5" est normale sur les fichiers ep4-ep5 de régularisation ou les mois sans vols (lire la rubrique "Activités sol/simulateur & QT"). Un mois sans vol reste bleu
  • \n
  • L'erreur "fichier non reconnu" est normale pour un PDF ne contenant ni un bulletin de salaire, ni un EP5, ni une attestation de nuitées
  • \n
  • En cas de message "Erreur: nuitées > nb de jours", si vous êtes basé en province, assurez-vous d'avoir lu la rubrique "Choix de la base"
  • ",oe=Y(),Ue=K("p"),Ue.innerHTML="Avertissement : L’application est une aide au calcul des frais professionels sous licence GPLv3.0, les PN restents seuls responsables face à l’administration pour justifier l’exactitude de leur déclaration.",le=Y(),ie=K("h2"),ie.textContent="Attestation des nuitées AF",ae=Y(),ce=K("p"),Ae=F("Air France fournit cette attestation dans l’EP4 de février de l'année n + 1, mais un correctif est susceptible d’être diffusé jusqu’en avril dans un fichier annexe. En attendant ce document, "),Ce=K("strong"),Re=F(" estime le montant ce qui permet de donner un ordre de grandeur. L’estimation utilise la colonne Découchers F PRO et elle est modifiable. Une fois votre attestation reçue, vous pouvez soit indiquer son montant directement, soit glisser l’attestation dans la zone de dépôt. Merci pour vos retours concernant la fiabilité de l’estimation."),ue=Y(),Be=K("h2"),Be.textContent="Choix de la base",Me=Y(),Ne=K("p"),Ne.textContent="La base peut être modifiée chaque mois : on choisit une base, on dépose les EP5 de cette base ;\non change de base et l’on peut déposer les EP5 pour cette nouvelle base. En cas d’erreur, il est possible de changer de base et de recharger les EP5.",de=Y(),Ee=K("p"),Ee.textContent="Le choix de la base se fait au-dessus de la zone de dépôt sur la page Frais de mission.",Le=Y(),Pe=K("h2"),Pe.textContent="Activités sol/simulateur & QT",pe=Y(),Ge=K("p"),Ge.textContent="Les activités sol/simulateur à la base ne peuvent pas faire l'objet de déduction forfaitaire, elles ne sont donc pas décomptées dans les frais de mission.",Ke=Y(),me=K("p"),Fe=F("Les activités sol/simulateur hors de la base d'affectation pourraient être décomptées forfaitairement, néanmoins elles ne rentrent pas explicitement dans le cadre d'application de l'accord de la DLF, et elles ne sont donc pas décomptées par "),Ye=K("strong"),He=F(". Je vous renvoie au mémento du SNPL pour plus d'informations."),he=Y(),ge=K("h2"),ge.textContent="Mise à jour",Ze=Y(),Ve=K("p"),ve=K("strong"),$e=F(" se met à jour automatiquement. Éventuellement, un popup peut\napparaître 👨🏻‍✈️ vous demandant d’autoriser cette mise à jour. Installer la mise à jour efface les résultats.\nSi jamais le popup restait à l'écran, il faudrait rafraichir la page ⟳."),Je=Y(),Xe=K("h2"),Xe.textContent="Données fiscales",ye=Y(),Qe=K("p"),we=F("Sur "),De(xe.$$.fragment),je=F(" vous trouverez les liens vers les barèmes au format csv et tsv (Excel/Numbers) mais aussi\nles données json. En installant le code source sur votre ordinateur, vous pourrez générer ces fichiers. Lors\nde la compilation de l’application, les API de la Banque de France et des impôts sont utilisées."),ke=Y(),_e=K("ul"),ze=K("li"),De(qe.$$.fragment),et=Y(),tt=K("li"),De(nt.$$.fragment),St=Y(),st=K("li"),De(rt.$$.fragment),ot=Y(),Ut=K("h2"),Ut.textContent="Crédits",lt=Y(),it=K("ul"),at=K("li"),De(ct.$$.fragment),At=F(" de Mike Borsetti (permet de lier un code IATA à un pays)"),Ct=Y(),Rt=K("li"),ut=K("strong"),Bt=F(" est développé en JavaScript à l’aide du framework SVELTE"),Mt=Y(),Nt=K("li"),dt=F("Éric Delord, CDB 777, est l’auteur. Le code source est disponible sur "),De(Et.$$.fragment),It=F(". L'application est sous "),De(Tt.$$.fragment),Lt=F(", et l’article 15 précise : THERE IS NO WARRANTY FOR THE PROGRAM."),Pt=Y(),pt=K("p"),pt.textContent="Vous pouvez me contacter sur l’email AF (erdelord@…), ou sur mon compte Twitter @flyingeek, ou sur le groupe Teams/MyConcorde. Si vous rencontrez un problème, merci de m'adresser le PDF concerné par mail.",Gt=Y(),Dt=K("h2"),Dt.textContent="Liens",Ot=Y(),ft=K("ul"),Kt=K("li"),De(mt.$$.fragment),Ft=F(" cartographie pour l'OFP (même auteur)")},m(e,O){D(e,t,O),D(e,n,O),D(e,S,O),D(e,s,O),D(e,r,O),D(e,o,O),D(e,U,O),D(e,l,O),D(e,i,O),D(e,a,O),D(e,c,O),D(e,A,O),D(e,C,O),P(C,R),R.innerHTML=be,P(C,u),D(e,B,O),D(e,M,O),D(e,N,O),D(e,d,O),P(d,E),P(d,I),I.innerHTML=be,P(d,T),D(e,L,O),D(e,p,O),D(e,G,O),D(e,f,O),D(e,m,O),D(e,H,O),D(e,h,O),D(e,g,O),P(g,Z),P(g,V),P(g,v),P(g,$),P(g,J),P(g,W),P(g,X),P(g,b),P(g,y),P(g,Q),P(g,w),P(w,x),P(w,j),P(w,k),k.innerHTML=be,P(w,_),P(g,z),P(g,q),P(q,ee),ee.innerHTML=be,P(q,te),D(e,ne,O),D(e,Se,O),D(e,se,O),D(e,re,O),D(e,oe,O),D(e,Ue,O),D(e,le,O),D(e,ie,O),D(e,ae,O),D(e,ce,O),P(ce,Ae),P(ce,Ce),Ce.innerHTML=be,P(ce,Re),D(e,ue,O),D(e,Be,O),D(e,Me,O),D(e,Ne,O),D(e,de,O),D(e,Ee,O),D(e,Le,O),D(e,Pe,O),D(e,pe,O),D(e,Ge,O),D(e,Ke,O),D(e,me,O),P(me,Fe),P(me,Ye),Ye.innerHTML=be,P(me,He),D(e,he,O),D(e,ge,O),D(e,Ze,O),D(e,Ve,O),P(Ve,ve),ve.innerHTML=be,P(Ve,$e),D(e,Je,O),D(e,Xe,O),D(e,ye,O),D(e,Qe,O),P(Qe,we),Oe(xe,Qe,null),P(Qe,je),D(e,ke,O),D(e,_e,O),P(_e,ze),Oe(qe,ze,null),P(_e,et),P(_e,tt),Oe(nt,tt,null),P(_e,St),P(_e,st),Oe(rt,st,null),D(e,ot,O),D(e,Ut,O),D(e,lt,O),D(e,it,O),P(it,at),Oe(ct,at,null),P(at,At),P(it,Ct),P(it,Rt),P(Rt,ut),ut.innerHTML=be,P(Rt,Bt),P(it,Mt),P(it,Nt),P(Nt,dt),Oe(Et,Nt,null),P(Nt,It),Oe(Tt,Nt,null),P(Nt,Lt),D(e,Pt,O),D(e,pt,O),D(e,Gt,O),D(e,Dt,O),D(e,Ot,O),D(e,ft,O),P(ft,Kt),Oe(mt,Kt,null),P(Kt,Ft),Yt=!0},p(e,[t]){const n={};2&t&&(n.$$scope={dirty:t,ctx:e}),xe.$set(n);const S={};2&t&&(S.$$scope={dirty:t,ctx:e}),qe.$set(S);const s={};2&t&&(s.$$scope={dirty:t,ctx:e}),nt.$set(s);const r={};2&t&&(r.$$scope={dirty:t,ctx:e}),rt.$set(r);const o={};2&t&&(o.$$scope={dirty:t,ctx:e}),ct.$set(o);const U={};2&t&&(U.$$scope={dirty:t,ctx:e}),Et.$set(U);const l={};2&t&&(l.$$scope={dirty:t,ctx:e}),Tt.$set(l);const i={};2&t&&(i.$$scope={dirty:t,ctx:e}),mt.$set(i)},i(e){Yt||(Ie(xe.$$.fragment,e),Ie(qe.$$.fragment,e),Ie(nt.$$.fragment,e),Ie(rt.$$.fragment,e),Ie(ct.$$.fragment,e),Ie(Et.$$.fragment,e),Ie(Tt.$$.fragment,e),Ie(mt.$$.fragment,e),Yt=!0)},o(e){Te(xe.$$.fragment,e),Te(qe.$$.fragment,e),Te(nt.$$.fragment,e),Te(rt.$$.fragment,e),Te(ct.$$.fragment,e),Te(Et.$$.fragment,e),Te(Tt.$$.fragment,e),Te(mt.$$.fragment,e),Yt=!1},d(e){e&&O(t),e&&O(n),e&&O(S),e&&O(s),e&&O(r),e&&O(o),e&&O(U),e&&O(l),e&&O(i),e&&O(a),e&&O(c),e&&O(A),e&&O(C),e&&O(B),e&&O(M),e&&O(N),e&&O(d),e&&O(L),e&&O(p),e&&O(G),e&&O(f),e&&O(m),e&&O(H),e&&O(h),e&&O(g),e&&O(ne),e&&O(Se),e&&O(se),e&&O(re),e&&O(oe),e&&O(Ue),e&&O(le),e&&O(ie),e&&O(ae),e&&O(ce),e&&O(ue),e&&O(Be),e&&O(Me),e&&O(Ne),e&&O(de),e&&O(Ee),e&&O(Le),e&&O(Pe),e&&O(pe),e&&O(Ge),e&&O(Ke),e&&O(me),e&&O(he),e&&O(ge),e&&O(Ze),e&&O(Ve),e&&O(Je),e&&O(Xe),e&&O(ye),e&&O(Qe),fe(xe),e&&O(ke),e&&O(_e),fe(qe),fe(nt),fe(rt),e&&O(ot),e&&O(Ut),e&&O(lt),e&&O(it),fe(ct),fe(Et),fe(Tt),e&&O(Pt),e&&O(pt),e&&O(Gt),e&&O(Dt),e&&O(Ot),e&&O(ft),fe(mt)}}}function zS(e){return["https://flyingeek.github.io/lido-online/index.html"+(!0===navigator.standalone?"#/install":"")]}class qS extends Fe{constructor(e){super(),me(this,e,zS,_S,U,{})}}function es(e,t,n){const S=e.slice();return S[3]=t[n][0],S[4]=t[n][1],S}function ts(e,t,n){const S=e.slice();return S[7]=t[n][0],S[8]=t[n][1],S}function ns(e,t,n){const S=e.slice();return S[11]=t[n],S}function Ss(e){let t,n,S,s;function r(e,t){return(null==n||7&t)&&(n=!!e[3].match(Bs)),n?rs:ss}let o=r(e,-1),U=o(e),l=Object.entries(e[4]),i=[];for(let t=0;t${us(e[7])}`).replace(/^(\s+)-/g,Es)+"";return{c(){t=K("div"),Z(t,"class","item svelte-9ow13k")},m(e,S){D(e,t,S),t.innerHTML=n},p(e,S){7&S&&n!==(n=Cs(e[11]).replace(/^-\s/g,`- ${us(e[7])}`).replace(/^(\s+)-/g,Es)+"")&&(t.innerHTML=n)},d(e){e&&O(t)}}}function is(e){let t;function n(e,t){return"raw"!==e[7]?Us:os}let S=n(e),s=S(e);return{c(){s.c(),t=H()},m(e,n){s.m(e,n),D(e,t,n)},p(e,r){S===(S=n(e))&&s?s.p(e,r):(s.d(1),s=S(e),s&&(s.c(),s.m(t.parentNode,t)))},d(e){s.d(e),e&&O(t)}}}function as(e){let t,n="raw"!==e[3]&&Ss(e);return{c(){n&&n.c(),t=H()},m(e,S){n&&n.m(e,S),D(e,t,S)},p(e,S){"raw"!==e[3]?n?n.p(e,S):(n=Ss(e),n.c(),n.m(t.parentNode,t)):n&&(n.d(1),n=null)},d(e){n&&n.d(e),e&&O(t)}}}function cs(t){let n,S=As(t[0],{version:t[2],limit:t[1]}),s=[];for(let e=0;e{if(!e)return[];let S=Object.entries(e.CHANGELOG);return t&&(S=S.filter((([e])=>{const n=e.match(/\[([^\]]+)\]/);return!!n&&et(n[1],t)>0}))),n?S.slice(0,n+1):S};function Cs(e){return e.replace(/\*\*(.*)\*\*/gim,"$1").replace(/\[(.*?)\]\((#.*?)\)/gim,"$1").replace(/\[(.*?)\]\((.*?)\)/gim,"$1").replace(/^$/g,"
    ")}const Rs={ADDED:"Ajouté",FIXED:"Corrigé",DEPRECATED:"Obsolète",CHANGED:"Modifié",REMOVED:"Supprimé",SECURITY:"Sécurité"},us=e=>Rs[e.toUpperCase()]||e,Bs=/\[([^\]]+)\].+(\d{4})-(\d{2})-(\d{2})/,Ms=e=>e.replace(/\[([^\]]+)\].+(\d{4})-(\d{2})-(\d{2})/,"$1 $4/$3/$2"),Ns={ADDED:"primary",FIXED:"success",DEPRECATED:"warning",CHANGED:"info",REMOVED:"danger",SECURITY:"secondary"},ds=e=>Ns[e.toUpperCase()]||"light",Es=(e,t)=>" ".repeat("pl".length)+"▫︎";function Is(e,t,n){let{data:S}=t,{limit:s}=t,{version:r}=t;return e.$$set=e=>{"data"in e&&n(0,S=e.data),"limit"in e&&n(1,s=e.limit),"version"in e&&n(2,r=e.version)},[S,s,r]}class Ts extends Fe{constructor(e){super(),me(this,e,Is,cs,U,{data:0,limit:1,version:2})}}function Ls(e){const t=t=>{!e||e.contains(t.target)||t.defaultPrevented||e.dispatchEvent(new CustomEvent("click_outside",e))};return document.addEventListener("click",t,!0),{destroy(){document.removeEventListener("click",t,!0)}}}function Ps(e){let t,n,S,s,o,U,l,i,a,c,A,C,R,u,B,N,d,E,I,T={ctx:e,current:null,token:null,hasCatch:!1,pending:Ds,then:Gs,catch:ps,value:7,blocks:[,,,]};return Ge(A=e[4],T),{c(){t=K("div"),n=K("div"),S=K("div"),s=K("div"),o=K("h5"),U=F(e[1]),l=Y(),i=K("button"),i.innerHTML='',a=Y(),c=K("div"),T.block.c(),u=Y(),B=K("div"),Z(o,"class","modal-title svelte-38j5yr"),Z(i,"type","button"),Z(i,"class","close"),Z(i,"data-dismiss","modal"),Z(i,"aria-label","Close"),Z(s,"class","modal-header"),Z(c,"class","modal-body svelte-38j5yr"),b(c,"expanded",!e[2]),Z(S,"class","modal-content"),Z(n,"class","modal-dialog modal-xl modal-dialog-centered"),Z(n,"role","document"),Z(t,"class","modal svelte-38j5yr"),Z(t,"tabindex","-1"),Z(t,"role","dialog"),Z(B,"class","modal-backdrop show")},m(r,A){D(r,t,A),P(t,n),P(n,S),P(S,s),P(s,o),P(o,U),P(s,l),P(s,i),P(S,a),P(S,c),T.block.m(c,T.anchor=null),T.mount=()=>c,T.anchor=null,D(r,u,A),D(r,B,A),d=!0,E||(I=[h(i,"click",e[3]),M(C=Ls.call(null,n)),h(n,"click_outside",e[3])],E=!0)},p(t,n){e=t,(!d||2&n)&&$(U,e[1]),T.ctx=e,16&n&&A!==(A=e[4])&&Ge(A,T)||function(e,t,n){const S=t.slice(),{resolved:s}=e;e.current===e.then&&(S[e.value]=s),e.current===e.catch&&(S[e.error]=s),e.block.p(S,n)}(T,e,n),4&n&&b(c,"expanded",!e[2])},i(e){d||(Ie(T.block),R||ie((()=>{R=Pe(t,St,{}),R.start()})),N||ie((()=>{N=Pe(B,St,{}),N.start()})),d=!0)},o(e){for(let e=0;e<3;e+=1){Te(T.blocks[e])}d=!1},d(e){e&&O(t),T.block.d(),T.token=null,T=null,e&&O(u),e&&O(B),E=!1,r(I)}}}function ps(t){return{c:e,m:e,p:e,i:e,o:e,d:e}}function Gs(e){let t,n;return t=new Ts({props:{data:e[7],version:e[2]}}),{c(){De(t.$$.fragment)},m(e,S){Oe(t,e,S),n=!0},p(e,n){const S={};16&n&&(S.data=e[7]),4&n&&(S.version=e[2]),t.$set(S)},i(e){n||(Ie(t.$$.fragment,e),n=!0)},o(e){Te(t.$$.fragment,e),n=!1},d(e){fe(t,e)}}}function Ds(t){let n;return{c(){n=K("p"),n.textContent="chargement..."},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function Os(e){let t,n,S=e[0]&&Ps(e);return{c(){S&&S.c(),t=H()},m(e,s){S&&S.m(e,s),D(e,t,s),n=!0},p(e,[n]){e[0]?S?(S.p(e,n),1&n&&Ie(S,1)):(S=Ps(e),S.c(),Ie(S,1),S.m(t.parentNode,t)):S&&(de(),Te(S,1,1,(()=>{S=null})),Ee())},i(e){n||(Ie(S),n=!0)},o(e){Te(S),n=!1},d(e){S&&S.d(e),e&&O(t)}}}function fs(e,t,n){let{visible:S=!1}=t,{title:s="CHANGELOG"}=t,{version:r}=t;const o=function(){const e=ee();return(t,n)=>{const S=e.$$.callbacks[t];if(S){const s=y(t,n);S.slice().forEach((t=>{t.call(e,s)}))}}}();let U;const l=async()=>{n(0,S=!0),n(4,U=fetch("./CHANGELOG.json").then((e=>{if(e.ok)return e.json();throw new Error("CHANGELOG.json not available")})))};return r&&l(),e.$$set=e=>{"visible"in e&&n(0,S=e.visible),"title"in e&&n(1,s=e.title),"version"in e&&n(2,r=e.version)},[S,s,r,()=>{o("close"),n(0,S=!1)},U,l]}class Ks extends Fe{constructor(e){super(),me(this,e,fs,Os,U,{visible:0,title:1,version:2,show:5,close:3})}get show(){return this.$$.ctx[5]}get close(){return this.$$.ctx[3]}}function ms(e){let t,n,S={ctx:e,current:null,token:null,hasCatch:!1,pending:Hs,then:Ys,catch:Fs,value:7};return Ge(n=e[0].active,S),{c(){t=H(),S.block.c()},m(e,n){D(e,t,n),S.block.m(e,S.anchor=n),S.mount=()=>t.parentNode,S.anchor=t},p(t,s){e=t,S.ctx=e,1&s&&n!==(n=e[0].active)&&Ge(n,S)},d(e){e&&O(t),S.block.d(e),S.token=null,S=null}}}function Fs(t){return{c:e,m:e,d:e}}function Ys(e){let t;return{c(){t=K("small"),t.textContent="/ mode déconnecté disponible",Z(t,"class","svelte-wtoba3")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function Hs(t){return{c:e,m:e,d:e}}function hs(t){let n,S,s,r,o=!!navigator.share&&function(t){let n,S,s;return{c(){n=K("button"),n.textContent="Partager",Z(n,"class","btn-sm")},m(e,t){D(e,n,t),S||(s=h(n,"click",tt),S=!0)},p:e,d(e){e&&O(n),S=!1,s()}}}();return{c(){o&&o.c(),n=Y(),S=K("button"),S.textContent="Recharger",Z(S,"class","btn-sm")},m(e,U){o&&o.m(e,U),D(e,n,U),D(e,S,U),s||(r=h(S,"click",t[3]),s=!0)},p(e,t){navigator.share&&o.p(e,t)},d(e){o&&o.d(e),e&&O(n),e&&O(S),s=!1,r()}}}function gs(e){let t;return{c(){t=F("Wikimedia Commons")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function Zs(e){let t;return{c(){t=F("Freepik")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function Vs(e){let t;return{c(){t=F("www.flaticon.com")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function vs(e){let t,n,S,s,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,f,m,H,g,V,v,J,W,X;t=new Ks({props:{}}),e[4](t);let b=e[0]&&ms(e),y=!0===navigator.standalone&&hs(e);return E=new qS({}),G=new We({props:{href:"https://commons.wikimedia.org/wiki/File:OOjs_UI_icon_alert_destructive.svg",$$slots:{default:[gs]},$$scope:{ctx:e}}}),g=new We({props:{href:"https://www.flaticon.com/authors/freepik",title:"Freepik",$$slots:{default:[Zs]},$$scope:{ctx:e}}}),v=new We({props:{href:"https://www.flaticon.com/",title:"Flaticon",$$slots:{default:[Vs]},$$scope:{ctx:e}}}),{c(){De(t.$$.fragment),n=Y(),S=K("main"),s=K("section"),U=K("h1"),l=new Q,i=F(" v"),a=F($s),c=Y(),A=K("small"),C=F("/ ServiceWorker : "),R=F(e[1]),u=Y(),b&&b.c(),B=Y(),y&&y.c(),M=Y(),N=K("button"),N.textContent="CHANGELOG",d=Y(),De(E.$$.fragment),I=Y(),T=K("div"),L=K("p"),p=F("Alert Icon via "),De(G.$$.fragment),f=Y(),m=K("p"),H=F("Other Icons made by "),De(g.$$.fragment),V=F(" from "),De(v.$$.fragment),l.a=i,Z(A,"class","svelte-wtoba3"),Z(N,"class","btn-sm"),Z(U,"class","svelte-wtoba3"),Z(s,"class","markdown"),Z(T,"class","footer svelte-wtoba3")},m(r,O){Oe(t,r,O),D(r,n,O),D(r,S,O),P(S,s),P(s,U),l.m(be,U),P(U,i),P(U,a),P(U,c),P(U,A),P(A,C),P(A,R),P(U,u),b&&b.m(U,null),P(U,B),y&&y.m(U,null),P(U,M),P(U,N),P(s,d),Oe(E,s,null),P(S,I),P(S,T),P(T,L),P(L,p),Oe(G,L,null),P(T,f),P(T,m),P(m,H),Oe(g,m,null),P(m,V),Oe(v,m,null),J=!0,W||(X=[h(A,"click",e[5],{once:!0}),h(N,"click",(function(){o(e[2].show)&&e[2].show.apply(this,arguments)}))],W=!0)},p(n,[S]){e=n;t.$set({}),(!J||2&S)&&$(R,e[1]),e[0]?b?b.p(e,S):(b=ms(e),b.c(),b.m(U,B)):b&&(b.d(1),b=null),!0===navigator.standalone&&y.p(e,S);const s={};256&S&&(s.$$scope={dirty:S,ctx:e}),G.$set(s);const r={};256&S&&(r.$$scope={dirty:S,ctx:e}),g.$set(r);const o={};256&S&&(o.$$scope={dirty:S,ctx:e}),v.$set(o)},i(e){J||(Ie(t.$$.fragment,e),Ie(E.$$.fragment,e),Ie(G.$$.fragment,e),Ie(g.$$.fragment,e),Ie(v.$$.fragment,e),J=!0)},o(e){Te(t.$$.fragment,e),Te(E.$$.fragment,e),Te(G.$$.fragment,e),Te(g.$$.fragment,e),Te(v.$$.fragment,e),J=!1},d(s){e[4](null),fe(t,s),s&&O(n),s&&O(S),b&&b.d(),y&&y.d(),fe(E),fe(G),fe(g),fe(v),W=!1,r(X)}}}const $s="1.3.7";function Js(e,t,n){let S;i(e,Xt,(e=>n(0,S=e)));let s,r="";return e.$$.update=()=>{var t;1&e.$$.dirty&&(t=S)&&t.messageSW({type:"GET_VERSION"}).then((e=>n(1,r=e)))},[S,r,s,()=>{window.location.hash="#/",console.log("reload page"),window.location.reload()},function(e){se[e?"unshift":"push"]((()=>{s=e,n(2,s)}))},()=>S.update()]}class Ws extends Fe{constructor(e){super(),me(this,e,Js,vs,U,{})}}function Xs(e,t,n){const S=e.slice();return S[5]=t[n],S}function bs(e){let t,n,S,s,r=e[5].label+"";return{c(){t=K("option"),n=F(r),t.__value=S=e[5].label,t.value=t.__value,t.selected=s=e[0]===e[5].label},m(e,S){D(e,t,S),P(t,n)},p(e,n){1&n&&s!==(s=e[0]===e[5].label)&&(t.selected=s)},d(e){e&&O(t)}}}function ys(t){let n,S,s,o,U=Object.values(Dt),l=[];for(let e=0;et[2].call(S))),Z(n,"class","select")},m(e,r){D(e,n,r),P(n,S);for(let e=0;en(3,S=e))),i(e,vt,(e=>n(4,e))),i(e,Vt,(e=>n(0,s=e)));return[s,()=>{B(Wt,S=!1,S)},function(){s=function(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}(this),Vt.set(s)}]}class ws extends Fe{constructor(e){super(),me(this,e,Qs,ys,U,{})}}function xs(e){let t,n,S,s,r,o,U,l=e[1].length+"";return{c(){var e,o;t=K("a"),n=m("svg"),S=m("use"),s=K("sup"),r=F(l),e="xlink:href",o="#alert",S.setAttributeNS("http://www.w3.org/1999/xlink",e,o),Z(n,"class","svelte-98mib8"),Z(s,"class","svelte-98mib8"),Z(t,"href","#/log"),Z(t,"class","svelte-98mib8")},m(l,i){D(l,t,i),P(t,n),P(n,S),P(t,s),P(s,r),o||(U=h(t,"click",g(e[3])),o=!0)},p(e,t){2&t&&l!==(l=e[1].length+"")&&$(r,l)},d(e){e&&O(t),o=!1,U()}}}function js(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M=e[1].length>0&&xs(e);return u=new ws({}),{c(){t=K("nav"),n=K("a"),S=new Q,s=K("sup"),s.textContent=".fr",r=Y(),o=K("a"),o.textContent="Frais De Mission",U=Y(),l=K("a"),l.textContent="Salaire",i=Y(),a=K("a"),a.textContent="Aide",c=Y(),A=K("span"),C=Y(),M&&M.c(),R=Y(),De(u.$$.fragment),S.a=s,Z(s,"class","svelte-98mib8"),Z(n,"href","#/"),Z(n,"class","svelte-98mib8"),b(n,"active","/"==e[0]),Z(o,"href","#/mission"),Z(o,"class","svelte-98mib8"),b(o,"active","/mission"==e[0]),Z(l,"href","#/pay"),Z(l,"class","svelte-98mib8"),b(l,"active","/pay"==e[0]),Z(a,"href","#/help"),Z(a,"class","svelte-98mib8"),b(a,"active","/help"==e[0]),Z(A,"class","flexspace"),Z(t,"class","svelte-98mib8")},m(e,N){D(e,t,N),P(t,n),S.m(be,n),P(n,s),P(t,r),P(t,o),P(t,U),P(t,l),P(t,i),P(t,a),P(t,c),P(t,A),P(t,C),M&&M.m(t,null),P(t,R),Oe(u,t,null),B=!0},p(e,[S]){1&S&&b(n,"active","/"==e[0]),1&S&&b(o,"active","/mission"==e[0]),1&S&&b(l,"active","/pay"==e[0]),1&S&&b(a,"active","/help"==e[0]),e[1].length>0?M?M.p(e,S):(M=xs(e),M.c(),M.m(t,R)):M&&(M.d(1),M=null)},i(e){B||(Ie(u.$$.fragment,e),B=!0)},o(e){Te(u.$$.fragment,e),B=!1},d(e){e&&O(t),M&&M.d(),fe(u)}}}function ks(e,t,n){let S,s,r;i(e,wt,(e=>n(0,S=e))),i(e,Ft,(e=>n(1,s=e))),i(e,zt,(e=>n(2,r=e)));return[S,s,r,()=>B(zt,r=!r,r)]}class _s extends Fe{constructor(e){super(),me(this,e,ks,js,U,{})}}function zs(t){let n,S;return n=new Ks({props:{version:t[7](),title:"NOUVEAUTÉS"}}),n.$on("close",t[8]),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function qs(e){let t,n,S,s,o,U,l,i,a,c,A,C,R,u;return{c(){t=K("div"),n=K("div"),S=K("strong"),S.innerHTML='👨🏻‍✈️Mise à jour disponible',s=Y(),o=K("button"),o.innerHTML='',U=Y(),l=K("div"),i=K("button"),a=K("span"),c=F(e[0]),Z(S,"class","svelte-1pe757z"),Z(o,"type","button"),Z(o,"class","close svelte-1pe757z"),Z(o,"aria-label","Close"),Z(n,"class","toast-header svelte-1pe757z"),Z(a,"class","svelte-1pe757z"),b(a,"blinking",e[0].endsWith("...")),Z(i,"class","manual svelte-1pe757z"),Z(l,"class","toast-body svelte-1pe757z"),Z(t,"class","toast svelte-1pe757z"),W(t,"position","fixed"),W(t,"top","0"),W(t,"right","0")},m(r,A){D(r,t,A),P(t,n),P(n,S),P(n,s),P(n,o),P(t,U),P(t,l),P(l,i),P(i,a),P(a,c),C=!0,R||(u=[h(o,"click",e[12]),h(i,"click",e[13],{once:!0})],R=!0)},p(e,t){(!C||1&t)&&$(c,e[0]),1&t&&b(a,"blinking",e[0].endsWith("..."))},i(e){C||(ie((()=>{A||(A=pe(t,St,{},!0)),A.run(1)})),C=!0)},o(e){A||(A=pe(t,St,{},!1)),A.run(0),C=!1},d(e){e&&O(t),e&&A&&A.end(),R=!1,r(u)}}}function er(t){let n,S,s,r,o,U,l,i,a,c,A=(t[10]("/"===t[2]?2e3:700)||"")+"";return{c(){n=K("div"),S=K("div"),s=K("div"),s.innerHTML='👨🏻‍✈️Mise à jour détectée',r=Y(),o=K("div"),U=K("button"),U.innerHTML="Installation...",l=Y(),i=F(A),Z(s,"class","toast-header svelte-1pe757z"),Z(U,"class","svelte-1pe757z"),Z(o,"class","toast-body svelte-1pe757z"),Z(S,"class","toast svelte-1pe757z"),Z(n,"class","modal svelte-1pe757z")},m(e,A){D(e,n,A),P(n,S),P(S,s),P(S,r),P(S,o),P(o,U),P(n,l),D(e,i,A),a||(c=h(U,"click",g(t[11])),a=!0)},p(e,t){4&t&&A!==(A=(e[10]("/"===e[2]?2e3:700)||"")+"")&&$(i,A)},i:e,o:e,d(e){e&&O(n),e&&O(i),a=!1,c()}}}function tr(e){let t,n,S,s,r,o,U;const l=[er,qs,zs],i=[];function a(e,s){return 126&s&&(t=!("/"===e[2]&&!e[3]||!e[4]||e[1]||!e[5].isEmpty()||!e[6].isEmpty())),t?0:(114&s&&(n=!(!e[4]||e[1]||e[5].isEmpty()&&e[6].isEmpty())),n?1:(16&s&&(S=!(e[4]||!e[9]())),S?2:-1))}return~(s=a(e,-1))&&(r=i[s]=l[s](e)),{c(){r&&r.c(),o=H()},m(e,t){~s&&i[s].m(e,t),D(e,o,t),U=!0},p(e,[t]){let n=s;s=a(e,t),s===n?~s&&i[s].p(e,t):(r&&(de(),Te(i[n],1,1,(()=>{i[n]=null})),Ee()),~s?(r=i[s],r?r.p(e,t):(r=i[s]=l[s](e),r.c()),Ie(r,1),r.m(o.parentNode,o)):r=null)},i(e){U||(Ie(r),U=!0)},o(e){Te(r),U=!1},d(e){~s&&i[s].d(e),e&&O(o)}}}const nr=Ut(!1),Sr=Ut(),sr=Ut(!1),rr=e=>{nr.set(!0),Wt.set(!1),e?sr.set(!((e,t)=>{const n=e.split("."),S=t.split(".");return n.slice(0,-1).join(".")===S.slice(0,-1).join(".")})("1.3.7",e)):sr.set(!0)},or="previousAppVersion";function Ur(t,n,S){let s,r,o,U,l,a,c,A,C=e,R=e,u=e;i(t,Sr,(e=>S(14,s=e))),i(t,Xt,(e=>S(15,r=e))),i(t,Wt,(e=>S(1,o=e))),i(t,wt,(e=>S(2,U=e))),i(t,sr,(e=>S(3,l=e))),i(t,nr,(e=>S(4,a=e))),i(t,Ht,(e=>S(5,c=e))),i(t,ht,(e=>S(6,A=e))),t.$$.on_destroy.push((()=>C())),t.$$.on_destroy.push((()=>R())),t.$$.on_destroy.push((()=>u()));let M="Installer";const N=()=>sessionStorage?sessionStorage.getItem(or):void 0;B(Wt,o=!1,o);const d=(e=0)=>{let t;e&&console.debug("automatic install "),r&&s&&s.waiting?(navigator.serviceWorker.addEventListener("controllerchange",(()=>{t||(t=!0,console.debug("SWUpdate: controllerchange reload"),e?setTimeout((()=>window.location.reload()),e):window.location.reload())})),S(0,M="En cours..."),N()||sessionStorage&&sessionStorage.setItem(or,"1.3.7"),s.waiting.postMessage({type:"SKIP_WAITING"})):(console.debug("SWUpdate: no waiting reg reload"),window.location.reload())};return[M,o,U,l,a,c,A,N,()=>sessionStorage?sessionStorage.removeItem(or):void 0,()=>{const e=N();return!!e&&et("1.3.7",e)>0},d,function(e){ne.call(this,t,e)},()=>B(Wt,o=!0,o),()=>d()]}class lr extends Fe{constructor(e){super(),me(this,e,Ur,tr,U,{})}}function ir(t){let n,S=window.location.hash="#/";return{c(){n=F(S)},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function ar(t){let n,S;return n=new Ws({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function cr(t){let n,S;return n=new WS({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function Ar(t){let n,S;return n=new TS({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function Cr(t){let n,S;return n=new Rn({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function Rr(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T;C=new lr({}),u=new _s({}),M=new en({});const L=[Cr,Ar,cr,ar,ir],p=[];function G(e,t){return"/"===e[0]?0:"/mission"===e[0]?1:"/pay"===e[0]?2:"/help"===e[0]?3:4}return d=G(e),E=p[d]=L[d](e),{c(){t=m("svg"),n=m("symbol"),S=m("path"),s=m("symbol"),r=m("path"),o=m("path"),U=m("path"),l=m("symbol"),i=m("path"),a=m("path"),c=m("path"),A=Y(),De(C.$$.fragment),R=Y(),De(u.$$.fragment),B=Y(),De(M.$$.fragment),N=Y(),E.c(),I=H(),Z(S,"d","M10 0l-5.2 4.9h3.3v5.1h3.8v-5.1h3.3l-5.2-4.9zm9.3 11.5l-3.2-2.1h-2l3.4 2.6h-3.5c-.1 0-.2.1-.2.1l-.8 2.3h-6l-.8-2.2c-.1-.1-.1-.2-.2-.2h-3.6l3.4-2.6h-2l-3.2 2.1c-.4.3-.7 1-.6 1.5l.6 3.1c.1.5.7.9 1.2.9h16.3c.6 0 1.1-.4 1.3-.9l.6-3.1c.1-.5-.2-1.2-.7-1.5z"),Z(n,"id","upload"),Z(n,"viewBox","0 0 20 17"),Z(r,"id","point"),Z(r,"d","M11 16h2v2h-2z"),Z(o,"id","stroke"),Z(o,"d","M13.516 10h-3l.484 5h2z"),Z(U,"id","triangle"),Z(U,"d","M12.017 5.974l7.519 13.026h-15.04l7.521-13.026m0-2.474c-.544 0-1.088.357-1.5 1.071l-7.985 13.831c-.825 1.429-.15 2.598 1.5 2.598h15.968c1.65 0 2.325-1.169 1.5-2.599l-7.983-13.829c-.413-.715-.956-1.072-1.5-1.072z"),Z(s,"id","alert"),Z(s,"viewBox","0 0 24 24"),Z(i,"d","M30.3 13.7L25 8.4l-5.3 5.3-1.4-1.4L25 5.6l6.7 6.7z"),Z(a,"d","M24 7h2v21h-2z"),Z(c,"d","M35 40H15c-1.7 0-3-1.3-3-3V19c0-1.7 1.3-3 3-3h7v2h-7c-.6 0-1 .4-1 1v18c0 .6.4 1 1 1h20c.6 0 1-.4 1-1V19c0-.6-.4-1-1-1h-7v-2h7c1.7 0 3 1.3 3 3v18c0 1.7-1.3 3-3 3z"),Z(l,"id","share"),Z(l,"viewBox","0 0 50 50"),W(t,"display","none")},m(e,E){D(e,t,E),P(t,n),P(n,S),P(t,s),P(s,r),P(s,o),P(s,U),P(t,l),P(l,i),P(l,a),P(l,c),D(e,A,E),Oe(C,e,E),D(e,R,E),Oe(u,e,E),D(e,B,E),Oe(M,e,E),D(e,N,E),p[d].m(e,E),D(e,I,E),T=!0},p(e,[t]){let n=d;d=G(e),d===n?p[d].p(e,t):(de(),Te(p[n],1,1,(()=>{p[n]=null})),Ee(),E=p[d],E?E.p(e,t):(E=p[d]=L[d](e),E.c()),Ie(E,1),E.m(I.parentNode,I))},i(e){T||(Ie(C.$$.fragment,e),Ie(u.$$.fragment,e),Ie(M.$$.fragment,e),Ie(E),T=!0)},o(e){Te(C.$$.fragment,e),Te(u.$$.fragment,e),Te(M.$$.fragment,e),Te(E),T=!1},d(e){e&&O(t),e&&O(A),fe(C,e),e&&O(R),fe(u,e),e&&O(B),fe(M,e),e&&O(N),p[d].d(e),e&&O(I)}}}function ur(e,t,n){let S;return i(e,wt,(e=>n(0,S=e))),te((()=>(document.addEventListener("visibilitychange",Qt,!1),qe(2e3,fetch("https://flytax.goatcounter.com/count?p=/app")).catch((()=>{})),()=>document.removeEventListener("visibilitychange",Qt)))),[S]}class Br extends Fe{constructor(e){super(),me(this,e,ur,Rr,U,{})}}try{self["workbox:window:6.2.4"]&&_()}catch(Mr){}function Mr(e,t){return new Promise((function(n){var S=new MessageChannel;S.port1.onmessage=function(e){n(e.data)},e.postMessage(t,[S.port2])}))}function Nr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,S=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[S++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}try{self["workbox:core:6.2.4"]&&_()}catch(Mr){}var Er=function(){var e=this;this.promise=new Promise((function(t,n){e.resolve=t,e.reject=n}))};function Ir(e,t){var n=location.href;return new URL(e,n).href===new URL(t,n).href}var Tr=function(e,t){this.type=e,Object.assign(this,t)};function Lr(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function Pr(){}var pr={type:"SKIP_WAITING"};function Gr(e,t){if(!t)return e&&e.then?e.then(Pr):Promise.resolve()}var Dr=function(e){var t,n;function S(t,n){var S,s;return void 0===n&&(n={}),(S=e.call(this)||this).nn={},S.tn=0,S.rn=new Er,S.en=new Er,S.on=new Er,S.un=0,S.an=new Set,S.cn=function(){var e=S.fn,t=e.installing;S.tn>0||!Ir(t.scriptURL,S.sn.toString())||performance.now()>S.un+6e4?(S.vn=t,e.removeEventListener("updatefound",S.cn)):(S.hn=t,S.an.add(t),S.rn.resolve(t)),++S.tn,t.addEventListener("statechange",S.ln)},S.ln=function(e){var t=S.fn,n=e.target,s=n.state,r=n===S.vn,o={sw:n,isExternal:r,originalEvent:e};!r&&S.mn&&(o.isUpdate=!0),S.dispatchEvent(new Tr(s,o)),"installed"===s?S.wn=self.setTimeout((function(){"installed"===s&&t.waiting===n&&S.dispatchEvent(new Tr("waiting",o))}),200):"activating"===s&&(clearTimeout(S.wn),r||S.en.resolve(n))},S.dn=function(e){var t=S.hn,n=t!==navigator.serviceWorker.controller;S.dispatchEvent(new Tr("controlling",{isExternal:n,originalEvent:e,sw:t,isUpdate:S.mn})),n||S.on.resolve(t)},S.gn=(s=function(e){var t=e.data,n=e.ports,s=e.source;return Lr(S.getSW(),(function(){S.an.has(s)&&S.dispatchEvent(new Tr("message",{data:t,originalEvent:e,ports:n,sw:s}))}))},function(){for(var e=[],t=0;t
    FLYTAX a besoin de navigateurs récents: Safari 14 iOS/Mac, Firefox 86, Chrome 87 et Microsoft Edge 87 sont compatibles.

    Contactez moi sur l'email AF (erdelord@...) en me donnant le message d'erreur.",document.body.appendChild(fr)}catch(dr){}}finally{if("serviceWorker"in navigator){const e=new Dr("./sw.js");Xt.set(e),e.addEventListener("installed",(e=>{e.isUpdate})),e.addEventListener("activated",(t=>{t.isUpdate||e.messageSW({type:"CLIENTS_CLAIM"}),t.isExternal&&console.warn("External Service worker activated")})),e.addEventListener("waiting",(t=>{Or?(e.addEventListener("controlling",(()=>{console.warn("main.js: appError reload"),window.location.reload()})),e.messageSkipWaiting()):(t.isExternal&&console.warn("External Service worker waiting"),qe(400,Mr(t.sw,{type:"GET_VERSION"})).then((e=>rr(e))).catch((e=>{console.warn("SW GET_VERSION:",e),rr()})))})),e.register().then((e=>{Or&&e&&e.unregister(),Sr.set(e)}),console.error)}}return app}(); +var app=function(){"use strict";function e(){}const t=e=>e;function n(e,t){for(const n in t)e[n]=t[n];return e}function S(e){return e()}function s(){return Object.create(null)}function r(e){e.forEach(S)}function o(e){return"function"==typeof e}function U(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function l(t,...n){if(null==t)return e;const S=t.subscribe(...n);return S.unsubscribe?()=>S.unsubscribe():S}function i(e,t,n){e.$$.on_destroy.push(l(t,n))}function a(e,t,n,S){if(e){const s=c(e,t,n,S);return e[0](s)}}function c(e,t,S,s){return e[1]&&s?n(S.ctx.slice(),e[1](s(t))):S.ctx}function A(e,t,n,S){if(e[2]&&S){const s=e[2](S(n));if(void 0===t.dirty)return s;if("object"==typeof s){const e=[],n=Math.max(t.dirty.length,s.length);for(let S=0;S32){const t=[],n=e.ctx.length/32;for(let e=0;ewindow.performance.now():()=>Date.now(),E=N?e=>requestAnimationFrame(e):e;const I=new Set;function T(e){I.forEach((t=>{t.c(e)||(I.delete(t),t.f())})),0!==I.size&&E(T)}function L(e){let t;return 0===I.size&&E(T),{promise:new Promise((n=>{I.add(t={c:e,f:n})})),abort(){I.delete(t)}}}function P(e,t){e.appendChild(t)}function p(e){if(!e)return document;const t=e.getRootNode?e.getRootNode():e.ownerDocument;return t.host?t:document}function G(e){const t=K("style");return function(e,t){P(e.head||e,t)}(p(e),t),t}function D(e,t,n){e.insertBefore(t,n||null)}function O(e){e.parentNode.removeChild(e)}function f(e,t){for(let n=0;ne.removeEventListener(t,n,S)}function g(e){return function(t){return t.preventDefault(),e.call(this,t)}}function Z(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}function V(e,t){const n=Object.getOwnPropertyDescriptors(e.__proto__);for(const S in t)null==t[S]?e.removeAttribute(S):"style"===S?e.style.cssText=t[S]:"__value"===S?e.value=e[S]=t[S]:n[S]&&n[S].set?e[S]=t[S]:Z(e,S,t[S])}function v(e){return""===e?null:+e}function $(e,t){t=""+t,e.wholeText!==t&&(e.data=t)}function J(e,t){e.value=null==t?"":t}function W(e,t,n,S){e.style.setProperty(t,n,S?"important":"")}function X(e,t){for(let n=0;n>>0}(a)}_${U}`,A=p(e);w.add(A);const C=A.__svelte_stylesheet||(A.__svelte_stylesheet=G(e).sheet),R=A.__svelte_rules||(A.__svelte_rules={});R[c]||(R[c]=!0,C.insertRule(`@keyframes ${c} ${a}`,C.cssRules.length));const u=e.style.animation||"";return e.style.animation=`${u?`${u}, `:""}${c} ${S}ms linear ${s}ms 1 both`,j+=1,c}function z(e,t){const n=(e.style.animation||"").split(", "),S=n.filter(t?e=>e.indexOf(t)<0:e=>-1===e.indexOf("__svelte")),s=n.length-S.length;s&&(e.style.animation=S.join(", "),j-=s,j||E((()=>{j||(w.forEach((e=>{const t=e.__svelte_stylesheet;let n=t.cssRules.length;for(;n--;)t.deleteRule(n);e.__svelte_rules={}})),w.clear())})))}function q(e){x=e}function ee(){if(!x)throw new Error("Function called outside component initialization");return x}function te(e){ee().$$.on_mount.push(e)}function ne(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach((e=>e.call(this,t)))}const Se=[],se=[],re=[],oe=[],Ue=Promise.resolve();let le=!1;function ie(e){re.push(e)}let ae=!1;const ce=new Set;function Ae(){if(!ae){ae=!0;do{for(let e=0;e{Re=null}))),Re}function Be(e,t,n){e.dispatchEvent(y(`${t?"intro":"outro"}${n}`))}const Me=new Set;let Ne;function de(){Ne={r:0,c:[],p:Ne}}function Ee(){Ne.r||r(Ne.c),Ne=Ne.p}function Ie(e,t){e&&e.i&&(Me.delete(e),e.i(t))}function Te(e,t,n,S){if(e&&e.o){if(Me.has(e))return;Me.add(e),Ne.c.push((()=>{Me.delete(e),S&&(n&&e.d(1),S())})),e.o(t)}}const Le={duration:0};function Pe(n,S,s){let r,U,l=S(n,s),i=!1,a=0;function c(){r&&z(n,r)}function A(){const{delay:S=0,duration:s=300,easing:o=t,tick:A=e,css:C}=l||Le;C&&(r=k(n,0,1,s,S,o,C,a++)),A(0,1);const R=d()+S,u=R+s;U&&U.abort(),i=!0,ie((()=>Be(n,!0,"start"))),U=L((e=>{if(i){if(e>=u)return A(1,0),Be(n,!0,"end"),c(),i=!1;if(e>=R){const t=o((e-R)/s);A(t,1-t)}}return i}))}let C=!1;return{start(){C||(C=!0,z(n),o(l)?(l=l(),ue().then(A)):A())},invalidate(){C=!1},end(){i&&(c(),i=!1)}}}function pe(n,S,s,U){let l=S(n,s),i=U?0:1,a=null,c=null,A=null;function C(){A&&z(n,A)}function R(e,t){const n=e.b-i;return t*=Math.abs(n),{a:i,b:e.b,d:n,duration:t,start:e.start,end:e.start+t,group:e.group}}function u(S){const{delay:s=0,duration:o=300,easing:U=t,tick:u=e,css:B}=l||Le,M={start:d()+s,b:S};S||(M.group=Ne,Ne.r+=1),a||c?c=M:(B&&(C(),A=k(n,i,S,o,s,U,B)),S&&u(0,1),a=R(M,o),ie((()=>Be(n,S,"start"))),L((e=>{if(c&&e>c.start&&(a=R(c,o),c=null,Be(n,a.b,"start"),B&&(C(),A=k(n,i,a.b,a.duration,0,U,l.css))),a)if(e>=a.end)u(i=a.b,1-i),Be(n,a.b,"end"),c||(a.b?C():--a.group.r||r(a.group.c)),a=null;else if(e>=a.start){const t=e-a.start;i=a.a+a.d*U(t/a.duration),u(i,1-i)}return!(!a&&!c)})))}return{run(e){o(l)?ue().then((()=>{l=l(),u(e)})):u(e)},end(){C(),a=c=null}}}function Ge(e,t){const n=t.token={};function S(e,S,s,r){if(t.token!==n)return;t.resolved=r;let o=t.ctx;void 0!==s&&(o=o.slice(),o[s]=r);const U=e&&(t.current=e)(o);let l=!1;t.block&&(t.blocks?t.blocks.forEach(((e,n)=>{n!==S&&e&&(de(),Te(e,1,1,(()=>{t.blocks[n]===e&&(t.blocks[n]=null)})),Ee())})):t.block.d(1),U.c(),Ie(U,1),U.m(t.mount(),t.anchor),l=!0),t.block=U,t.blocks&&(t.blocks[S]=U),l&&Ae()}if((s=e)&&"object"==typeof s&&"function"==typeof s.then){const n=ee();if(e.then((e=>{q(n),S(t.then,1,t.value,e),q(null)}),(e=>{if(q(n),S(t.catch,2,t.error,e),q(null),!t.hasCatch)throw e})),t.current!==t.pending)return S(t.pending,0),!0}else{if(t.current!==t.then)return S(t.then,1,t.value,e),!0;t.resolved=e}var s}function De(e){e&&e.c()}function Oe(e,t,n,s){const{fragment:U,on_mount:l,on_destroy:i,after_update:a}=e.$$;U&&U.m(t,n),s||ie((()=>{const t=l.map(S).filter(o);i?i.push(...t):r(t),e.$$.on_mount=[]})),a.forEach(ie)}function fe(e,t){const n=e.$$;null!==n.fragment&&(r(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function Ke(e,t){-1===e.$$.dirty[0]&&(Se.push(e),le||(le=!0,Ue.then(Ae)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const s=S.length?S[0]:n;return A.ctx&&U(A.ctx[e],A.ctx[e]=s)&&(!A.skip_bound&&A.bound[e]&&A.bound[e](s),C&&Ke(t,e)),n})):[],A.update(),C=!0,r(A.before_update),A.fragment=!!o&&o(A.ctx),n.target){if(n.hydrate){const e=function(e){return Array.from(e.childNodes)}(n.target);A.fragment&&A.fragment.l(e),e.forEach(O)}else A.fragment&&A.fragment.c();n.intro&&Ie(t.$$.fragment),Oe(t,n.target,n.anchor,n.customElement),Ae()}q(c)}class Fe{$destroy(){fe(this,1),this.$destroy=e}$on(e,t){const n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{const e=n.indexOf(t);-1!==e&&n.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Ye=e=>({}),He=e=>({}),he=e=>({}),ge=e=>({});function Ze(e){let t,n,S,s,r,o,U,l,i,c;const u=e[4].icon,B=a(u,e,e[3],ge),M=e[4].content,N=a(M,e,e[3],He);return{c(){t=K("div"),n=Y(),S=K("div"),B&&B.c(),s=Y(),r=K("div"),o=K("h2"),U=F(e[0]),l=Y(),i=K("div"),N&&N.c(),Z(S,"class","flag__signifier"),b(S,"flag--large-icon",e[1].includes("large-icon")),b(S,"flag--no-title",!e[0]),b(S,"flag--large-title",e[0]&&e[1].includes("large-title")),Z(o,"class","svelte-19o17qn"),Z(r,"class","flag__title"),Z(i,"class","flag__content"),Z(t,"class","flag")},m(e,a){D(e,t,a),P(t,n),P(t,S),B&&B.m(S,null),P(t,s),P(t,r),P(r,o),P(o,U),P(t,l),P(t,i),N&&N.m(i,null),c=!0},p(e,[t]){B&&B.p&&(!c||8&t)&&C(B,u,e,e[3],c?A(u,e[3],t,he):R(e[3]),ge),1&t&&b(S,"flag--no-title",!e[0]),3&t&&b(S,"flag--large-title",e[0]&&e[1].includes("large-title")),(!c||1&t)&&$(U,e[0]),N&&N.p&&(!c||8&t)&&C(N,M,e,e[3],c?A(M,e[3],t,Ye):R(e[3]),He)},i(e){c||(Ie(false),Ie(B,e),Ie(N,e),c=!0)},o(e){Te(false),Te(B,e),Te(N,e),c=!1},d(e){e&&O(t),B&&B.d(e),N&&N.d(e)}}}function Ve(e,t,n){let{$$slots:S={},$$scope:s}=t,{style:r="large-icon"}=t;const o=r.split().map((e=>e.trim()));let{title:U}=t;return e.$$set=e=>{"style"in e&&n(2,r=e.style),"title"in e&&n(0,U=e.title),"$$scope"in e&&n(3,s=e.$$scope)},[U,o,r,s,S]}class ve extends Fe{constructor(e){super(),me(this,e,Ve,Ze,U,{style:2,title:0})}}function $e(e){let t,S;const s=e[3].default,r=a(s,e,e[2],null);let o=[{href:e[0]},e[1]],U={};for(let e=0;e{t=n(n({},t),function(e){const t={};for(const n in e)"$"!==n[0]&&(t[n]=e[n]);return t}(e)),S(5,r=u(t,s)),"href"in e&&S(0,l=e.href),"$$scope"in e&&S(2,U=e.$$scope)},[l,i,U,o]}class We extends Fe{constructor(e){super(),me(this,e,Je,$e,U,{href:0})}}class Xe{constructor(){this.promise=new Promise(((e,t)=>{this.reject=t,this.resolve=e}))}}const be='',ye="undefined"!=typeof navigator&&navigator.languages?Array.from(Intl.DateTimeFormat.supportedLocalesOf(Intl.NumberFormat.supportedLocalesOf(navigator.languages))).shift():void 0,Qe=["01","02","03","04","05","06","07","08","09","10","11","12"],we=["00",...Qe,"13"],xe=["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],je=(e,t={})=>{if(void 0!==ye){const n=new Intl.NumberFormat(ye,t).format(e);return"currency"===t.style?n.replace(/\s/gu," "):n}{const n=e.toFixed?e:parseFloat(e);return"currency"===t.style?n.toFixed(t.maximumFractionDigits||2)+" "+t.currency:void 0===t.maximumFractionDigits||t.maximumFractionDigits!==t.minimumFractionDigits?n.toString():n.toFixed(t.maximumFractionDigits)}},ke=(e,t=2)=>je(e,{style:"currency",currency:"EUR",minimumFractionDigits:t}),_e=e=>je(e,{style:"decimal",minimumFractionDigits:4,maximumFractionDigits:4}),ze=(e,t={})=>{if(void 0!==ye){const n=new Date(Date.parse(e.substring(0,10)+"T00:00Z")),S=Object.assign({timezone:"UTC"},t);return new Intl.DateTimeFormat(ye,S).format(n)}return e.substring(0,10)},qe=function(e,t){let n=new Promise(((t,n)=>{let S=setTimeout((()=>{clearTimeout(S),n("Timed out in "+e+"ms.")}),e)}));return Promise.race([t,n])},et=(e,t)=>{let n=e.split("."),S=t.split(".");for(var s=0;s<3;s++){let e=Number(n[s]),t=Number(S[s]);if(e>t)return 1;if(t>e)return-1;if(!isNaN(e)&&isNaN(t))return 1;if(isNaN(e)&&!isNaN(t))return-1}return 0},tt=async()=>{const e={title:"FLYTAX",url:window.location.pathname};try{await navigator.share(e)}catch(e){}return!1};function nt(e){const t=e-1;return t*t*t+1}function St(e,{delay:n=0,duration:S=400,easing:s=t}={}){const r=+getComputedStyle(e).opacity;return{delay:n,duration:S,easing:s,css:e=>"opacity: "+e*r}}function st(e,{delay:t=0,duration:n=400,easing:S=nt,x:s=0,y:r=0,opacity:o=0}={}){const U=getComputedStyle(e),l=+U.opacity,i="none"===U.transform?"":U.transform,a=l*(1-o);return{delay:t,duration:n,easing:S,css:(e,t)=>`\n\t\t\ttransform: ${i} translate(${(1-e)*s}px, ${(1-e)*r}px);\n\t\t\topacity: ${l-a*t}`}}const rt=[];function ot(e,t){return{subscribe:Ut(e,t).subscribe}}function Ut(t,n=e){let S;const s=new Set;function r(e){if(U(t,e)&&(t=e,S)){const e=!rt.length;for(const e of s)e[1](),rt.push(e,t);if(e){for(let e=0;e{s.delete(l),0===s.size&&(S(),S=null)}}}}function lt(t,n,S){const s=!Array.isArray(t),U=s?[t]:t,i=n.length<2;return ot(S,(t=>{let S=!1;const a=[];let c=0,A=e;const C=()=>{if(c)return;A();const S=n(s?a[0]:a,t);i?t(S):A=o(S)?S:e},R=U.map(((e,t)=>l(e,(e=>{a[t]=e,c&=~(1<{c|=1<{const[t,n]=e.split(",");return`${t}:${(.6*parseFloat(n)).toFixed(0).padStart(2,"0")}Z`},Ct=(e,t)=>{const n=Date.parse(t.replace("24:00","23:59"))-Date.parse(e.replace(/\d\d:\d\d/,"00:00"));return Math.floor(n/864e5)},Rt=((e,t,n=0)=>{if(void 0===t)return e;let S=new Date(Date.parse(t));n&&S.setUTCDate(S.getUTCDate()+n);const s=S.toLocaleString("en-GB",{timeZone:e});let r;if(null!==(r=/(\d\d)\/(\d\d)\/(\d\d\d\d), (\d\d):(\d\d):\d\d/.exec(s))){const[,e,t,n,s,o]=r;let U=`${n}-${t}-${e}T${s}:${o}`;const l=(new Date(Date.parse(U+"Z"))-S)/36e5;let i=Math.trunc(l),a=Math.round(60*(Math.abs(l)-Math.abs(i))/100);return 0===i?U+"Z":(U+=i>=0?"+":"-",U+=Math.abs(i).toString().padStart(2,"0")+":"+a.toString().padStart(2,"0"),U)}throw new Error(`Can not convert ${t} to timeZone ${e}`)}).bind(null,"Europe/Paris"),ut=e=>{const t=e.nights.reduce(((e,t)=>(t!==e[e.length-1]&&e.push(t),e)),[]);return[e.dep,...t,e.arr].join("-").replace("-...",at).replace("...-",at)},Bt=(e,{tzConverter:t,base:n,iataMap:S})=>{const s=t();try{(new Date).toLocaleString("en-GB",{timeZone:s,timeZoneName:"short"})}catch(e){throw new Error(`Date.toLocaleString("en-GB", {"timeZone": "${s}"}) not supported`)}const r=e=>-1!==n.indexOf(e);let o,U,l=[],i=null;for(const[s,B]of e.entries()){const M=B.start.substring(0,4),N=B.start.substring(5,7),d=Object.assign({},B);if(t&&Object.assign(d,{start:t(B.start),end:t(B.end)}),null===i&&(o=[],U=[],i={isComplete:"<>",nights:[],start:d.start}),0===s&&(r(d.dep)&&"0,00"===d.stop&&"01"===B.start.substring(8,10)||!r(d.dep))){if(i.isComplete=">",!r(d.dep)){i.start=`${M}-${N}-01T00:00Z`,t&&(i.start=t(i.start));const e=Ct(i.start,d.start)+1;for(let t=0;t0)&&i.nights.push(d.dep)}const E=e[s+1]?Object.assign({},e[s+1]):void 0;if(t&&E&&Object.assign(E,{start:t(e[s+1].start),end:t(e[s+1].end)}),void 0!==E){const e=(R=d.end,u=E.start,(Date.parse(u)-Date.parse(R))/36e5);let t=0;if(t+=0===Ct(i.start,d.start)&&r(d.dep)?Ct(d.start,d.end):0,t+=Ct(d.end,E.start),t+=Ct(E.start,E.end),t=Math.max(t,1),e>=7&&!r(d.arr)){for(let e=0;e=12)){o.push(B);continue}}else if(r(d.arr))d.end.substring(5,7)!==N&&"24:00Z"===B.end.substring(11)&&(i.isComplete="<",i.days=Ct(i.start,d.end));else{i.isComplete="<";const e=(A=void 0,C=void 0,`${c=M}-${a=N}-${A=parseInt(a,10),C=parseInt(c,10),2===A?3&C||!(C%25)&&15&C?28:29:30+(A+(A>>3)&1)}T24:00Z`);i.end=t?t(e):e;const n=Ct(d.end,i.end)+1;for(let e=0;e0&&U.push(d.arr);i.end.substring(5,7)!==N&&(d.end.substring(5,7)===N&&i.nights.pop(),i.days=Ct(i.start,i.end))}o.push(B),"<>"!==i.isComplete&&(i.flights=o,i.base=n),i.end||(i.end=d.end),i.days||(i.days=Ct(i.start,i.end)+1);let I=n[0],T=n[0];i.isComplete.startsWith("<")?o.length>0&&(I=o[0].dep):I=at,i.isComplete.endsWith(">")?o.length>0&&(T=o[o.length-1].arr):T=at,i.dep=I,i.arr=T,i.summary=ut(i);const L=i.nights.length,P=i.days-L,p=i.nights.length>0?i.nights[L-1]:I!==at?I:T!==at?T:n[0];for(let e=0;e"===i.isComplete&&([i.nights]=Mt(i,U));0===o.reduce(((e,t)=>e+(r(t.dep)&&r(t.arr)?0:1)),0)&&(i.nights=[]),S&&(i.countries=i.nights.map((e=>S(e)))),l.push(i),i=null}var a,c,A,C,R,u;return l},Mt=(e,t)=>{const n=e.nights,S=e.countries;if(Array.isArray(t)){const s=t.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t===e[n][0]?e[n][1]+=1:e.push([t,1]),e}),[]),r=n.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t===e[n][0]?e[n][1]+=1:e.push([t,1]),e}),[]);if(2===s.length&&s[0][1]===s[1][1]&&2===r.length&&r[1][1]-r[0][1]==2){const t=[].concat(n[0],...n.slice(0,-1));let s=S;return void 0!==S&&(s=[].concat(S[0],...S.slice(0,-1))),console.log(`Optimisation des nuits sur ${e.summary} du ${e.start.substring(0,10).split("-").reverse().join("/")}\n(conformément à l'exemple 13 du mémento fiscal)\n${n} -> ${t}`),[t,s]}}return[n,S]},Nt=e=>{const t=it.indexOf(e+":");return t>=0?it.substring(t+4,t+6):e};class dt extends Error{}const Et=(e,t,n)=>{const[S,s]=It(e,t),r=n[s];if(r){const e=parseFloat(r[2]);return parseFloat((parseFloat(S)/e).toFixed(2))}throw new dt(`Taux de change inconnu pour ${s}`)},It=(e,t)=>{for(const[n,S,s]of e.a)if(n.localeCompare(t)<=0)return[s,S];throw new dt(e?`Pas d'indemnité définie pour ${e.n} au ${t}`:"Indemnité manquante")},Tt=(e,t,n,S,s)=>{const r=[],o=n.countries,U=n.exr,l=.5,i=(parseInt(e,10)+1).toString(),a=(parseInt(e,10)-1).toString();for(const n of t){let t=!1;const c=[];let A=l,C=0;if(0===n.nights.length)n.formula="rotation sur base";else if(n.nights.length>n.days||n.countries.length>n.days)n.formula="Erreur: nuitées > nb de jours",n.currencyFormula="Vérifiez le choix de la base",console.log(`%c${s}\n%ctype [ep5] %cVérifiez la base`,"font-family: monospace;","color: black;","color: red;"),t=!0;else{for(const e of n.countries){const t=o[e];if(t&&1!==t.z){A=0;break}}let s=n.countries.length;const r=n.countries.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t===e[n][1]?e[n][0]+=1:e.push([1,t]),e}),[]);let R=[],u=0;0!==A&&r.length>0&&(r[r.length-1][0]-=A,s-=A);let B=0;for(const[s,A]of r){let r=s,M=o[A];M&&1===M.f&&(M=o.EU);let N=0;const d=[];if(M)try{const t=[],o=Math.ceil(s)>s;for(let c=0;c"===n.isComplete||R===a&&"<"===n.isComplete||(r-=0===c&&o?l:1);B+=1}u+=r,r>=0&&R.push([r,A]),t.length>0&&d.push(...t.reverse())}catch(e){t=!0,e instanceof dt?console.error(e.message):console.error(e)}else t=!0,2===A.length?console.error(`Données pays manquantes pour ${A}`):console.error(`Code IATA inconnu ${A}`);d.length>0&&c.push(d.reduce(((e,t)=>{const n=e.length-1;return n>-1&&t[1]===e[n][1]?e[n][0]+=t[0]:e.push(t),e}),[])),C+=N}R=R.reduce(((e,t)=>t[0]>0?e.concat([[je(t[0],{style:"decimal",minFractionDigits:0,maxFractionDigits:1}),t[1]]]):e),[]),n.formula=R.map((e=>e.join(" x "))).join(" + "),n.formula+=t||s===u?"":" ¹",n.formula+=t||se.concat([[je(t[0],{style:"decimal",minFractionDigits:0,maxFractionDigits:1}),t[1]]])),[]).map((e=>e.join(" x "))).join(" + ");e.length>1?M.push(`(${t})`):M.push(t)}if(n.currencyFormula=M.join(" + "),R.length<=0&&0!==r.length&&!t)continue}n.indemnity=t?0:parseFloat(C.toFixed(2)),n.error=t,r.push(n)}return r};function*Lt(e){for(const t of we){const n=e[t];n&&(yield*n.rots)}}function*Pt(e){for(const t of e)yield*t}const pt=(e,t)=>{const n=[...e],S=[...t];if(S.length>0&&"0,00"===S[0].stop&&n.length>0){const e=S.shift(),t={...n.pop()};return t.end=e.end,n.concat(t,[...S])}return n.concat(S)},Gt=[{label:"Marseille",selected:!1,value:["MRS"],tzConverter:Rt},{label:"Nice",selected:!1,value:["NCE"],tzConverter:Rt},{label:"Paris",selected:!0,value:["CDG","ORY"],tzConverter:Rt},{label:"Toulouse",selected:!1,value:["TLS"],tzConverter:Rt}].sort(((e,t)=>e.label.localeCompare(t.label))),Dt=[{label:"2024",selected:!1,url:"./data/data2023b.json"},{label:"2023",selected:!0,url:"./data/data2023b.json"},{label:"2022",selected:!1,url:"./data/data2022.json"},{label:"2021",selected:!1,url:"./data/data2021.json"},{label:"2020",selected:!1,url:"./data/data2020.json"},{label:"2019",selected:!1,url:"./data/data2019.json"},{label:"2018",selected:!1,url:"./data/data2018.json"}].sort(((e,t)=>t.label.localeCompare(e.label))),Ot=Dt.filter((e=>e.selected)).pop().label,ft=Ut(Gt.filter((e=>e.selected)).pop().value),Kt=Ut(Gt.filter((e=>e.selected)).pop().tzConverter);function mt(e){const{subscribe:t,set:n,update:S}=Ut(e);return{subscribe:t,set:n,update:S,reset:()=>n("object"==typeof e?{...e}:Array.isArray(e)?[...e]:e)}}const Ft=(()=>{const{subscribe:e,set:t,update:n}=Ut(new Array),S=(e,t,n)=>e.push({type:t,values:n});let s,r;"undefined"!=typeof window&&console&&(s=console.log,r=console.error);const o=function(){n((e=>(S(e,"log",[...arguments]),e))),s&&console&&s.apply(console,arguments)},U=function(){n((e=>(S(e,"error",[...arguments]),e))),r&&console&&r.apply(console,arguments)};return"undefined"!=typeof window&&console&&(console.log=o,console.error=U),{subscribe:e,log:o,error:U,reset:()=>t(new Array)}})();function Yt(){return 2===Object.keys(this).length}const Ht=mt({type:"ep5",isEmpty:Yt}),ht=mt({type:"pay",isEmpty:Yt}),gt=mt(),Zt=mt(),Vt=Ut(Ot),vt=lt(Vt,((e,t)=>{Ht.reset(),ht.reset(),Ft.reset(),gt.reset(),Zt.reset(),fetch(Dt.filter((t=>t.label===e)).pop().url).then((e=>e.json())).then((e=>t(e)))}),void 0),$t=lt([Ht,Vt,vt,Kt],(([e,t,n,S])=>void 0===n?[]:((e,t,n,S)=>{const s=Array.isArray(e)?Pt(e):Lt(e),r=Array.isArray(e)?Pt(e):Lt(e);r.next();const o=[];for(const e of s){const U=r.next().value;if(U&&"<"===e.isComplete&&">"===U.isComplete&&e.end.substring(0,7)===U.end.substring(0,7)){const[l]=Bt(pt(e.flights,U.flights),{base:e.base,tzConverter:S,iataMap:Nt}),[i]=Tt(t,[l],n,S);o.push(i),s.next(),r.next()}else o.push(e)}return o})(e,t,n,S))),Jt=lt($t,(e=>Object.values(e).reduce(((e,t)=>e+t.indemnity),0).toFixed(0)));ot({},(e=>{const t=()=>{e(navigator.onLine)};return"undefined"!=typeof navigator&&"onLine"in navigator?(t(),window.addEventListener("offline",t),window.addEventListener("online",t)):e(void 0),()=>{"undefined"!=typeof navigator&&"onLine"in navigator&&(window.removeEventListener("offline",t),window.removeEventListener("online",t))}}));const Wt=Ut(!1),Xt=Ut();let bt=new Date;const yt=()=>{if("serviceWorker"in navigator){const e=18e5;new Date-bt>e&&navigator.serviceWorker.getRegistration().then((e=>{e&&(e.waiting||e.update(),Wt.set(!1),bt=new Date)}),console.error)}},Qt=()=>{document&&document.visibilityState&&"visible"===document.visibilityState&&yt()},wt=ot(null,(e=>{const t=()=>{e(window.location.hash.substr(1)||"/"),yt()};return t(),window.addEventListener("hashchange",t),()=>{window.removeEventListener("hashchange",t)}}));function xt(e,t,n){const S=e.slice();return S[10]=t[n],S}function jt(e){let t,n,S,s,o,U,l,i,a,c,A,C,R,u,B,N,d,E,I=e[1],T=[];for(let t=0;tX",c=Y(),A=K("div"),C=K("div"),R=K("ol");for(let e=0;e{B||(B=pe(t,St,{duration:200},!0)),B.run(1)})),N=!0)},o(e){B||(B=pe(t,St,{duration:200},!1)),B.run(0),N=!1},d(e){e&&O(t),f(T,e),e&&B&&B.end(),d=!1,r(E)}}}function kt(e){let t,n,S=e[2](e[10])+"";return{c(){t=new Q,n=H(),t.a=n},m(e,s){t.m(S,e,s),D(e,n,s)},p(e,n){2&n&&S!==(S=e[2](e[10])+"")&&t.p(S)},d(e){e&&O(n),e&&t.d()}}}function _t(e){let t,n,S=e[0]&&jt(e);return{c(){S&&S.c(),t=H()},m(e,s){S&&S.m(e,s),D(e,t,s),n=!0},p(e,[n]){e[0]?S?(S.p(e,n),1&n&&Ie(S,1)):(S=jt(e),S.c(),Ie(S,1),S.m(t.parentNode,t)):S&&(de(),Te(S,1,1,(()=>{S=null})),Ee())},i(e){n||(Ie(S),n=!0)},o(e){Te(S),n=!1},d(e){S&&S.d(e),e&&O(t)}}}const zt=Ut(!1);function qt(t,n,S){let s,r,o=e;i(t,zt,(e=>S(0,s=e))),i(t,Ft,(e=>S(1,r=e))),t.$$.on_destroy.push((()=>o()));const U=e=>e.replace(/\n/g,"
    "),l=e=>`

    ${U(e)}

    `,a=e=>e instanceof Error?e.message:null===e?"null":void 0===e?"undefined":"[object String]"===Object.prototype.toString.call(e)||e.toString?e.toString():"alerte visible dans la console du navigateur";return[s,r,e=>{try{const t=[];if(!Array.isArray(e.values)||0===e.values.lenght)return"";if("[object String]"===Object.prototype.toString.call(e.values[0])&&e.values[0].includes("%c"))t.push((e=>{const t=e.values.slice(1),n=e.values[0],S=n.match(/%c/g).length;t.length=S;const s=[],r=e=>e.replace("color: darkorange;","color: var(--maximum-yellow-red);").replace("color: red;","color: var(--redaf);").replace("color: black;","color: var(--blueaf);");for(const[e,S]of Object.entries(n.split("%c")))e>0&&s.push(`${U(S)}`);return`

    ${s.join("")}

    `})(e));else for(const n of e.values)t.push(l(a(n)));return`
  • ${t.join("")}
  • `}catch(e){return`
  • Erreur dans la console: ${e.message}

  • `}},()=>{Ft.reset(),B(zt,s=!1,s)},e=>{e.scrollTop=e.scrollHeight},()=>B(zt,s=!1,s)]}class en extends Fe{constructor(e){super(),me(this,e,qt,_t,U,{})}}function tn(t){return{c:e,m:e,i:e,o:e,d:e}}function nn(t){let n,S;return{c(){n=K("div"),n.innerHTML='

    Simplifier les impôts des pilotes en respectant la confidentialité.

    \n

    —@flyingeek
    pilote de ligne

    ',Z(n,"class","blockquote svelte-15co0wx")},m(e,t){D(e,n,t)},p(e,n){t=e},i(e){S||ie((()=>{S=Pe(n,st,{x:t[0]?0:600,duration:t[0]?0:1e3}),S.start()}))},o:e,d(e){e&&O(n)}}}function Sn(t){return{c:e,m:e,i:e,o:e,d:e}}function sn(e){let t,n,S,s,r,o;return{c(){t=m("svg"),n=m("rect"),S=m("rect"),s=m("rect"),r=m("path"),o=m("polygon"),Z(n,"x","27.689"),Z(n,"y","181"),Z(n,"width","58.8"),Z(n,"height","30"),Z(S,"x","27.689"),Z(S,"y","301"),Z(S,"width","58.8"),Z(S,"height","30"),Z(s,"y","241"),Z(s,"width","86.49"),Z(s,"height","30"),Z(r,"d","M314.244,58.245c-109.042,0-197.755,88.713-197.755,197.755s88.712,197.755,197.755,197.755S512,365.042,512,256\n S423.287,58.245,314.244,58.245z M314.244,423.755c-92.5,0-167.755-75.255-167.755-167.755S221.744,88.245,314.244,88.245\n C406.745,88.245,482,163.5,482,256S406.745,423.755,314.244,423.755z"),Z(o,"points","323.93,263.454 323.93,166.557 293.93,166.557 293.93,279.313 371.238,331.996 388.133,307.205"),Z(t,"slot","icon"),Z(t,"width","47px"),Z(t,"height","47px"),Z(t,"viewBox","0 0 512 512")},m(e,U){D(e,t,U),P(t,n),P(t,S),P(t,s),P(t,r),P(t,o)},d(e){e&&O(t)}}}function rn(e){let t;return{c(){t=F("MyPeopleDoc")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function on(e){let t,n,S,s,r,o,U,l,i,a,c;return s=new We({props:{href:"https://www.mypeopledoc.com",$$slots:{default:[rn]},$$scope:{ctx:e}}}),{c(){t=K("ol"),n=K("li"),S=F("Récupérez vos EP4/EP5 et vos bulletins de salaire sur "),De(s.$$.fragment),r=Y(),o=K("li"),U=F("Choisissez l’année en haut à droite sur "),l=K("b"),i=Y(),a=K("li"),a.innerHTML='Déposez vos fichiers dans Frais de Mission\n ou dans Salaire',Z(n,"class","svelte-15co0wx"),Z(o,"class","svelte-15co0wx"),Z(a,"class","svelte-15co0wx"),Z(t,"slot","content"),Z(t,"class","svelte-15co0wx")},m(e,A){D(e,t,A),P(t,n),P(n,S),Oe(s,n,null),P(t,r),P(t,o),P(o,U),P(o,l),l.innerHTML=be,P(t,i),P(t,a),c=!0},p(e,t){const n={};8&t&&(n.$$scope={dirty:t,ctx:e}),s.$set(n)},i(e){c||(Ie(s.$$.fragment,e),c=!0)},o(e){Te(s.$$.fragment,e),c=!1},d(e){e&&O(t),fe(s)}}}function Un(e){let t,n;return{c(){t=m("svg"),n=m("path"),Z(n,"d","M34.451,18.851v-7.893C34.451,4.915,29.539,0,23.497,0c-6.04,0-10.952,4.915-10.952,10.958v7.893H7.471V47h32.059V18.851\n H34.451z M18.026,10.958c0-3.023,2.452-5.481,5.47-5.481s5.47,2.458,5.47,5.481v7.893h-10.94V10.958z M21.817,41.934l-10.171-7.216\n l3.188-5.985l7.277,6.119l10.479-10.27l2.761,4.82L21.817,41.934z"),Z(t,"slot","icon"),Z(t,"width","47px"),Z(t,"height","47px"),Z(t,"viewBox","0 0 47 47")},m(e,S){D(e,t,S),P(t,n)},d(e){e&&O(t)}}}function ln(t){let n,S,s,r;return{c(){n=K("p"),S=F("Inutile de partager son calendrier ou d’envoyer des données sur Internet : "),s=K("b"),r=F("\n fonctionne directement dans votre navigateur, aucun fichier n’est transmis sur le réseau, aucune donnée n’est collectée."),Z(n,"slot","content")},m(e,t){D(e,n,t),P(n,S),P(n,s),s.innerHTML=be,P(n,r)},p:e,d(e){e&&O(n)}}}function an(e){let t,n,S,s;return{c(){t=m("svg"),n=m("ellipse"),S=m("path"),s=m("path"),Z(n,"cx","12"),Z(n,"cy","5"),Z(n,"rx","9"),Z(n,"ry","3"),Z(S,"d","M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"),Z(s,"d","M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"),Z(t,"slot","icon"),Z(t,"width","24"),Z(t,"height","24"),Z(t,"viewBox","0 0 24 24"),Z(t,"fill","none"),Z(t,"stroke","currentColor"),Z(t,"stroke-width","2"),Z(t,"stroke-linecap","round"),Z(t,"stroke-linejoin","round")},m(e,r){D(e,t,r),P(t,n),P(t,S),P(t,s)},d(e){e&&O(t)}}}function cn(t){let n,S,s,r,o,U,l,i,a,c,A;return{c(){n=K("div"),S=K("p"),s=F("Chaque année "),r=K("b"),o=F(" récupère les données à la source : le montant des indemnités provient du\n "),U=K("strong"),U.textContent="Ministère de l’Économie",l=F(", les taux de change sont ceux de la "),i=K("strong"),i.textContent="Banque de France",a=F("."),c=Y(),A=K("p"),A.innerHTML="Le programme en lui même inclus des tests permettant de fiabiliser les résultats\n et les erreurs détectées sont clairement affichées. Les exemples du Mémento fiscal du SNPL\n ont été utilisés pour tester et valider les résultats de l’application.",Z(n,"slot","content")},m(e,t){D(e,n,t),P(n,S),P(S,s),P(S,r),r.innerHTML=be,P(S,o),P(S,U),P(S,l),P(S,i),P(S,a),P(n,c),P(n,A)},p:e,d(e){e&&O(n)}}}function An(e){let t,n,S,s,r,o,U,l,i,a,c,A,C={ctx:e,current:null,token:null,hasCatch:!1,pending:Sn,then:nn,catch:tn,value:2};return Ge(e[1],C),U=new ve({props:{title:"Un outil simple et rapide",$$slots:{content:[on],icon:[sn]},$$scope:{ctx:e}}}),i=new ve({props:{title:"Une confidentialité préservée",$$slots:{content:[ln],icon:[Un]},$$scope:{ctx:e}}}),c=new ve({props:{title:"Des sources fiables",$$slots:{content:[cn],icon:[an]},$$scope:{ctx:e}}}),{c(){t=K("main"),n=K("div"),S=K("div"),s=Y(),C.block.c(),r=Y(),o=K("section"),De(U.$$.fragment),l=Y(),De(i.$$.fragment),a=Y(),De(c.$$.fragment),Z(S,"class","logo svelte-15co0wx"),Z(n,"class","blockquote-wrapper svelte-15co0wx"),Z(o,"class","svelte-15co0wx"),Z(t,"class","svelte-15co0wx")},m(e,R){D(e,t,R),P(t,n),P(n,S),S.innerHTML=be,P(n,s),C.block.m(n,C.anchor=null),C.mount=()=>n,C.anchor=null,P(t,r),P(t,o),Oe(U,o,null),P(o,l),Oe(i,o,null),P(o,a),Oe(c,o,null),A=!0},p(t,[n]){e=t;const S={};8&n&&(S.$$scope={dirty:n,ctx:e}),U.$set(S);const s={};8&n&&(s.$$scope={dirty:n,ctx:e}),i.$set(s);const r={};8&n&&(r.$$scope={dirty:n,ctx:e}),c.$set(r)},i(e){A||(Ie(C.block),Ie(U.$$.fragment,e),Ie(i.$$.fragment,e),Ie(c.$$.fragment,e),A=!0)},o(e){Te(U.$$.fragment,e),Te(i.$$.fragment,e),Te(c.$$.fragment,e),A=!1},d(e){e&&O(t),C.block.d(),C.token=null,C=null,fe(U),fe(i),fe(c)}}}function Cn(e,t,n){let S;i(e,zt,(e=>n(0,S=e)));const s=document.fonts?document.fonts.load("3em Abril Fatface"):(new Xe).resolve(!0);return[S,s]}class Rn extends Fe{constructor(e){super(),me(this,e,Cn,An,U,{})}}function un(t){let n,S,s,r,o,U;return{c(){n=K("div"),S=K("p"),s=new Q,r=F(" est une aide au calcul des frais professionels sous licence GPLv3.0"),o=Y(),U=K("p"),U.innerHTML="Les PN restents seuls responsables face à l’administration pour justifier l’exactitude\n de leur déclaration",s.a=r,Z(S,"class","svelte-ydi49e"),Z(U,"class","svelte-ydi49e"),Z(n,"class","svelte-ydi49e")},m(e,t){D(e,n,t),P(n,S),s.m(be,S),P(S,r),P(n,o),P(n,U)},p:e,i:e,o:e,d(e){e&&O(n)}}}class Bn extends Fe{constructor(e){super(),me(this,e,null,un,U,{})}}function Mn(e,t,n){let S=e.length;function s(){S=--S,S<1&&n()}t()?n():e.forEach((({type:e,url:t,options:n={async:!0,defer:!0}})=>{const r="script"===e,o=document.createElement(r?"script":"link");(t.startsWith("http")||t.startsWith("//"))&&(o.crossOrigin="anonymous");let U=!0;r?(o.src=t,o.async=n.async,o.defer=n.defer):(o.href=t,"prefetch"in n?(o.rel="prefetch",S-=1,U=!1):"preload"in n?(o.rel="preload",S-=1,U=!1):(o.rel="stylesheet",S-=1,U=!1)),U&&(o.onload=s),document.body.appendChild(o)}))}const Nn=e=>{const t=e.replace(",",".").replace(" ",""),[n,S]=t.split(".");return n+"."+(S||"00").padEnd(2,"0")},dn=e=>{const[t,n]=e.split(".");return parseInt(t+(n||"00"),10)},En=e=>{const t=e.toString(10);switch(t.length){case 2:return"0."+t;case 1:return"0.0"+t;default:return t.slice(0,-2)+"."+t.slice(-2)}},In=(e,t,n)=>{const S=[];let s;for(;null!==(s=t.exec(e));)S.push(Nn(s[1]));if(S.length>0)return S;if(void 0===n)throw new Error(`No match found for ${t}`);return[n]},Tn=(e,t,n)=>{let S,s;for(;null!==(S=t.exec(e));)s=S;if(s)return s[1];if(void 0===n)throw new Error(`No match found for ${t}`);return n},Ln=(e,t,n)=>{let S={type:"pay",fileName:t,fileOrder:n,errors:[]},s=/(?:IND\.REPAS_+|INDEMNITE REPAS_+|IR\.FIN ANNEE DOUBL_+|IR EXONEREES_+|IR NON EXONEREES_+)([\-0-9, ]+)/g;S.repas=In(e,s,"0").map(Nn),s=/(?:IND\. TRANSPORT EXO_+|IND\. TRANSPORT_+|FRAIS REELS TRANSP_+|R\. FRAIS DE TRANSPORT_+)([\-0-9, ]+)/g,S.transport=In(e,s,"0").map(Nn),s=/(?:_I.DECOUCHERS F.PRO_+)([\-0-9, ]+)/g,S.decouchers_fpro=In(e,s,"0").map(Nn);try{const t=In(e,/_Mensuel_[\-0-9, ]+_{1,2}([\-0-9, ]+)_/g);S.imposable=(r=t.map(Nn),En(r.map(dn).reduce(((e,t)=>e+t)))),t.length>1&&S.errors.push({type:"warning",message:"Plusieurs bulletins de salaire trouvés"})}catch(e){S.errors.push({type:"error",message:"Net imposable non trouvé"}),S.imposable="0"}var r;try{S.cumul=Nn(Tn(e,/_Annuel_[\-0-9, ]+_{1,2}([\-0-9, ]+)_/g))}catch(e){S.errors.push({type:"error",msg:"Cumul Net imposable non trouvé"}),S.cumul="0"}try{if(S.date=Tn(e,/PERIODE DU \d{2}\/(\d{2}\/\d{4})/g).split("/").reverse().join("-"),S.date.endsWith("00"))throw new Error(`Date invalide: ${S.date}`)}catch(e){throw new Error("Date non trouvée")}return S},Pn=(e,t,n,S)=>{let s,r={type:"nights",fileName:t,fileOrder:n,errors:[]};try{s=((e,t,n)=>{let S;if(null!==(S=t.exec(e)))return S[1];if(void 0===n)throw new Error(`No match found for ${t}`);return n})(e,/compte s'élève à:\s([\-0-9,. ]+)\sEuros/),s=parseFloat(s.replace(/\s+/g,"").replace(",","."))}catch(e){r.errors.push({type:"error",message:"Montant des nuitées AF non trouvé"})}return r.total=s,r.date=S,r},pn=(e,t,n,S,s,r,o)=>{const U=[];if(e.match(/BULLETIN DE PAIE_(AIR FRANCE|BASE|DP GN)/))try{const S=Ln(e,t,n);if(S.errors)for(const s of S.errors)U.push({type:s.type,msg:s.message,fileName:t,fileOrder:n,content:e});U.push(S)}catch(e){U.push({type:"error",msg:`${e.message}`,fileName:t,fileOrder:n,content:e})}else{const l=-1!==e.indexOf(`ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE ${S}`);-1!==e.indexOf("CARNET _DE _VOL _- _EP _5")?l?U.push(Pn(e,t,n,S)):U.push(((e,t,n,S,s,r,o)=>{const U={type:"ep5",fileName:t,fileOrder:n},l=(parseInt(S,10)-1).toString(),i=(parseInt(S,10)+1).toString();let a,c,A,C;if(c=String.raw`\s(${ct.join("|")})\s+?(20\d{2})`,null===(a=new RegExp(c).exec(e)))throw new Error(`EP5 parser: Date not found in ${t}`);if(A=(ct.indexOf(a[1])+1).toString(10).padStart(2,"0"),C=a[2],"01"===A&&C===i)U.date=`${S}-13`;else if("12"===A&&C===l)U.date=`${S}-00`;else if(U.date=`${C}-${A}`,C!==S)return U;c=/([0-9,]+)\s(?:.{5})\s{2}(?:\S{4})\s(?:.+?)\s(\S{3})\s+(\d+)\s+([0-9,]+)\s+(\S{3})\s+(\d+)\s+([0-9,]+)/g;const R=[];for(;null!==(a=c.exec(e));){const[,e,t,n,S,s,r,o]=a;R.push({stop:e,dep:t,start:`${C}-${A}-${n}T${At(S)}`,arr:s,end:`${C}-${A}-${r}T${At(o)}`})}const u=R.sort(((e,t)=>e.start.localeCompare(t.start)));let B=Bt(u,{base:r,tzConverter:o,iataMap:Nt});return B=Tt(S,B,s,o,t),U.rots=B,U})(e,t,n,S,s,r,o)):l&&U.push(Pn(e,t,n,S))}if(0===U.length)if(-1!==e.indexOf("ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE "))U.push({type:"nuitées",error:`année ≠ ${S}`,fileName:t,fileOrder:n,content:e});else if(-1===e.indexOf("CARNET _DE _VOL _- _EP _5")){const s=String.raw`_EP\s?_4.+?_(${ct.join("|")})\s+?(20\d{2})`;let r;if(null!==(r=new RegExp(s).exec(e))){const s=(ct.indexOf(r[1])+1).toString(10).padStart(2,"0"),o=r[2],l=(parseInt(S,10)-1).toString(),i=(parseInt(S,10)+1).toString();o===S||"01"===s&&o===i||"12"===s&&o===l?U.push({type:"ep4",warning:"absence d'EP5",fileName:t,fileOrder:n,content:e}):U.push({type:"ep4",date:`${o}-${s}`,fileName:t,fileOrder:n,content:e})}else U.push({type:"error",msg:"fichier non reconnu",fileName:t,fileOrder:n,content:e})}else U.push({type:"error",msg:"fichier non reconnu",fileName:t,fileOrder:n,content:e});return U},Gn=e=>({}),Dn=e=>({}),On=e=>({}),fn=e=>({});function Kn(e){let t,n,S,s,o,U,l,i,c,u,B,M;const N=e[7].top,d=a(N,e,e[6],fn),E=e[7].bottom,I=a(E,e,e[6],Dn);return{c(){t=K("div"),n=Y(),S=K("input"),o=Y(),U=K("label"),d&&d.c(),l=Y(),i=K("figure"),i.innerHTML='',c=Y(),I&&I.c(),Z(S,"id",gn),Z(S,"name",gn),Z(S,"type","file"),S.multiple=!0,Z(S,"accept",hn),S.disabled=s=e[0]||!e[2],Z(U,"for",gn),Z(t,"class","dropzone"),b(t,"focus",e[1])},m(s,r){D(s,t,r),P(t,n),P(t,S),P(t,o),P(t,U),d&&d.m(U,null),P(U,l),P(U,i),P(U,c),I&&I.m(U,null),u=!0,B||(M=[h(S,"change",e[4]),h(S,"click",e[3],{once:!0}),h(S,"drop",g(e[5])),h(S,"dragenter",e[8]),h(S,"dragleave",e[9])],B=!0)},p(e,[n]){(!u||5&n&&s!==(s=e[0]||!e[2]))&&(S.disabled=s),d&&d.p&&(!u||64&n)&&C(d,N,e,e[6],u?A(N,e[6],n,On):R(e[6]),fn),I&&I.p&&(!u||64&n)&&C(I,E,e,e[6],u?A(E,e[6],n,Gn):R(e[6]),Dn),2&n&&b(t,"focus",e[1])},i(e){u||(Ie(false),Ie(d,e),Ie(I,e),u=!0)},o(e){Te(false),Te(d,e),Te(I,e),u=!1},d(e){e&&O(t),d&&d.d(e),I&&I.d(e),B=!1,r(M)}}}let mn,Fn=0;const Yn=[{type:"script",url:"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js"}],Hn=async(e,t,n="")=>{const S=await e.getPage(t);return(await S.getTextContent()).items.map((e=>e.str)).join(n)},hn="application/pdf";let gn="file";function Zn(e,t,n){let S,s,r,o,U;i(e,Zt,(e=>n(10,S=e))),i(e,Vt,(e=>n(11,s=e))),i(e,Kt,(e=>n(12,r=e))),i(e,ft,(e=>n(13,o=e))),i(e,vt,(e=>n(2,U=e)));let{$$slots:l={},$$scope:a}=t,c=!1,A=new Xe,C=!1;function R(){Mn(Yn,(()=>!!window["pdfjs-dist/build/pdf"]),(()=>{const e=window["pdfjs-dist/build/pdf"];e.GlobalWorkerOptions.workerSrc="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js",mn&&!mn.destroyed||(mn=new e.PDFWorker({verbosity:0})),A.resolve(!0)}))}class u extends Error{}const M=(e,t)=>{const n=new FileReader;return new Promise(((S,s)=>{n.onload=e=>{if(!mn||mn.destroyed){const e=window["pdfjs-dist/build/pdf"];mn=new e.PDFWorker({verbosity:0})}(async(e,t="")=>{const n=window["pdfjs-dist/build/pdf"],S=[],s=await n.getDocument(e).promise,r=s.numPages;for(let e=1;e<=r;e+=1){const n=await Hn(s,e,t);S.push(n)}return S.join("\n")})({data:e.target.result,verbosity:0,worker:mn},"_").then((e=>{if(e)S(e);else{const e=new u(`%c${t}\n%cabsence de texte dans le PDF`);s(e)}}),(e=>s(e)))},n.onerror=e=>{s(new u(`%c${t}\n%cfichier illisible !`))},n.readAsArrayBuffer(e)}))};async function N(e,t){n(0,c=!0),await A.promise.then((()=>{const l=[],i=e=>e.name.split(/([\\/])/g).pop();let a={},A={};for(let t=0;t{pn(n,e,t+Fn,s,U,o,r).forEach((t=>{if("error"!==t.type)if("warning"!==t.type)if(t.type&&t.warning)console.log(`%c${e}\n%ctype [${t.type}] %c${t.warning}`,"font-family: monospace;","color: black;","color: darkorange;");else if(t.type&&t.error)console.log(`%c${e}\n%ctype [${t.type}] %c${t.error}`,"font-family: monospace;","color: black;","color: red;");else{const[n,r]=t.date.split("-");if(n!==s)return void console.log(`%c${e}\n%ctype [${t.type}] %cannée ${n} iso ${s}`,"font-family: monospace;","color: black;","color: red;");"pay"===t.type?Object.assign(a,{[r]:t}):"ep5"===t.type?Object.assign(A,{[r]:t}):"nights"===t.type&&B(Zt,S=t.total,S)}else console.log(`%c${e}\n%c${t.msg}`,"font-family: monospace;","color: darkorange;");else console.log(`%c${e}\n%c${t.msg}`,"font-family: monospace;","color: red;")}))})).catch((e=>e instanceof u?console.log(e.message,"font-family: monospace;","color: red;"):console.error(e))))}}Fn+=e.length;const C=()=>{n(0,c=!1),t&&(t.value=null),ht.update((e=>Object.assign(e,a))),a={},Ht.update((e=>Object.assign(e,A))),A={}};Promise.all(l).then((()=>{C()})).catch((e=>{C(),console.error(e)}))}))}te((async()=>R()));return e.$$set=e=>{"$$scope"in e&&n(6,a=e.$$scope)},[c,C,U,R,async function(e){N(e.target.files,e.target)},async function(e){n(1,C=!1),n(0,c=!0);const t=[];async function*S(e){const t=e.createReader();let n;do{n=await new Promise(((e,n)=>{t.readEntries(e,n)}));for(const e of n)e.isFile&&(yield e)}while(n.length>0)}async function s(e){return new Promise(((t,n)=>{e.file(t,n)}))}const r=[...e.dataTransfer.items].map((e=>e.webkitGetAsEntry()));for(const e of r)if(e.isDirectory)for await(const n of S(e)){const e=await s(n);t.push(e)}else{const n=await s(e);t.push(n)}{const e=navigator&&navigator.userAgent&&navigator.userAgent.indexOf("Firefox")>-1;N(t.filter((t=>t.type===hn||""===t.type&&e)))}},a,l,()=>n(1,C=!0),()=>n(1,C=!1)]}class Vn extends Fe{constructor(e){super(),me(this,e,Zn,Kn,U,{})}}function vn(e,t,n){const S=e.slice();return S[11]=t[n][0],S[12]=t[n][1],S}function $n(e){let t,n,S=e[3](e[11])+"";return{c(){t=K("li"),n=F(S),Z(t,"class","svelte-16swz26"),b(t,"loaded",void 0!==e[0][e[11]]),b(t,"optional",!0===e[12])},m(e,S){D(e,t,S),P(t,n)},p(e,s){4&s&&S!==(S=e[3](e[11])+"")&&$(n,S),5&s&&b(t,"loaded",void 0!==e[0][e[11]]),4&s&&b(t,"optional",!0===e[12])},d(e){e&&O(t)}}}function Jn(e){let t,n,S,s,r,o;const U=e[6].default,l=a(U,e,e[5],null);let i=e[2],c=[];for(let t=0;tn(7,s=e))),i(e,Vt,(e=>n(8,r=e)));let o,{$$slots:U={},$$scope:l}=t,{data:a=[]}=t,{name:c="Mois"}=t;const A=e=>{const t=r;if(!t)return c;if("ep5"===a.type){const n=(parseInt(t,10)-1).toString(),S=(parseInt(t,10)+1).toString();return`${c} de ${xe[11]} ${n} à ${e.length>13?xe[0]+" "+S:xe[11]+" "+t}`}return`${c} de ${xe[0]} ${t} à ${xe[11]} ${t}`};return e.$$set=e=>{"data"in e&&n(0,a=e.data),"name"in e&&n(4,c=e.name),"$$scope"in e&&n(5,l=e.$$scope)},e.$$.update=()=>{1&e.$$.dirty&&n(2,S=(e=>{if("ep5"===e.type){const t=s?s("2020-11-01T00:00Z").slice(-6):"+01:00";let S;S="+00:00"===t?Qe.map((e=>[e,!0])):"+"===t[0]?["00",...Qe].map((e=>[e,!0])):[...Qe,"13"].map((e=>[e,!0]));let r=[];if(e.isEmpty())r=[...S];else for(let t=0;t<14;t++){const n=t.toString().padStart(2,"0"),S=(t+1).toString().padStart(2,"0"),s=(t-1).toString().padStart(2,"0");e[S]&&e[S].rots&&e[S].rots.length>0&&">"===e[S].rots[0].isComplete||e[s]&&e[s].rots&&e[s].rots.length>0&&"<"===e[s].rots[e[s].rots.length-1].isComplete?r.push([n,!1]):(13!==t||13===t&&void 0!==e[n])&&r.push([n,!0])}return n(1,o=A(r)),r}return n(1,o=A()),Qe.map((e=>[e,!1]))})(a))},[a,o,S,e=>{switch(e){case"13":return"01";case"00":return"12";default:return e}},c,l,U]}class Xn extends Fe{constructor(e){super(),me(this,e,Wn,Jn,U,{data:0,name:4})}}function bn(e,t,n){const S=e.slice();return S[6]=t[n],S}function yn(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,m,H,h,g,V,v,J,W=e[1].year+"",X=parseInt(e[1].year,10)-1+"",b=e[1].year+"",y=e[1].zoneForfaitEuro.join(", ")+"",Q=e[2].reduce(zn,!1),w=e[2],x=[];for(let t=0;tPaysValiditéMontantTauxTauxTaux moyenMontant €Zone',i=Y(),a=K("tr"),c=K("td"),A=K("td"),A.textContent="(à compter du)",C=K("td"),R=K("td"),u=F("31/12/"),B=F(X),M=K("td"),N=F("31/12/"),d=F(b),E=K("td"),I=K("td"),T=K("td"),L=Y(),p=K("tbody");for(let e=0;e{j=null})),Ee()),(!J||1&n)&&Z(t,"id",e[0])},i(e){J||(Ie(j),J=!0)},o(e){Te(j),J=!1},d(e){e&&O(t),f(x,e),j&&j.d()}}}function Qn(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,f,m,H,h=e[6].code+"",g=(e[6].name.length<=21?e[6].name:e[6].name.substring(0,20)+"…")+"",V=!1===e[6].official?"²":"",v=ze(e[6].validity)+"",J=`${e[6].amount} ${e[6].currency}`,W=_e(e[6].startRate)+"",X=_e(e[6].endRate)+"",b=_e(e[6].averageRate)+"",y=ke(e[6].euros)+"",Q=e[6].zone+"";return{c(){t=K("tr"),n=K("td"),S=F(h),s=Y(),r=K("td"),o=F(g),U=F(V),l=Y(),i=K("td"),a=F(v),c=Y(),A=K("td"),C=F(J),R=Y(),u=K("td"),B=F(W),M=Y(),N=K("td"),d=F(X),E=Y(),I=K("td"),T=F(b),L=Y(),p=K("td"),G=F(y),f=Y(),m=K("td"),H=F(Q),Z(n,"class","svelte-1pkoo1p"),Z(r,"class","svelte-1pkoo1p"),Z(i,"class","svelte-1pkoo1p"),Z(A,"class","svelte-1pkoo1p"),Z(u,"class","svelte-1pkoo1p"),Z(N,"class","svelte-1pkoo1p"),Z(I,"class","svelte-1pkoo1p"),Z(p,"class","svelte-1pkoo1p"),Z(m,"class","svelte-1pkoo1p")},m(e,O){D(e,t,O),P(t,n),P(n,S),P(t,s),P(t,r),P(r,o),P(r,U),P(t,l),P(t,i),P(i,a),P(t,c),P(t,A),P(A,C),P(t,R),P(t,u),P(u,B),P(t,M),P(t,N),P(N,d),P(t,E),P(t,I),P(I,T),P(t,L),P(t,p),P(p,G),P(t,f),P(t,m),P(m,H)},p(e,t){4&t&&h!==(h=e[6].code+"")&&$(S,h),4&t&&g!==(g=(e[6].name.length<=21?e[6].name:e[6].name.substring(0,20)+"…")+"")&&$(o,g),4&t&&V!==(V=!1===e[6].official?"²":"")&&$(U,V),4&t&&v!==(v=ze(e[6].validity)+"")&&$(a,v),4&t&&J!==(J=`${e[6].amount} ${e[6].currency}`)&&$(C,J),4&t&&W!==(W=_e(e[6].startRate)+"")&&$(B,W),4&t&&X!==(X=_e(e[6].endRate)+"")&&$(d,X),4&t&&b!==(b=_e(e[6].averageRate)+"")&&$(T,b),4&t&&y!==(y=ke(e[6].euros)+"")&&$(G,y),4&t&&Q!==(Q=e[6].zone+"")&&$(H,Q)},d(e){e&&O(t)}}}function wn(e){let t,n,S,s;const r=[jn,xn],o=[];function U(e,t){return"2021"===e[1].year?0:1}return t=U(e),n=o[t]=r[t](e),{c(){n.c(),S=H()},m(e,n){o[t].m(e,n),D(e,S,n),s=!0},p(e,s){let l=t;t=U(e),t!==l&&(de(),Te(o[l],1,1,(()=>{o[l]=null})),Ee(),n=o[t],n||(n=o[t]=r[t](e),n.c()),Ie(n,1),n.m(S.parentNode,S))},i(e){s||(Ie(n),s=!0)},o(e){Te(n),s=!1},d(e){o[t].d(e),e&&O(S)}}}function xn(e){let t,n,S,s,r,o;return s=new We({props:{href:"https://github.com/fawazahmed0/currency-api",$$slots:{default:[kn]},$$scope:{ctx:e}}}),{c(){t=K("tr"),n=K("td"),S=F("2. Taux officiel non communiqué par la BNF, basé sur le taux de "),De(s.$$.fragment),r=F("."),Z(n,"colspan","9"),Z(n,"class","svelte-1pkoo1p")},m(e,U){D(e,t,U),P(t,n),P(n,S),Oe(s,n,null),P(n,r),o=!0},i(e){o||(Ie(s.$$.fragment,e),o=!0)},o(e){Te(s.$$.fragment,e),o=!1},d(e){e&&O(t),fe(s)}}}function jn(t){let n;return{c(){n=K("tr"),n.innerHTML='2. Taux officiel non communiqué par la BNF, basé sur le taux du marché moyen de Xe.com.'},m(e,t){D(e,n,t)},i:e,o:e,d(e){e&&O(n)}}}function kn(e){let t;return{c(){t=F("currency-api")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function _n(e){let t,n,S=e[2].length>1&&yn(e);return{c(){S&&S.c(),t=H()},m(e,s){S&&S.m(e,s),D(e,t,s),n=!0},p(e,[n]){e[2].length>1?S?(S.p(e,n),4&n&&Ie(S,1)):(S=yn(e),S.c(),Ie(S,1),S.m(t.parentNode,t)):S&&(de(),Te(S,1,1,(()=>{S=null})),Ee())},i(e){n||(Ie(S),n=!0)},o(e){Te(S),n=!1},d(e){S&&S.d(e),e&&O(t)}}}const zn=(e,t)=>e|!1===t.official;function qn(e,t,n){let S,s,r;i(e,$t,(e=>n(3,s=e))),i(e,vt,(e=>n(1,r=e)));let{tableId:o="Indemnities"}=t;function*U(e){const t=["EU"];for(const n of e)t.push(...n.countries);const n=Array.from(new Set(t)).sort(((e,t)=>e.localeCompare(t)));for(const e of n)for(const t of l(e))yield t}function*l(e){const t=r.countries[e],n=t&&t.f&&1===t.f?r.countries.EU.a:t&&t.a?t.a:[];for(const[S,s,o]of n){const[n,U,l,i]=r.exr[s];yield{name:"EU"===e?t.n+"¹":t.n,code:e,validity:S,amount:o,currency:s,startRate:n,endRate:U,averageRate:l,official:i,euros:(parseFloat(o)/l).toFixed(2),zone:"EU"===e?"":1===t.z?"Moyen":"Long"}}}return e.$$set=e=>{"tableId"in e&&n(0,o=e.tableId)},e.$$.update=()=>{10&e.$$.dirty&&n(2,S=r?[...U(s)]:[])},[o,r,S,s]}class eS extends Fe{constructor(e){super(),me(this,e,qn,_n,U,{tableId:0})}}function tS(t){let n,S,s,r;return{c(){n=K("a"),S=F(t[0]),Z(n,"href","."),Z(n,"download",t[1]),Z(n,"class","svelte-j6w2rc"),b(n,"disabled",t[2])},m(e,o){D(e,n,o),P(n,S),s||(r=h(n,"click",t[3]),s=!0)},p(e,[t]){1&t&&$(S,e[0]),2&t&&Z(n,"download",e[1]),4&t&&b(n,"disabled",e[2])},i:e,o:e,d(e){e&&O(n),s=!1,r()}}}const nS=[{type:"script",url:"https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.2.0/jspdf.umd.min.js",async:!1,defer:!1}],SS=[{type:"script",url:"https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.13/jspdf.plugin.autotable.min.js",async:!1,defer:!1}];function sS(e,t,n){let S=new Xe,s=!1,{label:r="Télécharger en PDF"}=t,{filename:o="table.pdf"}=t,{tableIds:U=["#my-table"]}=t;return te((async()=>{Mn(nS,(()=>!!window.jspdf),(()=>{Mn(SS,(()=>!!window.jspdfext),(()=>{window.jspdfext="autotable";const e="./fonts/HelveticaUTF8.ttf".split("/").pop();window.jspdffont?(n(2,s=!1),S.resolve(!0)):fetch("./fonts/HelveticaUTF8.ttf").then((async t=>{if(t.ok)try{const r=await t.blob(),o=new FileReader;o.onload=function(t){window.jspdffont=t.target.result,window.jspdf.jsPDF.API.events.push(["addFonts",function(){this.addFileToVFS(e,window.jspdffont),this.addFont(e,e.split(".").shift(),"normal")}]),n(2,s=!1),S.resolve(!0)},o.onerror=()=>{n(2,s=!0),S.reject(`failed to read the downloaded font ${e}`)},o.readAsBinaryString(r)}catch(e){n(2,s=!0),S.reject(e)}else n(2,s=!0),S.reject(`error loading ${e}: ${t.statusText}`)}),(e=>{n(2,s=!0),S.reject(e)}))}))}))})),e.$$set=e=>{"label"in e&&n(0,r=e.label),"filename"in e&&n(1,o=e.filename),"tableIds"in e&&n(4,U=e.tableIds)},[r,o,s,async e=>{if(s)return e.preventDefault(),e.stopPropagation(),!1;n(2,s=!0);try{if(await S.promise,U.includes("MissionTable")){const e=document.getElementById("MissionTable");e.querySelectorAll("summary").forEach((e=>{e.parentNode.parentNode.innerText=e.innerText}))}for(const e of U){document.getElementById(e).classList.add("print")}const t=new jspdf.jsPDF({orientation:"landscape"});for(const[e,n]of U.entries())t.autoTable({html:"#"+n,styles:{font:"HelveticaUTF8"},useCss:!0,showHead:"firstPage",showFoot:"lastPage",pageBreak:0===e?"auto":"avoid",includeHiddenHtml:!0});const n=e.target.download,s=new Blob([t.output("arraybuffer",{filename:n})],{type:"application/octet-stream"});if(e.target.href.startsWith("blob:")&&URL.revokeObjectURL(e.target.href),e.target.href=URL.createObjectURL(s),U.includes("MissionTable")){const e=document.getElementById("MissionTable");e.querySelectorAll("td[title]").forEach((e=>{e.innerHTML=`
    ${e.innerText}${e.title}
    `}))}for(const e of U){document.getElementById(e).classList.remove("print")}}catch(e){console.error(e)}n(2,s=!1)},U]}class rS extends Fe{constructor(e){super(),me(this,e,sS,tS,U,{label:0,filename:1,tableIds:4})}}function oS(e,t,n){const S=e.slice();return S[7]=t[n],S}function US(t){let n;return{c(){n=K("div"),n.innerHTML='exemple de résultat sur iPad',Z(n,"class","illustration")},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function lS(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L=e[1].reduce(e[6],!1);t=new rS({props:{tableIds:[e[0],e[5]],filename:`fraisdemission${e[2]}.pdf`}});let p=e[2]!==e[4].year&&iS(e),G=e[1],m=[];for(let t=0;tDateTypeDescriptionFormuleMontant',B=Y(),M=K("tbody");for(let e=0;e1. formule tronquée pour respecter l'année fiscale'},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function AS(e){let t,n,S,s;const r=[lS,US],o=[];function U(e,t){return e[1].length>0?0:1}return t=U(e),n=o[t]=r[t](e),{c(){n.c(),S=H()},m(e,n){o[t].m(e,n),D(e,S,n),s=!0},p(e,[s]){let l=t;t=U(e),t===l?o[t].p(e,s):(de(),Te(o[l],1,1,(()=>{o[l]=null})),Ee(),n=o[t],n?n.p(e,s):(n=o[t]=r[t](e),n.c()),Ie(n,1),n.m(S.parentNode,S))},i(e){s||(Ie(n),s=!0)},o(e){Te(n),s=!1},d(e){o[t].d(e),e&&O(S)}}}function CS(e,t,n){let S,s,r,o;i(e,$t,(e=>n(1,S=e))),i(e,Vt,(e=>n(2,s=e))),i(e,Jt,(e=>n(3,r=e))),i(e,vt,(e=>n(4,o=e)));let{tableId:U="MissionTable"}=t;const l=U+"Indemnities";return e.$$set=e=>{"tableId"in e&&n(0,U=e.tableId)},[U,S,s,r,o,l,(e,t)=>e|t.formula.includes(" ¹")]}class RS extends Fe{constructor(e){super(),me(this,e,CS,AS,U,{tableId:0})}}function uS(e,t,n){const S=e.slice();return S[4]=t[n],S}function BS(e){let t,n,S,s,r=e[4].label+"";return{c(){t=K("option"),n=F(r),t.__value=S=e[4].label,t.value=t.__value,t.selected=s=e[0].join("")===e[4].value.join("")},m(e,S){D(e,t,S),P(t,n)},p(e,n){1&n&&s!==(s=e[0].join("")===e[4].value.join(""))&&(t.selected=s)},d(e){e&&O(t)}}}function MS(e){let t;return{c(){t=K("div"),t.innerHTML="Déposez vos EP5 dans la zone ou Cliquez",Z(t,"slot","top")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function NS(e){let t,n,S;return n=new Xn({props:{data:e[1],name:"EP5"}}),{c(){t=K("div"),De(n.$$.fragment),Z(t,"slot","bottom")},m(e,s){D(e,t,s),Oe(n,t,null),S=!0},p(e,t){const S={};2&t&&(S.data=e[1]),n.$set(S)},i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){e&&O(t),fe(n)}}}function dS(e){let t,n;return t=new Bn({}),{c(){De(t.$$.fragment)},m(e,S){Oe(t,e,S),n=!0},i(e){n||(Ie(t.$$.fragment,e),n=!0)},o(e){Te(t.$$.fragment,e),n=!1},d(e){fe(t,e)}}}function ES(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u=!e[1].isEmpty(),B=Object.values(Gt),M=[];for(let t=0;t{N=null})),Ee())},i(e){A||(Ie(l.$$.fragment,e),Ie(a.$$.fragment,e),Ie(N),A=!0)},o(e){Te(l.$$.fragment,e),Te(a.$$.fragment,e),Te(N),A=!1},d(e){e&&O(t),f(M,e),fe(l),fe(a),N&&N.d(),C=!1,R()}}}function IS(e,t,n){let S,s,r;i(e,Kt,(e=>n(3,S=e))),i(e,ft,(e=>n(0,s=e))),i(e,Ht,(e=>n(1,r=e)));return[s,r,e=>{const t=Gt.filter((t=>t.label===e.target.value)).pop();B(ft,s=t.value,s),B(Kt,S=t.tzConverter,S)}]}class TS extends Fe{constructor(e){super(),me(this,e,IS,ES,U,{})}}function LS(e,t,n){const S=e.slice();return S[24]=t[n],S[26]=n,S}function PS(t){let n;return{c(){n=K("div"),n.innerHTML='exemple de résultat sur iPad',Z(n,"class","illustration")},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function pS(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,m,H,h,g,V,v=ke(e[5])+"",J=ke(e[2])+"",W=ke(e[4])+"";function X(e,t){return e[9]>0?DS:GS}t=new rS({props:{tableIds:[e[1]],filename:`revenus${e[6]}.pdf`}});let b=X(e),y=b(e),Q=Qe,w=[];for(let t=0;tMoisMontant imposableCumul imposableFrais d’emploi ¹Découchers F PRO ²',A=Y(),C=K("tbody");for(let e=0;e1. Les Frais d’emploi comprennent les lignes IND.REPAS, INDEMNITE REPAS, IR.FIN ANNEE DOUBL, IND. TRANSPORT, IND. TRANSPORT EXO, FRAIS REELS TRANSP, R. FRAIS DE TRANSPORT, IR EXONEREES, IR NON EXONEREES du bulletin de paye. \n 2. Cette colonne reprend la ligne I.DECOUCHERS F.PRO, elle est utilisée pour l’estimation. Pour les impôts, c’est uniquement l’attestation des nuitées AF qui doit être prise en compte.',Z(U,"colspan","5"),Z(U,"class","svelte-1njpx9m"),Z(B,"class","svelte-1njpx9m"),Z(N,"class","svelte-1njpx9m"),Z(I,"class","svelte-1njpx9m"),Z(L,"class","svelte-1njpx9m"),Z(m,"class","svelte-1njpx9m"),Z(C,"class","svelte-1njpx9m"),Z(s,"class","data"),Z(s,"id",e[1])},m(e,O){Oe(t,e,O),D(e,n,O),y.m(e,O),D(e,S,O),D(e,s,O),P(s,r),P(r,o),P(o,U),P(U,l),P(U,i),P(r,a),P(r,c),P(s,A),P(s,C);for(let e=0;e=e[13]?mS:KS}let Ae=ce(e),Ce=Ae(e);return{c(){t=K("table"),n=K("col"),S=Y(),s=K("col"),r=Y(),o=K("col"),U=Y(),l=K("thead"),i=K("tr"),a=K("th"),c=F("Comparatif "),A=F(e[6]),C=Y(),ie&&ie.c(),R=Y(),u=K("tr"),u.innerHTML='Nuitées AF \n Frais de Mission - Nuitées - Frais d’emploi \n Abattement de 10% plafonné',B=Y(),ae&&ae.c(),M=Y(),N=K("tbody"),d=K("tr"),E=K("td"),I=K("input"),p=Y(),G=K("td"),f=F(e[9]),m=F(" - "),H=F(re),g=F(" - "),V=F(oe),W=F(" = "),X=F(Ue),b=F(" €"),y=Y(),Q=K("td"),w=F(le),x=F(" €"),j=Y(),k=K("tfoot"),_=K("tr"),Ce.c(),z=Y(),q=K("tr"),ee=K("td"),te=F(e[11]),Z(n,"class","col1 svelte-1njpx9m"),Z(s,"class","col2 svelte-1njpx9m"),Z(o,"class","col3"),Z(a,"colspan","3"),Z(a,"class","svelte-1njpx9m"),Z(I,"name","nuitees"),Z(I,"type","number"),I.disabled=T=!!e[8],Z(I,"min","0"),Z(I,"step","100"),Z(I,"placeholder",L=e[8]?e[8]:e[3]),Z(I,"class","svelte-1njpx9m"),Z(E,"class","svelte-1njpx9m"),Z(G,"class","svelte-1njpx9m"),Z(Q,"class","svelte-1njpx9m"),Z(d,"class","svelte-1njpx9m"),Z(N,"class","svelte-1njpx9m"),Z(ee,"colspan","3"),Z(ee,"class","svelte-1njpx9m"),Z(t,"class","data summary svelte-1njpx9m"),Z(t,"id",ne=e[1]+"Summary")},m(T,L){D(T,t,L),P(t,n),P(t,S),P(t,s),P(t,r),P(t,o),P(t,U),P(t,l),P(l,i),P(i,a),P(a,c),P(a,A),P(a,C),ie&&ie.m(a,null),P(l,R),P(l,u),P(l,B),ae&&ae.m(l,null),P(t,M),P(t,N),P(N,d),P(d,E),P(E,I),J(I,e[7]),P(d,p),P(d,G),P(G,f),P(G,m),P(G,H),P(G,g),P(G,V),P(G,W),P(G,X),P(G,b),P(d,y),P(d,Q),P(Q,w),P(Q,x),P(t,j),P(t,k),P(k,_),Ce.m(_,null),P(k,z),P(k,q),P(q,ee),P(ee,te),Se||(se=h(I,"input",e[18]),Se=!0)},p(e,n){64&n&&$(A,e[6]),e[7]&&e[7]!=e[3]?ie&&(de(),Te(ie,1,1,(()=>{ie=null})),Ee()):ie?136&n&&Ie(ie,1):(ie=OS(),ie.c(),Ie(ie,1),ie.m(a,null)),e[6]!==e[10].year?ae?ae.p(e,n):(ae=fS(e),ae.c(),ae.m(l,null)):ae&&(ae.d(1),ae=null),256&n&&T!==(T=!!e[8])&&(I.disabled=T),264&n&&L!==(L=e[8]?e[8]:e[3])&&Z(I,"placeholder",L),128&n&&v(I.value)!==e[7]&&J(I,e[7]),512&n&&$(f,e[9]),392&n&&re!==(re=parseFloat(e[8]||e[7]||e[3]).toFixed(0)+"")&&$(H,re),4&n&&oe!==(oe=parseFloat(e[2]).toFixed(0)+"")&&$(V,oe),4096&n&&Ue!==(Ue=e[12].toFixed(0)+"")&&$(X,Ue),8192&n&&le!==(le=e[13].toFixed(0)+"")&&$(w,le),Ae===(Ae=ce(e))&&Ce?Ce.p(e,n):(Ce.d(1),Ce=Ae(e),Ce&&(Ce.c(),Ce.m(_,null))),2048&n&&$(te,e[11]),2&n&&ne!==(ne=e[1]+"Summary")&&Z(t,"id",ne)},d(e){e&&O(t),ie&&ie.d(),ae&&ae.d(),Ce.d(),Se=!1,se()}}}function OS(e){let t,n,S;return{c(){t=K("div"),t.innerHTML='basé sur une estimation des nuitées à ±20%',Z(t,"class","estimate svelte-1njpx9m")},m(e,n){D(e,t,n),S=!0},i(e){S||(e&&ie((()=>{n||(n=pe(t,St,{},!0)),n.run(1)})),S=!0)},o(e){e&&(n||(n=pe(t,St,{},!1)),n.run(0)),S=!1},d(e){e&&O(t),e&&n&&n.end()}}}function fS(e){let t,n,S,s,r=e[10].year+"";return{c(){t=K("tr"),n=K("th"),S=F("Attention les montants sont basés sur les données fiscales de "),s=F(r),Z(n,"colspan","3"),Z(n,"class","svelte-1njpx9m"),Z(t,"class","warning")},m(e,r){D(e,t,r),P(t,n),P(n,S),P(n,s)},p(e,t){1024&t&&r!==(r=e[10].year+"")&&$(s,r)},d(e){e&&O(t)}}}function KS(e){let t,n,S,s,r,o,U=(e[13]-e[12]).toFixed(0)+"";return{c(){t=K("td"),n=F("Il faudra que vos autres frais atteignent "),S=K("b"),s=F(U),r=F(" €"),o=F(" pour qu'une déclaration aux frais réels soit plus avantageuse."),Z(t,"colspan","3"),Z(t,"class","svelte-1njpx9m")},m(e,U){D(e,t,U),P(t,n),P(t,S),P(S,s),P(S,r),P(t,o)},p(e,t){12288&t&&U!==(U=(e[13]-e[12]).toFixed(0)+"")&&$(s,U)},d(e){e&&O(t)}}}function mS(e){let t,n,S,s,r,o,U=(e[12]-e[13]).toFixed(0)+"";return{c(){t=K("td"),n=F("Sans tenir compte de vos autres frais, vous serez déjà gagnant de "),S=K("b"),s=F(U),r=F(" €"),o=F(" en passant aux frais réels."),Z(t,"colspan","3"),Z(t,"class","svelte-1njpx9m")},m(e,U){D(e,t,U),P(t,n),P(t,S),P(S,s),P(S,r),P(t,o)},p(e,t){12288&t&&U!==(U=(e[12]-e[13]).toFixed(0)+"")&&$(s,U)},d(e){e&&O(t)}}}function FS(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B=xe[e[26]]+"",M=(e[0][e[24]]?ke(e[0][e[24]].imposable):"")+"",N=(e[0][e[24]]?ke(e[0][e[24]].cumul):"")+"",d=(e[0][e[24]]?ke(En(e[14](e[24]))):"")+"",E=(e[0][e[24]]?ke(e[0][e[24]].decouchers_fpro):"")+"";return{c(){t=K("tr"),n=K("td"),S=F(B),s=Y(),r=K("td"),o=F(M),U=Y(),l=K("td"),i=F(N),a=Y(),c=K("td"),A=F(d),C=Y(),R=K("td"),u=F(E),Z(n,"class","svelte-1njpx9m"),Z(r,"class","svelte-1njpx9m"),Z(l,"class","svelte-1njpx9m"),Z(c,"class","svelte-1njpx9m"),Z(R,"class","svelte-1njpx9m"),Z(t,"class","svelte-1njpx9m")},m(e,B){D(e,t,B),P(t,n),P(n,S),P(t,s),P(t,r),P(r,o),P(t,U),P(t,l),P(l,i),P(t,a),P(t,c),P(c,A),P(t,C),P(t,R),P(R,u)},p(e,t){1&t&&M!==(M=(e[0][e[24]]?ke(e[0][e[24]].imposable):"")+"")&&$(o,M),1&t&&N!==(N=(e[0][e[24]]?ke(e[0][e[24]].cumul):"")+"")&&$(i,N),1&t&&d!==(d=(e[0][e[24]]?ke(En(e[14](e[24]))):"")+"")&&$(A,d),1&t&&E!==(E=(e[0][e[24]]?ke(e[0][e[24]].decouchers_fpro):"")+"")&&$(u,E)},d(e){e&&O(t)}}}function YS(e){let t,n,S,s,r;const o=[pS,PS],U=[];function l(e,n){return 1&n&&(t=!e[0].isEmpty()),t?0:1}return n=l(e,-1),S=U[n]=o[n](e),{c(){S.c(),s=H()},m(e,t){U[n].m(e,t),D(e,s,t),r=!0},p(e,[t]){let r=n;n=l(e,t),n===r?U[n].p(e,t):(de(),Te(U[r],1,1,(()=>{U[r]=null})),Ee(),S=U[n],S?S.p(e,t):(S=U[n]=o[n](e),S.c()),Ie(S,1),S.m(s.parentNode,s))},i(e){r||(Ie(S),r=!0)},o(e){Te(S),r=!1},d(e){U[n].d(e),e&&O(s)}}}function HS(e,t,n){let S,s,r,o,U,l,a,c,A,C,R,u,M,N,d;i(e,Vt,(e=>n(6,C=e))),i(e,$t,(e=>n(17,R=e))),i(e,gt,(e=>n(7,u=e))),i(e,Zt,(e=>n(8,M=e))),i(e,Jt,(e=>n(9,N=e))),i(e,vt,(e=>n(10,d=e)));let{data:E}=t,{tableId:I="PayTable"}=t;const T=e=>E[e].repas.concat(E[e].transport).map(dn).reduce(((e,t)=>e+t));return e.$$set=e=>{"data"in e&&n(0,E=e.data),"tableId"in e&&n(1,I=e.tableId)},e.$$.update=()=>{var t,i;1&e.$$.dirty&&n(2,S=(e=>{let t=0;for(const n of Qe)t+=e[n]?T(n):0;return En(t)})(E)),1&e.$$.dirty&&n(5,s=(e=>{let t=0;for(const n of Qe)t+=e[n]?dn(e[n].imposable):0;return En(t)})(E)),1&e.$$.dirty&&n(16,r=E[12]&&"0"!==E[12].cumul?En(dn(E[12].cumul)):void 0),66592&e.$$.dirty&&n(13,o=d&&d.maxForfait10?Math.min(.1*(r||s),d.maxForfait10):0),1&e.$$.dirty&&n(4,U=(e=>{let t=0;for(const n of Qe)t+=e[n]?e[n].decouchers_fpro.map(dn).reduce(((e,t)=>e+t)):0;return En(t)})(E)),64&e.$$.dirty&&n(15,l=parseInt(C,10)>=2021?2.7:3.31),32784&e.$$.dirty&&n(3,a=(100*Math.ceil(parseFloat(U)*l/100)).toFixed(0)),264&e.$$.dirty&&(i=a,void 0!==(t=M)?B(gt,u=t,u):i&&B(gt,u=i,u)),908&e.$$.dirty&&n(12,c=parseFloat(N)-parseFloat(M||u||a)-parseFloat(S)),131136&e.$$.dirty&&n(11,A=((e,t)=>{if(!e||!t)return"";const n={count:e.length,OUT:new Map,IN:new Map};for(const S of e)Rt(S.start).substring(0,4)===t&&n.OUT.set(S.dep,(n.OUT.get(S.dep)||0)+1),Rt(S.end).substring(0,4)===t&&n.IN.set(S.arr,(n.IN.get(S.arr)||0)+1);const S=Array.from(n.OUT).map((([e,t])=>`${t} trajet${t>1?"s":""} vers ${e}`)),s=Array.from(n.IN).map((([e,t])=>`${t} trajet${t>1?"s":""} depuis ${e}`));return 0===n.count?"":1===n.count?`À titre d'information, pour les frais de transport, la rotation représente ${S.join(", ")} et ${s.join(", ")}.`:`À titre d'information, pour les frais de transport, les ${n.count} rotations représentent ${S.join(", ")} et ${s.join(", ")}.`})(R,C))},[E,I,S,a,U,s,C,u,M,N,d,A,c,o,T,l,r,R,function(){u=v(this.value),gt.set(u)}]}class hS extends Fe{constructor(e){super(),me(this,e,HS,YS,U,{data:0,tableId:1})}}function gS(e){let t;return{c(){t=K("div"),t.innerHTML="Déposez vos bulletins dans la zone ou Cliquez",Z(t,"slot","top")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function ZS(e){let t;return{c(){t=F(", attestation de nuitées si disponible")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function VS(e){let t,n,S;return n=new Xn({props:{data:e[0],name:"Bulletins de salaire",$$slots:{default:[ZS]},$$scope:{ctx:e}}}),{c(){t=K("div"),De(n.$$.fragment),Z(t,"slot","bottom")},m(e,s){D(e,t,s),Oe(n,t,null),S=!0},p(e,t){const S={};1&t&&(S.data=e[0]),2&t&&(S.$$scope={dirty:t,ctx:e}),n.$set(S)},i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){e&&O(t),fe(n)}}}function vS(e){let t,n;return t=new Bn({}),{c(){De(t.$$.fragment)},m(e,S){Oe(t,e,S),n=!0},i(e){n||(Ie(t.$$.fragment,e),n=!0)},o(e){Te(t.$$.fragment,e),n=!1},d(e){fe(t,e)}}}function $S(e){let t,n,S,s,r,o,U,l,i,a=!e[0].isEmpty();r=new Vn({props:{$$slots:{bottom:[VS],top:[gS]},$$scope:{ctx:e}}}),U=new hS({props:{data:e[0]}});let c=a&&vS();return{c(){t=K("main"),n=K("div"),S=K("div"),s=Y(),De(r.$$.fragment),o=Y(),De(U.$$.fragment),l=Y(),c&&c.c(),Z(S,"class","header svelte-l9ncfd"),Z(n,"class","wrapper svelte-l9ncfd")},m(e,a){D(e,t,a),P(t,n),P(n,S),P(n,s),Oe(r,n,null),P(n,o),Oe(U,n,null),P(t,l),c&&c.m(t,null),i=!0},p(e,[n]){const S={};3&n&&(S.$$scope={dirty:n,ctx:e}),r.$set(S);const s={};1&n&&(s.data=e[0]),U.$set(s),1&n&&(a=!e[0].isEmpty()),a?c?1&n&&Ie(c,1):(c=vS(),c.c(),Ie(c,1),c.m(t,null)):c&&(de(),Te(c,1,1,(()=>{c=null})),Ee())},i(e){i||(Ie(r.$$.fragment,e),Ie(U.$$.fragment,e),Ie(c),i=!0)},o(e){Te(r.$$.fragment,e),Te(U.$$.fragment,e),Te(c),i=!1},d(e){e&&O(t),fe(r),fe(U),c&&c.d()}}}function JS(e,t,n){let S;return i(e,ht,(e=>n(0,S=e))),[S]}class WS extends Fe{constructor(e){super(),me(this,e,JS,$S,U,{})}}function XS(e){let t;return{c(){t=F("GitHub")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function bS(e){let t;return{c(){t=F("Arrêté de 2006 fixant les taux des indemnités de mission")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function yS(e){let t;return{c(){t=F("La lettre de la DLF sur FraisPN (webarchive)")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function QS(e){let t;return{c(){t=F("L’annexe à lettre de la DLF sur FraisPN (webarchive)")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function wS(e){let t;return{c(){t=F("airportsdata")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function xS(e){let t;return{c(){t=F("GitHub")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function jS(e){let t;return{c(){t=F("licence GPLv3.0")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function kS(e){let t;return{c(){t=F("OFP2MAP")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function _S(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,f,m,H,h,g,Z,V,v,$,J,W,X,b,y,Q,w,x,j,k,_,z,q,ee,te,ne,Se,se,re,oe,Ue,le,ie,ae,ce,Ae,Ce,Re,ue,Be,Me,Ne,de,Ee,Le,Pe,pe,Ge,Ke,me,Fe,Ye,He,he,ge,Ze,Ve,ve,$e,Je,Xe,ye,Qe,we,xe,je,ke,_e,ze,qe,et,tt,nt,St,st,rt,ot,Ut,lt,it,at,ct,At,Ct,Rt,ut,Bt,Mt,Nt,dt,Et,It,Tt,Lt,Pt,pt,Gt,Dt,Ot,ft,Kt,mt,Ft,Yt;return xe=new We({props:{href:"https://github.com/flyingeek/flytax#donn%C3%A9es-fiscales",$$slots:{default:[XS]},$$scope:{ctx:e}}}),qe=new We({props:{href:"https://www.legifrance.gouv.fr/loda/id/JORFTEXT000000242360",$$slots:{default:[bS]},$$scope:{ctx:e}}}),nt=new We({props:{href:"https://web.archive.org/web/20190408001531/http://www.fraispn.com/dlf.html",rel:"noopener",$$slots:{default:[yS]},$$scope:{ctx:e}}}),rt=new We({props:{href:"https://web.archive.org/web/20190407212830/http://www.fraispn.com/dlfannexe.html",rel:"noopener",$$slots:{default:[QS]},$$scope:{ctx:e}}}),ct=new We({props:{href:"https://github.com/mborsetti/airportsdata",$$slots:{default:[wS]},$$scope:{ctx:e}}}),Et=new We({props:{href:"https://github.com/flyingeek/flytax",$$slots:{default:[xS]},$$scope:{ctx:e}}}),Tt=new We({props:{href:"https://raw.githubusercontent.com/flyingeek/flytax/main/LICENSE.md",$$slots:{default:[jS]},$$scope:{ctx:e}}}),mt=new We({props:{href:e[0],rel:"noopener",$$slots:{default:[kS]},$$scope:{ctx:e}}}),{c(){t=K("h2"),t.textContent="Préambule",n=Y(),S=K("p"),S.innerHTML="Cette application a été conçue pour le PilotPad. Elle nécessite des navigateurs récents pour fonctionner : Safari iOS13+/ Mac(Mojave/Catalina/Big Sur/Monterey), Firefox 86+, Chrome 87+ et Microsoft Edge 87+ sont compatibles.\nLes PDF utilisés ne transitent sur aucun serveur, tout est calculé localement dans votre navigateur. L’app ne collecte aucune donnée. Tout est 100 % SECURE.",s=Y(),r=K("h2"),r.textContent="Objectifs",o=Y(),U=K("p"),U.innerHTML="L'application ne gère pas l'article 81 A II qui se substitue pour les pilotes à cette méthode de calcul",l=Y(),i=K("p"),i.textContent="Calculer rapidement, facilement, et sans partage de données :",a=Y(),c=K("ul"),c.innerHTML="
  • le décompte des frais de mission, conformément à la méthodologie et aux conventions de calcul du SNPL
  • \n
  • les frais d’emploi des PN qui doivent s’ajouter aux revenus
  • \n
  • une estimation du montant des nuitées payées par AF
  • \n
  • la différence entre (Frais de Mission - Nuitées - Frais d’emploi) et un abattement de 10 % plafonné
  • ",A=Y(),C=K("p"),R=K("strong"),u=F(' fonctionne aussi pour les pilotes basés en province. (lire au préalable "Choix de la base").'),B=Y(),M=K("h2"),M.textContent="Utilisation sur l'iPad",N=Y(),d=K("p"),E=F("Sur MyPeopleDoc, commencez par sélectionner les bulletins de salaire de l'année N, et les ep4-ep5 de décembre N-1 à février N+1. Puis, en cliquant sur téléchargement, vous recevrez un lien par email. Dans votre dossier de téléchargement sur l'iPad, cliquez sur l'archive téléchargée, elle va se décompresser. Ensuite, après avoir vérifié que l'année N est bien sélectionnée en haut à droite de "),I=K("strong"),T=F(", deux solutions:"),L=Y(),p=K("ul"),p.innerHTML="
  • Soit, vous cliquez dans la zone de la page Frais de Mission ou de la page Salaire, puis vous choisissez le dossier des fichiers décompressés, puis vous cliquez sur "Sélectionner", puis "Tout select." et enfin, "Ouvrir"
  • \n
  • Soit, vous utilisez le mode Slide Over, ou le mode SplitView, avec l'application Fichiers, et vous faites glisser le dossier des fichiers décompressés dans la zone de la page Frais de Mission ou de la page Salaire
  • ",G=Y(),f=K("p"),f.innerHTML='Si vous le souhaitez, l’application peut être installée sur l’écran d’accueil du PilotPad via le menu « partage » de Safari. (comme OFP2MAP).',m=Y(),H=K("h2"),H.textContent="Utilisation de manière plus générale",h=Y(),g=K("ul"),Z=K("li"),Z.textContent="Les PDF mensuels sont symbolisés par des carrés numérotés. Un PDF manquant est rouge, un PDF optionnel est bleu, un PDF chargé est vert.",V=Y(),v=K("li"),v.textContent="Vous pouvez glisser-déposer un dossier ou des fichiers",$=Y(),J=K("li"),J.textContent="Vous pouvez déposer les PDF indifféremment sur la page Salaire ou la page Frais de mission",W=Y(),X=K("li"),X.textContent="Le symbole ▶ signale des informations additionnelles accessibles soit au survol de la souris, soit en cliquant sur la ligne",b=Y(),y=K("li"),y.textContent="Changer d’année fiscale efface les résultats",Q=Y(),w=K("li"),x=K("strong"),x.textContent="flytax.fr",j=F(" (plus simple à mémoriser et à partager) redirige vers "),k=K("strong"),_=F(" mais est bloqué sur le réseau AF"),z=Y(),q=K("li"),ee=K("strong"),te=F(" peut fonctionner en mode déconnecté"),ne=Y(),Se=K("p"),Se.innerHTML='En cas d’anomalie, le pictogramme apparaîtra en haut à droite, le cliquer affichera les détails. Si un message d’erreur apparaissait dans la table des résultats, merci de me contacter.',se=Y(),re=K("ul"),re.innerHTML="
  • L'alerte "absence d'EP5" est normale sur les fichiers ep4-ep5 de régularisation ou les mois sans vols (lire la rubrique "Activités sol/simulateur & QT"). Un mois sans vol reste bleu
  • \n
  • L'erreur "fichier non reconnu" est normale pour un PDF ne contenant ni un bulletin de salaire, ni un EP5, ni une attestation de nuitées
  • \n
  • En cas de message "Erreur: nuitées > nb de jours", si vous êtes basé en province, assurez-vous d'avoir lu la rubrique "Choix de la base"
  • ",oe=Y(),Ue=K("p"),Ue.innerHTML="Avertissement : L’application est une aide au calcul des frais professionels sous licence GPLv3.0, les PN restents seuls responsables face à l’administration pour justifier l’exactitude de leur déclaration.",le=Y(),ie=K("h2"),ie.textContent="Attestation des nuitées AF",ae=Y(),ce=K("p"),Ae=F("Air France fournit cette attestation dans l’EP4 de février de l'année n + 1, mais un correctif est susceptible d’être diffusé jusqu’en avril dans un fichier annexe. En attendant ce document, "),Ce=K("strong"),Re=F(" estime le montant ce qui permet de donner un ordre de grandeur. L’estimation utilise la colonne Découchers F PRO et elle est modifiable. Une fois votre attestation reçue, vous pouvez soit indiquer son montant directement, soit glisser l’attestation dans la zone de dépôt. Merci pour vos retours concernant la fiabilité de l’estimation."),ue=Y(),Be=K("h2"),Be.textContent="Choix de la base",Me=Y(),Ne=K("p"),Ne.textContent="La base peut être modifiée chaque mois : on choisit une base, on dépose les EP5 de cette base ;\non change de base et l’on peut déposer les EP5 pour cette nouvelle base. En cas d’erreur, il est possible de changer de base et de recharger les EP5.",de=Y(),Ee=K("p"),Ee.textContent="Le choix de la base se fait au-dessus de la zone de dépôt sur la page Frais de mission.",Le=Y(),Pe=K("h2"),Pe.textContent="Activités sol/simulateur & QT",pe=Y(),Ge=K("p"),Ge.textContent="Les activités sol/simulateur à la base ne peuvent pas faire l'objet de déduction forfaitaire, elles ne sont donc pas décomptées dans les frais de mission.",Ke=Y(),me=K("p"),Fe=F("Les activités sol/simulateur hors de la base d'affectation pourraient être décomptées forfaitairement, néanmoins elles ne rentrent pas explicitement dans le cadre d'application de l'accord de la DLF, et elles ne sont donc pas décomptées par "),Ye=K("strong"),He=F(". Je vous renvoie au mémento du SNPL pour plus d'informations."),he=Y(),ge=K("h2"),ge.textContent="Mise à jour",Ze=Y(),Ve=K("p"),ve=K("strong"),$e=F(" se met à jour automatiquement. Éventuellement, un popup peut\napparaître 👨🏻‍✈️ vous demandant d’autoriser cette mise à jour. Installer la mise à jour efface les résultats.\nSi jamais le popup restait à l'écran, il faudrait rafraichir la page ⟳."),Je=Y(),Xe=K("h2"),Xe.textContent="Données fiscales",ye=Y(),Qe=K("p"),we=F("Sur "),De(xe.$$.fragment),je=F(" vous trouverez les liens vers les barèmes au format csv et tsv (Excel/Numbers) mais aussi\nles données json. En installant le code source sur votre ordinateur, vous pourrez générer ces fichiers. Lors\nde la compilation de l’application, les API de la Banque de France et des impôts sont utilisées."),ke=Y(),_e=K("ul"),ze=K("li"),De(qe.$$.fragment),et=Y(),tt=K("li"),De(nt.$$.fragment),St=Y(),st=K("li"),De(rt.$$.fragment),ot=Y(),Ut=K("h2"),Ut.textContent="Crédits",lt=Y(),it=K("ul"),at=K("li"),De(ct.$$.fragment),At=F(" de Mike Borsetti (permet de lier un code IATA à un pays)"),Ct=Y(),Rt=K("li"),ut=K("strong"),Bt=F(" est développé en JavaScript à l’aide du framework SVELTE"),Mt=Y(),Nt=K("li"),dt=F("Éric Delord, CDB 777, est l’auteur. Le code source est disponible sur "),De(Et.$$.fragment),It=F(". L'application est sous "),De(Tt.$$.fragment),Lt=F(", et l’article 15 précise : THERE IS NO WARRANTY FOR THE PROGRAM."),Pt=Y(),pt=K("p"),pt.textContent="Vous pouvez me contacter sur l’email AF (erdelord@…), ou sur mon compte Twitter @flyingeek, ou sur le groupe Teams/MyConcorde. Si vous rencontrez un problème, merci de m'adresser le PDF concerné par mail.",Gt=Y(),Dt=K("h2"),Dt.textContent="Liens",Ot=Y(),ft=K("ul"),Kt=K("li"),De(mt.$$.fragment),Ft=F(" cartographie pour l'OFP (même auteur)")},m(e,O){D(e,t,O),D(e,n,O),D(e,S,O),D(e,s,O),D(e,r,O),D(e,o,O),D(e,U,O),D(e,l,O),D(e,i,O),D(e,a,O),D(e,c,O),D(e,A,O),D(e,C,O),P(C,R),R.innerHTML=be,P(C,u),D(e,B,O),D(e,M,O),D(e,N,O),D(e,d,O),P(d,E),P(d,I),I.innerHTML=be,P(d,T),D(e,L,O),D(e,p,O),D(e,G,O),D(e,f,O),D(e,m,O),D(e,H,O),D(e,h,O),D(e,g,O),P(g,Z),P(g,V),P(g,v),P(g,$),P(g,J),P(g,W),P(g,X),P(g,b),P(g,y),P(g,Q),P(g,w),P(w,x),P(w,j),P(w,k),k.innerHTML=be,P(w,_),P(g,z),P(g,q),P(q,ee),ee.innerHTML=be,P(q,te),D(e,ne,O),D(e,Se,O),D(e,se,O),D(e,re,O),D(e,oe,O),D(e,Ue,O),D(e,le,O),D(e,ie,O),D(e,ae,O),D(e,ce,O),P(ce,Ae),P(ce,Ce),Ce.innerHTML=be,P(ce,Re),D(e,ue,O),D(e,Be,O),D(e,Me,O),D(e,Ne,O),D(e,de,O),D(e,Ee,O),D(e,Le,O),D(e,Pe,O),D(e,pe,O),D(e,Ge,O),D(e,Ke,O),D(e,me,O),P(me,Fe),P(me,Ye),Ye.innerHTML=be,P(me,He),D(e,he,O),D(e,ge,O),D(e,Ze,O),D(e,Ve,O),P(Ve,ve),ve.innerHTML=be,P(Ve,$e),D(e,Je,O),D(e,Xe,O),D(e,ye,O),D(e,Qe,O),P(Qe,we),Oe(xe,Qe,null),P(Qe,je),D(e,ke,O),D(e,_e,O),P(_e,ze),Oe(qe,ze,null),P(_e,et),P(_e,tt),Oe(nt,tt,null),P(_e,St),P(_e,st),Oe(rt,st,null),D(e,ot,O),D(e,Ut,O),D(e,lt,O),D(e,it,O),P(it,at),Oe(ct,at,null),P(at,At),P(it,Ct),P(it,Rt),P(Rt,ut),ut.innerHTML=be,P(Rt,Bt),P(it,Mt),P(it,Nt),P(Nt,dt),Oe(Et,Nt,null),P(Nt,It),Oe(Tt,Nt,null),P(Nt,Lt),D(e,Pt,O),D(e,pt,O),D(e,Gt,O),D(e,Dt,O),D(e,Ot,O),D(e,ft,O),P(ft,Kt),Oe(mt,Kt,null),P(Kt,Ft),Yt=!0},p(e,[t]){const n={};2&t&&(n.$$scope={dirty:t,ctx:e}),xe.$set(n);const S={};2&t&&(S.$$scope={dirty:t,ctx:e}),qe.$set(S);const s={};2&t&&(s.$$scope={dirty:t,ctx:e}),nt.$set(s);const r={};2&t&&(r.$$scope={dirty:t,ctx:e}),rt.$set(r);const o={};2&t&&(o.$$scope={dirty:t,ctx:e}),ct.$set(o);const U={};2&t&&(U.$$scope={dirty:t,ctx:e}),Et.$set(U);const l={};2&t&&(l.$$scope={dirty:t,ctx:e}),Tt.$set(l);const i={};2&t&&(i.$$scope={dirty:t,ctx:e}),mt.$set(i)},i(e){Yt||(Ie(xe.$$.fragment,e),Ie(qe.$$.fragment,e),Ie(nt.$$.fragment,e),Ie(rt.$$.fragment,e),Ie(ct.$$.fragment,e),Ie(Et.$$.fragment,e),Ie(Tt.$$.fragment,e),Ie(mt.$$.fragment,e),Yt=!0)},o(e){Te(xe.$$.fragment,e),Te(qe.$$.fragment,e),Te(nt.$$.fragment,e),Te(rt.$$.fragment,e),Te(ct.$$.fragment,e),Te(Et.$$.fragment,e),Te(Tt.$$.fragment,e),Te(mt.$$.fragment,e),Yt=!1},d(e){e&&O(t),e&&O(n),e&&O(S),e&&O(s),e&&O(r),e&&O(o),e&&O(U),e&&O(l),e&&O(i),e&&O(a),e&&O(c),e&&O(A),e&&O(C),e&&O(B),e&&O(M),e&&O(N),e&&O(d),e&&O(L),e&&O(p),e&&O(G),e&&O(f),e&&O(m),e&&O(H),e&&O(h),e&&O(g),e&&O(ne),e&&O(Se),e&&O(se),e&&O(re),e&&O(oe),e&&O(Ue),e&&O(le),e&&O(ie),e&&O(ae),e&&O(ce),e&&O(ue),e&&O(Be),e&&O(Me),e&&O(Ne),e&&O(de),e&&O(Ee),e&&O(Le),e&&O(Pe),e&&O(pe),e&&O(Ge),e&&O(Ke),e&&O(me),e&&O(he),e&&O(ge),e&&O(Ze),e&&O(Ve),e&&O(Je),e&&O(Xe),e&&O(ye),e&&O(Qe),fe(xe),e&&O(ke),e&&O(_e),fe(qe),fe(nt),fe(rt),e&&O(ot),e&&O(Ut),e&&O(lt),e&&O(it),fe(ct),fe(Et),fe(Tt),e&&O(Pt),e&&O(pt),e&&O(Gt),e&&O(Dt),e&&O(Ot),e&&O(ft),fe(mt)}}}function zS(e){return["https://flyingeek.github.io/lido-online/index.html"+(!0===navigator.standalone?"#/install":"")]}class qS extends Fe{constructor(e){super(),me(this,e,zS,_S,U,{})}}function es(e,t,n){const S=e.slice();return S[3]=t[n][0],S[4]=t[n][1],S}function ts(e,t,n){const S=e.slice();return S[7]=t[n][0],S[8]=t[n][1],S}function ns(e,t,n){const S=e.slice();return S[11]=t[n],S}function Ss(e){let t,n,S,s;function r(e,t){return(null==n||7&t)&&(n=!!e[3].match(Bs)),n?rs:ss}let o=r(e,-1),U=o(e),l=Object.entries(e[4]),i=[];for(let t=0;t${us(e[7])}`).replace(/^(\s+)-/g,Es)+"";return{c(){t=K("div"),Z(t,"class","item svelte-9ow13k")},m(e,S){D(e,t,S),t.innerHTML=n},p(e,S){7&S&&n!==(n=Cs(e[11]).replace(/^-\s/g,`- ${us(e[7])}`).replace(/^(\s+)-/g,Es)+"")&&(t.innerHTML=n)},d(e){e&&O(t)}}}function is(e){let t;function n(e,t){return"raw"!==e[7]?Us:os}let S=n(e),s=S(e);return{c(){s.c(),t=H()},m(e,n){s.m(e,n),D(e,t,n)},p(e,r){S===(S=n(e))&&s?s.p(e,r):(s.d(1),s=S(e),s&&(s.c(),s.m(t.parentNode,t)))},d(e){s.d(e),e&&O(t)}}}function as(e){let t,n="raw"!==e[3]&&Ss(e);return{c(){n&&n.c(),t=H()},m(e,S){n&&n.m(e,S),D(e,t,S)},p(e,S){"raw"!==e[3]?n?n.p(e,S):(n=Ss(e),n.c(),n.m(t.parentNode,t)):n&&(n.d(1),n=null)},d(e){n&&n.d(e),e&&O(t)}}}function cs(t){let n,S=As(t[0],{version:t[2],limit:t[1]}),s=[];for(let e=0;e{if(!e)return[];let S=Object.entries(e.CHANGELOG);return t&&(S=S.filter((([e])=>{const n=e.match(/\[([^\]]+)\]/);return!!n&&et(n[1],t)>0}))),n?S.slice(0,n+1):S};function Cs(e){return e.replace(/\*\*(.*)\*\*/gim,"$1").replace(/\[(.*?)\]\((#.*?)\)/gim,"$1").replace(/\[(.*?)\]\((.*?)\)/gim,"$1").replace(/^$/g,"
    ")}const Rs={ADDED:"Ajouté",FIXED:"Corrigé",DEPRECATED:"Obsolète",CHANGED:"Modifié",REMOVED:"Supprimé",SECURITY:"Sécurité"},us=e=>Rs[e.toUpperCase()]||e,Bs=/\[([^\]]+)\].+(\d{4})-(\d{2})-(\d{2})/,Ms=e=>e.replace(/\[([^\]]+)\].+(\d{4})-(\d{2})-(\d{2})/,"$1 $4/$3/$2"),Ns={ADDED:"primary",FIXED:"success",DEPRECATED:"warning",CHANGED:"info",REMOVED:"danger",SECURITY:"secondary"},ds=e=>Ns[e.toUpperCase()]||"light",Es=(e,t)=>" ".repeat("pl".length)+"▫︎";function Is(e,t,n){let{data:S}=t,{limit:s}=t,{version:r}=t;return e.$$set=e=>{"data"in e&&n(0,S=e.data),"limit"in e&&n(1,s=e.limit),"version"in e&&n(2,r=e.version)},[S,s,r]}class Ts extends Fe{constructor(e){super(),me(this,e,Is,cs,U,{data:0,limit:1,version:2})}}function Ls(e){const t=t=>{!e||e.contains(t.target)||t.defaultPrevented||e.dispatchEvent(new CustomEvent("click_outside",e))};return document.addEventListener("click",t,!0),{destroy(){document.removeEventListener("click",t,!0)}}}function Ps(e){let t,n,S,s,o,U,l,i,a,c,A,C,R,u,B,N,d,E,I,T={ctx:e,current:null,token:null,hasCatch:!1,pending:Ds,then:Gs,catch:ps,value:7,blocks:[,,,]};return Ge(A=e[4],T),{c(){t=K("div"),n=K("div"),S=K("div"),s=K("div"),o=K("h5"),U=F(e[1]),l=Y(),i=K("button"),i.innerHTML='',a=Y(),c=K("div"),T.block.c(),u=Y(),B=K("div"),Z(o,"class","modal-title svelte-38j5yr"),Z(i,"type","button"),Z(i,"class","close"),Z(i,"data-dismiss","modal"),Z(i,"aria-label","Close"),Z(s,"class","modal-header"),Z(c,"class","modal-body svelte-38j5yr"),b(c,"expanded",!e[2]),Z(S,"class","modal-content"),Z(n,"class","modal-dialog modal-xl modal-dialog-centered"),Z(n,"role","document"),Z(t,"class","modal svelte-38j5yr"),Z(t,"tabindex","-1"),Z(t,"role","dialog"),Z(B,"class","modal-backdrop show")},m(r,A){D(r,t,A),P(t,n),P(n,S),P(S,s),P(s,o),P(o,U),P(s,l),P(s,i),P(S,a),P(S,c),T.block.m(c,T.anchor=null),T.mount=()=>c,T.anchor=null,D(r,u,A),D(r,B,A),d=!0,E||(I=[h(i,"click",e[3]),M(C=Ls.call(null,n)),h(n,"click_outside",e[3])],E=!0)},p(t,n){e=t,(!d||2&n)&&$(U,e[1]),T.ctx=e,16&n&&A!==(A=e[4])&&Ge(A,T)||function(e,t,n){const S=t.slice(),{resolved:s}=e;e.current===e.then&&(S[e.value]=s),e.current===e.catch&&(S[e.error]=s),e.block.p(S,n)}(T,e,n),4&n&&b(c,"expanded",!e[2])},i(e){d||(Ie(T.block),R||ie((()=>{R=Pe(t,St,{}),R.start()})),N||ie((()=>{N=Pe(B,St,{}),N.start()})),d=!0)},o(e){for(let e=0;e<3;e+=1){Te(T.blocks[e])}d=!1},d(e){e&&O(t),T.block.d(),T.token=null,T=null,e&&O(u),e&&O(B),E=!1,r(I)}}}function ps(t){return{c:e,m:e,p:e,i:e,o:e,d:e}}function Gs(e){let t,n;return t=new Ts({props:{data:e[7],version:e[2]}}),{c(){De(t.$$.fragment)},m(e,S){Oe(t,e,S),n=!0},p(e,n){const S={};16&n&&(S.data=e[7]),4&n&&(S.version=e[2]),t.$set(S)},i(e){n||(Ie(t.$$.fragment,e),n=!0)},o(e){Te(t.$$.fragment,e),n=!1},d(e){fe(t,e)}}}function Ds(t){let n;return{c(){n=K("p"),n.textContent="chargement..."},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function Os(e){let t,n,S=e[0]&&Ps(e);return{c(){S&&S.c(),t=H()},m(e,s){S&&S.m(e,s),D(e,t,s),n=!0},p(e,[n]){e[0]?S?(S.p(e,n),1&n&&Ie(S,1)):(S=Ps(e),S.c(),Ie(S,1),S.m(t.parentNode,t)):S&&(de(),Te(S,1,1,(()=>{S=null})),Ee())},i(e){n||(Ie(S),n=!0)},o(e){Te(S),n=!1},d(e){S&&S.d(e),e&&O(t)}}}function fs(e,t,n){let{visible:S=!1}=t,{title:s="CHANGELOG"}=t,{version:r}=t;const o=function(){const e=ee();return(t,n)=>{const S=e.$$.callbacks[t];if(S){const s=y(t,n);S.slice().forEach((t=>{t.call(e,s)}))}}}();let U;const l=async()=>{n(0,S=!0),n(4,U=fetch("./CHANGELOG.json").then((e=>{if(e.ok)return e.json();throw new Error("CHANGELOG.json not available")})))};return r&&l(),e.$$set=e=>{"visible"in e&&n(0,S=e.visible),"title"in e&&n(1,s=e.title),"version"in e&&n(2,r=e.version)},[S,s,r,()=>{o("close"),n(0,S=!1)},U,l]}class Ks extends Fe{constructor(e){super(),me(this,e,fs,Os,U,{visible:0,title:1,version:2,show:5,close:3})}get show(){return this.$$.ctx[5]}get close(){return this.$$.ctx[3]}}function ms(e){let t,n,S={ctx:e,current:null,token:null,hasCatch:!1,pending:Hs,then:Ys,catch:Fs,value:7};return Ge(n=e[0].active,S),{c(){t=H(),S.block.c()},m(e,n){D(e,t,n),S.block.m(e,S.anchor=n),S.mount=()=>t.parentNode,S.anchor=t},p(t,s){e=t,S.ctx=e,1&s&&n!==(n=e[0].active)&&Ge(n,S)},d(e){e&&O(t),S.block.d(e),S.token=null,S=null}}}function Fs(t){return{c:e,m:e,d:e}}function Ys(e){let t;return{c(){t=K("small"),t.textContent="/ mode déconnecté disponible",Z(t,"class","svelte-wtoba3")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function Hs(t){return{c:e,m:e,d:e}}function hs(t){let n,S,s,r,o=!!navigator.share&&function(t){let n,S,s;return{c(){n=K("button"),n.textContent="Partager",Z(n,"class","btn-sm")},m(e,t){D(e,n,t),S||(s=h(n,"click",tt),S=!0)},p:e,d(e){e&&O(n),S=!1,s()}}}();return{c(){o&&o.c(),n=Y(),S=K("button"),S.textContent="Recharger",Z(S,"class","btn-sm")},m(e,U){o&&o.m(e,U),D(e,n,U),D(e,S,U),s||(r=h(S,"click",t[3]),s=!0)},p(e,t){navigator.share&&o.p(e,t)},d(e){o&&o.d(e),e&&O(n),e&&O(S),s=!1,r()}}}function gs(e){let t;return{c(){t=F("Wikimedia Commons")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function Zs(e){let t;return{c(){t=F("Freepik")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function Vs(e){let t;return{c(){t=F("www.flaticon.com")},m(e,n){D(e,t,n)},d(e){e&&O(t)}}}function vs(e){let t,n,S,s,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T,L,p,G,f,m,H,g,V,v,J,W,X;t=new Ks({props:{}}),e[4](t);let b=e[0]&&ms(e),y=!0===navigator.standalone&&hs(e);return E=new qS({}),G=new We({props:{href:"https://commons.wikimedia.org/wiki/File:OOjs_UI_icon_alert_destructive.svg",$$slots:{default:[gs]},$$scope:{ctx:e}}}),g=new We({props:{href:"https://www.flaticon.com/authors/freepik",title:"Freepik",$$slots:{default:[Zs]},$$scope:{ctx:e}}}),v=new We({props:{href:"https://www.flaticon.com/",title:"Flaticon",$$slots:{default:[Vs]},$$scope:{ctx:e}}}),{c(){De(t.$$.fragment),n=Y(),S=K("main"),s=K("section"),U=K("h1"),l=new Q,i=F(" v"),a=F($s),c=Y(),A=K("small"),C=F("/ ServiceWorker : "),R=F(e[1]),u=Y(),b&&b.c(),B=Y(),y&&y.c(),M=Y(),N=K("button"),N.textContent="CHANGELOG",d=Y(),De(E.$$.fragment),I=Y(),T=K("div"),L=K("p"),p=F("Alert Icon via "),De(G.$$.fragment),f=Y(),m=K("p"),H=F("Other Icons made by "),De(g.$$.fragment),V=F(" from "),De(v.$$.fragment),l.a=i,Z(A,"class","svelte-wtoba3"),Z(N,"class","btn-sm"),Z(U,"class","svelte-wtoba3"),Z(s,"class","markdown"),Z(T,"class","footer svelte-wtoba3")},m(r,O){Oe(t,r,O),D(r,n,O),D(r,S,O),P(S,s),P(s,U),l.m(be,U),P(U,i),P(U,a),P(U,c),P(U,A),P(A,C),P(A,R),P(U,u),b&&b.m(U,null),P(U,B),y&&y.m(U,null),P(U,M),P(U,N),P(s,d),Oe(E,s,null),P(S,I),P(S,T),P(T,L),P(L,p),Oe(G,L,null),P(T,f),P(T,m),P(m,H),Oe(g,m,null),P(m,V),Oe(v,m,null),J=!0,W||(X=[h(A,"click",e[5],{once:!0}),h(N,"click",(function(){o(e[2].show)&&e[2].show.apply(this,arguments)}))],W=!0)},p(n,[S]){e=n;t.$set({}),(!J||2&S)&&$(R,e[1]),e[0]?b?b.p(e,S):(b=ms(e),b.c(),b.m(U,B)):b&&(b.d(1),b=null),!0===navigator.standalone&&y.p(e,S);const s={};256&S&&(s.$$scope={dirty:S,ctx:e}),G.$set(s);const r={};256&S&&(r.$$scope={dirty:S,ctx:e}),g.$set(r);const o={};256&S&&(o.$$scope={dirty:S,ctx:e}),v.$set(o)},i(e){J||(Ie(t.$$.fragment,e),Ie(E.$$.fragment,e),Ie(G.$$.fragment,e),Ie(g.$$.fragment,e),Ie(v.$$.fragment,e),J=!0)},o(e){Te(t.$$.fragment,e),Te(E.$$.fragment,e),Te(G.$$.fragment,e),Te(g.$$.fragment,e),Te(v.$$.fragment,e),J=!1},d(s){e[4](null),fe(t,s),s&&O(n),s&&O(S),b&&b.d(),y&&y.d(),fe(E),fe(G),fe(g),fe(v),W=!1,r(X)}}}const $s="1.3.7";function Js(e,t,n){let S;i(e,Xt,(e=>n(0,S=e)));let s,r="";return e.$$.update=()=>{var t;1&e.$$.dirty&&(t=S)&&t.messageSW({type:"GET_VERSION"}).then((e=>n(1,r=e)))},[S,r,s,()=>{window.location.hash="#/",console.log("reload page"),window.location.reload()},function(e){se[e?"unshift":"push"]((()=>{s=e,n(2,s)}))},()=>S.update()]}class Ws extends Fe{constructor(e){super(),me(this,e,Js,vs,U,{})}}function Xs(e,t,n){const S=e.slice();return S[5]=t[n],S}function bs(e){let t,n,S,s,r=e[5].label+"";return{c(){t=K("option"),n=F(r),t.__value=S=e[5].label,t.value=t.__value,t.selected=s=e[0]===e[5].label},m(e,S){D(e,t,S),P(t,n)},p(e,n){1&n&&s!==(s=e[0]===e[5].label)&&(t.selected=s)},d(e){e&&O(t)}}}function ys(t){let n,S,s,o,U=Object.values(Dt),l=[];for(let e=0;et[2].call(S))),Z(n,"class","select")},m(e,r){D(e,n,r),P(n,S);for(let e=0;en(3,S=e))),i(e,vt,(e=>n(4,e))),i(e,Vt,(e=>n(0,s=e)));return[s,()=>{B(Wt,S=!1,S)},function(){s=function(e){const t=e.querySelector(":checked")||e.options[0];return t&&t.__value}(this),Vt.set(s)}]}class ws extends Fe{constructor(e){super(),me(this,e,Qs,ys,U,{})}}function xs(e){let t,n,S,s,r,o,U,l=e[1].length+"";return{c(){var e,o;t=K("a"),n=m("svg"),S=m("use"),s=K("sup"),r=F(l),e="xlink:href",o="#alert",S.setAttributeNS("http://www.w3.org/1999/xlink",e,o),Z(n,"class","svelte-98mib8"),Z(s,"class","svelte-98mib8"),Z(t,"href","#/log"),Z(t,"class","svelte-98mib8")},m(l,i){D(l,t,i),P(t,n),P(n,S),P(t,s),P(s,r),o||(U=h(t,"click",g(e[3])),o=!0)},p(e,t){2&t&&l!==(l=e[1].length+"")&&$(r,l)},d(e){e&&O(t),o=!1,U()}}}function js(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M=e[1].length>0&&xs(e);return u=new ws({}),{c(){t=K("nav"),n=K("a"),S=new Q,s=K("sup"),s.textContent=".fr",r=Y(),o=K("a"),o.textContent="Frais De Mission",U=Y(),l=K("a"),l.textContent="Salaire",i=Y(),a=K("a"),a.textContent="Aide",c=Y(),A=K("span"),C=Y(),M&&M.c(),R=Y(),De(u.$$.fragment),S.a=s,Z(s,"class","svelte-98mib8"),Z(n,"href","#/"),Z(n,"class","svelte-98mib8"),b(n,"active","/"==e[0]),Z(o,"href","#/mission"),Z(o,"class","svelte-98mib8"),b(o,"active","/mission"==e[0]),Z(l,"href","#/pay"),Z(l,"class","svelte-98mib8"),b(l,"active","/pay"==e[0]),Z(a,"href","#/help"),Z(a,"class","svelte-98mib8"),b(a,"active","/help"==e[0]),Z(A,"class","flexspace"),Z(t,"class","svelte-98mib8")},m(e,N){D(e,t,N),P(t,n),S.m(be,n),P(n,s),P(t,r),P(t,o),P(t,U),P(t,l),P(t,i),P(t,a),P(t,c),P(t,A),P(t,C),M&&M.m(t,null),P(t,R),Oe(u,t,null),B=!0},p(e,[S]){1&S&&b(n,"active","/"==e[0]),1&S&&b(o,"active","/mission"==e[0]),1&S&&b(l,"active","/pay"==e[0]),1&S&&b(a,"active","/help"==e[0]),e[1].length>0?M?M.p(e,S):(M=xs(e),M.c(),M.m(t,R)):M&&(M.d(1),M=null)},i(e){B||(Ie(u.$$.fragment,e),B=!0)},o(e){Te(u.$$.fragment,e),B=!1},d(e){e&&O(t),M&&M.d(),fe(u)}}}function ks(e,t,n){let S,s,r;i(e,wt,(e=>n(0,S=e))),i(e,Ft,(e=>n(1,s=e))),i(e,zt,(e=>n(2,r=e)));return[S,s,r,()=>B(zt,r=!r,r)]}class _s extends Fe{constructor(e){super(),me(this,e,ks,js,U,{})}}function zs(t){let n,S;return n=new Ks({props:{version:t[7](),title:"NOUVEAUTÉS"}}),n.$on("close",t[8]),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function qs(e){let t,n,S,s,o,U,l,i,a,c,A,C,R,u;return{c(){t=K("div"),n=K("div"),S=K("strong"),S.innerHTML='👨🏻‍✈️Mise à jour disponible',s=Y(),o=K("button"),o.innerHTML='',U=Y(),l=K("div"),i=K("button"),a=K("span"),c=F(e[0]),Z(S,"class","svelte-1pe757z"),Z(o,"type","button"),Z(o,"class","close svelte-1pe757z"),Z(o,"aria-label","Close"),Z(n,"class","toast-header svelte-1pe757z"),Z(a,"class","svelte-1pe757z"),b(a,"blinking",e[0].endsWith("...")),Z(i,"class","manual svelte-1pe757z"),Z(l,"class","toast-body svelte-1pe757z"),Z(t,"class","toast svelte-1pe757z"),W(t,"position","fixed"),W(t,"top","0"),W(t,"right","0")},m(r,A){D(r,t,A),P(t,n),P(n,S),P(n,s),P(n,o),P(t,U),P(t,l),P(l,i),P(i,a),P(a,c),C=!0,R||(u=[h(o,"click",e[12]),h(i,"click",e[13],{once:!0})],R=!0)},p(e,t){(!C||1&t)&&$(c,e[0]),1&t&&b(a,"blinking",e[0].endsWith("..."))},i(e){C||(ie((()=>{A||(A=pe(t,St,{},!0)),A.run(1)})),C=!0)},o(e){A||(A=pe(t,St,{},!1)),A.run(0),C=!1},d(e){e&&O(t),e&&A&&A.end(),R=!1,r(u)}}}function er(t){let n,S,s,r,o,U,l,i,a,c,A=(t[10]("/"===t[2]?2e3:700)||"")+"";return{c(){n=K("div"),S=K("div"),s=K("div"),s.innerHTML='👨🏻‍✈️Mise à jour détectée',r=Y(),o=K("div"),U=K("button"),U.innerHTML="Installation...",l=Y(),i=F(A),Z(s,"class","toast-header svelte-1pe757z"),Z(U,"class","svelte-1pe757z"),Z(o,"class","toast-body svelte-1pe757z"),Z(S,"class","toast svelte-1pe757z"),Z(n,"class","modal svelte-1pe757z")},m(e,A){D(e,n,A),P(n,S),P(S,s),P(S,r),P(S,o),P(o,U),P(n,l),D(e,i,A),a||(c=h(U,"click",g(t[11])),a=!0)},p(e,t){4&t&&A!==(A=(e[10]("/"===e[2]?2e3:700)||"")+"")&&$(i,A)},i:e,o:e,d(e){e&&O(n),e&&O(i),a=!1,c()}}}function tr(e){let t,n,S,s,r,o,U;const l=[er,qs,zs],i=[];function a(e,s){return 126&s&&(t=!("/"===e[2]&&!e[3]||!e[4]||e[1]||!e[5].isEmpty()||!e[6].isEmpty())),t?0:(114&s&&(n=!(!e[4]||e[1]||e[5].isEmpty()&&e[6].isEmpty())),n?1:(16&s&&(S=!(e[4]||!e[9]())),S?2:-1))}return~(s=a(e,-1))&&(r=i[s]=l[s](e)),{c(){r&&r.c(),o=H()},m(e,t){~s&&i[s].m(e,t),D(e,o,t),U=!0},p(e,[t]){let n=s;s=a(e,t),s===n?~s&&i[s].p(e,t):(r&&(de(),Te(i[n],1,1,(()=>{i[n]=null})),Ee()),~s?(r=i[s],r?r.p(e,t):(r=i[s]=l[s](e),r.c()),Ie(r,1),r.m(o.parentNode,o)):r=null)},i(e){U||(Ie(r),U=!0)},o(e){Te(r),U=!1},d(e){~s&&i[s].d(e),e&&O(o)}}}const nr=Ut(!1),Sr=Ut(),sr=Ut(!1),rr=e=>{nr.set(!0),Wt.set(!1),e?sr.set(!((e,t)=>{const n=e.split("."),S=t.split(".");return n.slice(0,-1).join(".")===S.slice(0,-1).join(".")})("1.3.7",e)):sr.set(!0)},or="previousAppVersion";function Ur(t,n,S){let s,r,o,U,l,a,c,A,C=e,R=e,u=e;i(t,Sr,(e=>S(14,s=e))),i(t,Xt,(e=>S(15,r=e))),i(t,Wt,(e=>S(1,o=e))),i(t,wt,(e=>S(2,U=e))),i(t,sr,(e=>S(3,l=e))),i(t,nr,(e=>S(4,a=e))),i(t,Ht,(e=>S(5,c=e))),i(t,ht,(e=>S(6,A=e))),t.$$.on_destroy.push((()=>C())),t.$$.on_destroy.push((()=>R())),t.$$.on_destroy.push((()=>u()));let M="Installer";const N=()=>sessionStorage?sessionStorage.getItem(or):void 0;B(Wt,o=!1,o);const d=(e=0)=>{let t;e&&console.debug("automatic install "),r&&s&&s.waiting?(navigator.serviceWorker.addEventListener("controllerchange",(()=>{t||(t=!0,console.debug("SWUpdate: controllerchange reload"),e?setTimeout((()=>window.location.reload()),e):window.location.reload())})),S(0,M="En cours..."),N()||sessionStorage&&sessionStorage.setItem(or,"1.3.7"),s.waiting.postMessage({type:"SKIP_WAITING"})):(console.debug("SWUpdate: no waiting reg reload"),window.location.reload())};return[M,o,U,l,a,c,A,N,()=>sessionStorage?sessionStorage.removeItem(or):void 0,()=>{const e=N();return!!e&&et("1.3.7",e)>0},d,function(e){ne.call(this,t,e)},()=>B(Wt,o=!0,o),()=>d()]}class lr extends Fe{constructor(e){super(),me(this,e,Ur,tr,U,{})}}function ir(t){let n,S=window.location.hash="#/";return{c(){n=F(S)},m(e,t){D(e,n,t)},p:e,i:e,o:e,d(e){e&&O(n)}}}function ar(t){let n,S;return n=new Ws({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function cr(t){let n,S;return n=new WS({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function Ar(t){let n,S;return n=new TS({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function Cr(t){let n,S;return n=new Rn({}),{c(){De(n.$$.fragment)},m(e,t){Oe(n,e,t),S=!0},p:e,i(e){S||(Ie(n.$$.fragment,e),S=!0)},o(e){Te(n.$$.fragment,e),S=!1},d(e){fe(n,e)}}}function Rr(e){let t,n,S,s,r,o,U,l,i,a,c,A,C,R,u,B,M,N,d,E,I,T;C=new lr({}),u=new _s({}),M=new en({});const L=[Cr,Ar,cr,ar,ir],p=[];function G(e,t){return"/"===e[0]?0:"/mission"===e[0]?1:"/pay"===e[0]?2:"/help"===e[0]?3:4}return d=G(e),E=p[d]=L[d](e),{c(){t=m("svg"),n=m("symbol"),S=m("path"),s=m("symbol"),r=m("path"),o=m("path"),U=m("path"),l=m("symbol"),i=m("path"),a=m("path"),c=m("path"),A=Y(),De(C.$$.fragment),R=Y(),De(u.$$.fragment),B=Y(),De(M.$$.fragment),N=Y(),E.c(),I=H(),Z(S,"d","M10 0l-5.2 4.9h3.3v5.1h3.8v-5.1h3.3l-5.2-4.9zm9.3 11.5l-3.2-2.1h-2l3.4 2.6h-3.5c-.1 0-.2.1-.2.1l-.8 2.3h-6l-.8-2.2c-.1-.1-.1-.2-.2-.2h-3.6l3.4-2.6h-2l-3.2 2.1c-.4.3-.7 1-.6 1.5l.6 3.1c.1.5.7.9 1.2.9h16.3c.6 0 1.1-.4 1.3-.9l.6-3.1c.1-.5-.2-1.2-.7-1.5z"),Z(n,"id","upload"),Z(n,"viewBox","0 0 20 17"),Z(r,"id","point"),Z(r,"d","M11 16h2v2h-2z"),Z(o,"id","stroke"),Z(o,"d","M13.516 10h-3l.484 5h2z"),Z(U,"id","triangle"),Z(U,"d","M12.017 5.974l7.519 13.026h-15.04l7.521-13.026m0-2.474c-.544 0-1.088.357-1.5 1.071l-7.985 13.831c-.825 1.429-.15 2.598 1.5 2.598h15.968c1.65 0 2.325-1.169 1.5-2.599l-7.983-13.829c-.413-.715-.956-1.072-1.5-1.072z"),Z(s,"id","alert"),Z(s,"viewBox","0 0 24 24"),Z(i,"d","M30.3 13.7L25 8.4l-5.3 5.3-1.4-1.4L25 5.6l6.7 6.7z"),Z(a,"d","M24 7h2v21h-2z"),Z(c,"d","M35 40H15c-1.7 0-3-1.3-3-3V19c0-1.7 1.3-3 3-3h7v2h-7c-.6 0-1 .4-1 1v18c0 .6.4 1 1 1h20c.6 0 1-.4 1-1V19c0-.6-.4-1-1-1h-7v-2h7c1.7 0 3 1.3 3 3v18c0 1.7-1.3 3-3 3z"),Z(l,"id","share"),Z(l,"viewBox","0 0 50 50"),W(t,"display","none")},m(e,E){D(e,t,E),P(t,n),P(n,S),P(t,s),P(s,r),P(s,o),P(s,U),P(t,l),P(l,i),P(l,a),P(l,c),D(e,A,E),Oe(C,e,E),D(e,R,E),Oe(u,e,E),D(e,B,E),Oe(M,e,E),D(e,N,E),p[d].m(e,E),D(e,I,E),T=!0},p(e,[t]){let n=d;d=G(e),d===n?p[d].p(e,t):(de(),Te(p[n],1,1,(()=>{p[n]=null})),Ee(),E=p[d],E?E.p(e,t):(E=p[d]=L[d](e),E.c()),Ie(E,1),E.m(I.parentNode,I))},i(e){T||(Ie(C.$$.fragment,e),Ie(u.$$.fragment,e),Ie(M.$$.fragment,e),Ie(E),T=!0)},o(e){Te(C.$$.fragment,e),Te(u.$$.fragment,e),Te(M.$$.fragment,e),Te(E),T=!1},d(e){e&&O(t),e&&O(A),fe(C,e),e&&O(R),fe(u,e),e&&O(B),fe(M,e),e&&O(N),p[d].d(e),e&&O(I)}}}function ur(e,t,n){let S;return i(e,wt,(e=>n(0,S=e))),te((()=>(document.addEventListener("visibilitychange",Qt,!1),qe(2e3,fetch("https://flytax.goatcounter.com/count?p=/app")).catch((()=>{})),()=>document.removeEventListener("visibilitychange",Qt)))),[S]}class Br extends Fe{constructor(e){super(),me(this,e,ur,Rr,U,{})}}try{self["workbox:window:6.2.4"]&&_()}catch(Mr){}function Mr(e,t){return new Promise((function(n){var S=new MessageChannel;S.port1.onmessage=function(e){n(e.data)},e.postMessage(t,[S.port2])}))}function Nr(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,S=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[S++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(n=e[Symbol.iterator]()).next.bind(n)}try{self["workbox:core:6.2.4"]&&_()}catch(Mr){}var Er=function(){var e=this;this.promise=new Promise((function(t,n){e.resolve=t,e.reject=n}))};function Ir(e,t){var n=location.href;return new URL(e,n).href===new URL(t,n).href}var Tr=function(e,t){this.type=e,Object.assign(this,t)};function Lr(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function Pr(){}var pr={type:"SKIP_WAITING"};function Gr(e,t){if(!t)return e&&e.then?e.then(Pr):Promise.resolve()}var Dr=function(e){var t,n;function S(t,n){var S,s;return void 0===n&&(n={}),(S=e.call(this)||this).nn={},S.tn=0,S.rn=new Er,S.en=new Er,S.on=new Er,S.un=0,S.an=new Set,S.cn=function(){var e=S.fn,t=e.installing;S.tn>0||!Ir(t.scriptURL,S.sn.toString())||performance.now()>S.un+6e4?(S.vn=t,e.removeEventListener("updatefound",S.cn)):(S.hn=t,S.an.add(t),S.rn.resolve(t)),++S.tn,t.addEventListener("statechange",S.ln)},S.ln=function(e){var t=S.fn,n=e.target,s=n.state,r=n===S.vn,o={sw:n,isExternal:r,originalEvent:e};!r&&S.mn&&(o.isUpdate=!0),S.dispatchEvent(new Tr(s,o)),"installed"===s?S.wn=self.setTimeout((function(){"installed"===s&&t.waiting===n&&S.dispatchEvent(new Tr("waiting",o))}),200):"activating"===s&&(clearTimeout(S.wn),r||S.en.resolve(n))},S.dn=function(e){var t=S.hn,n=t!==navigator.serviceWorker.controller;S.dispatchEvent(new Tr("controlling",{isExternal:n,originalEvent:e,sw:t,isUpdate:S.mn})),n||S.on.resolve(t)},S.gn=(s=function(e){var t=e.data,n=e.ports,s=e.source;return Lr(S.getSW(),(function(){S.an.has(s)&&S.dispatchEvent(new Tr("message",{data:t,originalEvent:e,ports:n,sw:s}))}))},function(){for(var e=[],t=0;t
    FLYTAX a besoin de navigateurs récents: Safari 14 iOS/Mac, Firefox 86, Chrome 87 et Microsoft Edge 87 sont compatibles.

    Contactez moi sur l'email AF (erdelord@...) en me donnant le message d'erreur.",document.body.appendChild(fr)}catch(dr){}}finally{if("serviceWorker"in navigator){const e=new Dr("./sw.js");Xt.set(e),e.addEventListener("installed",(e=>{e.isUpdate})),e.addEventListener("activated",(t=>{t.isUpdate||e.messageSW({type:"CLIENTS_CLAIM"}),t.isExternal&&console.warn("External Service worker activated")})),e.addEventListener("waiting",(t=>{Or?(e.addEventListener("controlling",(()=>{console.warn("main.js: appError reload"),window.location.reload()})),e.messageSkipWaiting()):(t.isExternal&&console.warn("External Service worker waiting"),qe(400,Mr(t.sw,{type:"GET_VERSION"})).then((e=>rr(e))).catch((e=>{console.warn("SW GET_VERSION:",e),rr()})))})),e.register().then((e=>{Or&&e&&e.unregister(),Sr.set(e)}),console.error)}}return app}(); //# sourceMappingURL=bundle.js.map diff --git a/js/bundle.js.map b/js/bundle.js.map index 4010dd0..3e9af2b 100644 --- a/js/bundle.js.map +++ b/js/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../src/components/FlagSignifier.svelte","../../src/components/Link.svelte","../../src/components/utils.js","../../node_modules/svelte/easing/index.mjs","../../node_modules/svelte/transition/index.mjs","../../node_modules/svelte/store/index.mjs","../../src/parsers/ep5Parser.js","../../src/stores.js","../../src/components/LogWindow.svelte","../../src/pages/HomePage.svelte","../../src/components/Disclaimer.svelte","../../src/components/async-script-loader.js","../../src/parsers/payParser.js","../../src/parsers/nightsAFParser.js","../../src/parsers/router.js","../../src/components/DropZone.svelte","../../src/components/MonthStatus.svelte","../../src/components/MissionCountries.svelte","../../src/components/DownloadTablePDF.svelte","../../src/components/MissionActivities.svelte","../../src/pages/MissionPage.svelte","../../src/components/PayTable.svelte","../../src/pages/PayPage.svelte","../../src/pages/Help.md","../../src/components/ChangeLog.svelte","../../src/actions/clickOutsideAction.js","../../src/components/ChangeLogModal.svelte","../../src/pages/HelpPage.svelte","../../src/components/TaxYearSelect.svelte","../../src/components/Navbar.svelte","../../src/components/SWUpdate.svelte","../../src/App.svelte","../../node_modules/workbox-window/build/workbox-window.prod.es5.mjs","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root.host) {\n return root;\n }\n return document;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element(nodes, name, attributes, svg) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => svg ? svg_element(name) : element(name));\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration();\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, bubbles = false) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor() {\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes) {\n super();\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : context || []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : options.context || []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.42.1' }, detail), true));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","\n\n
    {#if false}{/if}\n \n \n
    \n
    \n

    {title}

    \n
    \n
    \n \n
    \n\n\n","\n\n","export class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject)=> {\n this.reject = reject\n this.resolve = resolve\n })\n }\n}\nexport const htmlLogo = 'FlyTax';\nexport const navigatorLocale = (typeof navigator !== \"undefined\" && navigator.languages) ? Array.from(Intl.DateTimeFormat.supportedLocalesOf(Intl.NumberFormat.supportedLocalesOf(navigator.languages))).shift() : undefined;\nexport const months = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\nexport const months14 = ['00', ...months, '13'];\nexport const monthsfr = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];\nexport const localeFormat = (numberOrString, options={}) => {\n if (navigatorLocale !== undefined) {\n const res = new Intl.NumberFormat(navigatorLocale, options).format(numberOrString);\n if (options.style === 'currency') return res.replace(/\\s/gu, '\\u202f');\n return res;\n } else {\n const numberValue = (numberOrString.toFixed) ? numberOrString : parseFloat(numberOrString);\n if (options.style==='currency') {\n return numberValue.toFixed(options.maximumFractionDigits||2) + \"\\u202f\" + options.currency;\n }else{\n return (options.maximumFractionDigits===undefined || options.maximumFractionDigits !== options.minimumFractionDigits) ? numberValue.toString(): numberValue.toFixed(options.maximumFractionDigits);\n }\n }\n}\nexport const localeCurrency = (value, digits=2) => localeFormat(value, {\"style\": \"currency\", \"currency\": \"EUR\", \"minimumFractionDigits\": digits});\nexport const localeRate = (value) => localeFormat(value, {\"style\": \"decimal\", \"minimumFractionDigits\": 4, \"maximumFractionDigits\": 4});\nexport const localeDateFormat = (isoString, options={}) => {\n if (navigatorLocale !== undefined) {\n const fakeUTCDate = new Date(Date.parse(isoString.substring(0, 10) + \"T00:00Z\"));\n const opts = Object.assign({\"timezone\": \"UTC\"}, options);\n return new Intl.DateTimeFormat(navigatorLocale, opts).format(fakeUTCDate);\n } else {\n return isoString.substring(0, 10);\n }\n}\nexport const promiseTimeout = function(ms, promise){\n // Create a promise that rejects in milliseconds\n let timeout = new Promise((resolve, reject) => {\n let id = setTimeout(() => {\n clearTimeout(id);\n reject('Timed out in '+ ms + 'ms.')\n }, ms)\n });\n // Returns a race between our timeout and the passed in promise\n return Promise.race([\n promise,\n timeout\n ]);\n}\nexport const isPatchUpdate = (current, next) => {\n const cParts = current.split('.');\n const nParts = next.split('.');\n return cParts.slice(0, -1).join('.') === nParts.slice(0, -1).join('.');\n}\n//semver-compare\nexport const semverCompare = (a, b) => {\n let pa = a.split('.');\n let pb = b.split('.');\n for (var i = 0; i < 3; i++) {\n let na = Number(pa[i]);\n let nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n return 0;\n};\n\nexport const shareAppLink = async () => {\n const shareData = {\n 'title': 'FLYTAX',\n 'url': window.location.pathname\n };\n try {\n await navigator.share(shareData)\n } catch(err) {\n //console.log(err);\n }\n return false;\n}","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n const len = node.getTotalLength();\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import airportsData from \"../../data/airports.json\";\nimport {localeFormat, months14} from \"../components/utils\";\n\nexport const WITHIN_BASE_TEXT = \"rotation sur base\";\nexport const NIGHT_OVERFLOW_TEXT = \"Erreur: nuitées > nb de jours\";\nexport const CONTINUATION_MARK = \"...\";\nexport const REFNOTE1 = \"\\u202f¹\";\nexport const FORMULA_ERROR = \"!ERREUR!\"\n//months as written in EP5\nexport const EP5MONTHS = ['JANVIER', 'FEVRIER', 'MARS', 'AVRIL', 'MAI', 'JUIN', 'JUILLET', 'AOUT', 'SEPTEMBRE', 'OCTOBRE', 'NOVEMBRE', 'DECEMBRE'];\n\n//converts EP5 time hh,dd to hh:mmZ\n//returns a string\nexport const ep5Time2iso = (text) => {\n const [hours, cs] = text.split(\",\");\n const minutes = (parseFloat(cs) * 0.6).toFixed(0).padStart(2, '0');\n return `${hours}:${minutes}Z`;\n}\n\n//https://stackoverflow.com/questions/222309/calculate-last-day-of-month-in-javascript\n//months must be 1 based (1->12)\nconst getDaysInMonth = (m, y) => {\n return m===2 ? y & 3 || !(y%25) && y & 15 ? 28 : 29 : 30 + (m+(m>>3)&1);\n}\n\nexport const lastDayInMonthISO = (mString, yString) => {\n const day = getDaysInMonth(parseInt(mString, 10), parseInt(yString, 10));\n // 28<=day<=31, so no paddding needed\n return `${yString}-${mString}-${day}`;\n}\n\n//return intervals between to ISO dates, in hours and in days\nexport const numberOfDays = (startISO, endISO) => {\n const diff = Date.parse(endISO.replace(\"24:00\", \"23:59\")) - Date.parse(startISO.replace(/\\d\\d:\\d\\d/, \"00:00\"));\n return Math.floor(diff/ 86400000);\n};\nexport const diffHours = (startISO, endISO) => {\n return (Date.parse(endISO) - Date.parse(startISO)) / 3600000;\n};\n\n// Converts timezone\n// 2020-11-01T00:00Z -> 2020-11-01+01:00 for \"Europe/Paris\"\n// 2020-11-01T00:00+01:00 -> 2020-11-01+01:00 for \"Europe/Paris\"\nexport const iso2TZ = (timeZone, isoString, deltaDays=0) => {\n if (isoString === undefined) return timeZone; // This is used in buildRots to check browser compatibility\n let event = new Date(Date.parse(isoString));\n if (deltaDays) event.setUTCDate(event.getUTCDate() + deltaDays);\n // British English uses day/month/year order and 24-hour time without AM/PM\n const loc = event.toLocaleString(\"en-GB\", {timeZone});\n const re = /(\\d\\d)\\/(\\d\\d)\\/(\\d\\d\\d\\d), (\\d\\d):(\\d\\d):\\d\\d/\n let match;\n if (null !== (match = re.exec(loc))) {\n const [, day, month, year, hour, minute] = match;\n let baseIsoString = `${year}-${month}-${day}T${hour}:${minute}`;\n const baseEvent = new Date(Date.parse(baseIsoString + \"Z\"));\n const delta = (baseEvent - event)/3600000;\n let tzOffset = Math.trunc(delta);\n let minutes = Math.round((Math.abs(delta) - Math.abs(tzOffset))*60/100);\n if (tzOffset === 0) {\n return baseIsoString + \"Z\";\n }\n baseIsoString += (tzOffset >= 0) ? '+' : '-';\n baseIsoString += Math.abs(tzOffset).toString().padStart(2, \"0\") + \":\" + minutes.toString().padStart(2, \"0\");\n return baseIsoString;\n } else {\n throw new Error(`Can not convert ${isoString} to timeZone ${timeZone}`);\n }\n}\nexport const iso2FR = iso2TZ.bind(null, \"Europe/Paris\");\n\nconst rotSummary = (rot) => {\n // construct a summary (nights not repeated)\n // [YVR, YVR, PPT, PPT, YVR, YVR] => [YVR, PPT, YVR]\n const stopovers = rot.nights.reduce((accumulator, current) => {\n if (current !== accumulator[accumulator.length - 1]) {\n accumulator.push(current); // add a new entry\n }\n return accumulator;\n }, []);\n return [rot.dep, ...stopovers, rot.arr].join('-')\n .replace('-'+ CONTINUATION_MARK, CONTINUATION_MARK)\n .replace(CONTINUATION_MARK +'-', CONTINUATION_MARK);\n}\n\nexport const buildRots = (flights, {tzConverter, base, iataMap}) => {\n // Using parsed flights build up rots & places of stay\n \n //verify browser compatibility\n const converterTZ = tzConverter();\n try {\n new Date().toLocaleString(\"en-GB\", {\"timeZone\": converterTZ, \"timeZoneName\": \"short\"});\n } catch (e) {\n throw new Error(`Date.toLocaleString(\"en-GB\", {\"timeZone\": \"${converterTZ}\"}) not supported`);\n }\n const isBase = (iata) => (base.indexOf(iata)!== -1);\n let rots = [];\n let rot = null;\n let rotFlights;\n let rotStays;\n \n for (const [i, flightGMT] of flights.entries()) {\n const year = flightGMT.start.substring(0,4);\n const month = flightGMT.start.substring(5, 7);\n const flight = Object.assign({}, flightGMT);\n if (tzConverter) {\n Object.assign(flight, {\"start\": tzConverter(flightGMT.start), \"end\": tzConverter(flightGMT.end)});\n }\n if (rot === null) { //reset to a new rot\n rotFlights = [];\n rotStays = [];\n rot = {\"isComplete\": \"<>\", \"nights\": [], \"start\": flight.start};\n }\n if (i === 0 && ((isBase(flight.dep) && flight.stop === \"0,00\" && flightGMT.start.substring(8, 10) === \"01\") || !isBase(flight.dep))) {\n rot.isComplete = '>';\n if (!isBase(flight.dep)) { //stopovers from first day of month\n rot.start = `${year}-${month}-01T00:00Z`;\n if (tzConverter) rot.start = tzConverter(rot.start);\n const days = numberOfDays(rot.start, flight.start) + 1;\n for (let j=0; j0){\n rot.nights.push(flight.dep);\n }\n //other cases will be covered below\n }\n const nextFlight = (flights[i + 1]) ? Object.assign({}, flights[i + 1]) : undefined;\n if(tzConverter && nextFlight) {\n Object.assign(nextFlight, {\"start\": tzConverter(flights[i + 1].start), \"end\": tzConverter(flights[i + 1].end)});\n }\n if (nextFlight !== undefined) {\n const standbyHours = diffHours(flight.end, nextFlight.start);\n // on compte une nuit par jour civil en escale\n let standbyDays = 0;\n //First line was needed by 10 ON YVR PPT YVR in rots.test\n //To check if isBase test was needed, added 7ON SVO in straddling.test and it is.\n standbyDays += (numberOfDays(rot.start, flight.start) === 0 && isBase(flight.dep)) ? numberOfDays(flight.start, flight.end) : 0; // for flights straddling day on first day\n standbyDays += numberOfDays(flight.end, nextFlight.start);\n standbyDays += numberOfDays(nextFlight.start, nextFlight.end); // for flights like LAX-PPT\n standbyDays = Math.max(standbyDays, 1); // for single day rot\n if (standbyHours >= 7 && !isBase(flight.arr)) {\n //console.log(numberOfDays(flight.end, nextFlight.start), standbyHours, localDays, flight.arr);\n //escale hors base de plus de 7h\n for (let j=0; j= 12) {\n // Arrivée base, départ Base avec standby > 12h\n // will push new rot\n } else {\n rotFlights.push(flightGMT);\n continue; //do not push new rot yet\n }\n } else {\n // last flight of the month ending Base\n if (isBase(flight.arr)) {\n if (flight.end.substring(5,7) !== month) {\n // flight is accross civil month\n if (flightGMT.end.substring(11) === \"24:00Z\") {\n // uncomplete rot not ending at Base\n rot.isComplete = '<';\n // if flight continues after 24z, next day will be counted next month\n // so we need to adjust nights by omitting one\n rot.days = numberOfDays(rot.start, flight.end);\n }\n }\n // last flight, will push new rot\n } else {\n // last flight of the month NOT ending Base\n rot.isComplete = '<';\n const lastDay = lastDayInMonthISO(month, year) + \"T24:00Z\";\n if (tzConverter) {\n rot.end = tzConverter(lastDay);\n } else {\n rot.end = lastDay;\n }\n const days = numberOfDays(flight.end, rot.end) + 1;\n for (let j=0; j0) rotStays.push(flight.arr);\n }\n if (rot.end.substring(5,7) !== month) {\n // also adjust night count if flight.end is on current month\n if (flight.end.substring(5,7) === month){\n rot.nights.pop();\n }\n rot.days = numberOfDays(rot.start, rot.end); //omit one\n }\n // last flight, will push new rot\n }\n }\n rotFlights.push(flightGMT);\n if (rot.isComplete !== '<>') {\n rot.flights = rotFlights; // needed for merge\n rot.base = base;\n }\n // some defaults if not already set\n // a ||= b; only is ES2021 and node 15 <=> a || (a = b);\n rot.end || (rot.end = flight.end);\n rot.days|| (rot.days = numberOfDays(rot.start, rot.end) + 1); // 0 days <=> 1ON\n\n // construct a summary (nights not repeated)\n let dep = base[0];\n let arr = base[0];\n if (!rot.isComplete.startsWith('<')) {\n dep = CONTINUATION_MARK;\n } else if (rotFlights.length > 0) {\n dep = rotFlights[0].dep;\n }\n if (!rot.isComplete.endsWith('>')) {\n arr = CONTINUATION_MARK;\n } else if (rotFlights.length > 0) {\n arr = rotFlights[rotFlights.length - 1].arr;\n }\n rot.dep = dep;\n rot.arr = arr;\n rot.summary = rotSummary(rot);\n // adjust number of nights to match number of days\n const nightsCount = rot.nights.length;\n const missing = rot.days - nightsCount;\n const fillingNight = (rot.nights.length > 0) ? rot.nights[nightsCount - 1] : (dep !== CONTINUATION_MARK) ? dep : (arr !== CONTINUATION_MARK) ? arr : base[0];\n for (let j=0; j') {\n // We have to check if we can have a better night repartition\n [rot.nights,] = optimizeNightsRepartition(rot, rotStays);\n }\n \n //outOfBase is > 0 if rot have at least one stopover out of base\n //If not outOfBase, indemnities are zero so we reset nights\n const outOfBase = rotFlights.reduce((a, c) => a + ((!isBase(c.dep) || !isBase(c.arr)) ? 1 : 0), 0);\n if (outOfBase === 0) rot.nights = [];\n\n // add countries\n if (iataMap) rot.countries = rot.nights.map((iata) => iataMap(iata));\n //push rot and continue\n rots.push(rot);\n rot = null;\n }\n return rots\n};\n\nexport const optimizeNightsRepartition = (rot, stays) => {\n const nights = rot.nights;\n const countries = rot.countries; // optional\n if (Array.isArray(stays)) {\n const stayTuples = stays.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current === accumulator[index][0]) {\n accumulator[index][1] += 1;\n }else{\n accumulator.push([current, 1]); // add a new entry\n }\n return accumulator;\n }, []);\n const nightTuples = nights.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current === accumulator[index][0]) {\n accumulator[index][1] += 1;\n }else{\n accumulator.push([current, 1]); // add a new entry\n }\n return accumulator;\n }, []);\n // We look for rots with 2 stays and with indentical stay length\n // and with a diff of two nights\n if (stayTuples.length === 2 && stayTuples[0][1] === stayTuples[1][1] && nightTuples.length === 2 && (nightTuples[1][1] - nightTuples[0][1] === 2)){\n const optimized = [].concat(nights[0], ...nights.slice(0,-1));\n let optimizedCountries = countries; \n if (countries!== undefined) {\n optimizedCountries = [].concat(countries[0], ...countries.slice(0,-1));\n }\n console.log(`Optimisation des nuits sur ${rot.summary} du ${rot.start.substring(0,10).split('-').reverse().join('/')}\\n(conformément à l'exemple 13 du mémento fiscal)\\n${nights} -> ${optimized}`);\n return [optimized, optimizedCountries];\n }\n }\n return [nights, countries]; \n};\n\nexport const iata2country = (iata) => {\n const index = airportsData.indexOf(iata + ':');\n return (index >= 0) ? airportsData.substring(index + 4, index + 6): iata;\n}\n\n// Also we ensure at build time there is no possible errors\n// due to inconsistency between airportsData, countriesData and exrData,\n// we are still handling AmountError in findAmount* functions.\nclass AmountError extends Error {};\n\nexport const findAmountEuros = (countryData, isoDate, exrData) => {\n const [amount, currency] = findAmount(countryData, isoDate);\n const exr = exrData[currency];\n if (exr) {\n const rate = parseFloat(exr[2]);\n const euros = parseFloat((parseFloat(amount) / rate).toFixed(2));\n return euros;\n } else {\n throw new AmountError(`Taux de change inconnu pour ${currency}`);\n }\n};\n\nexport const findAmount = (countryData, isoDate) => {\n for (const [date, currency, amount] of countryData.a) {\n if (date.localeCompare(isoDate) <= 0) {\n return [amount, currency];\n }\n }\n if (countryData) {\n throw new AmountError(`Pas d'indemnité définie pour ${countryData.n} au ${isoDate}`);\n } else {\n throw new AmountError(`Indemnité manquante`);\n }\n};\n\nexport const addIndemnities = (taxYear, rots, taxData, tzConverter, fileName) => {\n const results = [];\n const countriesData = taxData.countries;\n const exrData = taxData.exr;\n const MC_REMOVAL = 0.5;\n const nextYear = (parseInt(taxYear, 10) + 1).toString();\n const previousYear = (parseInt(taxYear, 10) - 1).toString();\n for (const rot of rots) {\n let hasError = false;\n const indemnities = [];\n // check if we count all nights of if we have to substract 0.5\n let toRemove = MC_REMOVAL; // by default remove 0.5 night\n\n // Sum up the indemnities day by day in the rot\n let total = 0; // default is zero if it fails\n\n if (rot.nights.length === 0) {\n rot.formula = WITHIN_BASE_TEXT;\n } else if (rot.nights.length > rot.days || rot.countries.length > rot.days) {\n rot.formula = NIGHT_OVERFLOW_TEXT;\n rot.currencyFormula = 'Vérifiez le choix de la base';\n console.log(`%c${fileName}\\n%ctype [ep5] %cVérifiez la base`, 'font-family: monospace;', 'color: black;', 'color: red;');\n hasError = true;\n } else {\n // if at least one of the stopover is LC, count all nights\n for (const country of rot.countries) {\n const data = countriesData[country];\n if (data && data.z !== 1) {\n toRemove = 0;\n break;\n }\n }\n let taxStopCount = rot.countries.length; // taxStopCount is used to detect fiscal year truncate\n const taxStops = rot.countries.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current === accumulator[index][1]) {\n accumulator[index][0] += 1; // increase previous count\n }else{\n accumulator.push([1, current]); // add a new entry\n }\n return accumulator;\n }, []);\n let validTaxStops = []; // used to recompute the formula after filtering stops to the current taxYear\n let validTaxStopCount = 0; // validTaxStopCount is compared at the end with taxStopCount\n // Apply removal to taxStops if needed\n if (toRemove !== 0 && taxStops.length > 0){\n taxStops[taxStops.length - 1][0] -= toRemove; //performs removal\n taxStopCount -= toRemove;\n }\n\n // we need to find the date for each day of the rot\n // to cover the case where daily tax amount change\n let deltaDays = 0;\n for (const [count, country] of taxStops) {\n let validCount = count;\n let data = countriesData[country];\n if (data && data.f === 1) data = countriesData[\"EU\"]\n let amount = 0; // default is zero in case of error\n const countryIndemnities = []; // contains the extended formula with euro amounts\n if(data) {\n try {\n const stopIndemnities = []; // we need to reverse them after the loop\n // detects if we need to apply MC_REMOVAL (3 > 2.5)\n const doRemove = Math.ceil(count) > count;\n //The forloop is constructed so that when i=0 we are on the last days\n //This is simpler to filter data for taxYear\n for (let i=0; i') {\n //pass\n }else if (year === previousYear && rot.isComplete === '<') {\n //pass\n }else{\n validCount -= (i===0 && doRemove) ? MC_REMOVAL : 1;\n }\n deltaDays += 1;\n }\n validTaxStopCount += validCount;\n if (validCount >= 0) validTaxStops.push([validCount, country]);\n if(stopIndemnities.length > 0) countryIndemnities.push(...stopIndemnities.reverse());\n } catch (err) {\n hasError = true;\n if (err instanceof AmountError) {\n console.error(err.message);\n } else {\n console.error(err);\n }\n }\n } else {\n hasError = true;\n if (country.length === 2) {\n console.error(`Données pays manquantes pour ${country}`);\n } else {\n console.error(`Code IATA inconnu ${country}`);\n }\n }\n if(countryIndemnities.length > 0) {\n indemnities.push(countryIndemnities.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current[1] === accumulator[index][1]) {\n accumulator[index][0] += current[0]; // increase previous count\n }else{\n accumulator.push(current); // add a new entry\n }\n return accumulator;\n }, []));\n }\n total += amount;\n }\n validTaxStops = validTaxStops.reduce((a, c) => {\n if (c[0] > 0) {\n return a.concat([[localeFormat(c[0], {\"style\": \"decimal\", \"minFractionDigits\": 0, \"maxFractionDigits\": 1}), c[1]]]);\n }\n return a;\n }, []);\n rot.formula = validTaxStops.map(a => a.join(\" x \")).join(' + ');\n rot.formula += (!hasError && taxStopCount !== validTaxStopCount) ? REFNOTE1 : \"\";\n rot.formula += (hasError || taxStopCount < rot.days -MC_REMOVAL ) ? ` ${FORMULA_ERROR}` : \"\";\n // indemnities = [[[times, amount1Stop1],[times, amount2Stop1]], [[times, amount1Stop2]])\n const stops = [];\n for (const stop of indemnities) {\n const stopLocalized = stop.reduce((a, c) => {\n return a.concat([[localeFormat(c[0], {\"style\": \"decimal\", \"minFractionDigits\": 0, \"maxFractionDigits\": 1}), c[1]]]);\n }, []);\n const stopFormula = stopLocalized.map(a => a.join(' x ')).join(' + ');\n (stop.length > 1) ? stops.push(`(${stopFormula})`) : stops.push(stopFormula);\n }\n rot.currencyFormula = stops.join(' + ');\n if(validTaxStops.length <= 0 && taxStops.length !== 0 && !hasError) continue; // taxStops=0 => indemnity=0 and is valid for base only rots\n }\n rot.indemnity = (hasError) ? 0 : parseFloat(total.toFixed(2));\n rot.error = hasError;\n results.push(rot);\n }\n return results;\n}\n// ep5 iterable\nexport function* ep5Iterator(data){\n for (const m of months14) {\n const monthData = data[m];\n if (monthData) {\n yield* monthData.rots;\n }\n }\n};\n// in tests we use array to pass rots\nexport function* testIterator(data) {\n for (const a of data) {\n yield* a;\n }\n};\n\nexport const mergeFlights = (flights1, flights2) => {\n const f1 = [...flights1];\n const f2 = [...flights2];\n if (f2.length>0) {\n if (f2[0].stop==='0,00' && f1.length>0) {\n const flight2 = f2.shift();\n const flight1 = {...f1.pop()};\n flight1.end = flight2.end;\n return f1.concat(flight1, [...f2]);\n }\n }\n return f1.concat(f2);\n};\n//merge Rot without needing to copy the EP5 structure\nexport const mergeRots = (data, taxYear, taxData, tzConverter) => {\n const currentIt = Array.isArray(data) ? testIterator(data) : ep5Iterator(data);\n const nextIt = Array.isArray(data) ? testIterator(data) : ep5Iterator(data);\n nextIt.next();\n const mergedRots = [];\n for (const rot of currentIt) {\n const next = nextIt.next().value;\n if (next && rot.isComplete === '<' && next.isComplete === '>' && rot.end.substring(0, 7) === next.end.substring(0, 7)) {\n const [merged] = buildRots(mergeFlights(rot.flights, next.flights), {base:rot.base, tzConverter, \"iataMap\": iata2country});\n const [mergedWithIndemnities] = addIndemnities(taxYear,[merged], taxData, tzConverter);\n mergedRots.push(mergedWithIndemnities);\n // skip next\n currentIt.next();\n nextIt.next();\n } else {\n mergedRots.push(rot);\n }\n } \n return mergedRots;\n};\n\nexport const ep5Parser = (text, fileName, fileOrder, taxYear, taxData, base, tzConverter) => {\n const result = {\"type\": \"ep5\", fileName, fileOrder};\n const previousTaxYear = (parseInt(taxYear, 10) - 1).toString();\n const nextTaxYear = (parseInt(taxYear, 10) + 1).toString();\n let match;\n let pattern;\n let month;\n let year;\n // search EP5 Date like JANVIER 2020\n pattern = String.raw`\\s(${EP5MONTHS.join('|')})\\s+?(20\\d{2})`;\n const regex = new RegExp(pattern);\n if (null !== (match = regex.exec(text))) {\n const monthIndex = EP5MONTHS.indexOf(match[1]);\n month = (monthIndex + 1).toString(10).padStart(2, '0');\n year = match[2];\n }else{\n throw new Error(`EP5 parser: Date not found in ${fileName}`);\n }\n \n //search EP5 for flights\n if (month === \"01\" && year === nextTaxYear) {\n result.date = `${taxYear}-13`;\n }else if (month === \"12\" && year === previousTaxYear) {\n result.date = `${taxYear}-00`;\n } else {\n result.date = `${year}-${month}`;\n if ((year) !== taxYear) return result;\n }\n\n //0,00 T-77W GSQY 0 PEK 01 00,00 CDG 01 04,03\n //Ce pattern ne prend pas les simus\n //1 : temps d'arrêt précédent 0,00 si à cheval sur mois precedent\n //2 : type avion ou espace si mep\n //3 : immatriculation\n //4 : type activité (0)\n //5 : escale départ\n //6 : jour départ\n //7 : heure decimale tu départ (00,00 si début de mois)\n //8 : escale arrivée\n //9 : jour arrivée\n //10: heure decimale tu arrivée (24,00 si fin de mois et à cheval)\n pattern = /([0-9,]+)\\s(?:.{5})\\s{2}(?:\\S{4})\\s(?:.+?)\\s(\\S{3})\\s+(\\d+)\\s+([0-9,]+)\\s+(\\S{3})\\s+(\\d+)\\s+([0-9,]+)/g;\n const flights = [];\n while (null !== (match = pattern.exec(text))) {\n const [, stop, dep, depDay, depTime, arr, arrDay, arrTime] = match;\n flights.push({stop, dep, \"start\": `${year}-${month}-${depDay}T${ep5Time2iso(depTime)}`, arr, \"end\": `${year}-${month}-${arrDay}T${ep5Time2iso(arrTime)}`});\n }\n // in case of multiple EP5 pages, ensure flights are sorted by start date\n const sortedFlights = flights.sort((a, b) => a.start.localeCompare(b.start))\n let rots = buildRots(sortedFlights, {base, tzConverter, \"iataMap\": iata2country});\n rots = addIndemnities(taxYear, rots, taxData, tzConverter, fileName);\n result.rots = rots;\n return result;\n};","import { writable, readable, derived } from 'svelte/store';\nimport {iso2FR, mergeRots} from './parsers/ep5Parser';\n\nexport const BASES = [\n {label: \"Marseille\", selected: false, value: ['MRS'], tzConverter: iso2FR},\n {label: \"Nice\", selected: false, value: ['NCE'], tzConverter: iso2FR},\n {label: \"Paris\", selected: true, value: ['CDG', 'ORY'], tzConverter: iso2FR},\n {label: \"Toulouse\", selected: false, value: ['TLS'], tzConverter: iso2FR}\n].sort((a, b) => (a.label.localeCompare(b.label)));\n\nexport const DATASET = [\n {label: \"2024\", selected: false, url: `./data/data2023b.json`},\n {label: \"2023\", selected: true, url: `./data/data2023b.json`}, // see save method in makeData\n {label: \"2022\", selected: false, url: \"./data/data2022.json\"},\n {label: \"2021\", selected: false, url: \"./data/data2021.json\"},\n {label: \"2020\", selected: false, url: \"./data/data2020.json\"},\n {label: \"2019\", selected: false, url: \"./data/data2019.json\"},\n {label: \"2018\", selected: false, url: \"./data/data2018.json\"}\n].sort((a, b) => (b.label.localeCompare(a.label)));\n\nconst defaultYear = DATASET.filter(option => option.selected).pop().label;\nexport const base = writable(BASES.filter(option => option.selected).pop().value);\nexport const tzConverter = writable(BASES.filter(option => option.selected).pop().tzConverter);\n\nfunction resettable(resetValue) {\n const { subscribe, set, update } = writable(resetValue);\n return {\n subscribe,\n set,\n update,\n reset: () => set((typeof resetValue === 'object') ? {...resetValue} : Array.isArray(resetValue) ? [...resetValue] : resetValue)\n };\n}\n\nconst patchLog = () => {\n const { subscribe, set, update } = writable(new Array());\n const push = (store, type, values) => store.push({type, values });\n let nativeConsoleLog, nativeConsoleError;\n if (typeof window !== \"undefined\" && console) { // patch only in browser\n nativeConsoleLog = console.log;\n nativeConsoleError = console.error;\n }\n const newConsoleLog = function () {\n update((theStore) => {\n push(theStore, 'log', [...arguments]);\n return theStore;\n });\n if (nativeConsoleLog && console) nativeConsoleLog.apply(console, arguments);\n };\n const newConsoleError = function () {\n update((theStore) => {\n push(theStore, 'error', [...arguments]);\n return theStore;\n });\n if (nativeConsoleError && console) nativeConsoleError.apply(console, arguments);\n };\n if (typeof window !== \"undefined\" && console) {\n console.log = newConsoleLog;\n console.error = newConsoleError;\n }\n return {\n subscribe,\n 'log': newConsoleLog,\n 'error': newConsoleError,\n 'reset': () => set(new Array())\n }\n}\n\nexport const log = patchLog();\nfunction isRegisterEmpty () {\n return Object.keys(this).length === 2;\n}\nexport const ep5 = resettable({type: \"ep5\", isEmpty: isRegisterEmpty});\nexport const paySlips = resettable({type: \"pay\", isEmpty: isRegisterEmpty});\nexport const nuiteesInput = resettable();\nexport const nuiteesAF = resettable();\n\nconst empty = () => {\n ep5.reset();\n paySlips.reset();\n log.reset();\n nuiteesInput.reset();\n nuiteesAF.reset();\n}\n\nexport const taxYear = writable(defaultYear);\nexport const taxData = derived(taxYear, ($taxYear, set) => {\n //set(undefined);\n empty();\n fetch(DATASET.filter(option => option.label === $taxYear).pop().url)\n .then(res => res.json())\n .then(data => set(data));\n}, undefined);\n\nexport const pairings = derived(\n [ep5, taxYear, taxData, tzConverter],\n ([$ep5, $taxYear, $taxData, $tzConverter]) => {\n if ($taxData === undefined) return [];\n return mergeRots($ep5, $taxYear, $taxData, $tzConverter);\n }\n);\nexport const fraisDeMission = derived(pairings, $pairings => Object.values($pairings).reduce((a, c) => a + c.indemnity, 0).toFixed(0));\n\nexport const online = readable({}, set => {\n const update_network_status = () => {\n set(navigator.onLine);\n };\n\n if (\n (typeof navigator !== \"undefined\") &&\n 'onLine' in navigator\n ) {\n update_network_status();\n window.addEventListener('offline', update_network_status);\n window.addEventListener('online', update_network_status);\n } else {\n set(undefined);\n }\n\n return () => {\n if (\n (typeof navigator !== \"undefined\") &&\n 'onLine' in navigator\n ) {\n window.removeEventListener('offline', update_network_status);\n window.removeEventListener('online', update_network_status);\n }\n };\n});\n\nexport const swDismiss = writable(false);\nexport const wb = writable();\n\nlet swLastUpdateDate = new Date();\nexport const checkSWUpdate = () => {\n if ('serviceWorker' in navigator) {\n const timeout = ('process.env.NODE_ENV' !== '\"development\"') ? 1800000 /* 30 mn */ : 2000;\n if ((new Date() - swLastUpdateDate) > timeout) {\n navigator.serviceWorker.getRegistration().then(reg => {\n if (reg) {\n if (!reg.waiting) reg.update();\n swDismiss.set(false);\n swLastUpdateDate = new Date();\n }\n }, console.error);\n }\n }\n}\n\nexport const handleVisibilityChange = () =>{\n if (document && document.visibilityState && document.visibilityState === 'visible') {\n checkSWUpdate();\n }\n}\nexport const route = readable(null, set => {\n const hashchange = () => {\n set(window.location.hash.substr(1) || '/');\n checkSWUpdate();\n };\n hashchange();\n window.addEventListener('hashchange', hashchange);\n\n return () => {\n window.removeEventListener('hashchange', hashchange);\n };\n});\n","\n\n\n\n\n{#if $viewLog}\n
    \n
    \n
    Alertes reçues
    \n \n \n \n
    \n
    \n
      \n {#each $log as logEvent}\n {@html renderLogEvent(logEvent)}\n {/each}\n
    \n
    \n
    \n{/if}","\n\n
    \n
    \n
    {@html htmlLogo}
    \n {#await fontObserver then value}\n
    \n

    \n Simplifier les impôts des pilotes en respectant la confidentialité.\n

    \n

    —@flyingeek
    pilote de ligne

    \n
    \n {/await}\n
    \n\n
    \n \n \n \n \n \n \n \n \n\n
      \n
    1. Récupérez vos EP4/EP5 et vos bulletins de salaire sur MyPeopleDoc
    2. \n
    3. Choisissez l’année en haut à droite sur {@html htmlLogo}
    4. \n
    5. Déposez vos fichiers dans Frais de Mission\n ou dans Salaire
    6. \n
    \n\n
    \n \n \n \n \n

    Inutile de partager son calendrier ou d’envoyer des données sur Internet : {@html htmlLogo}\n fonctionne directement dans votre navigateur, aucun fichier n’est transmis sur le réseau, aucune donnée n’est collectée.

    \n
    \n \n \n \n \n \n \n
    \n

    Chaque année {@html htmlLogo} récupère les données à la source : le montant des indemnités provient du\n Ministère de l’Économie, les taux de change sont ceux de la Banque de France.

    \n

    Le programme en lui même inclus des tests permettant de fiabiliser les résultats\n et les erreurs détectées sont clairement affichées. Les exemples du Mémento fiscal du SNPL\n ont été utilisés pour tester et valider les résultats de l’application.

    \n
    \n
    \n
    \n
    \n\n\n","\n\n
    \n

    {@html htmlLogo} est une aide au calcul des frais professionels sous licence GPLv3.0

    \n

    Les PN restents seuls responsables face à l’administration pour justifier l’exactitude\n de leur déclaration\n

    \n
    \n\n","export default function (urls, test, callback) {\n let remaining = urls.length\n \n function maybeCallback () {\n remaining = --remaining\n if (remaining < 1) {\n callback()\n }\n }\n \n if (!test()) {\n urls.forEach(({ type, url, options = { async: true, defer: true }}) => {\n const isScript = type === 'script'\n const tag = document.createElement(isScript ? 'script': 'link')\n if (url.startsWith('http') || url.startsWith('//')){\n tag.crossOrigin = \"anonymous\";\n }\n let onload = true\n if (isScript) {\n tag.src = url\n tag.async = options.async\n tag.defer = options.defer\n } else {\n tag.href = url\n if ('prefetch' in options){\n tag.rel = \"prefetch\"\n remaining -= 1\n onload = false\n } else if ('preload' in options) {\n tag.rel = 'preload'\n remaining -= 1\n onload = false\n } else {\n tag.rel = 'stylesheet'\n remaining -= 1\n onload = false\n }\n }\n if (onload) tag.onload = maybeCallback\n document.body.appendChild(tag)\n })\n } else {\n callback()\n }\n }","\n// decimal is text string representing a float number with two decimals like \"123.45\"\n//\n// cents is a number used to compute sum of decimals without rounding problems\n// decimal \"123.45\" is cents 12345\n//\n\n// convert a text number to a decimal (accepts \"12345,67 or 12345.67 or 12 345.67)\n// forces 2 precision digits\n// returns a string\nexport const decimal = (text) => {\n const number = text.replace(',', '.').replace(' ', '');\n const [left, right] = number.split(\".\");\n return left + '.' + (right||\"00\").padEnd(2, \"0\");\n}\n// decimal to cents\n// returns a number\nexport const decimal2cents = (decimal) => {\n const [left, right] = decimal.split(\".\");\n return parseInt(left + (right||\"00\"), 10);\n}\n\n// cents to decimal\n// returns a string\nexport const cents2decimal = (cents) => {\n const centsString = cents.toString(10);\n const length = centsString.length;\n switch (length) {\n case 2:\n return '0.' + centsString;\n case 1:\n return '0.0' + centsString;\n default:\n return centsString.slice(0, -2) + '.' + centsString.slice(-2);\n }\n}\n\n// collect first group of all matches\n// returns Array of \"decimal\"\nconst matchAll = (text, re, bydefault) => {\n const results = [];\n let match;\n while(null !== (match = re.exec(text))) {\n results.push(decimal(match[1]));\n }\n const found = results.length;\n if (found > 0) {\n return results;\n } else if (bydefault === undefined) {\n throw new Error(`No match found for ${re}`);\n } else {\n return [bydefault];\n }\n};\n\n// returns first group of last match\n// Throws if no match found\n// returns string\nconst matchLast = (text, re, bydefault) => {\n let match;\n let lastMatch;\n while (null !== (match = re.exec(text))) {\n lastMatch = match;\n }\n if (lastMatch) return lastMatch[1];\n if (bydefault === undefined) {\n throw new Error(`No match found for ${re}`);\n } else {\n return bydefault;\n }\n};\n\nconst sum = (decimals) => cents2decimal(decimals.map(decimal2cents).reduce((a, b) => a + b));\n// Parse PaySlip\nexport const payParser = (text, fileName, fileOrder) => {\n //console.log(text);\n let result = {\"type\": \"pay\", fileName, fileOrder, errors: []};\n let re = /(?:IND\\.REPAS_+|INDEMNITE REPAS_+|IR\\.FIN ANNEE DOUBL_+|IR EXONEREES_+|IR NON EXONEREES_+)([\\-0-9, ]+)/g;\n result.repas = matchAll(text, re, \"0\").map(decimal);\n re = /(?:IND\\. TRANSPORT EXO_+|IND\\. TRANSPORT_+|FRAIS REELS TRANSP_+|R\\. FRAIS DE TRANSPORT_+)([\\-0-9, ]+)/g;\n result.transport = matchAll(text, re, \"0\").map(decimal);\n re = /(?:_I.DECOUCHERS F.PRO_+)([\\-0-9, ]+)/g;\n result.decouchers_fpro = matchAll(text, re, \"0\").map(decimal);\n try {\n const net = matchAll(text, /_Mensuel_[\\-0-9, ]+_{1,2}([\\-0-9, ]+)_/g);\n result.imposable = sum(net.map(decimal));\n if (net.length > 1) result.errors.push({\"type\": \"warning\", \"message\":\"Plusieurs bulletins de salaire trouvés\"});\n } catch (err) {\n result.errors.push({\"type\": \"error\", \"message\":\"Net imposable non trouvé\"});\n result.imposable = \"0\";\n }\n try {\n result.cumul = decimal(matchLast(text, /_Annuel_[\\-0-9, ]+_{1,2}([\\-0-9, ]+)_/g));\n } catch (err) {\n result.errors.push({\"type\": \"error\", \"msg\":\"Cumul Net imposable non trouvé\"});\n result.cumul = \"0\";\n }\n try {\n result.date = matchLast(text, /PERIODE DU \\d{2}\\/(\\d{2}\\/\\d{4})/g).split('/').reverse().join('-');\n if(result.date.endsWith(\"00\")) throw new Error(`Date invalide: ${result.date}`);\n } catch (err) {\n throw new Error(`Date non trouvée`);\n }\n return result;\n}\n","// returns first group of first match\n// Throws if no match found\n// returns string\nexport const matchFirst = (text, re, bydefault) => {\n let match;\n if (null !== (match = re.exec(text))) {\n return match[1];\n }\n if (bydefault === undefined) {\n throw new Error(`No match found for ${re}`);\n } else {\n return bydefault;\n }\n};\n\n// Parse Attestation de décompte des nuitées AF\nexport const nightsAFParser = (text, fileName, fileOrder, taxYear) => {\n let result = {\"type\": \"nights\", fileName, fileOrder, errors: []};\n let total;\n try {\n total = matchFirst(text, /compte s'élève à:\\s([\\-0-9,. ]+)\\sEuros/);\n total = parseFloat(total.replace(/\\s+/g, '').replace(',', '.'));\n }catch(err) {\n result.errors.push({\"type\": \"error\", \"message\":\"Montant des nuitées AF non trouvé\"})\n }\n result.total = total;\n result.date = taxYear;\n return result;\n};","import {payParser} from \"./payParser\";\nimport {ep5Parser, EP5MONTHS} from \"./ep5Parser\";\nimport {nightsAFParser} from \"./nightsAFParser\";\n\n// Based on PDF text content, performs task(s)\n// Return array of result\nexport const router = (text, fileName, fileOrder, taxYear, taxData, base, tzConverter) => {\n const results = [];\n if (text.match(/BULLETIN DE PAIE_(AIR FRANCE|BASE|DP GN)/)) {\n try {\n const result = payParser(text, fileName, fileOrder);\n if (result.errors) {\n for (const error of result.errors) {\n results.push({\"type\": error.type, \"msg\": error.message, fileName, fileOrder, \"content\": text});\n }\n }\n results.push(result);\n } catch (err) {\n results.push({\"type\": \"error\", \"msg\":`${err.message}`, fileName, fileOrder, \"content\": err});\n }\n }else{\n const isNuiteesAF = text.indexOf(`ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE ${taxYear}`) !== -1;\n if(text.indexOf('CARNET _DE _VOL _- _EP _5')!== -1) {\n if(isNuiteesAF) {\n results.push(nightsAFParser(text, fileName, fileOrder, taxYear));\n }else{\n results.push(ep5Parser(text, fileName, fileOrder, taxYear, taxData, base, tzConverter));\n }\n }else if(isNuiteesAF) {\n results.push(nightsAFParser(text, fileName, fileOrder, taxYear));\n }\n }\n if (results.length === 0) {\n if(text.indexOf(\"ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE \") !== -1) {\n results.push({\"type\": \"nuitées\", \"error\":`année ≠ ${taxYear}`, fileName, fileOrder, \"content\": text})\n } else if(text.indexOf('CARNET _DE _VOL _- _EP _5')=== -1){\n const pattern = String.raw`_EP\\s?_4.+?_(${EP5MONTHS.join('|')})\\s+?(20\\d{2})`;\n const regex = new RegExp(pattern);\n let match;\n if (null !== (match = regex.exec(text))) {\n const monthIndex = EP5MONTHS.indexOf(match[1]);\n const month = (monthIndex + 1).toString(10).padStart(2, '0');\n const year = match[2];\n const previousTaxYear = (parseInt(taxYear, 10) - 1).toString();\n const nextTaxYear = (parseInt(taxYear, 10) + 1).toString();\n if (year === taxYear || (month === \"01\" && year === nextTaxYear) || (month === \"12\" && year === previousTaxYear)) {\n results.push({\"type\": \"ep4\", \"warning\": `absence d'EP5`, fileName, fileOrder, \"content\": text});\n } else {\n results.push({\"type\": \"ep4\", \"date\": `${year}-${month}`, fileName, fileOrder, \"content\": text});\n }\n }else{\n results.push({\"type\": \"error\", \"msg\":\"fichier non reconnu\", fileName, fileOrder, \"content\": text});\n }\n }else{\n results.push({\"type\": \"error\", \"msg\":\"fichier non reconnu\", fileName, fileOrder, \"content\": text});\n }\n }\n return results;\n}\n","\n\n\n\n\n\n
    \n {#if false}{/if}\n dropzoneHasFocus = true}\n on:dragleave={() => dropzoneHasFocus = false}\n />\n \n\n
    \n","\n
    \n
    {nameLabel}
    \n
      \n {#each requestedMonths as [month, optional]}\n
    • {label(month)}
    • \n {/each}\n
    \n
    \n\n","\n\n{#if countriesData.length > 1}\n\n \n \n \n \n \n \n {#each countriesData as c}\n \n \n \n \n \n \n \n \n \n \n {/each}\n \n \n \n {#if countriesData.reduce((a,c) => a | c.official===false, false)}\n {#if $taxData.year === '2021'}\n \n {:else}\n \n {/if}\n {/if}\n \n
    Indemnités par pays {$taxData.year}
    PaysValiditéMontantTauxTauxTaux moyenMontant €Zone
    (à compter du)31/12/{parseInt($taxData.year, 10) - 1}31/12/{$taxData.year}
    {c.code}{(c.name.length <= 21) ? c.name : c.name.substring(0, 20) + '…'}{(c.official===false) ? \"²\" : \"\"}{localeDateFormat(c.validity)}{`${c.amount} ${c.currency}`}{localeRate(c.startRate)}{localeRate(c.endRate)}{localeRate(c.averageRate)}{localeCurrency(c.euros)}{c.zone}
    1. Le forfait Euro est appliqué dans ces pays: {$taxData.zoneForfaitEuro.join(', ')}
    2. Taux officiel non communiqué par la BNF, basé sur le taux du marché moyen de Xe.com.
    2. Taux officiel non communiqué par la BNF, basé sur le taux de currency-api.
    \n{/if}\n\n\n","\n\n{label}\n\n","\n\n{#if $pairings.length > 0}\n \n \n \n \n {#if $taxYear !== $taxData.year}\n \n {/if}\n \n \n \n {#each $pairings as rot}\n \n \n \n \n \n \n \n \n {/each}\n \n \n {#if $pairings.reduce((a,c) => a | c.formula.includes(REFNOTE1), false)}\n \n {/if}\n \n
    Frais de Mission {$taxYear} : {$fraisDeMission} €
    Attention les montants sont basés sur les données fiscales de {$taxData.year}
    DateTypeDescriptionFormuleMontant
    {rot.start.substring(8,10)}/{rot.start.substring(5,7)}{rot.days.toString().padStart(2, ' ')} ON{rot.summary}
    {rot.formula}{rot.currencyFormula}
    {localeCurrency(rot.indemnity)}
    1. formule tronquée pour respecter l'année fiscale
    \n \n{:else}\n
    \n \n \n \"exemple\n \n
    \n{/if}\n\n\n\n","\n
    \n
    \n
    \n \n
    \n \n \n
    \n Déposez vos EP5 dans la zone ou Cliquez\n
    \n
    \n \n
    \n
    \n \n
    \n {#if !$ep5.isEmpty()}{/if}\n
    \n","\n{#if !data.isEmpty()}\n\n{#if ($fraisDeMission > 0)}\n\n \n \n \n\n \n \n \n \n \n \n \n \n {#if $taxYear !== $taxData.year}\n \n {/if}\n\n\n \n \n \n \n \n\n\n \n {#if (fraisReels >= abbattement)}\n \n {:else}\n \n {/if}\n \n \n \n \n\n
    \n Comparatif {$taxYear}\n {#if (!$nuiteesInput || $nuiteesInput == nightsCostEstimate)}\n
    basé sur une estimation des nuitées à ±20%
    \n {/if}\n
    Nuitées AFFrais de Mission - Nuitées - Frais d’emploiAbattement de 10% plafonné
    Attention les montants sont basés sur les données fiscales de {$taxData.year}
    \n \n {$fraisDeMission} - {parseFloat($nuiteesAF || $nuiteesInput || nightsCostEstimate).toFixed(0)} - {parseFloat(totalFrais).toFixed(0)} = {fraisReels.toFixed(0)} €{abbattement.toFixed(0)} €
    Sans tenir compte de vos autres frais, vous serez déjà gagnant de {(fraisReels - abbattement).toFixed(0)} € en passant aux frais réels.Il faudra que vos autres frais atteignent {(abbattement - fraisReels).toFixed(0)} € pour qu'une déclaration aux frais réels soit plus avantageuse.
    {roadTripInformation}
    \n{:else}\n

    Merci de charger vos EP4/EP5 pour afficher le comparatif

    \n{/if}\n\n \n \n \n \n \n {#each months as month, i}\n \n \n \n \n \n \n \n {/each}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Détails des salaires {$taxYear}
    MoisMontant imposableCumul imposableFrais d’emploi ¹Découchers F PRO ²
    {monthsfr[i]}{(data[month]) ? localeCurrency(data[month].imposable) : \"\"}{(data[month]) ? localeCurrency(data[month].cumul) : \"\"}{(data[month]) ? localeCurrency(cents2decimal(sumFrais(month))) : \"\"}{(data[month]) ? localeCurrency(data[month].decouchers_fpro) : \"\"}
    Total{localeCurrency(totalImposable)}{localeCurrency(totalFrais)}{localeCurrency(totalDecouchersFPRO)}
    1. Les Frais d’emploi comprennent les lignes IND.REPAS, INDEMNITE REPAS, IR.FIN ANNEE DOUBL, IND. TRANSPORT, IND. TRANSPORT EXO, FRAIS REELS TRANSP, R. FRAIS DE TRANSPORT, IR EXONEREES, IR NON EXONEREES du bulletin de paye.
    2. Cette colonne reprend la ligne I.DECOUCHERS F.PRO, elle est utilisée pour l’estimation. Pour les impôts, c’est uniquement l’attestation des nuitées AF qui doit être prise en compte.
    \n{:else}\n
    \n \n \n \"exemple\n \n
    \n{/if}\n\n\n","\n
    \n
    \n
    \n
    \n \n
    \n Déposez vos bulletins dans la zone ou Cliquez\n
    \n
    \n , attestation de nuitées si disponible\n
    \n
    \n \n
    \n {#if !$paySlips.isEmpty()}{/if}\n
    \n","\n\n## Préambule\n\nCette application a été conçue pour le PilotPad. Elle nécessite des navigateurs récents pour fonctionner : Safari iOS13+/ Mac(Mojave/Catalina/Big Sur/Monterey), Firefox 86+, Chrome 87+ et Microsoft Edge 87+ sont compatibles.\nLes PDF utilisés ne transitent sur aucun serveur, tout est calculé localement dans votre navigateur. L’app ne collecte aucune donnée. Tout est __100 % SECURE__.\n\n## Objectifs\n\n__L'application ne gère pas l'article 81 A II qui se substitue pour les pilotes à cette méthode de calcul__\n\nCalculer rapidement, facilement, et sans partage de données :\n\n- le décompte des frais de mission, conformément à la méthodologie et aux conventions de calcul du SNPL\n- les frais d’emploi des PN qui doivent s’ajouter aux revenus\n- une estimation du montant des nuitées payées par AF\n- la différence entre (Frais de Mission - Nuitées - Frais d’emploi) et un abattement de 10 % plafonné\n\n__{@html htmlLogo}__ fonctionne aussi pour les pilotes basés en province. (lire au préalable \"Choix de la base\").\n\n## Utilisation sur l'iPad\n\nSur MyPeopleDoc, commencez par sélectionner les bulletins de salaire de l'année N, et les ep4-ep5 de décembre N-1 à février N+1. Puis, en cliquant sur téléchargement, vous recevrez un lien par email. Dans votre dossier de téléchargement sur l'iPad, cliquez sur l'archive téléchargée, elle va se décompresser. Ensuite, après avoir vérifié que l'année N est bien sélectionnée en haut à droite de __{@html htmlLogo}__, deux solutions:\n\n- Soit, vous cliquez dans la zone de la page Frais de Mission ou de la page Salaire, puis vous choisissez le dossier des fichiers décompressés, puis vous cliquez sur \"Sélectionner\", puis \"Tout select.\" et enfin, \"Ouvrir\"\n- Soit, vous utilisez le mode Slide Over, ou le mode SplitView, avec l'application Fichiers, et vous faites glisser le dossier des fichiers décompressés dans la zone de la page Frais de Mission ou de la page Salaire\n\nSi vous le souhaitez, l’application peut être installée sur l’écran d’accueil du PilotPad via le menu « partage » de Safari. (comme OFP2MAP).\n\n## Utilisation de manière plus générale\n\n- Les PDF mensuels sont symbolisés par des carrés numérotés. Un PDF manquant est rouge, un PDF optionnel est bleu, un PDF chargé est vert.\n- Vous pouvez glisser-déposer un dossier ou des fichiers\n- Vous pouvez déposer les PDF indifféremment sur la page Salaire ou la page Frais de mission\n- Le symbole ▶ signale des informations additionnelles accessibles soit au survol de la souris, soit en cliquant sur la ligne\n- Changer d’année fiscale efface les résultats\n- __flytax.fr__ (plus simple à mémoriser et à partager) redirige vers __{@html htmlLogo}__ mais est bloqué sur le réseau AF\n- __{@html htmlLogo}__ peut fonctionner en mode déconnecté\n\nEn cas d’anomalie, le pictogramme apparaîtra en haut à droite, le cliquer affichera les détails. Si un message d’erreur apparaissait dans la table des résultats, merci de me contacter.\n\n- L'alerte \"absence d'EP5\" est normale sur les fichiers ep4-ep5 de régularisation ou les mois sans vols (lire la rubrique \"Activités sol/simulateur & QT\"). Un mois sans vol reste bleu\n- L'erreur \"fichier non reconnu\" est normale pour un PDF ne contenant ni un bulletin de salaire, ni un EP5, ni une attestation de nuitées\n- En cas de message \"Erreur: nuitées > nb de jours\", si vous êtes basé en province, assurez-vous d'avoir lu la rubrique \"Choix de la base\"\n\n__Avertissement :__ L’application est une aide au calcul des frais professionels sous licence GPLv3.0, les PN restents seuls responsables face à l’administration pour justifier l’exactitude de leur déclaration.\n\n## Attestation des nuitées AF\n\nAir France fournit cette attestation dans l’EP4 de février de l'année n + 1, mais un correctif est susceptible d’être diffusé jusqu’en avril dans un fichier annexe. En attendant ce document, __{@html htmlLogo}__ estime le montant ce qui permet de donner un ordre de grandeur. L’estimation utilise la colonne Découchers F PRO et elle est modifiable. Une fois votre attestation reçue, vous pouvez soit indiquer son montant directement, soit glisser l’attestation dans la zone de dépôt. Merci pour vos retours concernant la fiabilité de l’estimation.\n\n## Choix de la base\n\nLa base peut être modifiée chaque mois : on choisit une base, on dépose les EP5 de cette base ;\non change de base et l’on peut déposer les EP5 pour cette nouvelle base. En cas d’erreur, il est possible de changer de base et de recharger les EP5.\n\nLe choix de la base se fait au-dessus de la zone de dépôt sur la page Frais de mission.\n\n## Activités sol/simulateur & QT\n\nLes activités sol/simulateur à la base ne peuvent pas faire l'objet de déduction forfaitaire, elles ne sont donc pas décomptées dans les frais de mission.\n\nLes activités sol/simulateur hors de la base d'affectation pourraient être décomptées forfaitairement, néanmoins elles ne rentrent pas explicitement dans le cadre d'application de l'accord de la DLF, et elles ne sont donc pas décomptées par __{@html htmlLogo}__. Je vous renvoie au mémento du SNPL pour plus d'informations.\n\n## Mise à jour\n\n__{@html htmlLogo}__ se met à jour automatiquement. Éventuellement, un popup peut\napparaître 👨🏻‍✈️ vous demandant d’autoriser cette mise à jour. Installer la mise à jour efface les résultats.\nSi jamais le popup restait à l'écran, il faudrait rafraichir la page ⟳.\n\n## Données fiscales\n\nSur GitHub vous trouverez les liens vers les barèmes au format csv et tsv (Excel/Numbers) mais aussi\nles données json. En installant le code source sur votre ordinateur, vous pourrez générer ces fichiers. Lors\nde la compilation de l’application, les API de la Banque de France et des impôts sont utilisées.\n\n- Arrêté de 2006 fixant les taux des indemnités de mission\n- La lettre de la DLF sur FraisPN (webarchive)\n- L’annexe à lettre de la DLF sur FraisPN (webarchive)\n\n## Crédits\n\n- airportsdata de Mike Borsetti (permet de lier un code IATA à un pays)\n- __{@html htmlLogo}__ est développé en JavaScript à l’aide du framework SVELTE\n- Éric Delord, CDB 777, est l’auteur. Le code source est disponible sur GitHub. L'application est sous licence GPLv3.0, et l’article 15 précise : THERE IS NO WARRANTY FOR THE PROGRAM.\n\nVous pouvez me contacter sur l’email AF (erdelord@…), ou sur mon compte Twitter @flyingeek, ou sur le groupe Teams/MyConcorde. Si vous rencontrez un problème, merci de m'adresser le PDF concerné par mail.\n\n## Liens\n\n- OFP2MAP cartographie pour l'OFP (même auteur)\n","\n\n\n
      \n{#each filterChangeLog(data, {version, limit}) as [title, section]}\n {#if title !== \"raw\"}\n
    • \n {#if title.match(versionDateRegex)}\n

      {@html title2html(title)}

      \n {:else}\n

      {title}

      \n {/if}\n {#each Object.entries(section) as [category, content]}\n {#if category !== \"raw\"}\n {#each content.raw.replace(/^\\n\\n|\\n\\n$/, '').split('\\n') as item}\n
      {@html parseMarkdown(item).replace(/^-\\s/g, `- ${_(category)}`).replace(/^(\\s+)-/g, (chn, pl) => ' '.repeat('pl'.length) + '▫︎')}
      \n {/each}\n {:else}\n
      {@html parseMarkdown(content).trim()}
      \n {/if}\n {/each}\n
    • \n {/if}\n{/each}\n
    \n\n","/** Dispatch event on click outside of node */\nexport default function clickOutside(node) {\n //console.log('click outside installed')\n const handleClick = event => {\n if (node && !node.contains(event.target) && !event.defaultPrevented) {\n node.dispatchEvent(\n new CustomEvent('click_outside', node)\n )\n //console.log('click outside')\n }\n }\n\n document.addEventListener('click', handleClick, true);\n\n return {\n destroy() {\n document.removeEventListener('click', handleClick, true);\n //console.log('click outside removed')\n }\n }\n}","\n\n{#if visible}\n
    \n
    \n
    \n
    \n
    {title}
    \n \n
    \n
    \n {#await promise}\n

    chargement...

    \n {:then data}\n \n {/await}\n
    \n
    \n
    \n
    \n
    \n{/if}\n\n","\n\n\n
    \n
    \n

    {@html htmlLogo} v{version} \n $wb.update()}>/ ServiceWorker : {swVersion}\n {#if $wb}{#await $wb.active then ok}/ mode déconnecté disponible{/await}{/if}\n {#if navigator.standalone === true || 'process.env.NODE_ENV' === '\"development\"'}\n {#if (navigator.share || 'process.env.NODE_ENV' === '\"development\"')}{/if}\n \n {/if}\n \n

    \n \n
    \n
    \n

    Alert Icon via Wikimedia Commons

    \n

    Other Icons made by Freepik from www.flaticon.com

    \n
    \n
    \n\n","\n","\n\n\n","\n\n\n{#if (($route !== '/' || $majorUpdate) && $swUpdated && !$swDismiss && $ep5.isEmpty() && $paySlips.isEmpty())}\n
    \n
    \n
    \n 👨🏻‍✈️Mise à jour détectée\n
    \n
    \n \n
    \n
    \n
    {install(($route === '/') ? 2000 : 700) || ''}\n{:else if $swUpdated && !$swDismiss && (!$ep5.isEmpty() || !$paySlips.isEmpty())}\n
    \n
    \n 👨🏻‍✈️Mise à jour disponible\n \n
    \n
    \n \n
    \n
    \n{:else if !$swUpdated && isAppUpdated()}\n \n{/if}\n\n","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n{#if $route === '/'}\n\n{:else if $route === '/mission'}\n\n{:else if $route === '/pay'}\n\n{:else if $route === '/help'}\n\n{:else}\n\n{ window.location.hash = '#/'}\n{/if}\n\n","try{self[\"workbox:window:6.2.4\"]&&_()}catch(n){}function n(n,t){return new Promise((function(r){var e=new MessageChannel;e.port1.onmessage=function(n){r(n.data)},n.postMessage(t,[e.port2])}))}function t(n,t){for(var r=0;rn.length)&&(t=n.length);for(var r=0,e=new Array(t);r=n.length?{done:!0}:{done:!1,value:n[i++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(e=n[Symbol.iterator]()).next.bind(e)}try{self[\"workbox:core:6.2.4\"]&&_()}catch(n){}var i=function(){var n=this;this.promise=new Promise((function(t,r){n.resolve=t,n.reject=r}))};function o(n,t){var r=location.href;return new URL(n,r).href===new URL(t,r).href}var u=function(n,t){this.type=n,Object.assign(this,t)};function a(n,t,r){return r?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function c(){}var f={type:\"SKIP_WAITING\"};function s(n,t){if(!t)return n&&n.then?n.then(c):Promise.resolve()}var v=function(r){var e,c;function v(n,t){var e,c;return void 0===t&&(t={}),(e=r.call(this)||this).nn={},e.tn=0,e.rn=new i,e.en=new i,e.on=new i,e.un=0,e.an=new Set,e.cn=function(){var n=e.fn,t=n.installing;e.tn>0||!o(t.scriptURL,e.sn.toString())||performance.now()>e.un+6e4?(e.vn=t,n.removeEventListener(\"updatefound\",e.cn)):(e.hn=t,e.an.add(t),e.rn.resolve(t)),++e.tn,t.addEventListener(\"statechange\",e.ln)},e.ln=function(n){var t=e.fn,r=n.target,i=r.state,o=r===e.vn,a={sw:r,isExternal:o,originalEvent:n};!o&&e.mn&&(a.isUpdate=!0),e.dispatchEvent(new u(i,a)),\"installed\"===i?e.wn=self.setTimeout((function(){\"installed\"===i&&t.waiting===r&&e.dispatchEvent(new u(\"waiting\",a))}),200):\"activating\"===i&&(clearTimeout(e.wn),o||e.en.resolve(r))},e.dn=function(n){var t=e.hn,r=t!==navigator.serviceWorker.controller;e.dispatchEvent(new u(\"controlling\",{isExternal:r,originalEvent:n,sw:t,isUpdate:e.mn})),r||e.on.resolve(t)},e.gn=(c=function(n){var t=n.data,r=n.ports,i=n.source;return a(e.getSW(),(function(){e.an.has(i)&&e.dispatchEvent(new u(\"message\",{data:t,originalEvent:n,ports:r,sw:i}))}))},function(){for(var n=[],t=0;t
    '\n + 'FLYTAX a besoin de navigateurs récents: Safari 14 iOS/Mac, Firefox 86, Chrome 87 et Microsoft Edge 87 sont compatibles.

    '\n + 'Contactez moi sur l\\'email AF (erdelord@...) en me donnant le message d\\'erreur.'\n );\n document.body.appendChild(content);\n }catch(e){} /* catch all here we can not interrupt the startup sequence */ \n}finally{\n // we always register the serviceWorker to be able to unregister it\n // or to force skipWaiting and page reload\n // this way as soon as a new serviceWorker fix the problem, the page will load\n if ('serviceWorker' in navigator) {\n const workbox = new Workbox('./sw.js');\n wb.set(workbox);\n workbox.addEventListener('installed', (event) => {\n if (!event.isUpdate) {\n //console.log('Service worker installed for the first time!');\n }else{\n //console.log('Updated Service worker installed');\n }\n //console.debug('Updated Service worker installed ', event.isUpdate, event.isExternal)\n });\n workbox.addEventListener('activated', (event) => {\n // `event.isUpdate` will be true if another version of the service\n // worker was controlling the page when this version was registered.\n if (!event.isUpdate) {\n //console.log('Service worker activated for the first time!');\n // If your service worker is configured to precache assets, those\n // assets should all be available now.\n // we should be able to remove clients.claim call in sw.js\n // but for now we have both...\n workbox.messageSW({ type: 'CLIENTS_CLAIM' });\n }else{\n //console.log('Updated Service worker activated');\n }\n if (event.isExternal) {\n console.warn('External Service worker activated');\n //window.location.reload();\n }\n });\n workbox.addEventListener('waiting', (event) => {\n //console.log(`A new service worker has installed, but it can't activate` +\n // ` until all tabs running the current version have fully unloaded.`);\n if (appError) {\n workbox.addEventListener('controlling', () => {\n console.warn('main.js: appError reload');\n window.location.reload();\n });\n workbox.messageSkipWaiting();\n }else{\n if (event.isExternal) {\n console.warn('External Service worker waiting');\n }\n promiseTimeout(400, messageSW(event.sw,{type: 'GET_VERSION'}))\n .then(v => showSkipWaitingPrompt(v))\n .catch(e => {\n console.warn(\"SW GET_VERSION:\", e);\n showSkipWaitingPrompt();\n });\n }\n });\n workbox.register().then(reg => {\n if (appError && reg) reg.unregister();\n swRegistration.set(reg);\n //console.debug(reg);\n }, console.error);\n }\n}\n\nexport default app;"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","subscribe","store","callbacks","unsub","unsubscribe","component_subscribe","component","callback","$$","on_destroy","push","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","slice","get_slot_changes","dirty","lets","undefined","merged","len","Math","max","length","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","p","get_all_dirty_from_scope","compute_rest_props","props","keys","rest","Set","has","set_store_value","ret","value","set","action_destroyer","action_result","destroy","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","run_tasks","task","c","delete","f","size","loop","promise","Promise","fulfill","add","abort","append","target","node","appendChild","get_root_for_style","document","root","getRootNode","ownerDocument","host","append_empty_stylesheet","style_element","element","style","head","append_stylesheet","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","d","name","createElement","svg_element","createElementNS","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","attr","attribute","removeAttribute","getAttribute","setAttribute","set_attributes","attributes","descriptors","getOwnPropertyDescriptors","__proto__","key","cssText","to_number","set_data","wholeText","set_input_value","input","set_style","important","setProperty","select_option","select","option","__value","selected","toggle_class","toggle","classList","custom_event","type","detail","bubbles","e","createEvent","initCustomEvent","HtmlTag","constructor","n","html","h","m","nodeName","t","innerHTML","Array","from","childNodes","active_docs","current_component","active","create_rule","duration","delay","ease","uid","step","keyframes","rule","str","hash","charCodeAt","doc","stylesheet","__svelte_stylesheet","sheet","current_rules","__svelte_rules","insertRule","cssRules","animation","delete_rule","previous","split","next","filter","anim","indexOf","deleted","join","deleteRule","clear","set_current_component","get_current_component","Error","onMount","on_mount","bubble","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","add_render_callback","flushing","seen_callbacks","flush","update","pop","fragment","before_update","after_update","wait","then","dispatch","direction","kind","dispatchEvent","outroing","outros","group_outros","r","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","running","cleanup","go","easing","tick","css","start_time","end_time","started","start","invalidate","end","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","abs","group","handle_promise","info","token","index","resolved","child_ctx","current","needs_flush","blocks","mount","error","catch","hasCatch","pending","create_component","mount_component","customElement","new_on_destroy","map","destroy_component","make_dirty","fill","instance","create_fragment","not_equal","append_styles","parent_component","bound","on_disconnect","context","Map","skip_bound","ready","hydrate","nodes","children","l","SvelteComponent","$destroy","$on","splice","$set","$$props","obj","$$set","includes","styles","v","trim","title","levels","updates","to_null_out","accounted_for","href","startsWith","rel","$$restProps","result","Deferred","reject","htmlLogo","navigatorLocale","navigator","languages","Intl","DateTimeFormat","supportedLocalesOf","NumberFormat","shift","months","months14","monthsfr","localeFormat","numberOrString","res","format","replace","numberValue","parseFloat","toFixed","maximumFractionDigits","currency","minimumFractionDigits","toString","localeCurrency","digits","localeRate","localeDateFormat","isoString","fakeUTCDate","parse","substring","opts","timezone","promiseTimeout","ms","timeout","id","setTimeout","clearTimeout","race","semverCompare","pa","pb","na","Number","nb","isNaN","shareAppLink","async","shareData","url","location","pathname","share","err","cubicOut","fade","linear","getComputedStyle","opacity","fly","y","target_opacity","transform","od","u","subscriber_queue","readable","writable","stop","subscribers","new_value","run_queue","subscriber","derived","stores","initial_value","single","isArray","stores_array","auto","inited","values","sync","unsubscribers","CONTINUATION_MARK","EP5MONTHS","ep5Time2iso","hours","cs","padStart","numberOfDays","startISO","endISO","diff","floor","iso2FR","timeZone","deltaDays","setUTCDate","getUTCDate","loc","toLocaleString","match","exec","day","month","year","hour","minute","baseIsoString","delta","tzOffset","trunc","minutes","round","bind","rotSummary","rot","stopovers","nights","reduce","accumulator","dep","arr","buildRots","flights","tzConverter","base","iataMap","converterTZ","timeZoneName","isBase","iata","rotFlights","rotStays","rots","flightGMT","entries","flight","isComplete","days","j","nextFlight","standbyHours","standbyDays","lastDay","yString","mString","parseInt","endsWith","summary","nightsCount","missing","fillingNight","nightInFlight","optimizeNightsRepartition","countries","stays","stayTuples","nightTuples","optimized","concat","optimizedCountries","console","log","reverse","iata2country","airportsData","AmountError","findAmountEuros","countryData","isoDate","exrData","amount","findAmount","exr","rate","date","localeCompare","addIndemnities","taxYear","taxData","fileName","results","countriesData","MC_REMOVAL","nextYear","previousYear","hasError","indemnities","toRemove","total","formula","currencyFormula","country","z","taxStopCount","taxStops","validTaxStops","validTaxStopCount","count","validCount","countryIndemnities","stopIndemnities","doRemove","ceil","euros","message","minFractionDigits","maxFractionDigits","stops","stopFormula","indemnity","ep5Iterator","monthData","testIterator","mergeFlights","flights1","flights2","f1","f2","flight2","flight1","BASES","label","sort","DATASET","defaultYear","resettable","resetValue","reset","nativeConsoleLog","nativeConsoleError","newConsoleLog","theStore","arguments","apply","newConsoleError","patchLog","isRegisterEmpty","ep5","isEmpty","paySlips","nuiteesInput","nuiteesAF","$taxYear","fetch","json","pairings","$ep5","$taxData","$tzConverter","currentIt","nextIt","mergedRots","mergedWithIndemnities","mergeRots","fraisDeMission","$pairings","update_network_status","onLine","swDismiss","wb","swLastUpdateDate","checkSWUpdate","serviceWorker","getRegistration","reg","waiting","handleVisibilityChange","visibilityState","route","hashchange","substr","viewLog","text2html","renderText","describe","prototype","logEvent","lenght","markerCount","changeStyleColor","renderStyledText","$viewLog","scrollTop","scrollHeight","fontObserver","fonts","load","urls","test","remaining","maybeCallback","defer","isScript","tag","crossOrigin","onload","body","decimal","number","left","right","padEnd","decimal2cents","cents2decimal","cents","centsString","matchAll","re","bydefault","matchLast","lastMatch","payParser","fileOrder","errors","repas","transport","decouchers_fpro","net","imposable","decimals","cumul","msg","nightsAFParser","matchFirst","router","content","isNuiteesAF","previousTaxYear","nextTaxYear","pattern","String","raw","RegExp","depDay","depTime","arrDay","arrTime","sortedFlights","ep5Parser","warning","acceptedType","pdfWorker","seqOrder","preloadFiles","getPageText","pdf","pageNo","separator","page","getPage","getTextContent","items","disabled","dropzoneHasFocus","preload","loader","pdfjsLib","GlobalWorkerOptions","workerSrc","destroyed","PDFWorker","verbosity","Warning","getPDF","file","reader","FileReader","ev","source","pdfPages","getDocument","maxPages","numPages","pageText","getPDFText","worker","onerror","readAsArrayBuffer","processFiles","files","promises","basename","batchPaySlips","batchEp5","$base","$nuiteesAF","afterLoad","all","getEntriesAsAsyncIterator","dirEntry","createReader","readEntries","entry","isFile","fileAsPromise","dataTransfer","item","webkitGetAsEntry","isDirectory","isFirefox","userAgent","nameLabel","computeNameLabel","requested","prev","requestedMonths","dat","tz","requestedMonthsDefault","computeRequestedMonths","zoneForfaitEuro","code","official","validity","startRate","endRate","averageRate","zone","tableId","getCountriesData","list","sortedList","getData","amounts","preloadFiles2","filename","tableIds","fontName","ok","blob","jsPDF","API","events","addFileToVFS","addFont","readAsBinaryString","statusText","stopPropagation","table","getElementById","querySelectorAll","innerText","jspdf","orientation","autoTable","font","useCss","showHead","showFoot","pageBreak","includeHiddenHtml","download","Blob","output","URL","revokeObjectURL","createObjectURL","remove","tableIndemnitiesId","sumFrais","real","estimated","totalFrais","computeTotalFrais","totalImposable","computeTotalImposable","cumulImposable12","abbattement","maxForfait10","min","totalDecouchersFPRO","computeTotalDecouchersFPRO","estimateRatio","nightsCostEstimate","$nuiteesInput","fraisReels","$fraisDeMission","roadTripInformation","OUT","IN","get","to","roadTrips","standalone","versionDateRegex","title2html","parseMarkdown","badgeColor","_","filterChangeLog","version","limit","filtered","CHANGELOG","markdownText","translation","ADDED","FIXED","DEPRECATED","CHANGED","REMOVED","SECURITY","toUpperCase","badgeColors","category","chn","pl","repeat","clickOutside","handleClick","contains","defaultPrevented","CustomEvent","visible","createEventDispatcher","show","response","modal","swVersion","_wb","$wb","messageSW","reload","$swDismiss","selected_option","querySelector","setAttributeNS","swUpdated","swRegistration","majorUpdate","showSkipWaitingPrompt","nextVersion","cParts","nParts","isPatchUpdate","previousAppVersionKey","installLabel","getPreviousAppVersion","sessionStorage","getItem","install","refreshing","debug","$swRegistration","setItem","postMessage","removeItem","self","MessageChannel","port1","onmessage","port2","Symbol","iterator","done","TypeError","s","nn","tn","rn","en","on","un","an","cn","installing","scriptURL","sn","vn","hn","ln","state","sw","isExternal","originalEvent","mn","isUpdate","wn","dn","controller","gn","ports","getSW","w","register","immediate","readyState","Boolean","yn","pn","bn","once","wasWaitingBeforeRegister","messageSkipWaiting","enumerable","configurable","defineProperty","Pn","Sn","appError","App","workbox","Workbox","warn","unregister","app"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../src/components/FlagSignifier.svelte","../../src/components/Link.svelte","../../src/components/utils.js","../../node_modules/svelte/easing/index.mjs","../../node_modules/svelte/transition/index.mjs","../../node_modules/svelte/store/index.mjs","../../src/parsers/ep5Parser.js","../../src/stores.js","../../src/components/LogWindow.svelte","../../src/pages/HomePage.svelte","../../src/components/Disclaimer.svelte","../../src/components/async-script-loader.js","../../src/parsers/payParser.js","../../src/parsers/nightsAFParser.js","../../src/parsers/router.js","../../src/components/DropZone.svelte","../../src/components/MonthStatus.svelte","../../src/components/MissionCountries.svelte","../../src/components/DownloadTablePDF.svelte","../../src/components/MissionActivities.svelte","../../src/pages/MissionPage.svelte","../../src/components/PayTable.svelte","../../src/pages/PayPage.svelte","../../src/pages/Help.md","../../src/components/ChangeLog.svelte","../../src/actions/clickOutsideAction.js","../../src/components/ChangeLogModal.svelte","../../src/pages/HelpPage.svelte","../../src/components/TaxYearSelect.svelte","../../src/components/Navbar.svelte","../../src/components/SWUpdate.svelte","../../src/App.svelte","../../node_modules/workbox-window/build/workbox-window.prod.es5.mjs","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root.host) {\n return root;\n }\n return document;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element(nodes, name, attributes, svg) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => svg ? svg_element(name) : element(name));\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration();\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, bubbles = false) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor() {\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes) {\n super();\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = append_empty_stylesheet(node).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : context || []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : options.context || []),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.42.1' }, detail), true));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","\n\n
    {#if false}{/if}\n \n \n
    \n
    \n

    {title}

    \n
    \n
    \n \n
    \n\n\n","\n\n","export class Deferred {\n constructor() {\n this.promise = new Promise((resolve, reject)=> {\n this.reject = reject\n this.resolve = resolve\n })\n }\n}\nexport const htmlLogo = 'FlyTax';\nexport const navigatorLocale = (typeof navigator !== \"undefined\" && navigator.languages) ? Array.from(Intl.DateTimeFormat.supportedLocalesOf(Intl.NumberFormat.supportedLocalesOf(navigator.languages))).shift() : undefined;\nexport const months = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'];\nexport const months14 = ['00', ...months, '13'];\nexport const monthsfr = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];\nexport const localeFormat = (numberOrString, options={}) => {\n if (navigatorLocale !== undefined) {\n const res = new Intl.NumberFormat(navigatorLocale, options).format(numberOrString);\n if (options.style === 'currency') return res.replace(/\\s/gu, '\\u202f');\n return res;\n } else {\n const numberValue = (numberOrString.toFixed) ? numberOrString : parseFloat(numberOrString);\n if (options.style==='currency') {\n return numberValue.toFixed(options.maximumFractionDigits||2) + \"\\u202f\" + options.currency;\n }else{\n return (options.maximumFractionDigits===undefined || options.maximumFractionDigits !== options.minimumFractionDigits) ? numberValue.toString(): numberValue.toFixed(options.maximumFractionDigits);\n }\n }\n}\nexport const localeCurrency = (value, digits=2) => localeFormat(value, {\"style\": \"currency\", \"currency\": \"EUR\", \"minimumFractionDigits\": digits});\nexport const localeRate = (value) => localeFormat(value, {\"style\": \"decimal\", \"minimumFractionDigits\": 4, \"maximumFractionDigits\": 4});\nexport const localeDateFormat = (isoString, options={}) => {\n if (navigatorLocale !== undefined) {\n const fakeUTCDate = new Date(Date.parse(isoString.substring(0, 10) + \"T00:00Z\"));\n const opts = Object.assign({\"timezone\": \"UTC\"}, options);\n return new Intl.DateTimeFormat(navigatorLocale, opts).format(fakeUTCDate);\n } else {\n return isoString.substring(0, 10);\n }\n}\nexport const promiseTimeout = function(ms, promise){\n // Create a promise that rejects in milliseconds\n let timeout = new Promise((resolve, reject) => {\n let id = setTimeout(() => {\n clearTimeout(id);\n reject('Timed out in '+ ms + 'ms.')\n }, ms)\n });\n // Returns a race between our timeout and the passed in promise\n return Promise.race([\n promise,\n timeout\n ]);\n}\nexport const isPatchUpdate = (current, next) => {\n const cParts = current.split('.');\n const nParts = next.split('.');\n return cParts.slice(0, -1).join('.') === nParts.slice(0, -1).join('.');\n}\n//semver-compare\nexport const semverCompare = (a, b) => {\n let pa = a.split('.');\n let pb = b.split('.');\n for (var i = 0; i < 3; i++) {\n let na = Number(pa[i]);\n let nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n return 0;\n};\n\nexport const shareAppLink = async () => {\n const shareData = {\n 'title': 'FLYTAX',\n 'url': window.location.pathname\n };\n try {\n await navigator.share(shareData)\n } catch(err) {\n //console.log(err);\n }\n return false;\n}","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n const len = node.getTotalLength();\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","import airportsData from \"../../data/airports.json\";\nimport {localeFormat, months14} from \"../components/utils\";\n\nexport const WITHIN_BASE_TEXT = \"rotation sur base\";\nexport const NIGHT_OVERFLOW_TEXT = \"Erreur: nuitées > nb de jours\";\nexport const CONTINUATION_MARK = \"...\";\nexport const REFNOTE1 = \"\\u202f¹\";\nexport const FORMULA_ERROR = \"!ERREUR!\"\n//months as written in EP5\nexport const EP5MONTHS = ['JANVIER', 'FEVRIER', 'MARS', 'AVRIL', 'MAI', 'JUIN', 'JUILLET', 'AOUT', 'SEPTEMBRE', 'OCTOBRE', 'NOVEMBRE', 'DECEMBRE'];\n\n//converts EP5 time hh,dd to hh:mmZ\n//returns a string\nexport const ep5Time2iso = (text) => {\n const [hours, cs] = text.split(\",\");\n const minutes = (parseFloat(cs) * 0.6).toFixed(0).padStart(2, '0');\n return `${hours}:${minutes}Z`;\n}\n\n//https://stackoverflow.com/questions/222309/calculate-last-day-of-month-in-javascript\n//months must be 1 based (1->12)\nconst getDaysInMonth = (m, y) => {\n return m===2 ? y & 3 || !(y%25) && y & 15 ? 28 : 29 : 30 + (m+(m>>3)&1);\n}\n\nexport const lastDayInMonthISO = (mString, yString) => {\n const day = getDaysInMonth(parseInt(mString, 10), parseInt(yString, 10));\n // 28<=day<=31, so no paddding needed\n return `${yString}-${mString}-${day}`;\n}\n\n//return intervals between to ISO dates, in hours and in days\nexport const numberOfDays = (startISO, endISO) => {\n const diff = Date.parse(endISO.replace(\"24:00\", \"23:59\")) - Date.parse(startISO.replace(/\\d\\d:\\d\\d/, \"00:00\"));\n return Math.floor(diff/ 86400000);\n};\nexport const diffHours = (startISO, endISO) => {\n return (Date.parse(endISO) - Date.parse(startISO)) / 3600000;\n};\n\n// Converts timezone\n// 2020-11-01T00:00Z -> 2020-11-01+01:00 for \"Europe/Paris\"\n// 2020-11-01T00:00+01:00 -> 2020-11-01+01:00 for \"Europe/Paris\"\nexport const iso2TZ = (timeZone, isoString, deltaDays=0) => {\n if (isoString === undefined) return timeZone; // This is used in buildRots to check browser compatibility\n let event = new Date(Date.parse(isoString));\n if (deltaDays) event.setUTCDate(event.getUTCDate() + deltaDays);\n // British English uses day/month/year order and 24-hour time without AM/PM\n const loc = event.toLocaleString(\"en-GB\", {timeZone});\n const re = /(\\d\\d)\\/(\\d\\d)\\/(\\d\\d\\d\\d), (\\d\\d):(\\d\\d):\\d\\d/\n let match;\n if (null !== (match = re.exec(loc))) {\n const [, day, month, year, hour, minute] = match;\n let baseIsoString = `${year}-${month}-${day}T${hour}:${minute}`;\n const baseEvent = new Date(Date.parse(baseIsoString + \"Z\"));\n const delta = (baseEvent - event)/3600000;\n let tzOffset = Math.trunc(delta);\n let minutes = Math.round((Math.abs(delta) - Math.abs(tzOffset))*60/100);\n if (tzOffset === 0) {\n return baseIsoString + \"Z\";\n }\n baseIsoString += (tzOffset >= 0) ? '+' : '-';\n baseIsoString += Math.abs(tzOffset).toString().padStart(2, \"0\") + \":\" + minutes.toString().padStart(2, \"0\");\n return baseIsoString;\n } else {\n throw new Error(`Can not convert ${isoString} to timeZone ${timeZone}`);\n }\n}\nexport const iso2FR = iso2TZ.bind(null, \"Europe/Paris\");\n\nconst rotSummary = (rot) => {\n // construct a summary (nights not repeated)\n // [YVR, YVR, PPT, PPT, YVR, YVR] => [YVR, PPT, YVR]\n const stopovers = rot.nights.reduce((accumulator, current) => {\n if (current !== accumulator[accumulator.length - 1]) {\n accumulator.push(current); // add a new entry\n }\n return accumulator;\n }, []);\n return [rot.dep, ...stopovers, rot.arr].join('-')\n .replace('-'+ CONTINUATION_MARK, CONTINUATION_MARK)\n .replace(CONTINUATION_MARK +'-', CONTINUATION_MARK);\n}\n\nexport const buildRots = (flights, {tzConverter, base, iataMap}) => {\n // Using parsed flights build up rots & places of stay\n \n //verify browser compatibility\n const converterTZ = tzConverter();\n try {\n new Date().toLocaleString(\"en-GB\", {\"timeZone\": converterTZ, \"timeZoneName\": \"short\"});\n } catch (e) {\n throw new Error(`Date.toLocaleString(\"en-GB\", {\"timeZone\": \"${converterTZ}\"}) not supported`);\n }\n const isBase = (iata) => (base.indexOf(iata)!== -1);\n let rots = [];\n let rot = null;\n let rotFlights;\n let rotStays;\n \n for (const [i, flightGMT] of flights.entries()) {\n const year = flightGMT.start.substring(0,4);\n const month = flightGMT.start.substring(5, 7);\n const flight = Object.assign({}, flightGMT);\n if (tzConverter) {\n Object.assign(flight, {\"start\": tzConverter(flightGMT.start), \"end\": tzConverter(flightGMT.end)});\n }\n if (rot === null) { //reset to a new rot\n rotFlights = [];\n rotStays = [];\n rot = {\"isComplete\": \"<>\", \"nights\": [], \"start\": flight.start};\n }\n if (i === 0 && ((isBase(flight.dep) && flight.stop === \"0,00\" && flightGMT.start.substring(8, 10) === \"01\") || !isBase(flight.dep))) {\n rot.isComplete = '>';\n if (!isBase(flight.dep)) { //stopovers from first day of month\n rot.start = `${year}-${month}-01T00:00Z`;\n if (tzConverter) rot.start = tzConverter(rot.start);\n const days = numberOfDays(rot.start, flight.start) + 1;\n for (let j=0; j0){\n rot.nights.push(flight.dep);\n }\n //other cases will be covered below\n }\n const nextFlight = (flights[i + 1]) ? Object.assign({}, flights[i + 1]) : undefined;\n if(tzConverter && nextFlight) {\n Object.assign(nextFlight, {\"start\": tzConverter(flights[i + 1].start), \"end\": tzConverter(flights[i + 1].end)});\n }\n if (nextFlight !== undefined) {\n const standbyHours = diffHours(flight.end, nextFlight.start);\n // on compte une nuit par jour civil en escale\n let standbyDays = 0;\n //First line was needed by 10 ON YVR PPT YVR in rots.test\n //To check if isBase test was needed, added 7ON SVO in straddling.test and it is.\n standbyDays += (numberOfDays(rot.start, flight.start) === 0 && isBase(flight.dep)) ? numberOfDays(flight.start, flight.end) : 0; // for flights straddling day on first day\n standbyDays += numberOfDays(flight.end, nextFlight.start);\n standbyDays += numberOfDays(nextFlight.start, nextFlight.end); // for flights like LAX-PPT\n standbyDays = Math.max(standbyDays, 1); // for single day rot\n if (standbyHours >= 7 && !isBase(flight.arr)) {\n //console.log(numberOfDays(flight.end, nextFlight.start), standbyHours, localDays, flight.arr);\n //escale hors base de plus de 7h\n for (let j=0; j= 12) {\n // Arrivée base, départ Base avec standby > 12h\n // will push new rot\n } else {\n rotFlights.push(flightGMT);\n continue; //do not push new rot yet\n }\n } else {\n // last flight of the month ending Base\n if (isBase(flight.arr)) {\n if (flight.end.substring(5,7) !== month) {\n // flight is accross civil month\n if (flightGMT.end.substring(11) === \"24:00Z\") {\n // uncomplete rot not ending at Base\n rot.isComplete = '<';\n // if flight continues after 24z, next day will be counted next month\n // so we need to adjust nights by omitting one\n rot.days = numberOfDays(rot.start, flight.end);\n }\n }\n // last flight, will push new rot\n } else {\n // last flight of the month NOT ending Base\n rot.isComplete = '<';\n const lastDay = lastDayInMonthISO(month, year) + \"T24:00Z\";\n if (tzConverter) {\n rot.end = tzConverter(lastDay);\n } else {\n rot.end = lastDay;\n }\n const days = numberOfDays(flight.end, rot.end) + 1;\n for (let j=0; j0) rotStays.push(flight.arr);\n }\n if (rot.end.substring(5,7) !== month) {\n // also adjust night count if flight.end is on current month\n if (flight.end.substring(5,7) === month){\n rot.nights.pop();\n }\n rot.days = numberOfDays(rot.start, rot.end); //omit one\n }\n // last flight, will push new rot\n }\n }\n rotFlights.push(flightGMT);\n if (rot.isComplete !== '<>') {\n rot.flights = rotFlights; // needed for merge\n rot.base = base;\n }\n // some defaults if not already set\n // a ||= b; only is ES2021 and node 15 <=> a || (a = b);\n rot.end || (rot.end = flight.end);\n rot.days|| (rot.days = numberOfDays(rot.start, rot.end) + 1); // 0 days <=> 1ON\n\n // construct a summary (nights not repeated)\n let dep = base[0];\n let arr = base[0];\n if (!rot.isComplete.startsWith('<')) {\n dep = CONTINUATION_MARK;\n } else if (rotFlights.length > 0) {\n dep = rotFlights[0].dep;\n }\n if (!rot.isComplete.endsWith('>')) {\n arr = CONTINUATION_MARK;\n } else if (rotFlights.length > 0) {\n arr = rotFlights[rotFlights.length - 1].arr;\n }\n rot.dep = dep;\n rot.arr = arr;\n rot.summary = rotSummary(rot);\n // adjust number of nights to match number of days\n const nightsCount = rot.nights.length;\n const missing = rot.days - nightsCount;\n const fillingNight = (rot.nights.length > 0) ? rot.nights[nightsCount - 1] : (dep !== CONTINUATION_MARK) ? dep : (arr !== CONTINUATION_MARK) ? arr : base[0];\n for (let j=0; j') {\n // We have to check if we can have a better night repartition\n [rot.nights,] = optimizeNightsRepartition(rot, rotStays);\n }\n \n //outOfBase is > 0 if rot have at least one stopover out of base\n //If not outOfBase, indemnities are zero so we reset nights\n const outOfBase = rotFlights.reduce((a, c) => a + ((!isBase(c.dep) || !isBase(c.arr)) ? 1 : 0), 0);\n if (outOfBase === 0) rot.nights = [];\n\n // add countries\n if (iataMap) rot.countries = rot.nights.map((iata) => iataMap(iata));\n //push rot and continue\n rots.push(rot);\n rot = null;\n }\n return rots\n};\n\nexport const optimizeNightsRepartition = (rot, stays) => {\n const nights = rot.nights;\n const countries = rot.countries; // optional\n if (Array.isArray(stays)) {\n const stayTuples = stays.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current === accumulator[index][0]) {\n accumulator[index][1] += 1;\n }else{\n accumulator.push([current, 1]); // add a new entry\n }\n return accumulator;\n }, []);\n const nightTuples = nights.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current === accumulator[index][0]) {\n accumulator[index][1] += 1;\n }else{\n accumulator.push([current, 1]); // add a new entry\n }\n return accumulator;\n }, []);\n // We look for rots with 2 stays and with indentical stay length\n // and with a diff of two nights\n if (stayTuples.length === 2 && stayTuples[0][1] === stayTuples[1][1] && nightTuples.length === 2 && (nightTuples[1][1] - nightTuples[0][1] === 2)){\n const optimized = [].concat(nights[0], ...nights.slice(0,-1));\n let optimizedCountries = countries; \n if (countries!== undefined) {\n optimizedCountries = [].concat(countries[0], ...countries.slice(0,-1));\n }\n console.log(`Optimisation des nuits sur ${rot.summary} du ${rot.start.substring(0,10).split('-').reverse().join('/')}\\n(conformément à l'exemple 13 du mémento fiscal)\\n${nights} -> ${optimized}`);\n return [optimized, optimizedCountries];\n }\n }\n return [nights, countries]; \n};\n\nexport const iata2country = (iata) => {\n const index = airportsData.indexOf(iata + ':');\n return (index >= 0) ? airportsData.substring(index + 4, index + 6): iata;\n}\n\n// Also we ensure at build time there is no possible errors\n// due to inconsistency between airportsData, countriesData and exrData,\n// we are still handling AmountError in findAmount* functions.\nclass AmountError extends Error {};\n\nexport const findAmountEuros = (countryData, isoDate, exrData) => {\n const [amount, currency] = findAmount(countryData, isoDate);\n const exr = exrData[currency];\n if (exr) {\n const rate = parseFloat(exr[2]);\n const euros = parseFloat((parseFloat(amount) / rate).toFixed(2));\n return euros;\n } else {\n throw new AmountError(`Taux de change inconnu pour ${currency}`);\n }\n};\n\nexport const findAmount = (countryData, isoDate) => {\n for (const [date, currency, amount] of countryData.a) {\n if (date.localeCompare(isoDate) <= 0) {\n return [amount, currency];\n }\n }\n if (countryData) {\n throw new AmountError(`Pas d'indemnité définie pour ${countryData.n} au ${isoDate}`);\n } else {\n throw new AmountError(`Indemnité manquante`);\n }\n};\n\nexport const addIndemnities = (taxYear, rots, taxData, tzConverter, fileName) => {\n const results = [];\n const countriesData = taxData.countries;\n const exrData = taxData.exr;\n const MC_REMOVAL = 0.5;\n const nextYear = (parseInt(taxYear, 10) + 1).toString();\n const previousYear = (parseInt(taxYear, 10) - 1).toString();\n for (const rot of rots) {\n let hasError = false;\n const indemnities = [];\n // check if we count all nights of if we have to substract 0.5\n let toRemove = MC_REMOVAL; // by default remove 0.5 night\n\n // Sum up the indemnities day by day in the rot\n let total = 0; // default is zero if it fails\n\n if (rot.nights.length === 0) {\n rot.formula = WITHIN_BASE_TEXT;\n } else if (rot.nights.length > rot.days || rot.countries.length > rot.days) {\n rot.formula = NIGHT_OVERFLOW_TEXT;\n rot.currencyFormula = 'Vérifiez le choix de la base';\n console.log(`%c${fileName}\\n%ctype [ep5] %cVérifiez la base`, 'font-family: monospace;', 'color: black;', 'color: red;');\n hasError = true;\n } else {\n // if at least one of the stopover is LC, count all nights\n for (const country of rot.countries) {\n const data = countriesData[country];\n if (data && data.z !== 1) {\n toRemove = 0;\n break;\n }\n }\n let taxStopCount = rot.countries.length; // taxStopCount is used to detect fiscal year truncate\n const taxStops = rot.countries.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current === accumulator[index][1]) {\n accumulator[index][0] += 1; // increase previous count\n }else{\n accumulator.push([1, current]); // add a new entry\n }\n return accumulator;\n }, []);\n let validTaxStops = []; // used to recompute the formula after filtering stops to the current taxYear\n let validTaxStopCount = 0; // validTaxStopCount is compared at the end with taxStopCount\n // Apply removal to taxStops if needed\n if (toRemove !== 0 && taxStops.length > 0){\n taxStops[taxStops.length - 1][0] -= toRemove; //performs removal\n taxStopCount -= toRemove;\n }\n\n // we need to find the date for each day of the rot\n // to cover the case where daily tax amount change\n let deltaDays = 0;\n for (const [count, country] of taxStops) {\n let validCount = count;\n let data = countriesData[country];\n if (data && data.f === 1) data = countriesData[\"EU\"]\n let amount = 0; // default is zero in case of error\n const countryIndemnities = []; // contains the extended formula with euro amounts\n if(data) {\n try {\n const stopIndemnities = []; // we need to reverse them after the loop\n // detects if we need to apply MC_REMOVAL (3 > 2.5)\n const doRemove = Math.ceil(count) > count;\n //The forloop is constructed so that when i=0 we are on the last days\n //This is simpler to filter data for taxYear\n for (let i=0; i') {\n //pass\n }else if (year === previousYear && rot.isComplete === '<') {\n //pass\n }else{\n validCount -= (i===0 && doRemove) ? MC_REMOVAL : 1;\n }\n deltaDays += 1;\n }\n validTaxStopCount += validCount;\n if (validCount >= 0) validTaxStops.push([validCount, country]);\n if(stopIndemnities.length > 0) countryIndemnities.push(...stopIndemnities.reverse());\n } catch (err) {\n hasError = true;\n if (err instanceof AmountError) {\n console.error(err.message);\n } else {\n console.error(err);\n }\n }\n } else {\n hasError = true;\n if (country.length === 2) {\n console.error(`Données pays manquantes pour ${country}`);\n } else {\n console.error(`Code IATA inconnu ${country}`);\n }\n }\n if(countryIndemnities.length > 0) {\n indemnities.push(countryIndemnities.reduce((accumulator, current) => {\n const index = accumulator.length - 1;\n if (index > -1 && current[1] === accumulator[index][1]) {\n accumulator[index][0] += current[0]; // increase previous count\n }else{\n accumulator.push(current); // add a new entry\n }\n return accumulator;\n }, []));\n }\n total += amount;\n }\n validTaxStops = validTaxStops.reduce((a, c) => {\n if (c[0] > 0) {\n return a.concat([[localeFormat(c[0], {\"style\": \"decimal\", \"minFractionDigits\": 0, \"maxFractionDigits\": 1}), c[1]]]);\n }\n return a;\n }, []);\n rot.formula = validTaxStops.map(a => a.join(\" x \")).join(' + ');\n rot.formula += (!hasError && taxStopCount !== validTaxStopCount) ? REFNOTE1 : \"\";\n rot.formula += (hasError || taxStopCount < rot.days -MC_REMOVAL ) ? ` ${FORMULA_ERROR}` : \"\";\n // indemnities = [[[times, amount1Stop1],[times, amount2Stop1]], [[times, amount1Stop2]])\n const stops = [];\n for (const stop of indemnities) {\n const stopLocalized = stop.reduce((a, c) => {\n return a.concat([[localeFormat(c[0], {\"style\": \"decimal\", \"minFractionDigits\": 0, \"maxFractionDigits\": 1}), c[1]]]);\n }, []);\n const stopFormula = stopLocalized.map(a => a.join(' x ')).join(' + ');\n (stop.length > 1) ? stops.push(`(${stopFormula})`) : stops.push(stopFormula);\n }\n rot.currencyFormula = stops.join(' + ');\n if(validTaxStops.length <= 0 && taxStops.length !== 0 && !hasError) continue; // taxStops=0 => indemnity=0 and is valid for base only rots\n }\n rot.indemnity = (hasError) ? 0 : parseFloat(total.toFixed(2));\n rot.error = hasError;\n results.push(rot);\n }\n return results;\n}\n// ep5 iterable\nexport function* ep5Iterator(data){\n for (const m of months14) {\n const monthData = data[m];\n if (monthData) {\n yield* monthData.rots;\n }\n }\n};\n// in tests we use array to pass rots\nexport function* testIterator(data) {\n for (const a of data) {\n yield* a;\n }\n};\n\nexport const mergeFlights = (flights1, flights2) => {\n const f1 = [...flights1];\n const f2 = [...flights2];\n if (f2.length>0) {\n if (f2[0].stop==='0,00' && f1.length>0) {\n const flight2 = f2.shift();\n const flight1 = {...f1.pop()};\n flight1.end = flight2.end;\n return f1.concat(flight1, [...f2]);\n }\n }\n return f1.concat(f2);\n};\n//merge Rot without needing to copy the EP5 structure\nexport const mergeRots = (data, taxYear, taxData, tzConverter) => {\n const currentIt = Array.isArray(data) ? testIterator(data) : ep5Iterator(data);\n const nextIt = Array.isArray(data) ? testIterator(data) : ep5Iterator(data);\n nextIt.next();\n const mergedRots = [];\n for (const rot of currentIt) {\n const next = nextIt.next().value;\n if (next && rot.isComplete === '<' && next.isComplete === '>' && rot.end.substring(0, 7) === next.end.substring(0, 7)) {\n const [merged] = buildRots(mergeFlights(rot.flights, next.flights), {base:rot.base, tzConverter, \"iataMap\": iata2country});\n const [mergedWithIndemnities] = addIndemnities(taxYear,[merged], taxData, tzConverter);\n mergedRots.push(mergedWithIndemnities);\n // skip next\n currentIt.next();\n nextIt.next();\n } else {\n mergedRots.push(rot);\n }\n } \n return mergedRots;\n};\n\nexport const ep5Parser = (text, fileName, fileOrder, taxYear, taxData, base, tzConverter) => {\n const result = {\"type\": \"ep5\", fileName, fileOrder};\n const previousTaxYear = (parseInt(taxYear, 10) - 1).toString();\n const nextTaxYear = (parseInt(taxYear, 10) + 1).toString();\n let match;\n let pattern;\n let month;\n let year;\n // search EP5 Date like JANVIER 2020\n pattern = String.raw`\\s(${EP5MONTHS.join('|')})\\s+?(20\\d{2})`;\n const regex = new RegExp(pattern);\n if (null !== (match = regex.exec(text))) {\n const monthIndex = EP5MONTHS.indexOf(match[1]);\n month = (monthIndex + 1).toString(10).padStart(2, '0');\n year = match[2];\n }else{\n throw new Error(`EP5 parser: Date not found in ${fileName}`);\n }\n \n //search EP5 for flights\n if (month === \"01\" && year === nextTaxYear) {\n result.date = `${taxYear}-13`;\n }else if (month === \"12\" && year === previousTaxYear) {\n result.date = `${taxYear}-00`;\n } else {\n result.date = `${year}-${month}`;\n if ((year) !== taxYear) return result;\n }\n\n //0,00 T-77W GSQY 0 PEK 01 00,00 CDG 01 04,03\n //Ce pattern ne prend pas les simus\n //1 : temps d'arrêt précédent 0,00 si à cheval sur mois precedent\n //2 : type avion ou espace si mep\n //3 : immatriculation\n //4 : type activité (0)\n //5 : escale départ\n //6 : jour départ\n //7 : heure decimale tu départ (00,00 si début de mois)\n //8 : escale arrivée\n //9 : jour arrivée\n //10: heure decimale tu arrivée (24,00 si fin de mois et à cheval)\n pattern = /([0-9,]+)\\s(?:.{5})\\s{2}(?:\\S{4})\\s(?:.+?)\\s(\\S{3})\\s+(\\d+)\\s+([0-9,]+)\\s+(\\S{3})\\s+(\\d+)\\s+([0-9,]+)/g;\n const flights = [];\n while (null !== (match = pattern.exec(text))) {\n const [, stop, dep, depDay, depTime, arr, arrDay, arrTime] = match;\n flights.push({stop, dep, \"start\": `${year}-${month}-${depDay}T${ep5Time2iso(depTime)}`, arr, \"end\": `${year}-${month}-${arrDay}T${ep5Time2iso(arrTime)}`});\n }\n // in case of multiple EP5 pages, ensure flights are sorted by start date\n const sortedFlights = flights.sort((a, b) => a.start.localeCompare(b.start))\n let rots = buildRots(sortedFlights, {base, tzConverter, \"iataMap\": iata2country});\n rots = addIndemnities(taxYear, rots, taxData, tzConverter, fileName);\n result.rots = rots;\n return result;\n};","import { writable, readable, derived } from 'svelte/store';\nimport {iso2FR, mergeRots} from './parsers/ep5Parser';\n\nexport const BASES = [\n {label: \"Marseille\", selected: false, value: ['MRS'], tzConverter: iso2FR},\n {label: \"Nice\", selected: false, value: ['NCE'], tzConverter: iso2FR},\n {label: \"Paris\", selected: true, value: ['CDG', 'ORY'], tzConverter: iso2FR},\n {label: \"Toulouse\", selected: false, value: ['TLS'], tzConverter: iso2FR}\n].sort((a, b) => (a.label.localeCompare(b.label)));\n\nexport const DATASET = [\n {label: \"2024\", selected: false, url: `./data/data2023b.json`},\n {label: \"2023\", selected: true, url: `./data/data2023b.json`}, // see save method in makeData\n {label: \"2022\", selected: false, url: \"./data/data2022.json\"},\n {label: \"2021\", selected: false, url: \"./data/data2021.json\"},\n {label: \"2020\", selected: false, url: \"./data/data2020.json\"},\n {label: \"2019\", selected: false, url: \"./data/data2019.json\"},\n {label: \"2018\", selected: false, url: \"./data/data2018.json\"}\n].sort((a, b) => (b.label.localeCompare(a.label)));\n\nconst defaultYear = DATASET.filter(option => option.selected).pop().label;\nexport const base = writable(BASES.filter(option => option.selected).pop().value);\nexport const tzConverter = writable(BASES.filter(option => option.selected).pop().tzConverter);\n\nfunction resettable(resetValue) {\n const { subscribe, set, update } = writable(resetValue);\n return {\n subscribe,\n set,\n update,\n reset: () => set((typeof resetValue === 'object') ? {...resetValue} : Array.isArray(resetValue) ? [...resetValue] : resetValue)\n };\n}\n\nconst patchLog = () => {\n const { subscribe, set, update } = writable(new Array());\n const push = (store, type, values) => store.push({type, values });\n let nativeConsoleLog, nativeConsoleError;\n if (typeof window !== \"undefined\" && console) { // patch only in browser\n nativeConsoleLog = console.log;\n nativeConsoleError = console.error;\n }\n const newConsoleLog = function () {\n update((theStore) => {\n push(theStore, 'log', [...arguments]);\n return theStore;\n });\n if (nativeConsoleLog && console) nativeConsoleLog.apply(console, arguments);\n };\n const newConsoleError = function () {\n update((theStore) => {\n push(theStore, 'error', [...arguments]);\n return theStore;\n });\n if (nativeConsoleError && console) nativeConsoleError.apply(console, arguments);\n };\n if (typeof window !== \"undefined\" && console) {\n console.log = newConsoleLog;\n console.error = newConsoleError;\n }\n return {\n subscribe,\n 'log': newConsoleLog,\n 'error': newConsoleError,\n 'reset': () => set(new Array())\n }\n}\n\nexport const log = patchLog();\nfunction isRegisterEmpty () {\n return Object.keys(this).length === 2;\n}\nexport const ep5 = resettable({type: \"ep5\", isEmpty: isRegisterEmpty});\nexport const paySlips = resettable({type: \"pay\", isEmpty: isRegisterEmpty});\nexport const nuiteesInput = resettable();\nexport const nuiteesAF = resettable();\n\nconst empty = () => {\n ep5.reset();\n paySlips.reset();\n log.reset();\n nuiteesInput.reset();\n nuiteesAF.reset();\n}\n\nexport const taxYear = writable(defaultYear);\nexport const taxData = derived(taxYear, ($taxYear, set) => {\n //set(undefined);\n empty();\n fetch(DATASET.filter(option => option.label === $taxYear).pop().url)\n .then(res => res.json())\n .then(data => set(data));\n}, undefined);\n\nexport const pairings = derived(\n [ep5, taxYear, taxData, tzConverter],\n ([$ep5, $taxYear, $taxData, $tzConverter]) => {\n if ($taxData === undefined) return [];\n return mergeRots($ep5, $taxYear, $taxData, $tzConverter);\n }\n);\nexport const fraisDeMission = derived(pairings, $pairings => Object.values($pairings).reduce((a, c) => a + c.indemnity, 0).toFixed(0));\n\nexport const online = readable({}, set => {\n const update_network_status = () => {\n set(navigator.onLine);\n };\n\n if (\n (typeof navigator !== \"undefined\") &&\n 'onLine' in navigator\n ) {\n update_network_status();\n window.addEventListener('offline', update_network_status);\n window.addEventListener('online', update_network_status);\n } else {\n set(undefined);\n }\n\n return () => {\n if (\n (typeof navigator !== \"undefined\") &&\n 'onLine' in navigator\n ) {\n window.removeEventListener('offline', update_network_status);\n window.removeEventListener('online', update_network_status);\n }\n };\n});\n\nexport const swDismiss = writable(false);\nexport const wb = writable();\n\nlet swLastUpdateDate = new Date();\nexport const checkSWUpdate = () => {\n if ('serviceWorker' in navigator) {\n const timeout = ('process.env.NODE_ENV' !== '\"development\"') ? 1800000 /* 30 mn */ : 2000;\n if ((new Date() - swLastUpdateDate) > timeout) {\n navigator.serviceWorker.getRegistration().then(reg => {\n if (reg) {\n if (!reg.waiting) reg.update();\n swDismiss.set(false);\n swLastUpdateDate = new Date();\n }\n }, console.error);\n }\n }\n}\n\nexport const handleVisibilityChange = () =>{\n if (document && document.visibilityState && document.visibilityState === 'visible') {\n checkSWUpdate();\n }\n}\nexport const route = readable(null, set => {\n const hashchange = () => {\n set(window.location.hash.substr(1) || '/');\n checkSWUpdate();\n };\n hashchange();\n window.addEventListener('hashchange', hashchange);\n\n return () => {\n window.removeEventListener('hashchange', hashchange);\n };\n});\n","\n\n\n\n\n{#if $viewLog}\n
    \n
    \n
    Alertes reçues
    \n \n \n \n
    \n
    \n
      \n {#each $log as logEvent}\n {@html renderLogEvent(logEvent)}\n {/each}\n
    \n
    \n
    \n{/if}","\n\n
    \n
    \n
    {@html htmlLogo}
    \n {#await fontObserver then value}\n
    \n

    \n Simplifier les impôts des pilotes en respectant la confidentialité.\n

    \n

    —@flyingeek
    pilote de ligne

    \n
    \n {/await}\n
    \n\n
    \n \n \n \n \n \n \n \n \n\n
      \n
    1. Récupérez vos EP4/EP5 et vos bulletins de salaire sur MyPeopleDoc
    2. \n
    3. Choisissez l’année en haut à droite sur {@html htmlLogo}
    4. \n
    5. Déposez vos fichiers dans Frais de Mission\n ou dans Salaire
    6. \n
    \n\n
    \n \n \n \n \n

    Inutile de partager son calendrier ou d’envoyer des données sur Internet : {@html htmlLogo}\n fonctionne directement dans votre navigateur, aucun fichier n’est transmis sur le réseau, aucune donnée n’est collectée.

    \n
    \n \n \n \n \n \n \n
    \n

    Chaque année {@html htmlLogo} récupère les données à la source : le montant des indemnités provient du\n Ministère de l’Économie, les taux de change sont ceux de la Banque de France.

    \n

    Le programme en lui même inclus des tests permettant de fiabiliser les résultats\n et les erreurs détectées sont clairement affichées. Les exemples du Mémento fiscal du SNPL\n ont été utilisés pour tester et valider les résultats de l’application.

    \n
    \n
    \n
    \n
    \n\n\n","\n\n
    \n

    {@html htmlLogo} est une aide au calcul des frais professionels sous licence GPLv3.0

    \n

    Les PN restents seuls responsables face à l’administration pour justifier l’exactitude\n de leur déclaration\n

    \n
    \n\n","export default function (urls, test, callback) {\n let remaining = urls.length\n \n function maybeCallback () {\n remaining = --remaining\n if (remaining < 1) {\n callback()\n }\n }\n \n if (!test()) {\n urls.forEach(({ type, url, options = { async: true, defer: true }}) => {\n const isScript = type === 'script'\n const tag = document.createElement(isScript ? 'script': 'link')\n if (url.startsWith('http') || url.startsWith('//')){\n tag.crossOrigin = \"anonymous\";\n }\n let onload = true\n if (isScript) {\n tag.src = url\n tag.async = options.async\n tag.defer = options.defer\n } else {\n tag.href = url\n if ('prefetch' in options){\n tag.rel = \"prefetch\"\n remaining -= 1\n onload = false\n } else if ('preload' in options) {\n tag.rel = 'preload'\n remaining -= 1\n onload = false\n } else {\n tag.rel = 'stylesheet'\n remaining -= 1\n onload = false\n }\n }\n if (onload) tag.onload = maybeCallback\n document.body.appendChild(tag)\n })\n } else {\n callback()\n }\n }","\n// decimal is text string representing a float number with two decimals like \"123.45\"\n//\n// cents is a number used to compute sum of decimals without rounding problems\n// decimal \"123.45\" is cents 12345\n//\n\n// convert a text number to a decimal (accepts \"12345,67 or 12345.67 or 12 345.67)\n// forces 2 precision digits\n// returns a string\nexport const decimal = (text) => {\n const number = text.replace(',', '.').replace(' ', '');\n const [left, right] = number.split(\".\");\n return left + '.' + (right||\"00\").padEnd(2, \"0\");\n}\n// decimal to cents\n// returns a number\nexport const decimal2cents = (decimal) => {\n const [left, right] = decimal.split(\".\");\n return parseInt(left + (right||\"00\"), 10);\n}\n\n// cents to decimal\n// returns a string\nexport const cents2decimal = (cents) => {\n const centsString = cents.toString(10);\n const length = centsString.length;\n switch (length) {\n case 2:\n return '0.' + centsString;\n case 1:\n return '0.0' + centsString;\n default:\n return centsString.slice(0, -2) + '.' + centsString.slice(-2);\n }\n}\n\n// collect first group of all matches\n// returns Array of \"decimal\"\nconst matchAll = (text, re, bydefault) => {\n const results = [];\n let match;\n while(null !== (match = re.exec(text))) {\n results.push(decimal(match[1]));\n }\n const found = results.length;\n if (found > 0) {\n return results;\n } else if (bydefault === undefined) {\n throw new Error(`No match found for ${re}`);\n } else {\n return [bydefault];\n }\n};\n\n// returns first group of last match\n// Throws if no match found\n// returns string\nconst matchLast = (text, re, bydefault) => {\n let match;\n let lastMatch;\n while (null !== (match = re.exec(text))) {\n lastMatch = match;\n }\n if (lastMatch) return lastMatch[1];\n if (bydefault === undefined) {\n throw new Error(`No match found for ${re}`);\n } else {\n return bydefault;\n }\n};\n\nconst sum = (decimals) => cents2decimal(decimals.map(decimal2cents).reduce((a, b) => a + b));\n// Parse PaySlip\nexport const payParser = (text, fileName, fileOrder) => {\n //console.log(text);\n let result = {\"type\": \"pay\", fileName, fileOrder, errors: []};\n let re = /(?:IND\\.REPAS_+|INDEMNITE REPAS_+|IR\\.FIN ANNEE DOUBL_+|IR EXONEREES_+|IR NON EXONEREES_+)([\\-0-9, ]+)/g;\n result.repas = matchAll(text, re, \"0\").map(decimal);\n re = /(?:IND\\. TRANSPORT EXO_+|IND\\. TRANSPORT_+|FRAIS REELS TRANSP_+|R\\. FRAIS DE TRANSPORT_+)([\\-0-9, ]+)/g;\n result.transport = matchAll(text, re, \"0\").map(decimal);\n re = /(?:_I.DECOUCHERS F.PRO_+)([\\-0-9, ]+)/g;\n result.decouchers_fpro = matchAll(text, re, \"0\").map(decimal);\n try {\n const net = matchAll(text, /_Mensuel_[\\-0-9, ]+_{1,2}([\\-0-9, ]+)_/g);\n result.imposable = sum(net.map(decimal));\n if (net.length > 1) result.errors.push({\"type\": \"warning\", \"message\":\"Plusieurs bulletins de salaire trouvés\"});\n } catch (err) {\n result.errors.push({\"type\": \"error\", \"message\":\"Net imposable non trouvé\"});\n result.imposable = \"0\";\n }\n try {\n result.cumul = decimal(matchLast(text, /_Annuel_[\\-0-9, ]+_{1,2}([\\-0-9, ]+)_/g));\n } catch (err) {\n result.errors.push({\"type\": \"error\", \"msg\":\"Cumul Net imposable non trouvé\"});\n result.cumul = \"0\";\n }\n try {\n result.date = matchLast(text, /PERIODE DU \\d{2}\\/(\\d{2}\\/\\d{4})/g).split('/').reverse().join('-');\n if(result.date.endsWith(\"00\")) throw new Error(`Date invalide: ${result.date}`);\n } catch (err) {\n throw new Error(`Date non trouvée`);\n }\n return result;\n}\n","// returns first group of first match\n// Throws if no match found\n// returns string\nexport const matchFirst = (text, re, bydefault) => {\n let match;\n if (null !== (match = re.exec(text))) {\n return match[1];\n }\n if (bydefault === undefined) {\n throw new Error(`No match found for ${re}`);\n } else {\n return bydefault;\n }\n};\n\n// Parse Attestation de décompte des nuitées AF\nexport const nightsAFParser = (text, fileName, fileOrder, taxYear) => {\n let result = {\"type\": \"nights\", fileName, fileOrder, errors: []};\n let total;\n try {\n total = matchFirst(text, /compte s'élève à:\\s([\\-0-9,. ]+)\\sEuros/);\n total = parseFloat(total.replace(/\\s+/g, '').replace(',', '.'));\n }catch(err) {\n result.errors.push({\"type\": \"error\", \"message\":\"Montant des nuitées AF non trouvé\"})\n }\n result.total = total;\n result.date = taxYear;\n return result;\n};","import {payParser} from \"./payParser\";\nimport {ep5Parser, EP5MONTHS} from \"./ep5Parser\";\nimport {nightsAFParser} from \"./nightsAFParser\";\n\n// Based on PDF text content, performs task(s)\n// Return array of result\nexport const router = (text, fileName, fileOrder, taxYear, taxData, base, tzConverter) => {\n const results = [];\n if (text.match(/BULLETIN DE PAIE_(AIR FRANCE|BASE|DP GN)/)) {\n try {\n const result = payParser(text, fileName, fileOrder);\n if (result.errors) {\n for (const error of result.errors) {\n results.push({\"type\": error.type, \"msg\": error.message, fileName, fileOrder, \"content\": text});\n }\n }\n results.push(result);\n } catch (err) {\n results.push({\"type\": \"error\", \"msg\":`${err.message}`, fileName, fileOrder, \"content\": err});\n }\n }else{\n const isNuiteesAF = text.indexOf(`ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE ${taxYear}`) !== -1;\n if(text.indexOf('CARNET _DE _VOL _- _EP _5')!== -1) {\n if(isNuiteesAF) {\n results.push(nightsAFParser(text, fileName, fileOrder, taxYear));\n }else{\n results.push(ep5Parser(text, fileName, fileOrder, taxYear, taxData, base, tzConverter));\n }\n }else if(isNuiteesAF) {\n results.push(nightsAFParser(text, fileName, fileOrder, taxYear));\n }\n }\n if (results.length === 0) {\n if(text.indexOf(\"ATTESTATION DE DECOMPTE DES NUITEES POUR L'ANNEE \") !== -1) {\n results.push({\"type\": \"nuitées\", \"error\":`année ≠ ${taxYear}`, fileName, fileOrder, \"content\": text})\n } else if(text.indexOf('CARNET _DE _VOL _- _EP _5')=== -1){\n const pattern = String.raw`_EP\\s?_4.+?_(${EP5MONTHS.join('|')})\\s+?(20\\d{2})`;\n const regex = new RegExp(pattern);\n let match;\n if (null !== (match = regex.exec(text))) {\n const monthIndex = EP5MONTHS.indexOf(match[1]);\n const month = (monthIndex + 1).toString(10).padStart(2, '0');\n const year = match[2];\n const previousTaxYear = (parseInt(taxYear, 10) - 1).toString();\n const nextTaxYear = (parseInt(taxYear, 10) + 1).toString();\n if (year === taxYear || (month === \"01\" && year === nextTaxYear) || (month === \"12\" && year === previousTaxYear)) {\n results.push({\"type\": \"ep4\", \"warning\": `absence d'EP5`, fileName, fileOrder, \"content\": text});\n } else {\n results.push({\"type\": \"ep4\", \"date\": `${year}-${month}`, fileName, fileOrder, \"content\": text});\n }\n }else{\n results.push({\"type\": \"error\", \"msg\":\"fichier non reconnu\", fileName, fileOrder, \"content\": text});\n }\n }else{\n results.push({\"type\": \"error\", \"msg\":\"fichier non reconnu\", fileName, fileOrder, \"content\": text});\n }\n }\n return results;\n}\n","\n\n\n\n\n\n
    \n {#if false}{/if}\n dropzoneHasFocus = true}\n on:dragleave={() => dropzoneHasFocus = false}\n />\n \n\n
    \n","\n
    \n
    {nameLabel}
    \n
      \n {#each requestedMonths as [month, optional]}\n
    • {label(month)}
    • \n {/each}\n
    \n
    \n\n","\n\n{#if countriesData.length > 1}\n\n \n \n \n \n \n \n {#each countriesData as c}\n \n \n \n \n \n \n \n \n \n \n {/each}\n \n \n \n {#if countriesData.reduce((a,c) => a | c.official===false, false)}\n {#if $taxData.year === '2021'}\n \n {:else}\n \n {/if}\n {/if}\n \n
    Indemnités par pays {$taxData.year}
    PaysValiditéMontantTauxTauxTaux moyenMontant €Zone
    (à compter du)31/12/{parseInt($taxData.year, 10) - 1}31/12/{$taxData.year}
    {c.code}{(c.name.length <= 21) ? c.name : c.name.substring(0, 20) + '…'}{(c.official===false) ? \"²\" : \"\"}{localeDateFormat(c.validity)}{`${c.amount} ${c.currency}`}{localeRate(c.startRate)}{localeRate(c.endRate)}{localeRate(c.averageRate)}{localeCurrency(c.euros)}{c.zone}
    1. Le forfait Euro est appliqué dans ces pays: {$taxData.zoneForfaitEuro.join(', ')}
    2. Taux officiel non communiqué par la BNF, basé sur le taux du marché moyen de Xe.com.
    2. Taux officiel non communiqué par la BNF, basé sur le taux de currency-api.
    \n{/if}\n\n\n","\n\n{label}\n\n","\n\n{#if $pairings.length > 0}\n \n \n \n \n {#if $taxYear !== $taxData.year}\n \n {/if}\n \n \n \n {#each $pairings as rot}\n \n \n \n \n \n \n \n \n {/each}\n \n \n {#if $pairings.reduce((a,c) => a | c.formula.includes(REFNOTE1), false)}\n \n {/if}\n \n
    Frais de Mission {$taxYear} : {$fraisDeMission} €
    Attention les montants sont basés sur les données fiscales de {$taxData.year}
    DateTypeDescriptionFormuleMontant
    {rot.start.substring(8,10)}/{rot.start.substring(5,7)}{rot.days.toString().padStart(2, ' ')} ON{rot.summary}
    {rot.formula}{rot.currencyFormula}
    {localeCurrency(rot.indemnity)}
    1. formule tronquée pour respecter l'année fiscale
    \n \n{:else}\n
    \n \n \n \"exemple\n \n
    \n{/if}\n\n\n\n","\n
    \n
    \n
    \n \n
    \n \n \n
    \n Déposez vos EP5 dans la zone ou Cliquez\n
    \n
    \n \n
    \n
    \n \n
    \n {#if !$ep5.isEmpty()}{/if}\n
    \n","\n{#if !data.isEmpty()}\n\n{#if ($fraisDeMission > 0)}\n\n \n \n \n\n \n \n \n \n \n \n \n \n {#if $taxYear !== $taxData.year}\n \n {/if}\n\n\n \n \n \n \n \n\n\n \n {#if (fraisReels >= abbattement)}\n \n {:else}\n \n {/if}\n \n \n \n \n\n
    \n Comparatif {$taxYear}\n {#if (!$nuiteesInput || $nuiteesInput == nightsCostEstimate)}\n
    basé sur une estimation des nuitées à ±20%
    \n {/if}\n
    Nuitées AFFrais de Mission - Nuitées - Frais d’emploiAbattement de 10% plafonné
    Attention les montants sont basés sur les données fiscales de {$taxData.year}
    \n \n {$fraisDeMission} - {parseFloat($nuiteesAF || $nuiteesInput || nightsCostEstimate).toFixed(0)} - {parseFloat(totalFrais).toFixed(0)} = {fraisReels.toFixed(0)} €{abbattement.toFixed(0)} €
    Sans tenir compte de vos autres frais, vous serez déjà gagnant de {(fraisReels - abbattement).toFixed(0)} € en passant aux frais réels.Il faudra que vos autres frais atteignent {(abbattement - fraisReels).toFixed(0)} € pour qu'une déclaration aux frais réels soit plus avantageuse.
    {roadTripInformation}
    \n{:else}\n

    Merci de charger vos EP4/EP5 pour afficher le comparatif

    \n{/if}\n\n \n \n \n \n \n {#each months as month, i}\n \n \n \n \n \n \n \n {/each}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Détails des salaires {$taxYear}
    MoisMontant imposableCumul imposableFrais d’emploi ¹Découchers F PRO ²
    {monthsfr[i]}{(data[month]) ? localeCurrency(data[month].imposable) : \"\"}{(data[month]) ? localeCurrency(data[month].cumul) : \"\"}{(data[month]) ? localeCurrency(cents2decimal(sumFrais(month))) : \"\"}{(data[month]) ? localeCurrency(data[month].decouchers_fpro) : \"\"}
    Total{localeCurrency(totalImposable)}{localeCurrency(totalFrais)}{localeCurrency(totalDecouchersFPRO)}
    1. Les Frais d’emploi comprennent les lignes IND.REPAS, INDEMNITE REPAS, IR.FIN ANNEE DOUBL, IND. TRANSPORT, IND. TRANSPORT EXO, FRAIS REELS TRANSP, R. FRAIS DE TRANSPORT, IR EXONEREES, IR NON EXONEREES du bulletin de paye.
    2. Cette colonne reprend la ligne I.DECOUCHERS F.PRO, elle est utilisée pour l’estimation. Pour les impôts, c’est uniquement l’attestation des nuitées AF qui doit être prise en compte.
    \n{:else}\n
    \n \n \n \"exemple\n \n
    \n{/if}\n\n\n","\n
    \n
    \n
    \n
    \n \n
    \n Déposez vos bulletins dans la zone ou Cliquez\n
    \n
    \n , attestation de nuitées si disponible\n
    \n
    \n \n
    \n {#if !$paySlips.isEmpty()}{/if}\n
    \n","\n\n## Préambule\n\nCette application a été conçue pour le PilotPad. Elle nécessite des navigateurs récents pour fonctionner : Safari iOS13+/ Mac(Mojave/Catalina/Big Sur/Monterey), Firefox 86+, Chrome 87+ et Microsoft Edge 87+ sont compatibles.\nLes PDF utilisés ne transitent sur aucun serveur, tout est calculé localement dans votre navigateur. L’app ne collecte aucune donnée. Tout est __100 % SECURE__.\n\n## Objectifs\n\n__L'application ne gère pas l'article 81 A II qui se substitue pour les pilotes à cette méthode de calcul__\n\nCalculer rapidement, facilement, et sans partage de données :\n\n- le décompte des frais de mission, conformément à la méthodologie et aux conventions de calcul du SNPL\n- les frais d’emploi des PN qui doivent s’ajouter aux revenus\n- une estimation du montant des nuitées payées par AF\n- la différence entre (Frais de Mission - Nuitées - Frais d’emploi) et un abattement de 10 % plafonné\n\n__{@html htmlLogo}__ fonctionne aussi pour les pilotes basés en province. (lire au préalable \"Choix de la base\").\n\n## Utilisation sur l'iPad\n\nSur MyPeopleDoc, commencez par sélectionner les bulletins de salaire de l'année N, et les ep4-ep5 de décembre N-1 à février N+1. Puis, en cliquant sur téléchargement, vous recevrez un lien par email. Dans votre dossier de téléchargement sur l'iPad, cliquez sur l'archive téléchargée, elle va se décompresser. Ensuite, après avoir vérifié que l'année N est bien sélectionnée en haut à droite de __{@html htmlLogo}__, deux solutions:\n\n- Soit, vous cliquez dans la zone de la page Frais de Mission ou de la page Salaire, puis vous choisissez le dossier des fichiers décompressés, puis vous cliquez sur \"Sélectionner\", puis \"Tout select.\" et enfin, \"Ouvrir\"\n- Soit, vous utilisez le mode Slide Over, ou le mode SplitView, avec l'application Fichiers, et vous faites glisser le dossier des fichiers décompressés dans la zone de la page Frais de Mission ou de la page Salaire\n\nSi vous le souhaitez, l’application peut être installée sur l’écran d’accueil du PilotPad via le menu « partage » de Safari. (comme OFP2MAP).\n\n## Utilisation de manière plus générale\n\n- Les PDF mensuels sont symbolisés par des carrés numérotés. Un PDF manquant est rouge, un PDF optionnel est bleu, un PDF chargé est vert.\n- Vous pouvez glisser-déposer un dossier ou des fichiers\n- Vous pouvez déposer les PDF indifféremment sur la page Salaire ou la page Frais de mission\n- Le symbole ▶ signale des informations additionnelles accessibles soit au survol de la souris, soit en cliquant sur la ligne\n- Changer d’année fiscale efface les résultats\n- __flytax.fr__ (plus simple à mémoriser et à partager) redirige vers __{@html htmlLogo}__ mais est bloqué sur le réseau AF\n- __{@html htmlLogo}__ peut fonctionner en mode déconnecté\n\nEn cas d’anomalie, le pictogramme apparaîtra en haut à droite, le cliquer affichera les détails. Si un message d’erreur apparaissait dans la table des résultats, merci de me contacter.\n\n- L'alerte \"absence d'EP5\" est normale sur les fichiers ep4-ep5 de régularisation ou les mois sans vols (lire la rubrique \"Activités sol/simulateur & QT\"). Un mois sans vol reste bleu\n- L'erreur \"fichier non reconnu\" est normale pour un PDF ne contenant ni un bulletin de salaire, ni un EP5, ni une attestation de nuitées\n- En cas de message \"Erreur: nuitées > nb de jours\", si vous êtes basé en province, assurez-vous d'avoir lu la rubrique \"Choix de la base\"\n\n__Avertissement :__ L’application est une aide au calcul des frais professionels sous licence GPLv3.0, les PN restents seuls responsables face à l’administration pour justifier l’exactitude de leur déclaration.\n\n## Attestation des nuitées AF\n\nAir France fournit cette attestation dans l’EP4 de février de l'année n + 1, mais un correctif est susceptible d’être diffusé jusqu’en avril dans un fichier annexe. En attendant ce document, __{@html htmlLogo}__ estime le montant ce qui permet de donner un ordre de grandeur. L’estimation utilise la colonne Découchers F PRO et elle est modifiable. Une fois votre attestation reçue, vous pouvez soit indiquer son montant directement, soit glisser l’attestation dans la zone de dépôt. Merci pour vos retours concernant la fiabilité de l’estimation.\n\n## Choix de la base\n\nLa base peut être modifiée chaque mois : on choisit une base, on dépose les EP5 de cette base ;\non change de base et l’on peut déposer les EP5 pour cette nouvelle base. En cas d’erreur, il est possible de changer de base et de recharger les EP5.\n\nLe choix de la base se fait au-dessus de la zone de dépôt sur la page Frais de mission.\n\n## Activités sol/simulateur & QT\n\nLes activités sol/simulateur à la base ne peuvent pas faire l'objet de déduction forfaitaire, elles ne sont donc pas décomptées dans les frais de mission.\n\nLes activités sol/simulateur hors de la base d'affectation pourraient être décomptées forfaitairement, néanmoins elles ne rentrent pas explicitement dans le cadre d'application de l'accord de la DLF, et elles ne sont donc pas décomptées par __{@html htmlLogo}__. Je vous renvoie au mémento du SNPL pour plus d'informations.\n\n## Mise à jour\n\n__{@html htmlLogo}__ se met à jour automatiquement. Éventuellement, un popup peut\napparaître 👨🏻‍✈️ vous demandant d’autoriser cette mise à jour. Installer la mise à jour efface les résultats.\nSi jamais le popup restait à l'écran, il faudrait rafraichir la page ⟳.\n\n## Données fiscales\n\nSur GitHub vous trouverez les liens vers les barèmes au format csv et tsv (Excel/Numbers) mais aussi\nles données json. En installant le code source sur votre ordinateur, vous pourrez générer ces fichiers. Lors\nde la compilation de l’application, les API de la Banque de France et des impôts sont utilisées.\n\n- Arrêté de 2006 fixant les taux des indemnités de mission\n- La lettre de la DLF sur FraisPN (webarchive)\n- L’annexe à lettre de la DLF sur FraisPN (webarchive)\n\n## Crédits\n\n- airportsdata de Mike Borsetti (permet de lier un code IATA à un pays)\n- __{@html htmlLogo}__ est développé en JavaScript à l’aide du framework SVELTE\n- Éric Delord, CDB 777, est l’auteur. Le code source est disponible sur GitHub. L'application est sous licence GPLv3.0, et l’article 15 précise : THERE IS NO WARRANTY FOR THE PROGRAM.\n\nVous pouvez me contacter sur l’email AF (erdelord@…), ou sur mon compte Twitter @flyingeek, ou sur le groupe Teams/MyConcorde. Si vous rencontrez un problème, merci de m'adresser le PDF concerné par mail.\n\n## Liens\n\n- OFP2MAP cartographie pour l'OFP (même auteur)\n","\n\n\n
      \n{#each filterChangeLog(data, {version, limit}) as [title, section]}\n {#if title !== \"raw\"}\n
    • \n {#if title.match(versionDateRegex)}\n

      {@html title2html(title)}

      \n {:else}\n

      {title}

      \n {/if}\n {#each Object.entries(section) as [category, content]}\n {#if category !== \"raw\"}\n {#each content.raw.replace(/^\\n\\n|\\n\\n$/, '').split('\\n') as item}\n
      {@html parseMarkdown(item).replace(/^-\\s/g, `- ${_(category)}`).replace(/^(\\s+)-/g, (chn, pl) => ' '.repeat('pl'.length) + '▫︎')}
      \n {/each}\n {:else}\n
      {@html parseMarkdown(content).trim()}
      \n {/if}\n {/each}\n
    • \n {/if}\n{/each}\n
    \n\n","/** Dispatch event on click outside of node */\nexport default function clickOutside(node) {\n //console.log('click outside installed')\n const handleClick = event => {\n if (node && !node.contains(event.target) && !event.defaultPrevented) {\n node.dispatchEvent(\n new CustomEvent('click_outside', node)\n )\n //console.log('click outside')\n }\n }\n\n document.addEventListener('click', handleClick, true);\n\n return {\n destroy() {\n document.removeEventListener('click', handleClick, true);\n //console.log('click outside removed')\n }\n }\n}","\n\n{#if visible}\n
    \n
    \n
    \n
    \n
    {title}
    \n \n
    \n
    \n {#await promise}\n

    chargement...

    \n {:then data}\n \n {/await}\n
    \n
    \n
    \n
    \n
    \n{/if}\n\n","\n\n\n
    \n
    \n

    {@html htmlLogo} v{version} \n $wb.update()}>/ ServiceWorker : {swVersion}\n {#if $wb}{#await $wb.active then ok}/ mode déconnecté disponible{/await}{/if}\n {#if navigator.standalone === true || 'process.env.NODE_ENV' === '\"development\"'}\n {#if (navigator.share || 'process.env.NODE_ENV' === '\"development\"')}{/if}\n \n {/if}\n \n

    \n \n
    \n
    \n

    Alert Icon via Wikimedia Commons

    \n

    Other Icons made by Freepik from www.flaticon.com

    \n
    \n
    \n\n","\n","\n\n\n","\n\n\n{#if (($route !== '/' || $majorUpdate) && $swUpdated && !$swDismiss && $ep5.isEmpty() && $paySlips.isEmpty())}\n
    \n
    \n
    \n 👨🏻‍✈️Mise à jour détectée\n
    \n
    \n \n
    \n
    \n
    {install(($route === '/') ? 2000 : 700) || ''}\n{:else if $swUpdated && !$swDismiss && (!$ep5.isEmpty() || !$paySlips.isEmpty())}\n
    \n
    \n 👨🏻‍✈️Mise à jour disponible\n \n
    \n
    \n \n
    \n
    \n{:else if !$swUpdated && isAppUpdated()}\n \n{/if}\n\n","\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n\n\n\n\n{#if $route === '/'}\n\n{:else if $route === '/mission'}\n\n{:else if $route === '/pay'}\n\n{:else if $route === '/help'}\n\n{:else}\n\n{ window.location.hash = '#/'}\n{/if}\n\n","try{self[\"workbox:window:6.2.4\"]&&_()}catch(n){}function n(n,t){return new Promise((function(r){var e=new MessageChannel;e.port1.onmessage=function(n){r(n.data)},n.postMessage(t,[e.port2])}))}function t(n,t){for(var r=0;rn.length)&&(t=n.length);for(var r=0,e=new Array(t);r=n.length?{done:!0}:{done:!1,value:n[i++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}return(e=n[Symbol.iterator]()).next.bind(e)}try{self[\"workbox:core:6.2.4\"]&&_()}catch(n){}var i=function(){var n=this;this.promise=new Promise((function(t,r){n.resolve=t,n.reject=r}))};function o(n,t){var r=location.href;return new URL(n,r).href===new URL(t,r).href}var u=function(n,t){this.type=n,Object.assign(this,t)};function a(n,t,r){return r?t?t(n):n:(n&&n.then||(n=Promise.resolve(n)),t?n.then(t):n)}function c(){}var f={type:\"SKIP_WAITING\"};function s(n,t){if(!t)return n&&n.then?n.then(c):Promise.resolve()}var v=function(r){var e,c;function v(n,t){var e,c;return void 0===t&&(t={}),(e=r.call(this)||this).nn={},e.tn=0,e.rn=new i,e.en=new i,e.on=new i,e.un=0,e.an=new Set,e.cn=function(){var n=e.fn,t=n.installing;e.tn>0||!o(t.scriptURL,e.sn.toString())||performance.now()>e.un+6e4?(e.vn=t,n.removeEventListener(\"updatefound\",e.cn)):(e.hn=t,e.an.add(t),e.rn.resolve(t)),++e.tn,t.addEventListener(\"statechange\",e.ln)},e.ln=function(n){var t=e.fn,r=n.target,i=r.state,o=r===e.vn,a={sw:r,isExternal:o,originalEvent:n};!o&&e.mn&&(a.isUpdate=!0),e.dispatchEvent(new u(i,a)),\"installed\"===i?e.wn=self.setTimeout((function(){\"installed\"===i&&t.waiting===r&&e.dispatchEvent(new u(\"waiting\",a))}),200):\"activating\"===i&&(clearTimeout(e.wn),o||e.en.resolve(r))},e.dn=function(n){var t=e.hn,r=t!==navigator.serviceWorker.controller;e.dispatchEvent(new u(\"controlling\",{isExternal:r,originalEvent:n,sw:t,isUpdate:e.mn})),r||e.on.resolve(t)},e.gn=(c=function(n){var t=n.data,r=n.ports,i=n.source;return a(e.getSW(),(function(){e.an.has(i)&&e.dispatchEvent(new u(\"message\",{data:t,originalEvent:n,ports:r,sw:i}))}))},function(){for(var n=[],t=0;t
    '\n + 'FLYTAX a besoin de navigateurs récents: Safari 14 iOS/Mac, Firefox 86, Chrome 87 et Microsoft Edge 87 sont compatibles.

    '\n + 'Contactez moi sur l\\'email AF (erdelord@...) en me donnant le message d\\'erreur.'\n );\n document.body.appendChild(content);\n }catch(e){} /* catch all here we can not interrupt the startup sequence */ \n}finally{\n // we always register the serviceWorker to be able to unregister it\n // or to force skipWaiting and page reload\n // this way as soon as a new serviceWorker fix the problem, the page will load\n if ('serviceWorker' in navigator) {\n const workbox = new Workbox('./sw.js');\n wb.set(workbox);\n workbox.addEventListener('installed', (event) => {\n if (!event.isUpdate) {\n //console.log('Service worker installed for the first time!');\n }else{\n //console.log('Updated Service worker installed');\n }\n //console.debug('Updated Service worker installed ', event.isUpdate, event.isExternal)\n });\n workbox.addEventListener('activated', (event) => {\n // `event.isUpdate` will be true if another version of the service\n // worker was controlling the page when this version was registered.\n if (!event.isUpdate) {\n //console.log('Service worker activated for the first time!');\n // If your service worker is configured to precache assets, those\n // assets should all be available now.\n // we should be able to remove clients.claim call in sw.js\n // but for now we have both...\n workbox.messageSW({ type: 'CLIENTS_CLAIM' });\n }else{\n //console.log('Updated Service worker activated');\n }\n if (event.isExternal) {\n console.warn('External Service worker activated');\n //window.location.reload();\n }\n });\n workbox.addEventListener('waiting', (event) => {\n //console.log(`A new service worker has installed, but it can't activate` +\n // ` until all tabs running the current version have fully unloaded.`);\n if (appError) {\n workbox.addEventListener('controlling', () => {\n console.warn('main.js: appError reload');\n window.location.reload();\n });\n workbox.messageSkipWaiting();\n }else{\n if (event.isExternal) {\n console.warn('External Service worker waiting');\n }\n promiseTimeout(400, messageSW(event.sw,{type: 'GET_VERSION'}))\n .then(v => showSkipWaitingPrompt(v))\n .catch(e => {\n console.warn(\"SW GET_VERSION:\", e);\n showSkipWaitingPrompt();\n });\n }\n });\n workbox.register().then(reg => {\n if (appError && reg) reg.unregister();\n swRegistration.set(reg);\n //console.debug(reg);\n }, console.error);\n }\n}\n\nexport default app;"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","subscribe","store","callbacks","unsub","unsubscribe","component_subscribe","component","callback","$$","on_destroy","push","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","slice","get_slot_changes","dirty","lets","undefined","merged","len","Math","max","length","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","p","get_all_dirty_from_scope","compute_rest_props","props","keys","rest","Set","has","set_store_value","ret","value","set","action_destroyer","action_result","destroy","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","run_tasks","task","c","delete","f","size","loop","promise","Promise","fulfill","add","abort","append","target","node","appendChild","get_root_for_style","document","root","getRootNode","ownerDocument","host","append_empty_stylesheet","style_element","element","style","head","append_stylesheet","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","d","name","createElement","svg_element","createElementNS","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","attr","attribute","removeAttribute","getAttribute","setAttribute","set_attributes","attributes","descriptors","getOwnPropertyDescriptors","__proto__","key","cssText","to_number","set_data","wholeText","set_input_value","input","set_style","important","setProperty","select_option","select","option","__value","selected","toggle_class","toggle","classList","custom_event","type","detail","bubbles","e","createEvent","initCustomEvent","HtmlTag","constructor","n","html","h","m","nodeName","t","innerHTML","Array","from","childNodes","active_docs","current_component","active","create_rule","duration","delay","ease","uid","step","keyframes","rule","str","hash","charCodeAt","doc","stylesheet","__svelte_stylesheet","sheet","current_rules","__svelte_rules","insertRule","cssRules","animation","delete_rule","previous","split","next","filter","anim","indexOf","deleted","join","deleteRule","clear","set_current_component","get_current_component","Error","onMount","on_mount","bubble","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","add_render_callback","flushing","seen_callbacks","flush","update","pop","fragment","before_update","after_update","wait","then","dispatch","direction","kind","dispatchEvent","outroing","outros","group_outros","r","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","running","cleanup","go","easing","tick","css","start_time","end_time","started","start","invalidate","end","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","abs","group","handle_promise","info","token","index","resolved","child_ctx","current","needs_flush","blocks","mount","error","catch","hasCatch","pending","create_component","mount_component","customElement","new_on_destroy","map","destroy_component","make_dirty","fill","instance","create_fragment","not_equal","append_styles","parent_component","bound","on_disconnect","context","Map","skip_bound","ready","hydrate","nodes","children","l","SvelteComponent","$destroy","$on","splice","$set","$$props","obj","$$set","includes","styles","v","trim","title","levels","updates","to_null_out","accounted_for","href","startsWith","rel","$$restProps","result","Deferred","reject","htmlLogo","navigatorLocale","navigator","languages","Intl","DateTimeFormat","supportedLocalesOf","NumberFormat","shift","months","months14","monthsfr","localeFormat","numberOrString","res","format","replace","numberValue","parseFloat","toFixed","maximumFractionDigits","currency","minimumFractionDigits","toString","localeCurrency","digits","localeRate","localeDateFormat","isoString","fakeUTCDate","parse","substring","opts","timezone","promiseTimeout","ms","timeout","id","setTimeout","clearTimeout","race","semverCompare","pa","pb","na","Number","nb","isNaN","shareAppLink","async","shareData","url","location","pathname","share","err","cubicOut","fade","linear","getComputedStyle","opacity","fly","y","target_opacity","transform","od","u","subscriber_queue","readable","writable","stop","subscribers","new_value","run_queue","subscriber","derived","stores","initial_value","single","isArray","stores_array","auto","inited","values","sync","unsubscribers","CONTINUATION_MARK","EP5MONTHS","ep5Time2iso","hours","cs","padStart","numberOfDays","startISO","endISO","diff","floor","iso2FR","timeZone","deltaDays","setUTCDate","getUTCDate","loc","toLocaleString","match","exec","day","month","year","hour","minute","baseIsoString","delta","tzOffset","trunc","minutes","round","bind","rotSummary","rot","stopovers","nights","reduce","accumulator","dep","arr","buildRots","flights","tzConverter","base","iataMap","converterTZ","timeZoneName","isBase","iata","rotFlights","rotStays","rots","flightGMT","entries","flight","isComplete","days","j","nextFlight","standbyHours","standbyDays","lastDay","yString","mString","parseInt","endsWith","summary","nightsCount","missing","fillingNight","nightInFlight","optimizeNightsRepartition","countries","stays","stayTuples","nightTuples","optimized","concat","optimizedCountries","console","log","reverse","iata2country","airportsData","AmountError","findAmountEuros","countryData","isoDate","exrData","amount","findAmount","exr","rate","date","localeCompare","addIndemnities","taxYear","taxData","fileName","results","countriesData","MC_REMOVAL","nextYear","previousYear","hasError","indemnities","toRemove","total","formula","currencyFormula","country","z","taxStopCount","taxStops","validTaxStops","validTaxStopCount","count","validCount","countryIndemnities","stopIndemnities","doRemove","ceil","euros","message","minFractionDigits","maxFractionDigits","stops","stopFormula","indemnity","ep5Iterator","monthData","testIterator","mergeFlights","flights1","flights2","f1","f2","flight2","flight1","BASES","label","sort","DATASET","defaultYear","resettable","resetValue","reset","nativeConsoleLog","nativeConsoleError","newConsoleLog","theStore","arguments","apply","newConsoleError","patchLog","isRegisterEmpty","ep5","isEmpty","paySlips","nuiteesInput","nuiteesAF","$taxYear","fetch","json","pairings","$ep5","$taxData","$tzConverter","currentIt","nextIt","mergedRots","mergedWithIndemnities","mergeRots","fraisDeMission","$pairings","update_network_status","onLine","swDismiss","wb","swLastUpdateDate","checkSWUpdate","serviceWorker","getRegistration","reg","waiting","handleVisibilityChange","visibilityState","route","hashchange","substr","viewLog","text2html","renderText","describe","prototype","logEvent","lenght","markerCount","changeStyleColor","renderStyledText","$viewLog","scrollTop","scrollHeight","fontObserver","fonts","load","urls","test","remaining","maybeCallback","defer","isScript","tag","crossOrigin","onload","body","decimal","number","left","right","padEnd","decimal2cents","cents2decimal","cents","centsString","matchAll","re","bydefault","matchLast","lastMatch","payParser","fileOrder","errors","repas","transport","decouchers_fpro","net","imposable","decimals","cumul","msg","nightsAFParser","matchFirst","router","content","isNuiteesAF","previousTaxYear","nextTaxYear","pattern","String","raw","RegExp","depDay","depTime","arrDay","arrTime","sortedFlights","ep5Parser","warning","acceptedType","pdfWorker","seqOrder","preloadFiles","getPageText","pdf","pageNo","separator","page","getPage","getTextContent","items","disabled","dropzoneHasFocus","preload","loader","pdfjsLib","GlobalWorkerOptions","workerSrc","destroyed","PDFWorker","verbosity","Warning","getPDF","file","reader","FileReader","ev","source","pdfPages","getDocument","maxPages","numPages","pageText","getPDFText","worker","onerror","readAsArrayBuffer","processFiles","files","promises","basename","batchPaySlips","batchEp5","$base","$nuiteesAF","afterLoad","all","getEntriesAsAsyncIterator","dirEntry","createReader","readEntries","entry","isFile","fileAsPromise","dataTransfer","item","webkitGetAsEntry","isDirectory","isFirefox","userAgent","nameLabel","computeNameLabel","requested","prev","requestedMonths","dat","tz","requestedMonthsDefault","computeRequestedMonths","zoneForfaitEuro","code","official","validity","startRate","endRate","averageRate","zone","tableId","getCountriesData","list","sortedList","getData","amounts","preloadFiles2","filename","tableIds","fontName","ok","blob","jsPDF","API","events","addFileToVFS","addFont","readAsBinaryString","statusText","stopPropagation","table","getElementById","querySelectorAll","innerText","jspdf","orientation","autoTable","font","useCss","showHead","showFoot","pageBreak","includeHiddenHtml","download","Blob","output","URL","revokeObjectURL","createObjectURL","remove","tableIndemnitiesId","sumFrais","real","estimated","totalFrais","computeTotalFrais","totalImposable","computeTotalImposable","cumulImposable12","abbattement","maxForfait10","min","totalDecouchersFPRO","computeTotalDecouchersFPRO","estimateRatio","nightsCostEstimate","$nuiteesInput","fraisReels","$fraisDeMission","roadTripInformation","OUT","IN","get","to","roadTrips","standalone","versionDateRegex","title2html","parseMarkdown","badgeColor","_","filterChangeLog","version","limit","filtered","CHANGELOG","markdownText","translation","ADDED","FIXED","DEPRECATED","CHANGED","REMOVED","SECURITY","toUpperCase","badgeColors","category","chn","pl","repeat","clickOutside","handleClick","contains","defaultPrevented","CustomEvent","visible","createEventDispatcher","show","response","modal","swVersion","_wb","$wb","messageSW","reload","$swDismiss","selected_option","querySelector","setAttributeNS","swUpdated","swRegistration","majorUpdate","showSkipWaitingPrompt","nextVersion","cParts","nParts","isPatchUpdate","previousAppVersionKey","installLabel","getPreviousAppVersion","sessionStorage","getItem","install","refreshing","debug","$swRegistration","setItem","postMessage","removeItem","self","MessageChannel","port1","onmessage","port2","Symbol","iterator","done","TypeError","s","nn","tn","rn","en","on","un","an","cn","installing","scriptURL","sn","vn","hn","ln","state","sw","isExternal","originalEvent","mn","isUpdate","wn","dn","controller","gn","ports","getSW","w","register","immediate","readyState","Boolean","yn","pn","bn","once","wasWaitingBeforeRegister","messageSkipWaiting","enumerable","configurable","defineProperty","Pn","Sn","appError","App","workbox","Workbox","warn","unregister","app"],"mappings":"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"} \ No newline at end of file diff --git a/sw.js b/sw.js index 844e109..5dc4be3 100644 --- a/sw.js +++ b/sw.js @@ -1,2 +1,2 @@ -!function(){"use strict";try{self["workbox:core:6.2.4"]&&_()}catch(e){}const e=(e,...t)=>{let s=e;return t.length>0&&(s+=` :: ${JSON.stringify(t)}`),s};class t extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}const s={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},a=e=>[s.prefix,e,s.suffix].filter((e=>e&&e.length>0)).join("-"),n=e=>e||a(s.precache),r=e=>e||a(s.runtime);function i(e,t){const s=t();return e.waitUntil(s),s}try{self["workbox:precaching:6.2.4"]&&_()}catch(e){}function c(e){if(!e)throw new t("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){const t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}const{revision:s,url:a}=e;if(!a)throw new t("add-to-cache-list-unexpected-type",{entry:e});if(!s){const e=new URL(a,location.href);return{cacheKey:e.href,url:e.href}}const n=new URL(a,location.href),r=new URL(a,location.href);return n.searchParams.set("__WB_REVISION__",s),{cacheKey:n.href,url:r.href}}class o{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if("install"===e.type&&t&&t.originalRequest&&t.originalRequest instanceof Request){const e=t.originalRequest.url;s?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return s}}}class h{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{const s=t&&t.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return s?new Request(s):e},this._precacheController=e}}let l;async function u(e,s){let a=null;if(e.url){a=new URL(e.url).origin}if(a!==self.location.origin)throw new t("cross-origin-copy-response",{origin:a});const n=e.clone(),r={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},i=s?s(r):r,c=function(){if(void 0===l){const e=new Response("");if("body"in e)try{new Response(e.body),l=!0}catch(e){l=!1}l=!1}return l}()?n.body:await n.blob();return new Response(c,i)}function d(e,t){const s=new URL(e);for(const e of t)s.searchParams.delete(e);return s.href}class f{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const p=new Set;try{self["workbox:strategies:6.2.4"]&&_()}catch(e){}function m(e){return"string"==typeof e?new Request(e):e}class g{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new f,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let a=m(e);if("navigate"===a.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const n=this.hasCallback("fetchDidFail")?a.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))a=await e({request:a.clone(),event:s})}catch(e){if(e instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:e.message})}const r=a.clone();try{let e;e=await fetch(a,"navigate"===a.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(e){throw n&&await this.runCallbacks("fetchDidFail",{error:e,event:s,originalRequest:n.clone(),request:r.clone()}),e}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=m(e);let s;const{cacheName:a,matchOptions:n}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},n),{cacheName:a});s=await caches.match(r,i);for(const e of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await e({cacheName:a,matchOptions:n,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const a=m(e);var n;await(n=0,new Promise((e=>setTimeout(e,n))));const r=await this.getCacheKey(a,"write");if(!s)throw new t("cache-put-with-no-response",{url:(i=r.url,new URL(String(i),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var i;const c=await this._ensureResponseSafeToCache(s);if(!c)return!1;const{cacheName:o,matchOptions:h}=this._strategy,l=await self.caches.open(o),u=this.hasCallback("cacheDidUpdate"),f=u?await async function(e,t,s,a){const n=d(t.url,s);if(t.url===n)return e.match(t,a);const r=Object.assign(Object.assign({},a),{ignoreSearch:!0}),i=await e.keys(t,r);for(const t of i)if(n===d(t.url,s))return e.match(t,a)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?c.clone():c)}catch(e){if(e instanceof Error)throw"QuotaExceededError"===e.name&&await async function(){for(const e of p)await e()}(),e}for(const e of this.iterateCallbacks("cacheDidUpdate"))await e({cacheName:o,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){if(!this._cacheKeys[t]){let s=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))s=m(await e({mode:t,request:s,event:this.event,params:this.params}));this._cacheKeys[t]=s}return this._cacheKeys[t]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"==typeof t[e]){const s=this._pluginStateMap.get(t),a=a=>{const n=Object.assign(Object.assign({},a),{state:s});return t[e](n)};yield a}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const e of this.iterateCallbacks("cacheWillUpdate"))if(t=await e({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}}class w{constructor(e={}){this.cacheName=r(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s="string"==typeof e.request?new Request(e.request):e.request,a="params"in e?e.params:void 0,n=new g(this,{event:t,request:s,params:a}),r=this._getResponse(n,s,t);return[r,this._awaitComplete(r,n,s,t)]}async _getResponse(e,s,a){let n;await e.runCallbacks("handlerWillStart",{event:a,request:s});try{if(n=await this._handle(s,e),!n||"error"===n.type)throw new t("no-response",{url:s.url})}catch(t){if(t instanceof Error)for(const r of e.iterateCallbacks("handlerDidError"))if(n=await r({error:t,event:a,request:s}),n)break;if(!n)throw t}for(const t of e.iterateCallbacks("handlerWillRespond"))n=await t({event:a,request:s,response:n});return n}async _awaitComplete(e,t,s,a){let n,r;try{n=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:a,request:s,response:n}),await t.doneWaiting()}catch(e){e instanceof Error&&(r=e)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:s,response:n,error:r}),t.destroy(),r)throw r}}class y extends w{constructor(e={}){e.cacheName=n(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(y.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let a;if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return a=await s.fetch(e),a}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const a=await s.fetch(e);if(!await s.cachePut(e,a.clone()))throw new t("bad-precaching-response",{url:e.url,status:a.status});return a}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,a]of this.plugins.entries())a!==y.copyRedirectedCacheableResponsesPlugin&&(a===y.defaultPrecacheCacheabilityPlugin&&(e=s),a.cacheWillUpdate&&t++);0===t?this.plugins.push(y.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}y.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:e})=>!e||e.status>=400?null:e},y.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:e})=>e.redirected?await u(e):e};class b{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new y({cacheName:n(e),plugins:[...t,new h({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const a of e){"string"==typeof a?s.push(a):a&&void 0===a.revision&&s.push(a.url);const{cacheKey:e,url:n}=c(a),r="string"!=typeof a&&a.revision?"reload":"default";if(this._urlsToCacheKeys.has(n)&&this._urlsToCacheKeys.get(n)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(n),secondEntry:e});if("string"!=typeof a&&a.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==a.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:n});this._cacheKeysToIntegrities.set(e,a.integrity)}if(this._urlsToCacheKeys.set(n,e),this._urlsToCacheModes.set(n,r),s.length>0){const e=`Workbox is precaching URLs without revision info: ${s.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return i(e,(async()=>{const t=new o;this.strategy.plugins.push(t);for(const[t,s]of this._urlsToCacheKeys){const a=this._cacheKeysToIntegrities.get(s),n=this._urlsToCacheModes.get(t),r=new Request(t,{integrity:a,cache:n,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:e}))}const{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}}))}activate(e){return i(e,(async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),a=[];for(const n of t)s.has(n.url)||(await e.delete(n),a.push(n.url));return{deletedURLs:a}}))}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}}let v;const x=()=>(v||(v=new b),v);try{self["workbox:routing:6.2.4"]&&_()}catch(e){}const R=e=>e&&"object"==typeof e?e:{handle:e};class C{constructor(e,t,s="GET"){this.handler=R(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=R(e)}}class E extends C{constructor(e,t,s){super((({url:t})=>{const s=e.exec(t.href);if(s&&(t.origin===location.origin||0===s.index))return s.slice(1)}),t,s)}}class L{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data,s=Promise.all(t.urlsToCache.map((t=>{"string"==typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})})));e.waitUntil(s),e.ports&&e.ports[0]&&s.then((()=>e.ports[0].postMessage(!0)))}}))}handleRequest({request:e,event:t}){const s=new URL(e.url,location.href);if(!s.protocol.startsWith("http"))return;const a=s.origin===location.origin,{params:n,route:r}=this.findMatchingRoute({event:t,request:e,sameOrigin:a,url:s});let i=r&&r.handler;const c=e.method;if(!i&&this._defaultHandlerMap.has(c)&&(i=this._defaultHandlerMap.get(c)),!i)return;let o;try{o=i.handle({url:s,request:e,event:t,params:n})}catch(e){o=Promise.reject(e)}const h=r&&r.catchHandler;return o instanceof Promise&&(this._catchHandler||h)&&(o=o.catch((async a=>{if(h)try{return await h.handle({url:s,request:e,event:t,params:n})}catch(e){e instanceof Error&&(a=e)}if(this._catchHandler)return this._catchHandler.handle({url:s,request:e,event:t});throw a}))),o}findMatchingRoute({url:e,sameOrigin:t,request:s,event:a}){const n=this._routes.get(s.method)||[];for(const r of n){let n;const i=r.match({url:e,sameOrigin:t,request:s,event:a});if(i)return n=i,(Array.isArray(n)&&0===n.length||i.constructor===Object&&0===Object.keys(i).length||"boolean"==typeof i)&&(n=void 0),{route:r,params:n}}return{}}setDefaultHandler(e,t="GET"){this._defaultHandlerMap.set(t,R(e))}setCatchHandler(e){this._catchHandler=R(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}}let U;const D=()=>(U||(U=new L,U.addFetchListener(),U.addCacheListener()),U);function q(e,s,a){let n;if("string"==typeof e){const t=new URL(e,location.href);n=new C((({url:e})=>e.href===t.href),s,a)}else if(e instanceof RegExp)n=new E(e,s,a);else if("function"==typeof e)n=new C(e,s,a);else{if(!(e instanceof C))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});n=e}return D().registerRoute(n),n}class k extends C{constructor(e,t){super((({request:s})=>{const a=e.getURLsToCacheKeys();for(const e of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:a=!0,urlManipulation:n}={}){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e,t=[]){for(const s of[...e.searchParams.keys()])t.some((e=>e.test(s)))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(a){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(n){const e=n({url:r});for(const t of e)yield t.href}}(s.url,t)){const t=a.get(e);if(t)return{cacheKey:t}}}),e.strategy)}}class T extends w{async _handle(e,s){let a,n=await s.cacheMatch(e);if(!n)try{n=await s.fetchAndCachePut(e)}catch(e){e instanceof Error&&(a=e)}if(!n)throw new t("no-response",{url:e.url,error:a});return n}}const N={cacheWillUpdate:async({response:e})=>200===e.status||0===e.status?e:null};function j(e){e.then((()=>{}))}let I,P;const A=new WeakMap,M=new WeakMap,K=new WeakMap,S=new WeakMap,O=new WeakMap;let W={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return M.get(e);if("objectStoreNames"===t)return e.objectStoreNames||K.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return F(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function B(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(P||(P=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(G(this),t),F(A.get(this))}:function(...t){return F(e.apply(G(this),t))}:function(t,...s){const a=e.call(G(this),t,...s);return K.set(a,t.sort?t.sort():[t]),F(a)}}function H(e){return"function"==typeof e?B(e):(e instanceof IDBTransaction&&function(e){if(M.has(e))return;const t=new Promise(((t,s)=>{const a=()=>{e.removeEventListener("complete",n),e.removeEventListener("error",r),e.removeEventListener("abort",r)},n=()=>{t(),a()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),a()};e.addEventListener("complete",n),e.addEventListener("error",r),e.addEventListener("abort",r)}));M.set(e,t)}(e),t=e,(I||(I=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((e=>t instanceof e))?new Proxy(e,W):e);var t}function F(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,s)=>{const a=()=>{e.removeEventListener("success",n),e.removeEventListener("error",r)},n=()=>{t(F(e.result)),a()},r=()=>{s(e.error),a()};e.addEventListener("success",n),e.addEventListener("error",r)}));return t.then((t=>{t instanceof IDBCursor&&A.set(t,e)})).catch((()=>{})),O.set(t,e),t}(e);if(S.has(e))return S.get(e);const t=H(e);return t!==e&&(S.set(e,t),O.set(t,e)),t}const G=e=>O.get(e);const V=["get","getKey","getAll","getAllKeys","count"],$=["put","add","delete","clear"],Q=new Map;function J(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(Q.get(t))return Q.get(t);const s=t.replace(/FromIndex$/,""),a=t!==s,n=$.includes(s);if(!(s in(a?IDBIndex:IDBObjectStore).prototype)||!n&&!V.includes(s))return;const r=async function(e,...t){const r=this.transaction(e,n?"readwrite":"readonly");let i=r.store;return a&&(i=i.index(t.shift())),(await Promise.all([i[s](...t),n&&r.done]))[0]};return Q.set(t,r),r}W=(e=>({...e,get:(t,s,a)=>J(t,s)||e.get(t,s,a),has:(t,s)=>!!J(t,s)||e.has(t,s)}))(W);try{self["workbox:expiration:6.2.4"]&&_()}catch(e){}const z="cache-entries",X=e=>{const t=new URL(e,location.href);return t.hash="",t.href};class Y{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(z,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e,{blocked:t}={}){const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",(()=>t())),F(s).then((()=>{}))}(this._cacheName)}async setTimestamp(e,t){const s={url:e=X(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},a=await this.getDb();await a.put(z,s)}async getTimestamp(e){const t=await this.getDb(),s=await t.get(z,this._getId(e));return null==s?void 0:s.timestamp}async expireEntries(e,t){const s=await this.getDb();let a=await s.transaction(z).store.index("timestamp").openCursor(null,"prev");const n=[];let r=0;for(;a;){const s=a.value;s.cacheName===this._cacheName&&(e&&s.timestamp=t?n.push(a.value):r++),a=await a.continue()}const i=[];for(const e of n)await s.delete(z,e.id),i.push(e.url);return i}_getId(e){return this._cacheName+"|"+X(e)}async getDb(){return this._db||(this._db=await function(e,t,{blocked:s,upgrade:a,blocking:n,terminated:r}={}){const i=indexedDB.open(e,t),c=F(i);return a&&i.addEventListener("upgradeneeded",(e=>{a(F(i.result),e.oldVersion,e.newVersion,F(i.transaction))})),s&&i.addEventListener("blocked",(()=>s())),c.then((e=>{r&&e.addEventListener("close",(()=>r())),n&&e.addEventListener("versionchange",(()=>n()))})).catch((()=>{})),c}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class Z{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new Y(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const e of t)await s.delete(e,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,j(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t{if(!a)return null;const n=this._isResponseDateFresh(a),r=this._getCacheExpiration(s);j(r.expireEntries());const i=r.updateTimestamp(t.url);if(e)try{e.waitUntil(i)}catch(e){}return n?a:null},this.cacheDidUpdate=async({cacheName:e,request:t})=>{const s=this._getCacheExpiration(e);await s.updateTimestamp(t.url),await s.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){p.add(e)}((()=>this.deleteCacheAndMetadata()))}_getCacheExpiration(e){if(e===r())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new Z(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(null===t)return!0;return t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}const te=["flytax-data","flytax-data2","flytax-data3","flytax-warmup","flytax-img"],se="flytax-warmup2",ae="flytax-data4",ne="flytax-img2";var re,ie;self.__WB_DISABLE_DEV_LOGS=!0,re=[{"revision":"24c5bc41bef7bec65bd704740c32c81f","url":"index.html"},{"revision":"b9f281f8ab5a047aa0c11c5b2d459581","url":"css/bundle.css"},{"revision":"7059431e3631472a42ac60ec4e0a6d6c","url":"js/bundle.js"},{"revision":"4d42128042913fb5bc904de7b9cd44a7","url":"CHANGELOG.json"}],ie={},function(e){x().precache(e)}(re),function(e){const t=x();q(new k(t,e))}(ie);const ce=["https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js","https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js","https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.2.0/jspdf.umd.min.js","https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.13/jspdf.plugin.autotable.min.js"],oe=["./fonts/HelveticaUTF8.ttf","../fonts/abril-fatface-v12-latin-ext_latin-regular.woff2".replace("../","./"),"../fonts/abril-fatface-v12-latin-ext_latin-regular.woff".replace("../","./")],he=ce.concat(oe),le="./data/data2023b.json;./data/data2022.json;./data/data2021.json;./data/data2020.json;./data/data2019.json;./data/data2018.json".split(";"),ue=["./img/fm_exemple3.jpg","./img/s_exemple3.jpg"];q(/.+\/(pdf\.min\.js|pdf\.worker\.min\.js|jspdf\..+min\.js|HelveticaUTF8\.ttf|abril-fatface-v12-latin-ext_latin-regular\.woff2?)$/,new T({cacheName:se})),q((({url:e})=>e.pathname.match(/\/data\/data[0-9]{4}.?\.json/)),new T({cacheName:ae,plugins:[new ee({maxEntries:6})]})),q((({url:e})=>e.pathname.match(/\/img\//)),new T({cacheName:ne,plugins:[new ee({maxEntries:6})]})),q((({url:e})=>e.pathname.match(/\/flytax-icons\/.+\.png/)),new class extends w{constructor(e={}){super(e),this.plugins.some((e=>"cacheWillUpdate"in e))||this.plugins.unshift(N)}async _handle(e,s){const a=s.fetchAndCachePut(e).catch((()=>{}));let n,r=await s.cacheMatch(e);if(r);else try{r=await a}catch(e){e instanceof Error&&(n=e)}if(!r)throw new t("no-response",{url:e.url,error:n});return r}}({cacheName:"flytax-icons",plugins:[new ee({maxEntries:20})]}));const de=function(e,t=[],s=[]){if(!(e instanceof Cache&&Array.isArray(t)&&Array.isArray(s)))return Promise.reject();let a=[];return Promise.all(t.map((function(t){return caches.match(t).then((function(s){return s?e.put(t,s):(a.push(t),Promise.resolve())}))}))).then((function(){return e.addAll(a.concat(s))}))};self.addEventListener("install",(e=>{e.waitUntil(caches.keys().then((e=>Promise.resolve())).then((()=>caches.open(se))).then((e=>de(e,he))).then((()=>caches.open(ae))).then((e=>de(e,le))).then((()=>caches.open(ne))).then((e=>de(e,ue))).then((()=>Promise.resolve())))}));const fe=e=>te.includes(e),pe=e=>{if(-1!==ce.indexOf(e.url))return!1;for(const t of oe)if(t.startsWith("http")){if(e.url===t)return!1}else if(-1!==e.url.indexOf(t.replace(/^\./,"")))return!1;return!0};self.addEventListener("activate",(function(e){e.waitUntil(caches.keys().then((function(e){return e.filter(fe).map((e=>caches.delete(e)))})).then((()=>caches.open(se))).then((function(e){return e.keys().then((function(t){return Promise.all(t.filter(pe).map((t=>e.delete(t))))}))})).then((()=>self.clients.claim())))})),self.addEventListener("message",(e=>{!e.data||"SKIP_WAITING"!==e.data&&"SKIP_WAITING"!==e.data.type?e.data&&"GET_VERSION"===e.data.type?e.ports[0].postMessage("1.3.7"):e.data&&"CLIENTS_CLAIM"===e.data.type&&self.clients.claim():self.skipWaiting()}))}(); +!function(){"use strict";try{self["workbox:core:6.2.4"]&&_()}catch(e){}const e=(e,...t)=>{let s=e;return t.length>0&&(s+=` :: ${JSON.stringify(t)}`),s};class t extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}const s={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},a=e=>[s.prefix,e,s.suffix].filter((e=>e&&e.length>0)).join("-"),n=e=>e||a(s.precache),r=e=>e||a(s.runtime);function i(e,t){const s=t();return e.waitUntil(s),s}try{self["workbox:precaching:6.2.4"]&&_()}catch(e){}function c(e){if(!e)throw new t("add-to-cache-list-unexpected-type",{entry:e});if("string"==typeof e){const t=new URL(e,location.href);return{cacheKey:t.href,url:t.href}}const{revision:s,url:a}=e;if(!a)throw new t("add-to-cache-list-unexpected-type",{entry:e});if(!s){const e=new URL(a,location.href);return{cacheKey:e.href,url:e.href}}const n=new URL(a,location.href),r=new URL(a,location.href);return n.searchParams.set("__WB_REVISION__",s),{cacheKey:n.href,url:r.href}}class o{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:e,state:t})=>{t&&(t.originalRequest=e)},this.cachedResponseWillBeUsed=async({event:e,state:t,cachedResponse:s})=>{if("install"===e.type&&t&&t.originalRequest&&t.originalRequest instanceof Request){const e=t.originalRequest.url;s?this.notUpdatedURLs.push(e):this.updatedURLs.push(e)}return s}}}class h{constructor({precacheController:e}){this.cacheKeyWillBeUsed=async({request:e,params:t})=>{const s=t&&t.cacheKey||this._precacheController.getCacheKeyForURL(e.url);return s?new Request(s):e},this._precacheController=e}}let l;async function u(e,s){let a=null;if(e.url){a=new URL(e.url).origin}if(a!==self.location.origin)throw new t("cross-origin-copy-response",{origin:a});const n=e.clone(),r={headers:new Headers(n.headers),status:n.status,statusText:n.statusText},i=s?s(r):r,c=function(){if(void 0===l){const e=new Response("");if("body"in e)try{new Response(e.body),l=!0}catch(e){l=!1}l=!1}return l}()?n.body:await n.blob();return new Response(c,i)}function d(e,t){const s=new URL(e);for(const e of t)s.searchParams.delete(e);return s.href}class f{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}const p=new Set;try{self["workbox:strategies:6.2.4"]&&_()}catch(e){}function m(e){return"string"==typeof e?new Request(e):e}class g{constructor(e,t){this._cacheKeys={},Object.assign(this,t),this.event=t.event,this._strategy=e,this._handlerDeferred=new f,this._extendLifetimePromises=[],this._plugins=[...e.plugins],this._pluginStateMap=new Map;for(const e of this._plugins)this._pluginStateMap.set(e,{});this.event.waitUntil(this._handlerDeferred.promise)}async fetch(e){const{event:s}=this;let a=m(e);if("navigate"===a.mode&&s instanceof FetchEvent&&s.preloadResponse){const e=await s.preloadResponse;if(e)return e}const n=this.hasCallback("fetchDidFail")?a.clone():null;try{for(const e of this.iterateCallbacks("requestWillFetch"))a=await e({request:a.clone(),event:s})}catch(e){if(e instanceof Error)throw new t("plugin-error-request-will-fetch",{thrownErrorMessage:e.message})}const r=a.clone();try{let e;e=await fetch(a,"navigate"===a.mode?void 0:this._strategy.fetchOptions);for(const t of this.iterateCallbacks("fetchDidSucceed"))e=await t({event:s,request:r,response:e});return e}catch(e){throw n&&await this.runCallbacks("fetchDidFail",{error:e,event:s,originalRequest:n.clone(),request:r.clone()}),e}}async fetchAndCachePut(e){const t=await this.fetch(e),s=t.clone();return this.waitUntil(this.cachePut(e,s)),t}async cacheMatch(e){const t=m(e);let s;const{cacheName:a,matchOptions:n}=this._strategy,r=await this.getCacheKey(t,"read"),i=Object.assign(Object.assign({},n),{cacheName:a});s=await caches.match(r,i);for(const e of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await e({cacheName:a,matchOptions:n,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(e,s){const a=m(e);var n;await(n=0,new Promise((e=>setTimeout(e,n))));const r=await this.getCacheKey(a,"write");if(!s)throw new t("cache-put-with-no-response",{url:(i=r.url,new URL(String(i),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var i;const c=await this._ensureResponseSafeToCache(s);if(!c)return!1;const{cacheName:o,matchOptions:h}=this._strategy,l=await self.caches.open(o),u=this.hasCallback("cacheDidUpdate"),f=u?await async function(e,t,s,a){const n=d(t.url,s);if(t.url===n)return e.match(t,a);const r=Object.assign(Object.assign({},a),{ignoreSearch:!0}),i=await e.keys(t,r);for(const t of i)if(n===d(t.url,s))return e.match(t,a)}(l,r.clone(),["__WB_REVISION__"],h):null;try{await l.put(r,u?c.clone():c)}catch(e){if(e instanceof Error)throw"QuotaExceededError"===e.name&&await async function(){for(const e of p)await e()}(),e}for(const e of this.iterateCallbacks("cacheDidUpdate"))await e({cacheName:o,oldResponse:f,newResponse:c.clone(),request:r,event:this.event});return!0}async getCacheKey(e,t){if(!this._cacheKeys[t]){let s=e;for(const e of this.iterateCallbacks("cacheKeyWillBeUsed"))s=m(await e({mode:t,request:s,event:this.event,params:this.params}));this._cacheKeys[t]=s}return this._cacheKeys[t]}hasCallback(e){for(const t of this._strategy.plugins)if(e in t)return!0;return!1}async runCallbacks(e,t){for(const s of this.iterateCallbacks(e))await s(t)}*iterateCallbacks(e){for(const t of this._strategy.plugins)if("function"==typeof t[e]){const s=this._pluginStateMap.get(t),a=a=>{const n=Object.assign(Object.assign({},a),{state:s});return t[e](n)};yield a}}waitUntil(e){return this._extendLifetimePromises.push(e),e}async doneWaiting(){let e;for(;e=this._extendLifetimePromises.shift();)await e}destroy(){this._handlerDeferred.resolve(null)}async _ensureResponseSafeToCache(e){let t=e,s=!1;for(const e of this.iterateCallbacks("cacheWillUpdate"))if(t=await e({request:this.request,response:t,event:this.event})||void 0,s=!0,!t)break;return s||t&&200!==t.status&&(t=void 0),t}}class w{constructor(e={}){this.cacheName=r(e.cacheName),this.plugins=e.plugins||[],this.fetchOptions=e.fetchOptions,this.matchOptions=e.matchOptions}handle(e){const[t]=this.handleAll(e);return t}handleAll(e){e instanceof FetchEvent&&(e={event:e,request:e.request});const t=e.event,s="string"==typeof e.request?new Request(e.request):e.request,a="params"in e?e.params:void 0,n=new g(this,{event:t,request:s,params:a}),r=this._getResponse(n,s,t);return[r,this._awaitComplete(r,n,s,t)]}async _getResponse(e,s,a){let n;await e.runCallbacks("handlerWillStart",{event:a,request:s});try{if(n=await this._handle(s,e),!n||"error"===n.type)throw new t("no-response",{url:s.url})}catch(t){if(t instanceof Error)for(const r of e.iterateCallbacks("handlerDidError"))if(n=await r({error:t,event:a,request:s}),n)break;if(!n)throw t}for(const t of e.iterateCallbacks("handlerWillRespond"))n=await t({event:a,request:s,response:n});return n}async _awaitComplete(e,t,s,a){let n,r;try{n=await e}catch(r){}try{await t.runCallbacks("handlerDidRespond",{event:a,request:s,response:n}),await t.doneWaiting()}catch(e){e instanceof Error&&(r=e)}if(await t.runCallbacks("handlerDidComplete",{event:a,request:s,response:n,error:r}),t.destroy(),r)throw r}}class y extends w{constructor(e={}){e.cacheName=n(e.cacheName),super(e),this._fallbackToNetwork=!1!==e.fallbackToNetwork,this.plugins.push(y.copyRedirectedCacheableResponsesPlugin)}async _handle(e,t){const s=await t.cacheMatch(e);return s||(t.event&&"install"===t.event.type?await this._handleInstall(e,t):await this._handleFetch(e,t))}async _handleFetch(e,s){let a;if(!this._fallbackToNetwork)throw new t("missing-precache-entry",{cacheName:this.cacheName,url:e.url});return a=await s.fetch(e),a}async _handleInstall(e,s){this._useDefaultCacheabilityPluginIfNeeded();const a=await s.fetch(e);if(!await s.cachePut(e,a.clone()))throw new t("bad-precaching-response",{url:e.url,status:a.status});return a}_useDefaultCacheabilityPluginIfNeeded(){let e=null,t=0;for(const[s,a]of this.plugins.entries())a!==y.copyRedirectedCacheableResponsesPlugin&&(a===y.defaultPrecacheCacheabilityPlugin&&(e=s),a.cacheWillUpdate&&t++);0===t?this.plugins.push(y.defaultPrecacheCacheabilityPlugin):t>1&&null!==e&&this.plugins.splice(e,1)}}y.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:e})=>!e||e.status>=400?null:e},y.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:e})=>e.redirected?await u(e):e};class b{constructor({cacheName:e,plugins:t=[],fallbackToNetwork:s=!0}={}){this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map,this._strategy=new y({cacheName:n(e),plugins:[...t,new h({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._strategy}precache(e){this.addToCacheList(e),this._installAndActiveListenersAdded||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this._installAndActiveListenersAdded=!0)}addToCacheList(e){const s=[];for(const a of e){"string"==typeof a?s.push(a):a&&void 0===a.revision&&s.push(a.url);const{cacheKey:e,url:n}=c(a),r="string"!=typeof a&&a.revision?"reload":"default";if(this._urlsToCacheKeys.has(n)&&this._urlsToCacheKeys.get(n)!==e)throw new t("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(n),secondEntry:e});if("string"!=typeof a&&a.integrity){if(this._cacheKeysToIntegrities.has(e)&&this._cacheKeysToIntegrities.get(e)!==a.integrity)throw new t("add-to-cache-list-conflicting-integrities",{url:n});this._cacheKeysToIntegrities.set(e,a.integrity)}if(this._urlsToCacheKeys.set(n,e),this._urlsToCacheModes.set(n,r),s.length>0){const e=`Workbox is precaching URLs without revision info: ${s.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(e)}}}install(e){return i(e,(async()=>{const t=new o;this.strategy.plugins.push(t);for(const[t,s]of this._urlsToCacheKeys){const a=this._cacheKeysToIntegrities.get(s),n=this._urlsToCacheModes.get(t),r=new Request(t,{integrity:a,cache:n,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:e}))}const{updatedURLs:s,notUpdatedURLs:a}=t;return{updatedURLs:s,notUpdatedURLs:a}}))}activate(e){return i(e,(async()=>{const e=await self.caches.open(this.strategy.cacheName),t=await e.keys(),s=new Set(this._urlsToCacheKeys.values()),a=[];for(const n of t)s.has(n.url)||(await e.delete(n),a.push(n.url));return{deletedURLs:a}}))}getURLsToCacheKeys(){return this._urlsToCacheKeys}getCachedURLs(){return[...this._urlsToCacheKeys.keys()]}getCacheKeyForURL(e){const t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)}async matchPrecache(e){const t=e instanceof Request?e.url:e,s=this.getCacheKeyForURL(t);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(e){const s=this.getCacheKeyForURL(e);if(!s)throw new t("non-precached-url",{url:e});return t=>(t.request=new Request(e),t.params=Object.assign({cacheKey:s},t.params),this.strategy.handle(t))}}let v;const x=()=>(v||(v=new b),v);try{self["workbox:routing:6.2.4"]&&_()}catch(e){}const R=e=>e&&"object"==typeof e?e:{handle:e};class C{constructor(e,t,s="GET"){this.handler=R(t),this.match=e,this.method=s}setCatchHandler(e){this.catchHandler=R(e)}}class E extends C{constructor(e,t,s){super((({url:t})=>{const s=e.exec(t.href);if(s&&(t.origin===location.origin||0===s.index))return s.slice(1)}),t,s)}}class L{constructor(){this._routes=new Map,this._defaultHandlerMap=new Map}get routes(){return this._routes}addFetchListener(){self.addEventListener("fetch",(e=>{const{request:t}=e,s=this.handleRequest({request:t,event:e});s&&e.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(e=>{if(e.data&&"CACHE_URLS"===e.data.type){const{payload:t}=e.data,s=Promise.all(t.urlsToCache.map((t=>{"string"==typeof t&&(t=[t]);const s=new Request(...t);return this.handleRequest({request:s,event:e})})));e.waitUntil(s),e.ports&&e.ports[0]&&s.then((()=>e.ports[0].postMessage(!0)))}}))}handleRequest({request:e,event:t}){const s=new URL(e.url,location.href);if(!s.protocol.startsWith("http"))return;const a=s.origin===location.origin,{params:n,route:r}=this.findMatchingRoute({event:t,request:e,sameOrigin:a,url:s});let i=r&&r.handler;const c=e.method;if(!i&&this._defaultHandlerMap.has(c)&&(i=this._defaultHandlerMap.get(c)),!i)return;let o;try{o=i.handle({url:s,request:e,event:t,params:n})}catch(e){o=Promise.reject(e)}const h=r&&r.catchHandler;return o instanceof Promise&&(this._catchHandler||h)&&(o=o.catch((async a=>{if(h)try{return await h.handle({url:s,request:e,event:t,params:n})}catch(e){e instanceof Error&&(a=e)}if(this._catchHandler)return this._catchHandler.handle({url:s,request:e,event:t});throw a}))),o}findMatchingRoute({url:e,sameOrigin:t,request:s,event:a}){const n=this._routes.get(s.method)||[];for(const r of n){let n;const i=r.match({url:e,sameOrigin:t,request:s,event:a});if(i)return n=i,(Array.isArray(n)&&0===n.length||i.constructor===Object&&0===Object.keys(i).length||"boolean"==typeof i)&&(n=void 0),{route:r,params:n}}return{}}setDefaultHandler(e,t="GET"){this._defaultHandlerMap.set(t,R(e))}setCatchHandler(e){this._catchHandler=R(e)}registerRoute(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)}unregisterRoute(e){if(!this._routes.has(e.method))throw new t("unregister-route-but-not-found-with-method",{method:e.method});const s=this._routes.get(e.method).indexOf(e);if(!(s>-1))throw new t("unregister-route-route-not-registered");this._routes.get(e.method).splice(s,1)}}let U;const D=()=>(U||(U=new L,U.addFetchListener(),U.addCacheListener()),U);function q(e,s,a){let n;if("string"==typeof e){const t=new URL(e,location.href);n=new C((({url:e})=>e.href===t.href),s,a)}else if(e instanceof RegExp)n=new E(e,s,a);else if("function"==typeof e)n=new C(e,s,a);else{if(!(e instanceof C))throw new t("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});n=e}return D().registerRoute(n),n}class k extends C{constructor(e,t){super((({request:s})=>{const a=e.getURLsToCacheKeys();for(const e of function*(e,{ignoreURLParametersMatching:t=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:a=!0,urlManipulation:n}={}){const r=new URL(e,location.href);r.hash="",yield r.href;const i=function(e,t=[]){for(const s of[...e.searchParams.keys()])t.some((e=>e.test(s)))&&e.searchParams.delete(s);return e}(r,t);if(yield i.href,s&&i.pathname.endsWith("/")){const e=new URL(i.href);e.pathname+=s,yield e.href}if(a){const e=new URL(i.href);e.pathname+=".html",yield e.href}if(n){const e=n({url:r});for(const t of e)yield t.href}}(s.url,t)){const t=a.get(e);if(t)return{cacheKey:t}}}),e.strategy)}}class T extends w{async _handle(e,s){let a,n=await s.cacheMatch(e);if(!n)try{n=await s.fetchAndCachePut(e)}catch(e){e instanceof Error&&(a=e)}if(!n)throw new t("no-response",{url:e.url,error:a});return n}}const N={cacheWillUpdate:async({response:e})=>200===e.status||0===e.status?e:null};function j(e){e.then((()=>{}))}let I,P;const A=new WeakMap,M=new WeakMap,K=new WeakMap,S=new WeakMap,O=new WeakMap;let W={get(e,t,s){if(e instanceof IDBTransaction){if("done"===t)return M.get(e);if("objectStoreNames"===t)return e.objectStoreNames||K.get(e);if("store"===t)return s.objectStoreNames[1]?void 0:s.objectStore(s.objectStoreNames[0])}return F(e[t])},set:(e,t,s)=>(e[t]=s,!0),has:(e,t)=>e instanceof IDBTransaction&&("done"===t||"store"===t)||t in e};function B(e){return e!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(P||(P=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(e)?function(...t){return e.apply(G(this),t),F(A.get(this))}:function(...t){return F(e.apply(G(this),t))}:function(t,...s){const a=e.call(G(this),t,...s);return K.set(a,t.sort?t.sort():[t]),F(a)}}function H(e){return"function"==typeof e?B(e):(e instanceof IDBTransaction&&function(e){if(M.has(e))return;const t=new Promise(((t,s)=>{const a=()=>{e.removeEventListener("complete",n),e.removeEventListener("error",r),e.removeEventListener("abort",r)},n=()=>{t(),a()},r=()=>{s(e.error||new DOMException("AbortError","AbortError")),a()};e.addEventListener("complete",n),e.addEventListener("error",r),e.addEventListener("abort",r)}));M.set(e,t)}(e),t=e,(I||(I=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((e=>t instanceof e))?new Proxy(e,W):e);var t}function F(e){if(e instanceof IDBRequest)return function(e){const t=new Promise(((t,s)=>{const a=()=>{e.removeEventListener("success",n),e.removeEventListener("error",r)},n=()=>{t(F(e.result)),a()},r=()=>{s(e.error),a()};e.addEventListener("success",n),e.addEventListener("error",r)}));return t.then((t=>{t instanceof IDBCursor&&A.set(t,e)})).catch((()=>{})),O.set(t,e),t}(e);if(S.has(e))return S.get(e);const t=H(e);return t!==e&&(S.set(e,t),O.set(t,e)),t}const G=e=>O.get(e);const V=["get","getKey","getAll","getAllKeys","count"],$=["put","add","delete","clear"],Q=new Map;function J(e,t){if(!(e instanceof IDBDatabase)||t in e||"string"!=typeof t)return;if(Q.get(t))return Q.get(t);const s=t.replace(/FromIndex$/,""),a=t!==s,n=$.includes(s);if(!(s in(a?IDBIndex:IDBObjectStore).prototype)||!n&&!V.includes(s))return;const r=async function(e,...t){const r=this.transaction(e,n?"readwrite":"readonly");let i=r.store;return a&&(i=i.index(t.shift())),(await Promise.all([i[s](...t),n&&r.done]))[0]};return Q.set(t,r),r}W=(e=>({...e,get:(t,s,a)=>J(t,s)||e.get(t,s,a),has:(t,s)=>!!J(t,s)||e.has(t,s)}))(W);try{self["workbox:expiration:6.2.4"]&&_()}catch(e){}const z="cache-entries",X=e=>{const t=new URL(e,location.href);return t.hash="",t.href};class Y{constructor(e){this._db=null,this._cacheName=e}_upgradeDb(e){const t=e.createObjectStore(z,{keyPath:"id"});t.createIndex("cacheName","cacheName",{unique:!1}),t.createIndex("timestamp","timestamp",{unique:!1})}_upgradeDbAndDeleteOldDbs(e){this._upgradeDb(e),this._cacheName&&function(e,{blocked:t}={}){const s=indexedDB.deleteDatabase(e);t&&s.addEventListener("blocked",(()=>t())),F(s).then((()=>{}))}(this._cacheName)}async setTimestamp(e,t){const s={url:e=X(e),timestamp:t,cacheName:this._cacheName,id:this._getId(e)},a=await this.getDb();await a.put(z,s)}async getTimestamp(e){const t=await this.getDb(),s=await t.get(z,this._getId(e));return null==s?void 0:s.timestamp}async expireEntries(e,t){const s=await this.getDb();let a=await s.transaction(z).store.index("timestamp").openCursor(null,"prev");const n=[];let r=0;for(;a;){const s=a.value;s.cacheName===this._cacheName&&(e&&s.timestamp=t?n.push(a.value):r++),a=await a.continue()}const i=[];for(const e of n)await s.delete(z,e.id),i.push(e.url);return i}_getId(e){return this._cacheName+"|"+X(e)}async getDb(){return this._db||(this._db=await function(e,t,{blocked:s,upgrade:a,blocking:n,terminated:r}={}){const i=indexedDB.open(e,t),c=F(i);return a&&i.addEventListener("upgradeneeded",(e=>{a(F(i.result),e.oldVersion,e.newVersion,F(i.transaction))})),s&&i.addEventListener("blocked",(()=>s())),c.then((e=>{r&&e.addEventListener("close",(()=>r())),n&&e.addEventListener("versionchange",(()=>n()))})).catch((()=>{})),c}("workbox-expiration",1,{upgrade:this._upgradeDbAndDeleteOldDbs.bind(this)})),this._db}}class Z{constructor(e,t={}){this._isRunning=!1,this._rerunRequested=!1,this._maxEntries=t.maxEntries,this._maxAgeSeconds=t.maxAgeSeconds,this._matchOptions=t.matchOptions,this._cacheName=e,this._timestampModel=new Y(e)}async expireEntries(){if(this._isRunning)return void(this._rerunRequested=!0);this._isRunning=!0;const e=this._maxAgeSeconds?Date.now()-1e3*this._maxAgeSeconds:0,t=await this._timestampModel.expireEntries(e,this._maxEntries),s=await self.caches.open(this._cacheName);for(const e of t)await s.delete(e,this._matchOptions);this._isRunning=!1,this._rerunRequested&&(this._rerunRequested=!1,j(this.expireEntries()))}async updateTimestamp(e){await this._timestampModel.setTimestamp(e,Date.now())}async isURLExpired(e){if(this._maxAgeSeconds){const t=await this._timestampModel.getTimestamp(e),s=Date.now()-1e3*this._maxAgeSeconds;return void 0===t||t{if(!a)return null;const n=this._isResponseDateFresh(a),r=this._getCacheExpiration(s);j(r.expireEntries());const i=r.updateTimestamp(t.url);if(e)try{e.waitUntil(i)}catch(e){}return n?a:null},this.cacheDidUpdate=async({cacheName:e,request:t})=>{const s=this._getCacheExpiration(e);await s.updateTimestamp(t.url),await s.expireEntries()},this._config=e,this._maxAgeSeconds=e.maxAgeSeconds,this._cacheExpirations=new Map,e.purgeOnQuotaError&&function(e){p.add(e)}((()=>this.deleteCacheAndMetadata()))}_getCacheExpiration(e){if(e===r())throw new t("expire-custom-caches-only");let s=this._cacheExpirations.get(e);return s||(s=new Z(e,this._config),this._cacheExpirations.set(e,s)),s}_isResponseDateFresh(e){if(!this._maxAgeSeconds)return!0;const t=this._getDateHeaderTimestamp(e);if(null===t)return!0;return t>=Date.now()-1e3*this._maxAgeSeconds}_getDateHeaderTimestamp(e){if(!e.headers.has("date"))return null;const t=e.headers.get("date"),s=new Date(t).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[e,t]of this._cacheExpirations)await self.caches.delete(e),await t.delete();this._cacheExpirations=new Map}}const te=["flytax-data","flytax-data2","flytax-data3","flytax-warmup","flytax-img"],se="flytax-warmup2",ae="flytax-data4",ne="flytax-img2";var re,ie;self.__WB_DISABLE_DEV_LOGS=!0,re=[{"revision":"24c5bc41bef7bec65bd704740c32c81f","url":"index.html"},{"revision":"f44dbf60329237a2352603437efc9f85","url":"css/bundle.css"},{"revision":"5d10aa0916861079cddbcb009bb60d73","url":"js/bundle.js"},{"revision":"4d42128042913fb5bc904de7b9cd44a7","url":"CHANGELOG.json"}],ie={},function(e){x().precache(e)}(re),function(e){const t=x();q(new k(t,e))}(ie);const ce=["https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.min.js","https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.4.456/pdf.worker.min.js","https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.2.0/jspdf.umd.min.js","https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.13/jspdf.plugin.autotable.min.js"],oe=["./fonts/HelveticaUTF8.ttf","../fonts/abril-fatface-v12-latin-ext_latin-regular.woff2".replace("../","./"),"../fonts/abril-fatface-v12-latin-ext_latin-regular.woff".replace("../","./")],he=ce.concat(oe),le="./data/data2023b.json;./data/data2022.json;./data/data2021.json;./data/data2020.json;./data/data2019.json;./data/data2018.json".split(";"),ue=["./img/fm_exemple3.jpg","./img/s_exemple3.jpg"];q(/.+\/(pdf\.min\.js|pdf\.worker\.min\.js|jspdf\..+min\.js|HelveticaUTF8\.ttf|abril-fatface-v12-latin-ext_latin-regular\.woff2?)$/,new T({cacheName:se})),q((({url:e})=>e.pathname.match(/\/data\/data[0-9]{4}.?\.json/)),new T({cacheName:ae,plugins:[new ee({maxEntries:6})]})),q((({url:e})=>e.pathname.match(/\/img\//)),new T({cacheName:ne,plugins:[new ee({maxEntries:6})]})),q((({url:e})=>e.pathname.match(/\/flytax-icons\/.+\.png/)),new class extends w{constructor(e={}){super(e),this.plugins.some((e=>"cacheWillUpdate"in e))||this.plugins.unshift(N)}async _handle(e,s){const a=s.fetchAndCachePut(e).catch((()=>{}));let n,r=await s.cacheMatch(e);if(r);else try{r=await a}catch(e){e instanceof Error&&(n=e)}if(!r)throw new t("no-response",{url:e.url,error:n});return r}}({cacheName:"flytax-icons",plugins:[new ee({maxEntries:20})]}));const de=function(e,t=[],s=[]){if(!(e instanceof Cache&&Array.isArray(t)&&Array.isArray(s)))return Promise.reject();let a=[];return Promise.all(t.map((function(t){return caches.match(t).then((function(s){return s?e.put(t,s):(a.push(t),Promise.resolve())}))}))).then((function(){return e.addAll(a.concat(s))}))};self.addEventListener("install",(e=>{e.waitUntil(caches.keys().then((e=>Promise.resolve())).then((()=>caches.open(se))).then((e=>de(e,he))).then((()=>caches.open(ae))).then((e=>de(e,le))).then((()=>caches.open(ne))).then((e=>de(e,ue))).then((()=>Promise.resolve())))}));const fe=e=>te.includes(e),pe=e=>{if(-1!==ce.indexOf(e.url))return!1;for(const t of oe)if(t.startsWith("http")){if(e.url===t)return!1}else if(-1!==e.url.indexOf(t.replace(/^\./,"")))return!1;return!0};self.addEventListener("activate",(function(e){e.waitUntil(caches.keys().then((function(e){return e.filter(fe).map((e=>caches.delete(e)))})).then((()=>caches.open(se))).then((function(e){return e.keys().then((function(t){return Promise.all(t.filter(pe).map((t=>e.delete(t))))}))})).then((()=>self.clients.claim())))})),self.addEventListener("message",(e=>{!e.data||"SKIP_WAITING"!==e.data&&"SKIP_WAITING"!==e.data.type?e.data&&"GET_VERSION"===e.data.type?e.ports[0].postMessage("1.3.7"):e.data&&"CLIENTS_CLAIM"===e.data.type&&self.clients.claim():self.skipWaiting()}))}(); //# sourceMappingURL=sw.js.map