diff --git a/.github/readme/imgs/action_update.png b/.github/readme/imgs/action_update.png
deleted file mode 100644
index 837fba7e..00000000
Binary files a/.github/readme/imgs/action_update.png and /dev/null differ
diff --git a/.github/readme/imgs/example_action_update.png b/.github/readme/imgs/example_action_update.png
new file mode 100644
index 00000000..8805818d
Binary files /dev/null and b/.github/readme/imgs/example_action_update.png differ
diff --git a/.github/readme/imgs/example_github_profil.png b/.github/readme/imgs/example_github_profil.png
new file mode 100644
index 00000000..b580945e
Binary files /dev/null and b/.github/readme/imgs/example_github_profil.png differ
diff --git a/.github/readme/imgs/github_profile.png b/.github/readme/imgs/github_profile.png
deleted file mode 100644
index b1d22a8e..00000000
Binary files a/.github/readme/imgs/github_profile.png and /dev/null differ
diff --git a/.github/readme/imgs/personal_token_alt.png b/.github/readme/imgs/personal_token_alt.png
deleted file mode 100644
index f5ec3eee..00000000
Binary files a/.github/readme/imgs/personal_token_alt.png and /dev/null differ
diff --git a/.github/readme/imgs/personal_repo.png b/.github/readme/imgs/setup_personal_repository.png
similarity index 100%
rename from .github/readme/imgs/personal_repo.png
rename to .github/readme/imgs/setup_personal_repository.png
diff --git a/.github/readme/imgs/personal_token.png b/.github/readme/imgs/setup_personal_token.png
similarity index 76%
rename from .github/readme/imgs/personal_token.png
rename to .github/readme/imgs/setup_personal_token.png
index 760f023a..728f2143 100644
Binary files a/.github/readme/imgs/personal_token.png and b/.github/readme/imgs/setup_personal_token.png differ
diff --git a/.github/readme/imgs/setup_private_contributions.png b/.github/readme/imgs/setup_private_contributions.png
new file mode 100644
index 00000000..c4e9fca6
Binary files /dev/null and b/.github/readme/imgs/setup_private_contributions.png differ
diff --git a/.github/readme/imgs/repo_secrets.png b/.github/readme/imgs/setup_repository_secret.png
similarity index 100%
rename from .github/readme/imgs/repo_secrets.png
rename to .github/readme/imgs/setup_repository_secret.png
diff --git a/.github/readme/imgs/token_repo_rights.png b/.github/readme/imgs/setup_token_repo_scope.png
similarity index 100%
rename from .github/readme/imgs/token_repo_rights.png
rename to .github/readme/imgs/setup_token_repo_scope.png
diff --git a/README.md b/README.md
index 197c51cb..cc930385 100644
--- a/README.md
+++ b/README.md
@@ -2,42 +2,178 @@

-Generates your own GitHub metrics as an SVG image to put them on your profile page or elsewhere !
+Generates your own GitHub metrics image that you can embed on your profile page or elsewhere !
[](https://metrics.lecoq.io)
But there's more with [plugins](https://github.com/lowlighter/metrics/tree/master/src/plugins) and [templates](https://github.com/lowlighter/metrics/tree/master/src/templates) !
-| Google PageSpeed plugin | Favorite music tracks plugin | Recently listened music plugin |
-| :---------------------------------: | :---------------------------------: | :---------------------------------: |
-|[](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.pagespeed.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.music.playlist.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.music.recent.svg)|
-| **Most used languages plugin** | **Follow-up plugin** | **Coding Habits plugin** |
-|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.languages.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.followup.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.habits.svg)|
-| **Repositories traffic plugin** | **Lines of code plugin** | **Recent posts plugin** |
-|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.traffic.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.lines.svg)| [
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.posts.svg)|
-| **Isometric calendar plugin** | **Gists metrics plugin** | **Starred topics plugin** |
-|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.isocalendar.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.gists.svg)|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.topics.svg)|
-| **Projects plugin** | |
-|[
](https://github.com/lowlighter/lowlighter/blob/master/metrics.plugin.projects.svg)| More to come soon ! |
+
| ⏱️ Google PageSpeed plugin | +📅 Isometric calendar plugin | +
|---|---|
+
+ Alternate version+ + |
+
+
+ Alternate version+ + |
+
| 🎼 Favorite music tracks plugin | +🎧 Recently listened music plugin | +
|
+
+ |
+
+
+ |
+
| 🈷️ Most used languages plugin | +🎟️ Follow-up plugin | +
|
+
+ |
+
+
+ |
+
| 📌 Starred topics plugin | +🗂️ Active projects plugin | +
|
+
+ |
+
+
+ |
+
| 👨💻 Lines of code plugin | +🧮 Repositories traffic plugin | +
|
+
+ |
+
+
+ |
+
| 💡 Coding Habits plugin | +✒️ Recent posts plugin | +
|
+
+ |
+
+
+ |
+
| 🎫 Gists plugin | ++ |
|
+
+ |
+ + + More to come soon ! + + | +
| Classic template | +Terminal template | +
|---|---|
|
+ |
+
+ |
+
| + | + |
| + More to come soon ! + | ++ | +
music > keeping only ${p} tracks`),i=i.slice(0,p)),console.debug(`metrics/compute/${e}/plugins > music > loading artworks`);for(const r of i)console.debug(`metrics/compute/${e}/plugins > music > processing ${r.name}`),r.artwork=await t.imgb64(r.artwork);return console.debug(`metrics/compute/${e}/plugins > music > success`),{...o,tracks:i}}throw{error:{message:`An error occured (could not retrieve tracks)`}}}catch(e){if(e.error?.message)throw e;throw console.debug(e),{error:{message:`An error occured`}}}}async function o({login:e,q:t},{conf:r,data:n,rest:a,graphql:o,plugins:i},{s:l,pending:s,imports:d}){const p=n.computed={commits:0,sponsorships:0,licenses:{favorite:"",used:{}},token:{},repositories:{watchers:0,stargazers:0,issues_open:0,issues_closed:0,pr_open:0,pr_merged:0,forks:0,releases:0}},c=d.imgb64(n.user.avatarUrl);n.plugins={};for(const c of Object.keys(d.plugins))s.push((async()=>{try{n.plugins[c]=await d.plugins[c]({login:e,q:t,imports:d,data:n,computed:p,rest:a,graphql:o},i[c])}catch(e){n.plugins[c]=e}finally{return{name:c,result:n.plugins[c]}}})());for(const c of n.user.repositories.nodes){for(const e of["watchers","stargazers","issues_open","issues_closed","pr_open","pr_merged","releases"])p.repositories[e]+=c[e].totalCount;p.repositories.forks+=c.forkCount,c.licenseInfo&&(p.licenses.used[c.licenseInfo.spdxId]=(p.licenses.used[c.licenseInfo.spdxId]||0)+1)}p.diskUsage=`${d.bytes(1e3*n.user.repositories.totalDiskUsage)}`,p.licenses.favorite=Object.entries(p.licenses.used).sort(([e,t],[r,n])=>n-t).slice(0,1).map(([e,t])=>e)||"",p.commits+=n.user.contributionsCollection.totalCommitContributions+n.user.contributionsCollection.restrictedContributionsCount;const u=(Date.now()-new Date(n.user.createdAt).getTime())/31536000000,m=_Mathfloor(u),g=_Mathceil(12*(u-m));p.registration=m?`${m} year${l(m)} ago`:`${g} month${l(g)} ago`,p.calendar=n.user.calendar.contributionCalendar.weeks.flatMap(({contributionDays:e})=>e).slice(0,14).reverse(),p.avatar=(await c)||"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",p.token.scopes=(await a.request("HEAD /")).headers["x-oauth-scopes"].split(", "),n.meta={version:r.package.version,author:r.package.author}}async function i({login:e,q:t},{graphql:r,rest:n,plugins:a,conf:o,die:i=!1}){try{console.debug(`metrics/compute/${e} > start`),console.debug(JSON.stringify(t));const m=t.template||o.settings.templates.default,g=_Mathmax(0,+t.repositories)||o.settings.repositories||100,h=[],f=(e,t="")=>1 music > keeping only ${p} tracks`),i=i.slice(0,p)),console.debug(`metrics/compute/${e}/plugins > music > loading artworks`);for(const r of i)console.debug(`metrics/compute/${e}/plugins > music > processing ${r.name}`),r.artwork=await t.imgb64(r.artwork);return console.debug(`metrics/compute/${e}/plugins > music > success`),{...o,tracks:i}}throw{error:{message:`An error occured (could not retrieve tracks)`}}}catch(e){if(e.error?.message)throw e;throw console.debug(e),{error:{message:`An error occured`}}}}async function o({login:e,q:t},{conf:r,data:n,rest:a,graphql:o,plugins:i},{s:l,pending:s,imports:d}){const p=n.computed={commits:0,sponsorships:0,licenses:{favorite:"",used:{}},token:{},repositories:{watchers:0,stargazers:0,issues_open:0,issues_closed:0,pr_open:0,pr_merged:0,forks:0,releases:0}},c=d.imgb64(n.user.avatarUrl);n.plugins={};for(const c of Object.keys(d.plugins))s.push((async()=>{try{n.plugins[c]=await d.plugins[c]({login:e,q:t,imports:d,data:n,computed:p,rest:a,graphql:o},i[c])}catch(e){n.plugins[c]=e}finally{return{name:c,result:n.plugins[c]}}})());for(const c of n.user.repositories.nodes){for(const e of["watchers","stargazers","issues_open","issues_closed","pr_open","pr_merged","releases"])p.repositories[e]+=c[e].totalCount;p.repositories.forks+=c.forkCount,c.licenseInfo&&(p.licenses.used[c.licenseInfo.spdxId]=(p.licenses.used[c.licenseInfo.spdxId]||0)+1)}p.diskUsage=`${d.bytes(1e3*n.user.repositories.totalDiskUsage)}`,p.licenses.favorite=Object.entries(p.licenses.used).sort(([e,t],[r,n])=>n-t).slice(0,1).map(([e,t])=>e)||"",p.commits+=n.user.contributionsCollection.totalCommitContributions+n.user.contributionsCollection.restrictedContributionsCount;const u=(Date.now()-new Date(n.user.createdAt).getTime())/31536000000,m=_Mathfloor(u),g=_Mathceil(12*(u-m));p.registration=m?`${m} year${l(m)} ago`:`${g} month${l(g)} ago`,p.calendar=n.user.calendar.contributionCalendar.weeks.flatMap(({contributionDays:e})=>e).slice(0,14).reverse(),p.avatar=(await c)||"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",p.token.scopes=(await a.request("HEAD /")).headers["x-oauth-scopes"].split(", "),n.meta={version:r.package.version,author:r.package.author}}async function i({login:e,q:t},{graphql:r,rest:n,plugins:a,conf:o,die:i=!1}){try{console.debug(`metrics/compute/${e} > start`),console.debug(JSON.stringify(t));const m=t.template||o.settings.templates.default,g=_Mathmax(0,+t.repositories)||o.settings.repositories||100,h=[],f=(e,t="")=>1{"use strict";var n=r(66431);e.exports=Function.prototype.bind||n},15459:(e,t,r)=>{"use strict";const{PassThrough:n}=r(92413);e.exports=e=>{e={...e};const{array:t}=e;let{encoding:r}=e;const a="buffer"===r;let o=!1;t?o=!(r||a):r=r||"utf8",a&&(r=null);const i=new n({objectMode:o});r&&i.setEncoding(r);let s=0;const l=[];return i.on("data",e=>{l.push(e),o?s=l.length:s+=e.length}),i.getBufferedValue=()=>t?l:a?Buffer.concat(l,s):l.join(""),i.getBufferedLength=()=>s,i}},74205:(e,t,r)=>{"use strict";async function n(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t={maxBuffer:1/0,...t};const{maxBuffer:r}=t;let n;return await new Promise((l,d)=>{const p=e=>{e&&n.getBufferedLength()<=a.MAX_LENGTH&&(e.bufferedData=n.getBufferedValue()),d(e)};n=o(e,i(t),e=>e?void p(e):void l()),n.on("data",()=>{n.getBufferedLength()>r&&p(new s)})}),n.getBufferedValue()}const{constants:a}=r(64293),o=r(537),i=r(15459);class s extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}e.exports=n,e.exports.default=n,e.exports.buffer=(e,t)=>n(e,{...t,encoding:"buffer"}),e.exports.array=(e,t)=>n(e,{...t,array:!0}),e.exports.MaxBufferError=s},3589:(e,t,r)=>{function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function o(e,t){return e.localeCompare(t)}function i(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map(s))}function s(e){var t=null;if("/**"===e.slice(-3)){var r=e.replace(/(\/\*\*)+$/,"");t=new m(r,{dot:!0})}return{matcher:new m(e,{dot:!0}),gmatcher:t}}function l(e,t){var r=t;return r="/"===t.charAt(0)?p.join(e.root,t):u(t)||""===t?t:e.changedCwd?p.resolve(e.cwd,t):p.resolve(t),"win32"===process.platform&&(r=r.replace(/\\/g,"/")),r}function d(e,t){return!!e.ignore.length&&e.ignore.some(function(e){return e.matcher.match(t)||!!(e.gmatcher&&e.gmatcher.match(t))})}t.alphasort=o,t.alphasorti=a,t.setopts=function(e,t,r){if(r||(r={}),r.matchBase&&-1===t.indexOf("/")){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=!1!==r.strict,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0),e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||1/0,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),i(e,r),e.changedCwd=!1;var a=process.cwd();n(r,"cwd")?(e.cwd=p.resolve(r.cwd),e.changedCwd=e.cwd!==a):e.cwd=a,e.root=r.root||p.resolve(e.cwd,"/"),e.root=p.resolve(e.root),"win32"===process.platform&&(e.root=e.root.replace(/\\/g,"/")),e.cwdAbs=u(e.cwd)?e.cwd:l(e,e.cwd),"win32"===process.platform&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/")),e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new m(t,r),e.options=e.minimatch.options},t.ownProp=n,t.makeAbs=l,t.finish=function(t){for(var r=t.nounique,n=r?[]:Object.create(null),s=0,e=t.matches.length,p;sthis.maxLength)return t();if(!this.stat&&v(this.cache,r)){var a=this.cache[r];if(Array.isArray(a)&&(a="DIR"),!n||"DIR"===a)return t(null,a);if(n&&"FILE"===a)return t()}var o=this.statCache[r];if(void 0!==o){if(!1===o)return t(null,o);var i=o.isDirectory()?"DIR":"FILE";return n&&"FILE"===i?t():t(null,i,o)}var l=this,d=k("stat\0"+r,function(n,a){return a&&a.isSymbolicLink()?s.stat(r,function(n,o){n?l._stat2(e,r,null,a,t):l._stat2(e,r,n,o,t)}):void l._stat2(e,r,n,a,t)});d&&s.lstat(r,d)},o.prototype._stat2=function(e,t,r,n,a){if(r&&("ENOENT"===r.code||"ENOTDIR"===r.code))return this.statCache[t]=!1,a();var o="/"===e.slice(-1);if(this.statCache[t]=n,"/"===t.slice(-1)&&n&&!n.isDirectory())return a(null,!1,n);var i=!0;return n&&(i=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||i,o&&"FILE"===i?a():a(null,i,n)}},6587:(e,t,r)=>{function n(e,t){if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new a(e,t).found}function a(e,t){if(!e)throw new Error("must provide pattern");if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof a))return new a(e,t);if(y(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=Array(r);for(var n=0;n{"use strict";var n=r(66431);e.exports=Function.prototype.bind||n},15459:(e,t,r)=>{"use strict";const{PassThrough:n}=r(92413);e.exports=e=>{e={...e};const{array:t}=e;let{encoding:r}=e;const a="buffer"===r;let o=!1;t?o=!(r||a):r=r||"utf8",a&&(r=null);const i=new n({objectMode:o});r&&i.setEncoding(r);let s=0;const l=[];return i.on("data",e=>{l.push(e),o?s=l.length:s+=e.length}),i.getBufferedValue=()=>t?l:a?Buffer.concat(l,s):l.join(""),i.getBufferedLength=()=>s,i}},74205:(e,t,r)=>{"use strict";async function n(e,t){if(!e)return Promise.reject(new Error("Expected a stream"));t={maxBuffer:1/0,...t};const{maxBuffer:r}=t;let n;return await new Promise((l,d)=>{const p=e=>{e&&n.getBufferedLength()<=a.MAX_LENGTH&&(e.bufferedData=n.getBufferedValue()),d(e)};n=o(e,i(t),e=>e?void p(e):void l()),n.on("data",()=>{n.getBufferedLength()>r&&p(new s)})}),n.getBufferedValue()}const{constants:a}=r(64293),o=r(537),i=r(15459);class s extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}e.exports=n,e.exports.default=n,e.exports.buffer=(e,t)=>n(e,{...t,encoding:"buffer"}),e.exports.array=(e,t)=>n(e,{...t,array:!0}),e.exports.MaxBufferError=s},3589:(e,t,r)=>{function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function a(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function o(e,t){return e.localeCompare(t)}function i(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]),e.ignore.length&&(e.ignore=e.ignore.map(s))}function s(e){var t=null;if("/**"===e.slice(-3)){var r=e.replace(/(\/\*\*)+$/,"");t=new m(r,{dot:!0})}return{matcher:new m(e,{dot:!0}),gmatcher:t}}function l(e,t){var r=t;return r="/"===t.charAt(0)?p.join(e.root,t):u(t)||""===t?t:e.changedCwd?p.resolve(e.cwd,t):p.resolve(t),"win32"===process.platform&&(r=r.replace(/\\/g,"/")),r}function d(e,t){return!!e.ignore.length&&e.ignore.some(function(e){return e.matcher.match(t)||!!(e.gmatcher&&e.gmatcher.match(t))})}t.alphasort=o,t.alphasorti=a,t.setopts=function(e,t,r){if(r||(r={}),r.matchBase&&-1===t.indexOf("/")){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=!1!==r.strict,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0),e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||1/0,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),i(e,r),e.changedCwd=!1;var a=process.cwd();n(r,"cwd")?(e.cwd=p.resolve(r.cwd),e.changedCwd=e.cwd!==a):e.cwd=a,e.root=r.root||p.resolve(e.cwd,"/"),e.root=p.resolve(e.root),"win32"===process.platform&&(e.root=e.root.replace(/\\/g,"/")),e.cwdAbs=u(e.cwd)?e.cwd:l(e,e.cwd),"win32"===process.platform&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/")),e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new m(t,r),e.options=e.minimatch.options},t.ownProp=n,t.makeAbs=l,t.finish=function(t){for(var r=t.nounique,n=r?[]:Object.create(null),s=0,e=t.matches.length,p;sthis.maxLength)return t();if(!this.stat&&v(this.cache,r)){var a=this.cache[r];if(Array.isArray(a)&&(a="DIR"),!n||"DIR"===a)return t(null,a);if(n&&"FILE"===a)return t()}var o=this.statCache[r];if(void 0!==o){if(!1===o)return t(null,o);var i=o.isDirectory()?"DIR":"FILE";return n&&"FILE"===i?t():t(null,i,o)}var l=this,d=k("stat\0"+r,function(n,a){return a&&a.isSymbolicLink()?s.stat(r,function(n,o){n?l._stat2(e,r,null,a,t):l._stat2(e,r,n,o,t)}):void l._stat2(e,r,n,a,t)});d&&s.lstat(r,d)},o.prototype._stat2=function(e,t,r,n,a){if(r&&("ENOENT"===r.code||"ENOTDIR"===r.code))return this.statCache[t]=!1,a();var o="/"===e.slice(-1);if(this.statCache[t]=n,"/"===t.slice(-1)&&n&&!n.isDirectory())return a(null,!1,n);var i=!0;return n&&(i=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||i,o&&"FILE"===i?a():a(null,i,n)}},6587:(e,t,r)=>{function n(e,t){if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new a(e,t).found}function a(e,t){if(!e)throw new Error("must provide pattern");if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof a))return new a(e,t);if(y(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=Array(r);for(var n=0;n=t){m=!0,y=e.input.charCodeAt(e.position);continue}else{e.position=u,e.line=g,e.lineStart=h,e.lineIndent=f;break}m&&(b(e,c,u,!1),_(e,e.line-g),c=u=e.position,m=!1),o(y)||(u=e.position+1),y=e.input.charCodeAt(++e.position)}return(b(e,c,u,!1),!!e.result)||(e.kind=n,e.result=i,!1)}function T(e,t){var r,n,o;if(r=e.input.charCodeAt(e.position),39!==r)return!1;for(e.kind="scalar",e.result="",e.position++,n=o=e.position;0!==(r=e.input.charCodeAt(e.position));)if(39!==r)a(r)?(b(e,n,o,!0),_(e,k(e,!1,t)),n=o=e.position):e.position===e.lineStart&&C(e)?f(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);else if(b(e,n,e.position,!0),r=e.input.charCodeAt(++e.position),39===r)n=e.position,e.position++,o=e.position;else return!0;f(e,"unexpected end of the stream within a single quoted scalar")}function E(e,t){var r,n,o,i,s,l;if(l=e.input.charCodeAt(e.position),34!==l)return!1;for(e.kind="scalar",e.result="",e.position++,r=n=e.position;0!==(l=e.input.charCodeAt(e.position));){if(34===l)return b(e,r,e.position,!0),e.position++,!0;if(92===l){if(b(e,r,e.position,!0),l=e.input.charCodeAt(++e.position),a(l))k(e,!1,t);else if(256>l&&J[l])e.result+=$[l],e.position++;else if(0<(s=p(l))){for(o=s,i=0;0t)&&0!==d)f(e,"bad indentation of a sequence entry");else if(e.lineIndent